@reltio/remotes 1.4.1621 → 1.4.1622

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.
Files changed (88) hide show
  1. package/1039.js +1 -1
  2. package/1146.js +1 -1
  3. package/1148.js +1 -1
  4. package/1334.js +1 -1
  5. package/1425.js +1 -1
  6. package/1572.js +1 -1
  7. package/1664.js +1 -1
  8. package/1707.js +1 -1
  9. package/1790.js +1 -1
  10. package/1840.js +1 -1
  11. package/1925.js +1 -1
  12. package/2049.js +1 -1
  13. package/2066.js +1 -1
  14. package/2201.js +1 -1
  15. package/2400.js +1 -1
  16. package/2404.js +1 -1
  17. package/2463.js +1 -1
  18. package/2641.js +1 -1
  19. package/3096.js +1 -1
  20. package/3348.js +1 -1
  21. package/3358.js +1 -1
  22. package/3358.js.map +1 -1
  23. package/3373.js +1 -1
  24. package/3381.js +1 -1
  25. package/3383.js +1 -1
  26. package/3463.js +1 -1
  27. package/3469.js +1 -1
  28. package/3538.js +1 -1
  29. package/356.js +1 -1
  30. package/3727.js +1 -1
  31. package/3875.js +1 -1
  32. package/3902.js +1 -1
  33. package/3926.js +1 -1
  34. package/415.js +1 -1
  35. package/4212.js +1 -1
  36. package/4390.js +1 -1
  37. package/4481.js +1 -1
  38. package/4703.js +1 -1
  39. package/4780.js +1 -1
  40. package/4806.js +1 -1
  41. package/4838.js +1 -1
  42. package/50.js +1 -1
  43. package/5034.js +1 -1
  44. package/5039.js +1 -1
  45. package/5053.js +1 -1
  46. package/5108.js +1 -1
  47. package/5163.js +1 -1
  48. package/5617.js +1 -1
  49. package/6020.js +1 -1
  50. package/6173.js +1 -1
  51. package/6228.js +1 -1
  52. package/6280.js +1 -1
  53. package/6287.js +1 -1
  54. package/6531.js +1 -1
  55. package/6606.js +1 -1
  56. package/673.js +1 -1
  57. package/6799.js +1 -1
  58. package/6844.js +1 -1
  59. package/6853.js +1 -1
  60. package/6860.js +1 -1
  61. package/6903.js +1 -1
  62. package/7340.js +1 -1
  63. package/735.js +1 -1
  64. package/7422.js +1 -1
  65. package/7626.js +1 -1
  66. package/764.js +1 -1
  67. package/7896.js +1 -1
  68. package/8168.js +1 -1
  69. package/820.js +1 -1
  70. package/8207.js +1 -1
  71. package/8322.js +1 -1
  72. package/8565.js +1 -1
  73. package/8741.js +1 -1
  74. package/9016.js +1 -1
  75. package/9028.js +1 -1
  76. package/9283.js +1 -1
  77. package/9309.js +1 -1
  78. package/9328.js +1 -1
  79. package/9387.js +1 -1
  80. package/9719.js +1 -1
  81. package/9736.js +1 -1
  82. package/9861.js +1 -1
  83. package/987.js +1 -1
  84. package/99.js +1 -1
  85. package/9960.js +1 -1
  86. package/main.js +1 -1
  87. package/package.json +1 -1
  88. package/remoteEntry.js +1 -1
package/3358.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"3358.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/ActionButton/styles.ts","webpack://@reltio/remotes/../components/src/components/ActionButton/ActionButton.tsx","webpack://@reltio/remotes/../components/src/components/AttributeGroupIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeGroupIcon/AttributeGroupIcon.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/AttributeTitle/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/helpers.ts","webpack://@reltio/remotes/../components/src/components/SelectAttributesList/styles.ts","webpack://@reltio/remotes/../components/src/components/SelectAttributesList/SelectAttributesList.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/BasicAttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/hooks/useDynamicRowCellHeight.ts","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/BasicTablePagination.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/CollapseRowButton/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/CollapseRowButton/CollapseRowButton.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/RowCellAutoSizer/RowCellAutoSizer.tsx","webpack://@reltio/remotes/../components/src/components/CollapseButton/styles.ts","webpack://@reltio/remotes/../components/src/components/CollapseButton/CollapseButton.tsx","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/ConfirmationDialog.tsx","webpack://@reltio/remotes/../components/src/components/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.js","webpack://@reltio/remotes/../components/src/components/EmptyState/styles.ts","webpack://@reltio/remotes/../components/src/components/EmptyState/EmptyState.tsx","webpack://@reltio/remotes/../components/src/icons/EmptySearchResults.tsx","webpack://@reltio/remotes/../components/src/icons/SelectAttributes.tsx","webpack://@reltio/remotes/../components/src/icons/NoData.tsx","webpack://@reltio/remotes/../components/src/icons/Error.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardContent/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardContent/ProfileCardContent.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardPlaceholder/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardPlaceholder/ProfileCardPlaceholder.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCard.tsx","webpack://@reltio/remotes/../components/src/components/ProfileResizablePanes/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileResizablePanes/ProfileResizablePanes.tsx","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/styles.ts","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyLogicOperator.tsx","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyFilter.tsx","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/styles.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/QueryBuilderRow.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/CreatableSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/Option.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/index.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/MultiSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/index.js","webpack://@reltio/remotes/../components/src/components/ScreenProfileBand/styles.ts","webpack://@reltio/remotes/../components/src/components/ScreenProfileBand/ScreenProfileBand.tsx","webpack://@reltio/remotes/../components/src/components/SideIconPanel/styles.ts","webpack://@reltio/remotes/../components/src/components/SideIconPanel/SideButtonsPanel.tsx","webpack://@reltio/remotes/../components/src/components/SidePanel/styles.ts","webpack://@reltio/remotes/../components/src/components/SidePanel/SidePanel.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/RelationTypeSelector/components/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/RelationTypeSelector/components/RelationOption.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/RelationTypeSelector/RelationTypeSelector.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributeValuesBlock/AttributeValuesBlock.tsx","webpack://@reltio/remotes/../components/src/contexts/PerspectivesSettingsContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useRelationTypeSelector.js","webpack://@reltio/remotes/../components/src/hooks/useSnackbar.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/views.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ReloadDataContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/helpers/stateReducer.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ViewStateContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/sortHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatchesReducer.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/utils/errors.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSpinnerAndReloadData.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/MergeButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/NotMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/setAsMatch.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/SetAMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSetAMatch.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/dcrReview.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/DcrReviewButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useRequestDCRReview.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useReinstateMatch.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/ReinstateMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/addRelationship.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/CreateRelationButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/RightSideHeaderContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/SortingFieldSelector/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/SortingFieldSelector/SortingFieldSelector.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanelHeader/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanelHeader/RightSidePanelHeader.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSortOptions.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useEntityColor.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ItemRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ItemRenderer/ItemRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchItems/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchItems/MatchItems.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/RightSideSearch/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/RightSideSearch/RightSideSearch.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ActionsPanel/MenuItemRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ActionsPanel/ActionsPanel.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/FindMatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useFindEntities.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/relationsHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/AddRelationDialog/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/AddRelationDialog/AddRelationDialog.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useAddRelationDialog.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/defaultOptions.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/MatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatches.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useNotMatches.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/NotMatchView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Content/Content.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewModeSwitcher/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewModeSwitcher/ComparisonViewModeSwitcher.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/TableHeader/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/TableHeader/TableHeader.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/ExpandedContext.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/withExpanded.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchedValuesCounter/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchedValuesCounter/MatchedValuesCounter.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/AttributesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ColumnsDataContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/HeadCellRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/HeadCellRenderer/HeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/ComplexAttributesHeadRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/HoveredEntityContext.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchControls/MatchControls.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/EntityCard/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/workflow.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/WorkflowTasksAvailabilityContext.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/WorkflowCard/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/WorkflowCard/WorkflowCard.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/defaultRows.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/LabelRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/CrosswalksRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/SourcesRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/SourcesRenderer/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/RelevanceScoreRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/RelevanceScoreRenderer/RelevanceScoreRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/helpers/tableHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/EntityCard/EntityCard.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchMethod/MatchMethod.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ColumnHandlerContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/AddRowPopups/ConfigRowPopup.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/AddRowPopups/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/AddRowPopups/AddRowPopups.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useWorkflowTasksAvailability.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/ComparisonTable.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/ComparisonView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/EntityProfileRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ProfileHeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/MatchRulesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/BlobRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ImageRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ReferenceRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/EntityRowCollapseContext.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/components/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/components/SourceChipWithTooltip.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/RelevanceScoreRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/dataHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/components/RowCellChipWithTooltip.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/CommonRowCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/MatchesTable.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/withEntityCellValue.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchReviewTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchReviewTable/MatchReviewTable.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useFirstPotentialMatches.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatchesColumnData.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchReviewTable/helpers/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ChangeModeConfirmation/TableIcon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ChangeModeConfirmation/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ChangeModeConfirmation/ChangeModeConfirmation.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/icons/potential-matches-icon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/icons/find-matches-icon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/icons/not-a-match-icon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/ValuesEditor/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/ValuesEditor/ValuesEditor.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/FilterSelector/FilterSelector.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/MatchesAttributesFiltersButton/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/MatchesAttributesFiltersButton/MatchesAttributesFiltersButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/usePotentialMatchesRightSidePanelElements.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/PotentialMatchesLoadIndicator/PotentialMatchesLoadIndicator.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/PotentialMatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/index.tsx","webpack://@reltio/remotes/./src/potential-matches.ts"],"sourcesContent":["import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n button: {\n whiteSpace: 'nowrap',\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: 0,\n padding: '9px 16px 9px 12px',\n '& svg g path, & svg path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n }\n },\n iconButton: {\n '& svg g path, & svg path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n }\n },\n startIcon: {\n marginLeft: 0,\n marginRight: '8px',\n width: '18px',\n height: '18px',\n alignItems: 'center'\n },\n overflowStyle: {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n },\n menuIcon: {\n marginRight: '12px'\n },\n menuItem: {\n minHeight: '28px',\n padding: '2px 16px 2px 12px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n }\n}));\n","import React, {forwardRef} from 'react';\nimport classnames from 'classnames';\nimport Button from '@mui/material/Button';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\n\nimport {useStyles} from './styles';\nimport {noop} from '../../core';\nimport ExpandedValueTooltip from '../ExpandedValueTooltip/ExpandedValueTooltip';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\n\nexport enum ActionButtonMode {\n iconButton = 'iconButton',\n button = 'button',\n menuItem = 'menuItem'\n}\n\nexport type Props = {\n className?: string;\n disabled?: boolean;\n icon: React.ElementType;\n label: string;\n mode: ActionButtonMode;\n onClick: () => void;\n onMenuClose?: () => void;\n};\n\nexport const ActionButton = forwardRef<HTMLLIElement, Props>(\n (\n {\n className,\n mode = ActionButtonMode.iconButton,\n label,\n disabled,\n icon: Icon,\n onClick = noop,\n onMenuClose = noop,\n ...otherProps\n }: Props,\n ref: React.Ref<HTMLLIElement>\n ) => {\n const styles = useStyles();\n\n const getButtonView = () => {\n switch (mode) {\n case 'iconButton': {\n return (\n <SmallIconButtonWithTooltip\n disabled={disabled}\n className={classnames(styles.iconButton, className)}\n size=\"S\"\n tooltipTitle={label}\n onClick={onClick}\n icon={Icon}\n showForDisabled\n {...otherProps}\n />\n );\n }\n case 'button': {\n return (\n <Button\n className={classnames(styles.button, className)}\n disabled={disabled}\n startIcon={<Icon />}\n onClick={onClick}\n color=\"primary\"\n classes={{startIcon: styles.startIcon}}\n {...otherProps}\n >\n <ExpandedValueTooltip value={label}>\n <div className={styles.overflowStyle}>{label}</div>\n </ExpandedValueTooltip>\n </Button>\n );\n }\n case 'menuItem': {\n const handleClick = () => {\n onMenuClose();\n onClick();\n };\n return (\n <MenuItem\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n {...otherProps}\n >\n <>\n <Icon className={styles.menuIcon} />\n <Typography classes={{root: styles.menuText}}>{label}</Typography>\n </>\n </MenuItem>\n );\n }\n }\n };\n\n return getButtonView();\n }\n);\n\nActionButton.displayName = 'ActionButton';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n icon: {\n maxHeight: '25px',\n maxWidth: '25px',\n marginRight: '16px'\n }\n});\n","import React from 'react';\nimport {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 {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n attribute: {\n cursor: 'pointer',\n lineHeight: '16px',\n flexBasis: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 10px 0 16px',\n width: 'calc(100% - 32px)',\n '&$attributeWithValue': {\n borderBottom: '1px solid rgba(0,0,0,0.38)'\n },\n '&$disabled': {\n cursor: 'default'\n }\n },\n disabled: {},\n attributeWithValue: {},\n noSelect: {},\n name: {\n fontSize: '14px',\n color: 'rgba(0,0,0,0.87)',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n direction: 'rtl',\n textAlign: 'left',\n flex: '1 0',\n width: '0',\n '& $noSelect': {\n color: 'rgba(0,0,0,0.38)'\n },\n '&$disabled': {\n color: 'rgba(0,0,0,0.26)',\n '& $noSelect': {\n color: 'rgba(0,0,0,0.26)'\n }\n }\n }\n});\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {either, prop} from 'ramda';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport SmallIconButton from '../../SmallIconButton/SmallIconButton';\nimport {AttributeSelectorItem} from '../../../types';\nimport useStyles from './styles';\n\ntype Value = {\n fieldName: string;\n title: string;\n};\ntype Props = {\n value: AttributeSelectorItem;\n disabled: boolean;\n getLabel: (value: Value) => string;\n onSelectAttributeClick: (event) => void;\n};\n\nconst defaultGetLabel = either(prop('title'), prop('fieldName'));\n\nconst AttributeTitle = ({value, getLabel = defaultGetLabel, onSelectAttributeClick, disabled = false}: Props) => {\n const styles = useStyles();\n const label = value && getLabel(value);\n return (\n <div\n onClick={disabled ? undefined : onSelectAttributeClick}\n className={classnames(\n styles.attribute,\n {\n [styles.attributeWithValue]: !!label\n },\n {[styles.disabled]: disabled}\n )}\n >\n <ExpandedValueTooltip value={label}>\n <div className={classnames(styles.name, {[styles.disabled]: disabled})}>\n {label || <span className={styles.noSelect}>{i18n.text('Select attribute')}</span>}\n </div>\n </ExpandedValueTooltip>\n <SmallIconButton size={'M'} icon={ArrowDropDownIcon} disabled={disabled} />\n </div>\n );\n};\n\nexport default AttributeTitle;\n","import {eqBy, pick, curry} from 'ramda';\nimport {getMaxItemWidth} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItem, AttributeSelectorItemsGroup} from '../../types';\n\nexport const isEqualAttributes = eqBy(pick(['fieldName', 'uri', 'entityTypeUri']));\n\nexport const checkAttributeIncludes = (attribute: AttributeSelectorItem, selectedAttributes: AttributeSelectorItem[]) =>\n selectedAttributes && !!selectedAttributes.find(isEqualAttributes(attribute));\n\nconst filterItem = (item: AttributeSelectorItem, filterText: string) =>\n item.title.toLowerCase().includes(filterText.toLowerCase());\n\nexport const filterItemsTree = (item: AttributeSelectorItem, filterText: string): boolean =>\n filterItem(item, filterText) || (item.children || []).some((item) => filterItemsTree(item, filterText));\n\nexport const filterSelectedAttributes = ({\n attribute,\n selectedAttributes,\n checked\n}: {\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n checked: boolean;\n}) => {\n return checked\n ? selectedAttributes.concat(attribute)\n : selectedAttributes.filter((selectedAttribute) => !isEqualAttributes(attribute, selectedAttribute));\n};\n\nexport const getAttributeIndex = (selectedAttributes: AttributeSelectorItem[], attribute: AttributeSelectorItem) =>\n selectedAttributes.findIndex(isEqualAttributes(attribute));\n\nexport const getContainerWidth = getMaxItemWidth('title');\n\nexport const getOnEnterHandler = ({\n onListItemClick,\n selectedAttributes\n}: {\n selectedAttributes: AttributeSelectorItem[];\n onListItemClick: (attribute: AttributeSelectorItem, checked: boolean) => void;\n}) => ({item, groupData}) => {\n const checked = checkAttributeIncludes(item, selectedAttributes);\n onListItemClick({...item, groupName: groupData.groupName}, !checked);\n};\n\nconst getAttributeGroupData = (\n item: AttributeSelectorItem,\n groupId: string,\n groupName: string,\n filterText: string,\n level = 0,\n noFilter = false\n) => {\n const isItemFiltered = filterItem(item, filterText);\n return [\n {\n item: filterText ? {...item, filterText} : item,\n level,\n groupId,\n groupName\n }\n ]\n .concat(\n item.children\n ? item.children\n .filter((subItem) => noFilter || isItemFiltered || filterItemsTree(subItem, filterText))\n .flatMap((subItem) =>\n getAttributeGroupData(\n subItem,\n groupId,\n groupName,\n filterText,\n level + 1,\n noFilter || isItemFiltered\n )\n )\n : []\n )\n .flat();\n};\n\nexport const prepareGroupsForSelectAttributeList: (\n filterText: string,\n groups: AttributeSelectorItemsGroup[]\n) => {item: AttributeSelectorItemsGroup[]; items: AttributeSelectorItem[]} = curry(\n (filterText: string, groups: AttributeSelectorItemsGroup[]) =>\n groups\n .map((group) => ({\n item: group,\n items: group.attributes\n .filter((attribute) => filterItemsTree(attribute, filterText))\n .map((item) => getAttributeGroupData(item, group.id, group.title, filterText))\n }))\n .filter((group) => group.items.length)\n);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n subHeader: {\n backgroundColor: '#f5f5f5',\n padding: '0 16px',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.84)',\n fontSize: '14px',\n fontWeight: 500\n }\n});\n","import React, {memo} from 'react';\nimport {useSelector} from 'react-redux';\nimport ListItem from '@mui/material/ListItem';\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 '@mui/styles';\n\nconst useStyles = makeStyles({\n selector: {\n minWidth: '200px',\n alignItems: 'stretch',\n background: 'rgba(0,0,0, 0.0267)',\n boxSizing: 'border-box',\n borderRadius: '4px',\n display: 'flex'\n }\n});\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {identity, pipe, tap, prop, flatten, pick, map, chain, when, always} from 'ramda';\nimport SelectionPopup from '../SelectionPopup/SelectionPopup';\nimport {useKeyboardNavigation} from '../SelectionPopup/helpers';\nimport AttributeTitle from './AttributeTitle/AttributeTitle';\nimport {\n filterSelectedAttributes,\n getAttributeIndex,\n getContainerWidth,\n getOnEnterHandler,\n prepareGroupsForSelectAttributeList\n} from './helpers';\nimport SelectAttributesList from '../SelectAttributesList/SelectAttributesList';\nimport {flattenGroupedItemsData} from '../VirtualGroupedList/helpers';\nimport {AttributeSelectorItem, BasicAttributeSelectorProps} from '../../types';\nimport useStyles from './styles';\n\nconst ATTRIBUTES_LIST_HEIGHT = 400;\nconst ATTRIBUTES_LIST_WIDTH = 308;\nconst ATTRIBUTES_POPUP_HEIGHT = 507;\n\nconst BasicAttributeSelector = ({\n className,\n itemsGroups,\n value,\n getLabel,\n onSelect,\n onRestoreFocus = identity,\n onOpenPopup = identity,\n disableRestoreFocus = false,\n disableEnforceFocus = false,\n single = false,\n ungroup = false,\n disabled = false,\n hideCheckBox = false\n}: BasicAttributeSelectorProps) => {\n const styles = useStyles();\n const [selectAnchor, setSelectAnchor] = useState(null);\n const openPopup = (event) => {\n onOpenPopup();\n setSelectAnchor(event.currentTarget);\n };\n const closePopup = useCallback(() => setSelectAnchor(null), []);\n const isPopupOpen = !!selectAnchor;\n\n const [filterText, setFilterText] = useState('');\n const clearFilterText = useCallback(() => setFilterText(''), []);\n\n const [selectedAttributes, setSelectedAttributes] = useState([]);\n const clearSelectedAttributes = useCallback(() => setSelectedAttributes([]), []);\n\n const filteredItemsGroups = useMemo(\n () => prepareGroupsForSelectAttributeList(filterText, itemsGroups),\n [itemsGroups, filterText]\n );\n\n const items = useMemo(\n () =>\n pipe(\n when(always(ungroup), chain(pipe(prop('items'), flatten, map(pick(['item', 'level']))))),\n flattenGroupedItemsData\n )(filteredItemsGroups),\n [ungroup, filteredItemsGroups]\n );\n\n const containerWidth = useMemo(\n () => Math.max(getContainerWidth(filteredItemsGroups), ATTRIBUTES_LIST_WIDTH),\n [filteredItemsGroups]\n );\n\n const handleOnClose = pipe(tap(pipe(clearSelectedAttributes, clearFilterText, closePopup)), onRestoreFocus);\n\n const searchInputRef = useRef<HTMLInputElement>();\n\n const onListItemClick = useCallback(\n (attribute: AttributeSelectorItem, checked: boolean) => {\n onSelect({\n checked,\n attribute,\n index: checked ? selectedAttributes.length : getAttributeIndex(selectedAttributes, attribute),\n selectedAttributes\n });\n\n if (single) {\n setSelectedAttributes(checked ? [attribute] : []);\n handleOnClose({});\n } else {\n setSelectedAttributes(filterSelectedAttributes({selectedAttributes, attribute, checked}));\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n },\n [selectedAttributes, onSelect, single, handleOnClose, searchInputRef]\n );\n\n const handleSearchOnEnter = useCallback(getOnEnterHandler({onListItemClick, selectedAttributes}), [\n onListItemClick,\n selectedAttributes\n ]);\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: isPopupOpen,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems: selectedAttributes,\n onClose: handleOnClose\n });\n\n return (\n <div className={classnames(styles.selector, className)} data-reltio-id=\"attribute-selector\">\n <AttributeTitle value={value} getLabel={getLabel} onSelectAttributeClick={openPopup} disabled={disabled} />\n <SelectionPopup\n open={isPopupOpen}\n anchorEl={selectAnchor}\n onClose={handleOnClose}\n onSearch={setFilterText}\n title={i18n.text('Select attribute')}\n containerWidth={containerWidth}\n containerHeight={ATTRIBUTES_POPUP_HEIGHT}\n searchInputOnKeyDown={handleKeyDown}\n anchorOrigin={{horizontal: 'right', vertical: 'bottom'}}\n searchInputRef={searchInputRef}\n disableRestoreFocus={disableRestoreFocus}\n disableEnforceFocus={disableEnforceFocus}\n >\n <SelectAttributesList\n items={items}\n onItemClick={onListItemClick}\n selectedAttributes={selectedAttributes}\n width={containerWidth}\n height={ATTRIBUTES_LIST_HEIGHT}\n focusIndex={focusIndex}\n hideCheckBox={hideCheckBox}\n />\n </SelectionPopup>\n </div>\n );\n};\n\nexport default memo(BasicAttributeSelector);\n","import {useCallback, useRef, useState} from 'react';\nimport {__, curry, identity, pipe, prop, useWith, equals} from 'ramda';\nimport {debounce} from '@reltio/mdm-sdk';\nimport {ColumnData, RowValue} from '../../types';\n\ntype GetRowCellKeyProps = {\n rowIndex: number;\n cellIndex: number;\n columnData: ColumnData;\n rowValue: RowValue;\n};\n\ntype RowCellHeightsMap = Record<string, number>;\n\nconst defaultGetRowCellKey = ({rowIndex, columnData: {id}, cellIndex}: GetRowCellKeyProps) => `${id}[${rowIndex}][${cellIndex}]`;\n\nconst useDynamicRowCellHeight = (getRowCellKey = defaultGetRowCellKey) => {\n const [rowCellHeightsMap, setRowCellHeightsMap] = useState<RowCellHeightsMap>({});\n const rowCellHeightsMapCache = useRef<RowCellHeightsMap>({});\n const batchHeightUpdate = (key: string, value: number) => {\n rowCellHeightsMapCache.current[key] = value;\n };\n const flushHeightUpdates = useCallback(\n debounce(() => {\n setRowCellHeightsMap((prev) => {\n const next = {...rowCellHeightsMapCache.current};\n return equals(prev, next) ? prev : next;\n });\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 '@mui/styles';\n\nexport const useStyles = makeStyles({\n pagination: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n height: '56px',\n flexShrink: 0,\n borderTop: '1px solid rgba(0,0,0,0.12)',\n boxShadow: 'none',\n boxSizing: 'border-box',\n overflowY: 'hidden',\n containerType: 'inline-size',\n '& .MuiInputBase-root': {\n display: 'none',\n '@container (min-width: 420px)': {\n display: 'inline-flex'\n }\n }\n },\n caption: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px',\n display: 'none',\n '@container (min-width: 420px)': {\n display: 'block'\n }\n },\n displayedRows: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px'\n },\n selectRoot: {\n marginLeft: '5px',\n marginRight: '36px'\n },\n select: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px',\n textAlign: 'right'\n },\n actions: {\n marginLeft: '32px!important' //we need it, because of the more specific rule in the mui\n }\n});\n","import React, {useCallback, memo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getValue} from '../../../core/utils';\nimport {nthArg, pipe, pathOr, identity} from 'ramda';\nimport TablePagination, {TablePaginationProps} from '@mui/material/TablePagination';\n\nimport {useStyles} from './styles';\n\ntype BasicTablePaginationProps = {\n classes?: TablePaginationProps['classes'];\n basicTableRef?: React.Ref<HTMLElement>;\n count?: number;\n page?: number;\n rowsPerPage?: number;\n labelRowsPerPage?: React.ReactNode;\n rowsPerPageOptions?: TablePaginationProps['rowsPerPageOptions'];\n onChangePage?: (value: number) => void;\n onChangeRowsPerPage?: (value: number) => void;\n};\n\nconst BasicTablePagination = ({\n classes = {},\n count,\n rowsPerPageOptions,\n page,\n onChangePage,\n rowsPerPage,\n onChangeRowsPerPage,\n basicTableRef,\n labelRowsPerPage\n}: BasicTablePaginationProps) => {\n const styles = useStyles();\n\n const labelDisplayedRows = ({from, to, count}) =>\n i18n.text('${fromRow}-${toRow} of ${countRows}', {\n fromRow: i18n.number(from, '0,0'),\n toRow: i18n.number(to, '0,0'),\n countRows: i18n.number(count, '0,0')\n });\n\n const resetScrollbarPosition = useCallback(() => {\n pathOr(identity, ['current', 'resetScrollbarPosition'], basicTableRef)();\n }, [basicTableRef]);\n\n const handleChangePage = useCallback(\n (value: number) => {\n onChangePage(value);\n resetScrollbarPosition();\n },\n [onChangePage, resetScrollbarPosition]\n );\n const handleChangeRowsPerPage = useCallback(\n (value: number) => {\n onChangePage(0);\n onChangeRowsPerPage(value);\n resetScrollbarPosition();\n },\n [onChangePage, onChangeRowsPerPage, resetScrollbarPosition]\n );\n\n return (\n <TablePagination\n classes={{\n ...classes,\n root: classnames(styles.pagination, classes.root),\n select: classnames(styles.select, classes.select),\n selectLabel: classnames(styles.caption, classes.selectLabel),\n displayedRows: classnames(styles.displayedRows, classes.displayedRows),\n input: classnames(styles.selectRoot, classes.selectRoot),\n actions: styles.actions\n }}\n backIconButtonProps={{size: 'large'}}\n nextIconButtonProps={{size: 'large'}}\n component=\"div\"\n labelRowsPerPage={labelRowsPerPage || i18n.text('Rows per page:')}\n labelDisplayedRows={labelDisplayedRows}\n count={count}\n rowsPerPageOptions={rowsPerPageOptions}\n page={page}\n onPageChange={pipe(nthArg(1), handleChangePage)}\n rowsPerPage={rowsPerPage}\n onRowsPerPageChange={pipe(getValue, handleChangeRowsPerPage)}\n />\n );\n};\n\nBasicTablePagination.displayName = 'BasicTablePagination';\n\nexport default memo(BasicTablePagination);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n hidden: {\n visibility: 'hidden'\n }\n}));\n","import React, {useContext} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {RowCollapseContext} from '../BasicTable/contexts/RowCollapseContext';\nimport CollapseButton from '../../CollapseButton/CollapseButton';\n\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst CollapseRowButton = ({rowIndex, rowValue, className}) => {\n const styles = useStyles();\n const {toggleRowCollapse, getIsRowCollapsible, getIsRowCollapsed} = useContext(RowCollapseContext);\n\n const isCollapsibleRow = getIsRowCollapsible(rowValue);\n const isCollapsedRow = getIsRowCollapsed(rowIndex);\n\n return (\n <CollapseButton\n className={classnames(className, {[styles.hidden]: !isCollapsibleRow})}\n isOpen={!isCollapsedRow}\n onClick={(e) => {\n toggleRowCollapse(rowIndex);\n e.stopPropagation();\n }}\n />\n );\n};\n\nCollapseRowButton.propTypes = {\n rowIndex: PropTypes.number,\n rowValue: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default CollapseRowButton;\n","import React, {ReactNode, useEffect, useRef} from 'react';\n\nimport ReactResizeDetector from 'react-resize-detector';\nimport {useDidUpdateEffect} from '../../../hooks';\nimport {ColumnData, RenderRowCellProps, RowValue} from '../types';\n\ntype OnChangeHeightProps = {\n rowIndex: number;\n cellIndex: number;\n columnData: ColumnData;\n rowValue: RowValue;\n};\n\ntype Props = {\n onChangeHeight: (props: OnChangeHeightProps) => (size: number) => void;\n children: ReactNode;\n} & RenderRowCellProps;\n\nconst RowCellAutoSizer = ({onChangeHeight, children: cell, ...cellProps}: Props) => {\n const cellRef = useRef<HTMLDivElement>();\n const {rowValue, rowIndex, columnData, cellIndex} = cellProps;\n const changeCellHeight = onChangeHeight({rowIndex, cellIndex, columnData, rowValue});\n\n const adjustCellHeight = () => cellRef.current && changeCellHeight(cellRef.current.clientHeight);\n\n useDidUpdateEffect(adjustCellHeight, [rowValue.rawValue]);\n useEffect(() => () => changeCellHeight(undefined), []);\n\n return (\n <div ref={cellRef}>\n <ReactResizeDetector handleHeight onResize={adjustCellHeight} />\n {cell}\n </div>\n );\n};\n\nexport default RowCellAutoSizer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n collapseButton: {\n cursor: 'pointer'\n },\n expandLess: {\n transform: 'rotate( -180deg )'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport ExpandMore from '@mui/icons-material/ExpandMore';\nimport {useStyles} from './styles';\n\ntype SmallIconButtonWithTooltipProps = React.ComponentPropsWithoutRef<typeof SmallIconButtonWithTooltip>;\n\ntype Props = Omit<SmallIconButtonWithTooltipProps, 'tooltipTitle'> & {\n isOpen?: boolean;\n tooltipTitle?: string;\n};\n\nconst CollapseButton = ({isOpen = false, tooltipTitle, ...otherProps}: Props) => {\n const styles = useStyles();\n const buttonProps = {\n icon: ExpandMore,\n className: styles.collapseButton,\n iconClassName: classnames({[styles.expandLess]: isOpen})\n };\n const tooltipProps = {\n tooltipTitle: tooltipTitle\n };\n return (\n <SmallIconButtonWithTooltip\n data-reltio-id=\"collapse-button\"\n {...buttonProps}\n {...tooltipProps}\n {...otherProps}\n />\n );\n};\n\nexport default CollapseButton;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n paper: {\n minHeight: '180px'\n },\n title: {\n padding: '16px 16px 10px 16px',\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px'\n },\n content: {\n padding: '0 16px'\n },\n contentText: {\n marginBottom: 0,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '24px'\n },\n actionButtons: {\n display: 'flex',\n paddingTop: '4px',\n fontSize: '14px',\n fontWeight: 500,\n letterSpacing: 0,\n lineHeight: '16px',\n '& > div': {\n marginLeft: 'auto'\n }\n },\n discardButton: {\n marginRight: '8px'\n }\n});\n\nexport {useStyles};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\n\nimport {useStyles} from './styles';\n\nexport type Props = {\n open: boolean;\n title: React.ReactNode;\n content: React.ReactNode;\n cancelCaption?: string;\n discardCaption?: string;\n saveCaption?: string;\n disabledSave?: boolean;\n onCancel?: () => void;\n onDiscard?: () => void;\n onSave: () => void;\n};\n\nconst ConfirmationDialog = ({\n open,\n title,\n content,\n onCancel,\n cancelCaption = i18n.text('Cancel'),\n onDiscard,\n discardCaption = '',\n onSave,\n saveCaption = i18n.text('Save'),\n disabledSave = false\n}: Props) => {\n const styles = useStyles();\n\n return (\n <Dialog open={open} onClose={onCancel} classes={{paperScrollPaper: styles.paper}}>\n <DialogTitle classes={{root: styles.title}}>{title}</DialogTitle>\n <DialogContent classes={{root: styles.content}}>\n <DialogContentText classes={{root: styles.contentText}}>{content}</DialogContentText>\n </DialogContent>\n <DialogActions className={styles.actionButtons} disableSpacing>\n {onCancel && <Button onClick={onCancel}>{cancelCaption}</Button>}\n <div>\n {onDiscard && (\n <Button onClick={onDiscard} classes={{root: styles.discardButton}}>\n {discardCaption}\n </Button>\n )}\n <Button onClick={onSave} color=\"primary\" disabled={disabledSave} autoFocus>\n {saveCaption}\n </Button>\n </div>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default ConfirmationDialog;\n","import React, {useMemo, useCallback, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {ConnectionRelationType, RelationTypeType} from '@reltio/mdm-sdk';\nimport {identity, pipe} from 'ramda';\nimport {useRelationTypeSelector} from '../../hooks';\nimport RelationTypeSelector from '../attributes/editMode/RelationTypeSelector/RelationTypeSelector';\n\nconst ConnectionRelationTypeSelector = ({\n relation = {},\n inRelationTypes = [],\n outRelationTypes = [],\n onChange = identity,\n applyFirstByDefault = false,\n reversedContextLabels = false,\n ...otherProps\n}) => {\n const {getRelationTypesOptions, fromEditorValue, toEditorValue} = useRelationTypeSelector({reversedContextLabels});\n\n const relationsTypesOptions = useMemo(\n () => getRelationTypesOptions(inRelationTypes, outRelationTypes),\n [getRelationTypesOptions, inRelationTypes, outRelationTypes]\n );\n\n const handleChange = useCallback(pipe(fromEditorValue(inRelationTypes, outRelationTypes), onChange), [\n fromEditorValue,\n inRelationTypes,\n outRelationTypes,\n onChange\n ]);\n\n const hasValue = !!relation.relationType;\n\n useEffect(() => {\n if (applyFirstByDefault && relationsTypesOptions.length && !hasValue) {\n handleChange(relationsTypesOptions[0]);\n }\n }, [relationsTypesOptions, applyFirstByDefault, handleChange, hasValue]);\n\n return (\n <RelationTypeSelector\n value={toEditorValue(relation, relationsTypesOptions)}\n options={relationsTypesOptions}\n onChange={handleChange}\n {...otherProps}\n />\n );\n};\n\nConnectionRelationTypeSelector.propTypes = {\n className: PropTypes.string,\n relation: ConnectionRelationType,\n inRelationTypes: PropTypes.arrayOf(RelationTypeType),\n outRelationTypes: PropTypes.arrayOf(RelationTypeType),\n applyFirstByDefault: PropTypes.bool,\n reversedContextLabels: PropTypes.bool,\n onChange: PropTypes.func\n};\n\nexport default ConnectionRelationTypeSelector;\n","import {makeStyles} from '@mui/styles';\n\nconst maxWidth = 500;\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flex: '1 1 auto',\n flexWrap: 'nowrap',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '10px',\n overflow: 'auto',\n height: '100%',\n minHeight: '350px',\n boxSizing: 'border-box',\n '&$root_small': {\n minHeight: '160px'\n },\n '& $text': {\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n lineHeight: '24px',\n letterSpacing: '0.25px',\n textAlign: 'center'\n },\n '& $secondaryText': {\n color: theme.palette.text.secondary,\n fontSize: '15px',\n fontWeight: 300,\n lineHeight: '18px',\n letterSpacing: '0.11px',\n textAlign: 'center',\n paddingTop: '3px'\n }\n },\n root_small: {},\n embedded: {\n flexShrink: 0,\n width: '190px',\n height: '190px',\n padding: '8px'\n },\n full: {\n width: '256px',\n height: '256px'\n },\n textBox: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n maxWidth: maxWidth,\n marginTop: '16px'\n },\n text: {},\n secondaryText: {},\n button: {\n minHeight: 36,\n minWidth: 64,\n maxWidth: maxWidth,\n padding: '10px 16px',\n borderRadius: '2px',\n boxShadow:\n '0 0 2px 0 rgba(0,0,0,0.12), 0 2px 2px 0 rgba(0,0,0,0.24), 0 0 8px 0 rgba(0,0,0,0.12), 0 8px 8px 0 rgba(0,0,0,0.24)',\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px',\n marginTop: '24px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {identity} from 'ramda';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport EmptySearchResultsIcon from '../../icons/EmptySearchResults';\nimport SelectAttributesIcon from '../../icons/SelectAttributes';\nimport NoData from '../../icons/NoData';\nimport Error from '../../icons/Error';\nimport {useStyles} from './styles';\n\nexport enum EMPTY_STATE_VARIANTS {\n full = 'full',\n embedded = 'embedded',\n small = 'small'\n}\n\nexport const EMPTY_STATE_ICONS = {\n SEARCH_RESULTS: EmptySearchResultsIcon,\n SELECT_ATTRIBUTES: SelectAttributesIcon,\n NO_DATA: NoData,\n ERROR: Error\n};\n\ntype Props = {\n variant?: EMPTY_STATE_VARIANTS;\n LogoRenderer?: React.ElementType;\n text: string;\n secondaryText?: string;\n buttonTitle?: string;\n access?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n};\n\nconst EmptyState = ({\n variant = EMPTY_STATE_VARIANTS.full,\n LogoRenderer = EMPTY_STATE_ICONS.SEARCH_RESULTS,\n text,\n secondaryText,\n buttonTitle,\n onClick = identity,\n access\n}: Props) => {\n const styles = useStyles();\n const showButton = access && buttonTitle;\n\n return (\n <div className={classnames(styles.root, styles[`root_${variant}`])}>\n <LogoRenderer className={styles[`${variant}`]} />\n <div className={styles.textBox}>\n <Typography variant=\"h5\" classes={{h5: styles.text}}>\n {text}\n </Typography>\n {secondaryText && (\n <Typography variant=\"subtitle1\" classes={{subtitle1: styles.secondaryText}}>\n {secondaryText}\n </Typography>\n )}\n </div>\n {showButton && (\n <Button className={styles.button} variant=\"contained\" color=\"primary\" onClick={onClick}>\n {buttonTitle}\n </Button>\n )}\n </div>\n );\n};\n\nexport default EmptyState;\n","import React from 'react';\n\nconst SvgEmptySearchResults: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <radialGradient\n cx=\"50%\"\n cy=\"100%\"\n fx=\"50%\"\n fy=\"100%\"\n r=\"81.681%\"\n gradientTransform=\"matrix(.98998 0 0 .612 .005 .388)\"\n id=\"EmptySearchResults_svg__c\"\n >\n <stop stopColor=\"#00BFFF\" stopOpacity={0.5} offset=\"0%\" />\n <stop stopColor=\"#9EE8FF\" stopOpacity={0} offset=\"100%\" />\n </radialGradient>\n <radialGradient\n cx=\"50%\"\n cy=\"111.651%\"\n fx=\"50%\"\n fy=\"111.651%\"\n r=\"87.693%\"\n gradientTransform=\"matrix(0 -.97693 .7263 0 -.31 1.605)\"\n id=\"EmptySearchResults_svg__f\"\n >\n <stop stopColor=\"#91F8E5\" stopOpacity={0.6} offset=\"0%\" />\n <stop stopColor=\"#14F7FF\" stopOpacity={0} offset=\"100%\" />\n </radialGradient>\n <radialGradient\n cx=\"50%\"\n cy=\"103.659%\"\n fx=\"50%\"\n fy=\"103.659%\"\n r=\"90.207%\"\n gradientTransform=\"matrix(0 -1 2.23905 0 -1.821 1.537)\"\n id=\"EmptySearchResults_svg__g\"\n >\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#73FAFF\" stopOpacity={0.21} offset=\"59.38%\" />\n <stop stopColor=\"#14F7FF\" stopOpacity={0} offset=\"100%\" />\n </radialGradient>\n <linearGradient x1=\"50%\" y1=\"170.771%\" x2=\"50%\" y2=\"10.303%\" id=\"EmptySearchResults_svg__e\">\n <stop stopColor=\"#91F8E5\" offset=\"0%\" />\n <stop stopColor=\"#99FCFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <filter\n x=\"-25.9%\"\n y=\"-26.2%\"\n width=\"151.8%\"\n height=\"152.3%\"\n filterUnits=\"objectBoundingBox\"\n id=\"EmptySearchResults_svg__d\"\n >\n <feGaussianBlur stdDeviation={15} in=\"SourceGraphic\" />\n </filter>\n <circle id=\"EmptySearchResults_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"EmptySearchResults_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#EmptySearchResults_svg__a\" />\n </mask>\n <use fillOpacity={0.2} fill=\"#A792CD\" xlinkHref=\"#EmptySearchResults_svg__a\" />\n <g mask=\"url(#EmptySearchResults_svg__b)\">\n <g transform=\"translate(56 34)\">\n <g opacity={0.9} strokeWidth={1} fill=\"#FFF\">\n <path d=\"M0 6.99C0 3.13 3.137 0 7 0h247.067c3.866 0 7 3.144 7 6.99v169.353c0 3.86-3.137 6.99-7 6.99H7c-3.866 0-7-3.143-7-6.99V6.99z\" />\n <path\n d=\"M13 25.99c0-3.86 3.137-6.99 7-6.99h247.067c3.866 0 7 3.144 7 6.99v169.353c0 3.86-3.137 6.99-7 6.99H20c-3.866 0-7-3.143-7-6.99V25.99z\"\n opacity={0.4}\n />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(21.756 45.833)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={213.204} cy={5.456} rx={4.351} ry={4.365} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={197.976} cy={5.456} rx={4.351} ry={4.365} />\n <path\n d=\"M10.334 1.091c5.707 0 10.334 4.627 10.334 10.334v.067c0 5.707-4.627 10.333-10.334 10.333S0 17.2 0 11.492v-.067C0 5.718 4.627 1.091 10.334 1.091z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M35.365.861h69.768a3.82 3.82 0 010 7.639H35.365a3.82 3.82 0 010-7.639z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M34.274 15.048h126.164a2.728 2.728 0 010 5.456H34.274a2.728 2.728 0 110-5.456z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M33.182 24.869H73.89a1.637 1.637 0 110 3.274H33.182a1.637 1.637 0 010-3.274z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <rect\n fill=\"#645F6D\"\n opacity={0.5}\n x={21.756}\n y={17.46}\n width={87.022}\n height={12.004}\n rx={6.002}\n />\n <g strokeWidth={1} fill=\"none\" transform=\"translate(21.756 87.302)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={213.204} cy={5.456} rx={4.351} ry={4.365} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={197.976} cy={5.456} rx={4.351} ry={4.365} />\n <rect fill=\"#E3EBF4\" x={0} y={1.091} width={20.668} height={20.734} rx={10.334} />\n <path\n d=\"M35.365.861h82.647a3.82 3.82 0 010 7.639H35.365a3.82 3.82 0 010-7.639z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M34.274 15.048H174.58a2.728 2.728 0 010 5.456H34.274a2.728 2.728 0 110-5.456z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M33.182 24.869h113.119a1.637 1.637 0 110 3.274H33.182a1.637 1.637 0 010-3.274z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(21.756 128.77)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={213.204} cy={5.456} rx={4.351} ry={4.365} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={197.976} cy={5.456} rx={4.351} ry={4.365} />\n <path\n d=\"M10.334 1.091c5.707 0 10.334 4.627 10.334 10.334v.067c0 5.707-4.627 10.333-10.334 10.333S0 17.2 0 11.492v-.067C0 5.718 4.627 1.091 10.334 1.091z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M35.365.861h110.929a3.82 3.82 0 010 7.639H35.365a3.82 3.82 0 010-7.639z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M34.274 15.048h92.443a2.728 2.728 0 010 5.456H34.274a2.728 2.728 0 110-5.456z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M33.182 24.869H73.89a1.637 1.637 0 110 3.274H33.182a1.637 1.637 0 010-3.274z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n </g>\n </g>\n <g mask=\"url(#EmptySearchResults_svg__b)\">\n <path\n fill=\"#446275\"\n d=\"M72.246 84.033l8.66 5-35.5 61.488-8.66-5-12.556-24.729-51.307-29.622 20.431-35.388 50.648 29.242z\"\n />\n <path\n d=\"M62.906 120.21l-80.091-46.24 10.5-18.188 50.647 29.242 28.284-.99 8.66 5-18 31.176z\"\n fillOpacity={0.2}\n fill=\"#FFF\"\n />\n <path\n d=\"M27.566 75.558L3.877 109.065l-5.013-2.895 26.045-32.146 2.657 1.534zm9.467 5.466L13.345 114.53l-5.014-2.895L34.377 79.49l2.656 1.534zm8.158 4.71l-22.32 34.297-5.013-2.895L43.903 84.99l1.288.744z\"\n fill=\"#527585\"\n />\n <path\n d=\"M11.524 90.544l13.385-16.52 2.657 1.534-12.174 17.22-3.868-2.234zm9.467 5.467L34.377 79.49l2.656 1.534-12.174 17.22-3.868-2.233zm9.527 5.5L43.903 84.99l1.288.744-11.47 17.626-3.203-1.85z\"\n fill=\"#76A2B5\"\n opacity={0.6}\n />\n <path\n d=\"M.355 59.848l-23.689 33.507-5.013-2.895 26.045-32.146 2.657 1.534zm9.468 5.466L-13.866 98.82l-5.013-2.895L7.166 63.78l2.657 1.534zm8.158 4.71L-4.34 104.32l-5.014-2.895L16.692 69.28l1.289.744z\"\n fillOpacity={0.1}\n fill=\"#000\"\n />\n <g>\n <path\n fill=\"url(#EmptySearchResults_svg__c)\"\n opacity={0.993}\n filter=\"url(#EmptySearchResults_svg__d)\"\n d=\"M.63 0h173.74L123 172H52z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path\n fill=\"url(#EmptySearchResults_svg__e)\"\n opacity={0.3}\n d=\"M4 9h166.37L120.73 172.299H53.64z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path\n fill=\"url(#EmptySearchResults_svg__f)\"\n opacity={0.3}\n d=\"M4 2h166.37L120.73 172.299H53.64z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path\n fill=\"url(#EmptySearchResults_svg__g)\"\n d=\"M4 9h166.37L120.73 172.299H53.64z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path fill=\"#FFF\" opacity={0.196} d=\"M212.363 205.344l-1 1.732L60.418 124.52l4.977-8.62z\" />\n </g>\n <path fill=\"#76A2B5\" d=\"M73.112 84.533l-35.5 61.488-.866-.5 35.5-61.488z\" />\n <path fill=\"#F3F3F3\" d=\"M80.906 89.033l-35.5 61.488-.866-.5 35.5-61.488z\" />\n <path fill=\"#538196\" d=\"M55.112 115.71l-17.5 30.311-.866-.5 17.5-30.31z\" />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgEmptySearchResults;\n","import React from 'react';\n\nconst SvgSelectAttributes: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={256} height={256} viewBox=\"0 0 256 256\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <circle cx={128} cy={128} r={128} fill=\"#0072CE\" fillOpacity={0.1} />\n <mask\n id=\"SelectAttributes_svg__a\"\n style={{\n maskType: 'alpha'\n }}\n maskUnits=\"userSpaceOnUse\"\n x={0}\n y={0}\n width={256}\n height={256}\n >\n <circle cx={128} cy={128} r={128} fill=\"#fff\" />\n </mask>\n <g mask=\"url(#SelectAttributes_svg__a)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M-16 9h256v247H-16V9z\"\n fill=\"url(#SelectAttributes_svg__paint0_linear_0_19219)\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M187.761 56.865l58.639 58.639v148.871H93.383L52 225.083V56.865h135.761z\"\n fill=\"url(#SelectAttributes_svg__paint1_linear_0_19219)\"\n />\n <path\n opacity={0.06}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M47 58h202a7 7 0 017 7v157a7 7 0 01-7 7H47a7 7 0 01-7-7V65a7 7 0 017-7z\"\n fill=\"#000\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M50 56h201a5 5 0 015 5v157a5 5 0 01-5 5H50a5 5 0 01-5-5V61a5 5 0 015-5z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 72.635a3 3 0 013-3H150a3 3 0 110 6h-41.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 84.635a3 3 0 013-3h64.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 163a3 3 0 013-3H150a3 3 0 110 6h-41.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 175a3 3 0 013-3h64.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 193a3 3 0 013-3H190a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 205a3 3 0 013-3h74.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138.376 103a3 3 0 013-3H223a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138 115a3 3 0 013-3h64.205a3 3 0 110 6H141a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <circle cx={67} cy={79} r={9} fill=\"#B6C7DB\" />\n <circle cx={67} cy={79} r={9} fill=\"#B6C7DB\" />\n <circle cx={120} cy={106} r={6} fill=\"#B6C7DB\" />\n <circle cx={120} cy={136} r={6} fill=\"#B6C7DB\" />\n <circle cx={67} cy={169} r={9} fill=\"#B6C7DB\" />\n <circle cx={67} cy={199} r={9} fill=\"#B6C7DB\" />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138.376 133a3 3 0 013-3H223a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138 145a3 3 0 013-3h74.205a3 3 0 110 6H141a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M92.514 108v-8h-2V140.365h11.178v-2h-9.178V110h9.178v-2h-9.178z\"\n fill=\"#2B98F0\"\n />\n <path\n opacity={0.54}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M95.071 77l-3.535 3.535L88 77h7.071z\"\n fill=\"#000\"\n />\n <path\n opacity={0.6}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M50 22h186a6 6 0 016 6v18a6 6 0 01-6 6H50a6 6 0 01-6-6V28a6 6 0 016-6z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M58 37a6 6 0 016-6h70a6 6 0 110 12H64a6 6 0 01-6-6zM148 37a6 6 0 016-6h10a6 6 0 110 12h-10a6 6 0 01-6-6z\"\n fill=\"#979797\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"SelectAttributes_svg__paint0_linear_0_19219\"\n x1={-16}\n y1={9}\n x2={-16}\n y2={256}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FAFAFA\" stopOpacity={0.01} />\n <stop offset={1} stopColor=\"#F4F4F4\" />\n </linearGradient>\n <linearGradient\n id=\"SelectAttributes_svg__paint1_linear_0_19219\"\n x1={266.117}\n y1={181.111}\n x2={154.882}\n y2={77.681}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity={0.01} />\n <stop offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport default SvgSelectAttributes;\n","import React from 'react';\n\nconst SvgNoData: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"NoData_svg__b\">\n <stop stopColor=\"#FAFAFA\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#F4F4F4\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"69.573%\" y1=\"86.747%\" x2=\"38.144%\" y2=\"33.403%\" id=\"NoData_svg__d\">\n <stop stopColor=\"#000\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#000\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"NoData_svg__e\">\n <stop stopColor=\"#EEFBFF\" offset=\"0%\" />\n <stop stopColor=\"#0072CE\" offset=\"100%\" />\n </linearGradient>\n <filter\n x=\"-7.7%\"\n y=\"-7.5%\"\n width=\"115.3%\"\n height=\"115%\"\n filterUnits=\"objectBoundingBox\"\n id=\"NoData_svg__f\"\n >\n <feOffset dx={0} dy={2} in=\"SourceAlpha\" result=\"shadowOffsetOuter1\" />\n <feGaussianBlur stdDeviation={2} in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\" />\n <feColorMatrix\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n type=\"matrix\"\n in=\"shadowBlurOuter1\"\n result=\"shadowMatrixOuter1\"\n />\n <feMerge>\n <feMergeNode in=\"shadowMatrixOuter1\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n <circle id=\"NoData_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"NoData_svg__c\" fill=\"#fff\">\n <use xlinkHref=\"#NoData_svg__a\" />\n </mask>\n <use fillOpacity={0.1} fill=\"#0072CE\" xlinkHref=\"#NoData_svg__a\" />\n <path fill=\"url(#NoData_svg__b)\" mask=\"url(#NoData_svg__c)\" d=\"M0 9h256v247H0z\" />\n <g mask=\"url(#NoData_svg__c)\">\n <g transform=\"translate(29 37)\">\n <g opacity={0.9} strokeWidth={1} fill=\"#FFF\">\n <path fillOpacity={0.8} opacity={0.5} d=\"M14.565 8h228.144v176.476H14.565z\" />\n <path d=\"M0 8.01C0 3.586 3.576 0 7.997 0h223.838a7.997 7.997 0 017.997 8.01v152.401c0 4.424-3.577 8.01-7.997 8.01H7.997A7.997 7.997 0 010 160.411V8.01z\" />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(19.986 42.105)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={195.862} cy={5.013} rx={3.997} ry={4.01} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={181.872} cy={5.013} rx={3.997} ry={4.01} />\n <path\n d=\"M9.493 1.003a9.493 9.493 0 019.494 9.493v.06a9.493 9.493 0 01-18.987 0v-.06a9.493 9.493 0 019.493-9.493z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M32.488.791h64.093a3.509 3.509 0 110 7.018H32.488a3.509 3.509 0 110-7.018z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M31.486 13.824h115.902a2.506 2.506 0 010 5.012H31.486a2.506 2.506 0 010-5.012z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M30.483 22.846H67.88a1.504 1.504 0 110 3.008H30.483a1.504 1.504 0 110-3.008z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <rect\n fill=\"#645F6D\"\n opacity={0.5}\n x={19.986}\n y={16.04}\n width={79.944}\n height={11.028}\n rx={5.514}\n />\n <g strokeWidth={1} fill=\"none\" transform=\"translate(19.986 80.2)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={195.862} cy={5.013} rx={3.997} ry={4.01} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={181.872} cy={5.013} rx={3.997} ry={4.01} />\n <rect fill=\"#E3EBF4\" x={0} y={1.003} width={18.987} height={19.048} rx={9.493} />\n <path\n d=\"M32.488.791h75.925a3.509 3.509 0 010 7.018H32.488a3.509 3.509 0 110-7.018z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M31.486 13.824h128.893a2.506 2.506 0 110 5.012H31.486a2.506 2.506 0 010-5.012z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M30.483 22.846h103.918a1.504 1.504 0 010 3.008H30.483a1.504 1.504 0 110-3.008z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(19.986 118.296)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={195.862} cy={5.013} rx={3.997} ry={4.01} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={181.872} cy={5.013} rx={3.997} ry={4.01} />\n <path\n d=\"M9.493 1.003a9.493 9.493 0 019.494 9.493v.06a9.493 9.493 0 01-18.987 0v-.06a9.493 9.493 0 019.493-9.493z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M32.488.791h101.906a3.509 3.509 0 010 7.018H32.488a3.509 3.509 0 110-7.018z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M31.486 13.824h84.924a2.506 2.506 0 010 5.012H31.486a2.506 2.506 0 010-5.012z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M30.483 22.846H67.88a1.504 1.504 0 110 3.008H30.483a1.504 1.504 0 110-3.008z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n </g>\n </g>\n <g mask=\"url(#NoData_svg__c)\">\n <path\n d=\"M154.445 45.134v154.072H36.625V45.134h.811C35.508 62.52 41.07 80.609 54.12 93.944c22.74 23.235 59.61 23.235 82.352 0 13.05-13.335 18.612-31.424 16.683-48.81h1.29z\"\n fill=\"url(#NoData_svg__d)\"\n opacity={0.1}\n transform=\"rotate(-30 291.014 34.548)\"\n />\n <path\n d=\"M27.473 93.234c17.964 18.355 47.09 18.355 65.054 0s17.964-48.113 0-66.468c-17.964-18.355-47.09-18.355-65.054 0s-17.964 48.113 0 66.468z\"\n fill=\"url(#NoData_svg__e)\"\n opacity={0.2}\n transform=\"translate(70 86)\"\n />\n <g filter=\"url(#NoData_svg__f)\" strokeWidth={1} fill=\"none\" transform=\"translate(70 86)\">\n <path\n d=\"M59.697 0c32.97 0 59.697 26.746 59.697 59.738 0 15.185-5.662 29.047-14.988 39.587l51.204 51.24a89.336 89.336 0 01-10.097 9.392l-51.38-51.416c-9.73 6.888-21.61 10.936-34.436 10.936C26.727 119.477 0 92.73 0 59.738 0 26.746 26.727 0 59.697 0zm0 17.756c-23.17 0-41.953 18.796-41.953 41.982s18.783 41.982 41.953 41.982 41.953-18.796 41.953-41.982-18.783-41.982-41.953-41.982z\"\n fill=\"#B5C8C9\"\n />\n <path\n d=\"M21.508 105.656C8.365 94.698 0 78.196 0 59.738 0 26.746 26.727 0 59.697 0c18.444 0 34.935 8.37 45.885 21.523l-9.794 9.8c-8.408-10.68-21.45-17.537-36.091-17.537-25.361 0-45.92 20.573-45.92 45.952 0 14.652 6.852 27.702 17.525 36.117l-9.794 9.8z\"\n fillOpacity={0.4}\n fill=\"#FFF\"\n />\n </g>\n <path\n d=\"M97.473 179.234c17.964 18.355 47.09 18.355 65.054 0s17.964-48.113 0-66.468c-17.964-18.355-47.09-18.355-65.054 0s-17.964 48.113 0 66.468z\"\n fill=\"#D9F5FF\"\n opacity={0.4}\n style={{\n mixBlendMode: 'soft-light'\n }}\n />\n <path\n d=\"M123.885 158.736c0-3.929.444-7.03 1.332-9.304.888-2.274 2.328-4.245 4.32-5.914 1.99-1.668 3.504-3.195 4.54-4.581 1.037-1.386 1.555-2.913 1.555-4.581 0-4.064-1.75-6.095-5.248-6.095-1.614 0-2.92.592-3.915 1.776-.996 1.184-1.52 2.785-1.574 4.803H111.25c.054-5.382 1.75-9.573 5.086-12.574 3.337-3 8.02-4.5 14.047-4.5 6.001 0 10.65 1.386 13.946 4.157 3.297 2.772 4.945 6.714 4.945 11.827 0 2.234-.444 4.265-1.332 6.095-.888 1.83-2.315 3.7-4.279 5.61l-4.642 4.32c-1.318 1.265-2.233 2.563-2.745 3.895-.51 1.332-.793 3.02-.847 5.066h-11.545zm-1.655 12.27c0-1.99.72-3.625 2.16-4.904 1.44-1.278 3.236-1.917 5.389-1.917 2.152 0 3.949.64 5.388 1.917 1.44 1.279 2.16 2.913 2.16 4.905 0 1.991-.72 3.626-2.16 4.904-1.44 1.278-3.236 1.917-5.388 1.917-2.153 0-3.95-.639-5.389-1.917-1.44-1.278-2.16-2.913-2.16-4.904z\"\n fillOpacity={0.87}\n fill=\"#000\"\n style={{\n mixBlendMode: 'overlay'\n }}\n />\n <path\n d=\"M123.885 158.736c0-3.929.444-7.03 1.332-9.304.888-2.274 2.328-4.245 4.32-5.914 1.99-1.668 3.504-3.195 4.54-4.581 1.037-1.386 1.555-2.913 1.555-4.581 0-4.064-1.75-6.095-5.248-6.095-1.614 0-2.92.592-3.915 1.776-.996 1.184-1.52 2.785-1.574 4.803H111.25c.054-5.382 1.75-9.573 5.086-12.574 3.337-3 8.02-4.5 14.047-4.5 6.001 0 10.65 1.386 13.946 4.157 3.297 2.772 4.945 6.714 4.945 11.827 0 2.234-.444 4.265-1.332 6.095-.888 1.83-2.315 3.7-4.279 5.61l-4.642 4.32c-1.318 1.265-2.233 2.563-2.745 3.895-.51 1.332-.793 3.02-.847 5.066h-11.545zm-1.655 12.27c0-1.99.72-3.625 2.16-4.904 1.44-1.278 3.236-1.917 5.389-1.917 2.152 0 3.949.64 5.388 1.917 1.44 1.279 2.16 2.913 2.16 4.905 0 1.991-.72 3.626-2.16 4.904-1.44 1.278-3.236 1.917-5.388 1.917-2.153 0-3.95-.639-5.389-1.917-1.44-1.278-2.16-2.913-2.16-4.904z\"\n fillOpacity={0.38}\n fill=\"#3C74B4\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgNoData;\n","import React from 'react';\n\nconst SvgError: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={88} height={88} viewBox=\"0 0 88 88\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <mask\n id=\"Error_svg__a\"\n style={{\n maskType: 'alpha'\n }}\n maskUnits=\"userSpaceOnUse\"\n x={0}\n y={0}\n width={88}\n height={88}\n >\n <path d=\"M44 88c24.3 0 44-19.7 44-44S68.3 0 44 0 0 19.7 0 44s19.7 44 44 44z\" fill=\"#fff\" />\n </mask>\n <g mask=\"url(#Error_svg__a)\">\n <path\n d=\"M44 88c24.3 0 44-19.7 44-44S68.3 0 44 0 0 19.7 0 44s19.7 44 44 44z\"\n fill=\"#CAC4D5\"\n fillOpacity={0.3}\n />\n <path\n opacity={0.3}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.987 6.73l49.449 6.072a.687.687 0 01.596.767l-7.845 63.888a.688.688 0 01-.766.6L7.214 71.4a.688.688 0 01-.599-.763l.408-3.326L19.987 6.73z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.267 25.921l45.86-19.466a.687.687 0 01.9.366l25.15 59.251a.61.61 0 01-.386.84L22.34 82.765a.719.719 0 01-.887-.445l-20.185-56.4z\"\n fill=\"#fff\"\n />\n <path\n d=\"M65.631 9.23H11.017a.688.688 0 00-.687.687v64.37c0 .38.307.687.687.687h54.614c.38 0 .688-.308.688-.687V9.917a.688.688 0 00-.688-.688z\"\n fill=\"#F9F9F9\"\n />\n <path\n opacity={0.1}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.885 34.95l3.105-1.666 7.31-4.025 8.852 3.472 7.89-5.223 8.036-2.628 8.113 5.193 3.352-10.255v16.967H14.935l-.05-1.835z\"\n fill=\"#9C6CF0\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.885 32.331l3.105-3.761 7.31 4.31 8.852 1.656 7.89-2.205 8.036 1.827 8.113-12.643 3.352.742V36.36H14.935l-.05-4.029z\"\n fill=\"#FA82AA\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.885 34.946l3.105.432 7.31 1.01 8.852-5.117 7.89 3.675 8.036 1.839 8.113-1.839 3.352.811v1.028H14.935l-.05-1.839z\"\n fill=\"#4DBEE9\"\n />\n <path\n opacity={0.1}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M61.543 35.288l-.05 1.497H14.885v-5.239l3.352-.276 8.114 4.697 8.036-.679 7.889.82 8.852-.616 7.31-1.601 3.105 1.397z\"\n fill=\"#4DBEE9\"\n />\n <path d=\"M21.036 40.178h-5.09a.636.636 0 000 1.272h5.09a.636.636 0 100-1.272z\" fill=\"#ACACAC\" />\n <path\n opacity={0.3}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.582 55.872c.703 0 1.273.57 1.273 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.272-1.272zM25.914 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.273-1.272zM39.91 55.872c.703 0 1.273.57 1.273 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.273-1.272zM21.248 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.273 1.273 0 01-2.545 0V57.144c0-.702.57-1.272 1.273-1.272zM35.245 55.872c.703 0 1.273.57 1.273 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.272-1.272zM30.58 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.272-1.272zM44.577 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.273 1.273 0 01-2.545 0V57.144c0-.702.57-1.272 1.273-1.272z\"\n fill=\"#BDBDBD\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.582 65.628c.703 0 1.273.57 1.273 1.272v2.121a1.272 1.272 0 11-2.545 0v-2.12c0-.703.57-1.273 1.272-1.273zM25.914 62.658c.702 0 1.272.57 1.272 1.273v5.09a1.272 1.272 0 11-2.545 0v-5.09c0-.703.57-1.273 1.273-1.273zM39.91 65.628c.703 0 1.273.57 1.273 1.272v2.121a1.272 1.272 0 11-2.545 0v-2.12c0-.703.57-1.273 1.273-1.273zM21.248 66.477c.702 0 1.272.57 1.272 1.272v1.273a1.273 1.273 0 01-2.545 0v-1.273c0-.703.57-1.272 1.273-1.272z\"\n fill=\"#4DBEE9\"\n />\n <path\n d=\"M36.518 65.628a1.272 1.272 0 00-2.545 0v3.393a1.272 1.272 0 102.545 0v-3.393zM31.852 62.234a1.272 1.272 0 10-2.545 0v6.787a1.272 1.272 0 102.545 0v-6.787z\"\n fill=\"#4DBEE9\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M44.577 60.962c.702 0 1.272.57 1.272 1.272v6.787a1.273 1.273 0 01-2.545 0v-6.787c0-.702.57-1.272 1.273-1.272z\"\n fill=\"#4DBEE9\"\n />\n <path d=\"M18.915 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#9C6CF0\" />\n <path\n opacity={0.5}\n d=\"M34.185 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\"\n fill=\"#4DBEE9\"\n />\n <path\n opacity={0.3}\n d=\"M49.454 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\"\n fill=\"#4DBEE9\"\n />\n <path opacity={0.8} d=\"M26.55 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#FB6597\" />\n <path d=\"M41.82 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#4DBEE9\" />\n <path opacity={0.2} d=\"M57.09 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#4DBEE9\" />\n <path\n opacity={0.5}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.582 19.818h4.666a.424.424 0 110 .849h-4.666a.424.424 0 110-.849zM31.851 19.818h4.666a.424.424 0 010 .849h-4.666a.424.424 0 110-.849zM47.121 19.818h4.666a.424.424 0 010 .849h-4.666a.424.424 0 010-.849zM24.217 19.818h4.665a.424.424 0 010 .849h-4.665a.424.424 0 010-.849zM39.486 19.818h4.666a.424.424 0 110 .849h-4.666a.424.424 0 110-.849zM54.756 19.818h4.666a.424.424 0 110 .849h-4.666a.424.424 0 110-.849z\"\n fill=\"#ACACAC\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.946 43.571h5.09a.636.636 0 110 1.273h-5.09a.636.636 0 010-1.273zM15.946 46.116h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 010-1.273zM15.946 48.661h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 110-1.273zM23.58 43.571h5.09a.636.636 0 110 1.273h-5.09a.636.636 0 010-1.273zM23.58 46.116h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 010-1.273zM23.58 48.661h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 110-1.273zM49.454 43.571h11.028a.636.636 0 010 1.273H49.454a.636.636 0 010-1.273zM49.454 46.116h11.028a.636.636 0 010 1.273H49.454a.636.636 0 010-1.273zM49.454 48.661h11.028a.636.636 0 010 1.273H49.454a.636.636 0 110-1.273zM31.215 43.571h15.27a.636.636 0 110 1.273h-15.27a.636.636 0 010-1.273zM31.215 46.116h15.27a.636.636 0 010 1.273h-15.27a.636.636 0 010-1.273zM31.215 48.661h15.27a.636.636 0 010 1.273h-15.27a.636.636 0 010-1.273zM15.946 51.206h5.09a.636.636 0 110 1.272h-5.09a.636.636 0 110-1.272zM23.58 51.206h5.09a.636.636 0 110 1.272h-5.09a.636.636 0 110-1.272zM49.454 51.206h11.028a.636.636 0 010 1.272H49.454a.636.636 0 110-1.272zM31.215 51.206h15.27a.636.636 0 110 1.272h-15.27a.636.636 0 010-1.272z\"\n fill=\"#E9E9E9\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M49.878 55.872h5.09a.636.636 0 110 1.273h-5.09a.636.636 0 110-1.273z\"\n fill=\"#ACACAC\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M49.878 59.69h11.029a.636.636 0 010 1.272H49.878a.636.636 0 110-1.273zM49.878 62.234h11.029a.636.636 0 010 1.273H49.878a.636.636 0 010-1.273zM49.878 64.78h11.029a.636.636 0 010 1.272H49.878a.636.636 0 010-1.273z\"\n fill=\"#E9E9E9\"\n />\n <path d=\"M54.968 67.324h-5.09a.636.636 0 000 1.273h5.09a.636.636 0 000-1.273z\" fill=\"#E9E9E9\" />\n <g filter=\"url(#Error_svg__filter0_d)\">\n <path\n d=\"M57.406 74.25c9.493 0 17.188-7.695 17.188-17.188 0-9.492-7.695-17.187-17.188-17.187-9.492 0-17.187 7.695-17.187 17.188 0 9.492 7.695 17.187 17.187 17.187z\"\n fill=\"#000\"\n />\n </g>\n <path\n d=\"M57.406 74.25c9.493 0 17.188-7.695 17.188-17.188 0-9.492-7.695-17.187-17.188-17.187-9.492 0-17.187 7.695-17.187 17.188 0 9.492 7.695 17.187 17.187 17.187z\"\n fill=\"#F25252\"\n />\n <path\n opacity={0.15}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M57.406 34.719c12.34 0 22.344 10.003 22.344 22.343S69.746 79.406 57.406 79.406c-12.34 0-22.343-10.003-22.343-22.344 0-12.34 10.003-22.343 22.343-22.343zm-.172 2.406c-10.916 0-19.765 8.85-19.765 19.766 0 10.916 8.85 19.765 19.765 19.765C68.151 76.656 77 67.806 77 56.891c0-10.917-8.85-19.766-19.766-19.766z\"\n fill=\"#F25252\"\n />\n <path\n opacity={0.3}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M57.406 38.844c10.062 0 18.219 8.157 18.219 18.218 0 10.062-8.157 18.22-18.219 18.22-10.062 0-18.218-8.158-18.218-18.22 0-10.061 8.156-18.218 18.218-18.218zm0 2.043c-8.933 0-16.175 7.242-16.175 16.175 0 8.934 7.242 16.176 16.175 16.176 8.934 0 16.176-7.242 16.176-16.175 0-8.934-7.242-16.176-16.176-16.176z\"\n fill=\"#F25252\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M57.406 26.469C74.303 26.469 88 40.166 88 57.062c0 16.897-13.697 30.594-30.594 30.594-16.896 0-30.593-13.697-30.593-30.594 0-16.896 13.697-30.593 30.593-30.593zm-.172 3.437c-14.903 0-26.984 12.082-26.984 26.985 0 14.903 12.081 26.984 26.984 26.984 14.903 0 26.985-12.081 26.985-26.984 0-14.903-12.082-26.985-26.985-26.985z\"\n fill=\"#F25252\"\n />\n <path\n d=\"M57.406 71.844c8.164 0 14.782-6.618 14.782-14.781 0-8.164-6.618-14.782-14.782-14.782-8.163 0-14.781 6.618-14.781 14.782 0 8.163 6.618 14.78 14.781 14.78z\"\n fill=\"#FF6A6A\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M58.298 46.448L75.18 63.331l-9.114 12.078h-2.029l-7.582-7.582 1.006-3.178.837-18.2z\"\n fill=\"url(#Error_svg__paint0_linear)\"\n />\n <g filter=\"url(#Error_svg__filter1_d)\">\n <path d=\"M57.406 68.063a1.719 1.719 0 100-3.438 1.719 1.719 0 000 3.438z\" fill=\"#000\" />\n </g>\n <path d=\"M57.406 68.063a1.719 1.719 0 100-3.438 1.719 1.719 0 000 3.438z\" fill=\"#fff\" />\n <g filter=\"url(#Error_svg__filter2_d)\">\n <path\n d=\"M57.406 46.063c.95 0 1.719.769 1.719 1.718v12.375a1.719 1.719 0 11-3.438 0V47.781c0-.949.77-1.718 1.72-1.718z\"\n fill=\"#000\"\n />\n </g>\n <path\n d=\"M57.406 46.063c.95 0 1.719.769 1.719 1.718v12.375a1.719 1.719 0 11-3.438 0V47.781c0-.949.77-1.718 1.72-1.718z\"\n fill=\"#fff\"\n />\n </g>\n <defs>\n <filter\n id=\"Error_svg__filter0_d\"\n x={36.219}\n y={37.875}\n width={42.375}\n height={42.375}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" />\n <feOffset dy={2} />\n <feGaussianBlur stdDeviation={2} />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\" />\n </filter>\n <filter\n id=\"Error_svg__filter1_d\"\n x={51.688}\n y={62.625}\n width={11.438}\n height={11.438}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" />\n <feOffset dy={2} />\n <feGaussianBlur stdDeviation={2} />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\" />\n </filter>\n <filter\n id=\"Error_svg__filter2_d\"\n x={51.688}\n y={44.063}\n width={11.438}\n height={23.813}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" />\n <feOffset dy={2} />\n <feGaussianBlur stdDeviation={2} />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\" />\n </filter>\n <linearGradient\n id=\"Error_svg__paint0_linear\"\n x1={68.438}\n y1={71.571}\n x2={60.119}\n y2={58.801}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity={0} />\n <stop offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport default SvgError;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n image: {\n width: '40px',\n height: '40px'\n },\n info: {\n marginLeft: '12px',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column'\n },\n label: {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n fontWeight: 400,\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.primary.main\n },\n secondaryLabel: {\n marginTop: '4px',\n fontWeight: 400,\n fontSize: '10px',\n lineHeight: '12px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n link: {\n textDecoration: 'none'\n },\n thirdRow: {\n display: 'flex',\n overflow: 'hidden',\n alignItems: 'center',\n marginTop: 'auto',\n paddingTop: '4px'\n },\n entityId: {\n display: 'flex',\n overflow: 'hidden',\n alignItems: 'baseline',\n whiteSpace: 'nowrap',\n fontWeight: 400,\n fontSize: '12px',\n lineHeight: '16px'\n },\n entityIdLabel: {\n color: theme.palette.text.secondary\n },\n entityIdValue: {\n marginLeft: '8px',\n color: theme.palette.text.primary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n '&[aria-describedby]': {\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Entity, getEntityId, getEntityUriForLink, getLabel} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport EntityTypeBadge from '../../EntityTypeBadge/EntityTypeBadge';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n classes?: {\n label?: string;\n secondaryLabel?: string;\n };\n};\n\nexport const ProfileCardContent = ({entity, classes = {}}: Props) => {\n const styles = useStyles();\n const {secondaryLabel: secondaryLabelClass, label: labelClass} = classes;\n const label = getLabel(entity.label);\n const {secondaryLabel} = entity;\n const handleCopyEntityIdToClipboard = useCallback(() => {\n navigator.clipboard.writeText(getEntityId(entity));\n }, [entity]);\n\n return (\n <>\n <EntityAvatar entity={entity} imageClassName={styles.image} />\n <div className={styles.info}>\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.link}>\n <ExpandedValueTooltip value={label} placement=\"top\" showOnExceededHeight={true}>\n <div className={classnames(styles.label, labelClass)}>{label}</div>\n </ExpandedValueTooltip>\n </EntityUriLink>\n\n {secondaryLabel && (\n <ExpandedValueTooltip value={secondaryLabel} placement=\"top\" showOnExceededHeight={true}>\n <div className={classnames(styles.secondaryLabel, secondaryLabelClass)}>{secondaryLabel}</div>\n </ExpandedValueTooltip>\n )}\n <div className={styles.thirdRow}>\n <EntityTypeBadge entity={entity} size=\"medium\" />\n <div className={styles.entityId} onClick={handleCopyEntityIdToClipboard}>\n <div className={styles.entityIdLabel}>{i18n.text('ID:')}</div>\n <ExpandedValueTooltip value={`Copy to clipboard ${getEntityId(entity)}`} placement=\"top\">\n <div className={styles.entityIdValue}>{getEntityId(entity)}</div>\n </ExpandedValueTooltip>\n </div>\n </div>\n </div>\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n '@keyframes keyframes-wave': {\n '0%': {\n transform: 'translateX(-100%)'\n },\n '60%': {\n transform: 'translateX(100%)'\n },\n '100%': {\n transform: 'translateX(100%)'\n }\n },\n wave: {\n overflow: 'hidden',\n position: 'relative',\n '&:after': {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n content: '\"\"',\n position: 'absolute',\n animation: '$keyframes-wave 1.6s linear 0.5s infinite',\n transform: 'translateX(-100%)',\n background: 'linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.04), transparent);'\n }\n },\n avatar: {\n flex: 'none',\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n info: {\n marginLeft: '12px',\n flex: 'auto'\n },\n label: {\n width: '40%',\n height: '15px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n secondaryLabel: {\n marginTop: '4px',\n width: '100%',\n height: '12px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n thirdRow: {\n marginTop: '4px',\n width: '60%',\n height: '24px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nexport const ProfileCardPlaceholder = () => {\n const styles = useStyles();\n return (\n <>\n <div className={classnames(styles.avatar, styles.wave)} />\n <div className={styles.info}>\n <div className={classnames(styles.label, styles.wave)} />\n <div className={classnames(styles.secondaryLabel, styles.wave)} />\n <div className={classnames(styles.thirdRow, styles.wave)} />\n </div>\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n container: {\n display: 'flex',\n padding: '16px',\n overflow: 'hidden'\n }\n});\n\nexport default useStyles;\n","import React, {memo} from 'react';\nimport classnames from 'classnames';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {ProfileCardContent} from './ProfileCardContent/ProfileCardContent';\nimport {ProfileCardPlaceholder} from './ProfileCardPlaceholder/ProfileCardPlaceholder';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n classes?: {\n label?: string;\n secondaryLabel?: string;\n container?: string;\n };\n variant?: 'loading' | 'normal';\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst ProfileCard = ({entity, classes = {}, variant = 'normal', ...otherProps}: Props) => {\n const styles = useStyles();\n const {container: containerClass} = classes;\n return (\n <div className={classnames(styles.container, containerClass)} {...otherProps}>\n {variant === 'normal' ? (\n <ProfileCardContent entity={entity} classes={classes} />\n ) : (\n <ProfileCardPlaceholder />\n )}\n </div>\n );\n};\n\nexport default memo(ProfileCard);\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n resizablePanesWrapper: {\n flexGrow: 1,\n height: '100%',\n marginRight: '1px'\n },\n pane: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n\nexport {useStyles};\n","import React, {useCallback, cloneElement} from 'react';\nimport {ResizablePanes} from '../ResizablePanes/ResizablePanes';\nimport {SideButtonsPanel} from '../SideIconPanel/SideButtonsPanel';\nimport {usePerspectivesSettings} from '../../contexts';\nimport {isNil} from 'ramda';\n\nimport {useStyles} from './styles';\nimport {RightPanelTab} from '../../types';\n\nconst DEFAULT_R_PANE_SIZE = 480;\nconst MIN_R_PANE_SIZE = 320;\nconst MAX_R_PANE_SIZE = 640;\n\ntype Props = {\n perspectiveId: string;\n children: [React.ReactElement, React.ReactElement];\n buttonsProps: Array<RightPanelTab['buttonProps']>;\n disabled?: boolean;\n defaultTab?: number;\n};\n\nexport const ProfileResizablePanes = ({perspectiveId, children, buttonsProps, disabled, defaultTab}: Props) => {\n const styles = useStyles();\n\n const {perspectiveSettings, updatePerspectiveSettings} = usePerspectivesSettings(perspectiveId);\n const {width = DEFAULT_R_PANE_SIZE} = perspectiveSettings || {};\n const active = defaultTab || perspectiveSettings?.active;\n const isSidePanelOpen = !isNil(active) && !disabled;\n\n const handleUpdateSettings = useCallback(\n (newSetting) => {\n updatePerspectiveSettings(newSetting);\n },\n [updatePerspectiveSettings]\n );\n\n const toggleActive = useCallback(\n (newId: number) => {\n const newActive = active === newId ? null : newId;\n handleUpdateSettings({active: newActive});\n },\n [active, handleUpdateSettings]\n );\n\n const resetActive = useCallback((): void => {\n handleUpdateSettings({active: null});\n }, [handleUpdateSettings]);\n\n const handlePaneSizeChange = useCallback(\n ({size}) => {\n handleUpdateSettings({width: size});\n },\n [handleUpdateSettings]\n );\n\n return (\n <>\n <ResizablePanes\n className={styles.resizablePanesWrapper}\n primary=\"second\"\n orientation=\"vertical\"\n size={isSidePanelOpen ? width : 0}\n minSize={MIN_R_PANE_SIZE}\n maxSize={MAX_R_PANE_SIZE}\n allowResize={isSidePanelOpen}\n onChange={handlePaneSizeChange}\n debounceInterval={2500}\n >\n <div className={styles.pane}>{children[0]}</div>\n <div className={styles.pane}>{cloneElement(children[1], {active, onClose: resetActive})}</div>\n </ResizablePanes>\n <SideButtonsPanel\n disabled={disabled}\n buttonsProps={buttonsProps}\n onButtonClick={toggleActive}\n activeIndexId={active}\n />\n </>\n );\n};\n\nProfileResizablePanes.displayName = 'ProfileResizablePanes';\n","import {makeStyles} from '@mui/styles';\n\nconst height = '46px';\n\nconst useStyles = makeStyles((theme) => ({\n readOnlyLogicOperatorContainer: {\n display: 'flex',\n alignItems: 'center',\n marginRight: '40px',\n width: '76px',\n fontSize: '14px',\n color: theme.palette.text.secondary,\n maxHeight: height\n },\n readOnlyFilter: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '14px',\n color: theme.palette.text.secondary,\n width: '50px',\n marginLeft: '12px',\n maxHeight: height\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {QueryBuilderAttribute} from '../../../types';\nimport useStyles from './styles';\n\nimport {capitalize} from '@mui/material/utils';\n\ntype Props = {\n className: string;\n rowData: QueryBuilderAttribute;\n};\nconst ReadOnlyLogicOperator = ({className, rowData}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.readOnlyLogicOperatorContainer, className)}>\n {rowData && rowData.operator ? capitalize(rowData.operator) : i18n.text('Where')}\n </div>\n );\n};\n\nReadOnlyLogicOperator.propTypes = {\n className: PropTypes.string,\n rowData: PropTypes.object\n};\n\nexport default ReadOnlyLogicOperator;\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getFilterOptionLabel} from '@reltio/mdm-sdk';\nimport {QueryBuilderAttribute} from '../../../types';\n\nimport useStyles from './styles';\n\ntype Props = {\n className: string;\n rowData: QueryBuilderAttribute;\n};\nconst ReadOnlyFilter = ({className, rowData}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.readOnlyFilter, className)}>\n {rowData && rowData.filter ? getFilterOptionLabel(rowData.filter) : i18n.text('equals')}\n </div>\n );\n};\n\nexport default ReadOnlyFilter;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n row: {\n display: 'flex',\n marginBottom: '12px'\n },\n rowItem: {\n paddingRight: '10px',\n display: 'flex'\n },\n fullWidth: {\n flexGrow: '1',\n flexBasis: '0',\n overflow: 'hidden'\n },\n hidden: {\n visibility: 'hidden'\n }\n}));\n\nexport default useStyles;\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport ReadOnlyLogicOperator from './components/ReadOnlyLogicOperator';\nimport ReadOnlyFilter from './components/ReadOnlyFilter';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nimport useStyles from './styles';\n\nconst QueryBuilderRow = ({\n classes = {},\n rowData,\n previousRowData,\n LogicOperatorComponent = ReadOnlyLogicOperator,\n AttributeSelectorComponent,\n FilterSelectorComponent = ReadOnlyFilter,\n ValuesEditorComponent,\n ActionsComponent,\n filterSelectorRef,\n attributeSelectorProps = {},\n ...rowContext\n}) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.row, classes.root)} data-reltio-id=\"query-builder-row\">\n <LogicOperatorComponent\n className={classes.logicOperatorContainer}\n rowContext={rowContext}\n rowData={previousRowData}\n />\n <div className={classnames(styles.rowItem, classes.attributeSelectorContainer)}>\n <AttributeSelectorComponent\n attributeSelectorProps={attributeSelectorProps}\n rowContext={rowContext}\n rowData={rowData}\n />\n </div>\n <div className={classnames(styles.rowItem, classes.filterSelectorContainer)}>\n <FilterSelectorComponent\n textFieldInputRef={filterSelectorRef}\n rowContext={rowContext}\n rowData={rowData}\n />\n </div>\n <div className={classnames(styles.rowItem, styles.fullWidth, classes.valuesEditorContainer)}>\n <ValuesEditorComponent rowContext={rowContext} rowData={rowData} />\n </div>\n <div className={classnames(styles.rowItem, classes.actionsContainer, {[styles.hidden]: !rowData})}>\n <ActionsComponent rowContext={rowContext} rowData={rowData} />\n </div>\n </div>\n );\n};\n\nQueryBuilderRow.propTypes = {\n classes: PropTypes.shape({\n root: PropTypes.string,\n logicOperatorContainer: PropTypes.string,\n attributeSelectorContainer: PropTypes.string,\n filterSelectorContainer: PropTypes.string,\n valuesEditorContainer: PropTypes.string,\n actionsContainer: PropTypes.string\n }),\n rowData: QueryBuilderAttributeType,\n previousRowData: QueryBuilderAttributeType,\n LogicOperatorComponent: PropTypes.elementType,\n AttributeSelectorComponent: PropTypes.elementType,\n FilterSelectorComponent: PropTypes.elementType,\n ValuesEditorComponent: PropTypes.elementType,\n ActionsComponent: PropTypes.elementType,\n filterSelectorRef: PropTypes.object,\n attributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(QueryBuilderRow);\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {path} from 'ramda';\n\nimport QueryBuilderRow from '../QueryBuilderRow/QueryBuilderRow';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nconst QueryBuilderRowsGroup = ({\n className = undefined,\n rowClasses,\n rowsData,\n lastRowAttributeSelectorProps,\n filterSelectorRef,\n filterSelectorRefIndex,\n ...rowProps\n}) => {\n const renderRow = (rowData, index, rowsData) => {\n const previousRow = index > 0 ? path([index - 1], rowsData) : null;\n const lastRowProps =\n index === rowsData.length\n ? {\n attributeSelectorProps: lastRowAttributeSelectorProps\n }\n : {};\n return (\n <QueryBuilderRow\n key={rowData && rowData.id}\n rowData={rowData}\n previousRowData={previousRow}\n classes={rowClasses}\n filterSelectorRef={index === filterSelectorRefIndex ? filterSelectorRef : undefined}\n {...rowProps}\n {...lastRowProps}\n />\n );\n };\n\n return (\n <div className={className}>\n {rowsData.map(renderRow)}\n {renderRow(null, rowsData.length, rowsData)}\n </div>\n );\n};\n\nQueryBuilderRowsGroup.propTypes = {\n className: PropTypes.string,\n rowClasses: PropTypes.shape({\n root: PropTypes.string,\n logicOperatorContainer: PropTypes.string,\n attributeSelectorContainer: PropTypes.string,\n filterSelectorContainer: PropTypes.string,\n valuesEditorContainer: PropTypes.string,\n actionsContainer: PropTypes.string\n }),\n rowsData: PropTypes.arrayOf(QueryBuilderAttributeType),\n LogicOperatorComponent: PropTypes.elementType,\n AttributeSelectorComponent: PropTypes.elementType,\n FilterSelectorComponent: PropTypes.elementType,\n ValuesEditorComponent: PropTypes.elementType,\n ActionsComponent: PropTypes.elementType,\n filterSelectorRef: PropTypes.object,\n filterSelectorRefIndex: PropTypes.number,\n lastRowAttributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(QueryBuilderRowsGroup);\n","import CreatableSelect from 'react-select/creatable';\nimport withMuiSkin from './withMuiSkin';\n\nexport default withMuiSkin(CreatableSelect);\n","import MenuItem from '@mui/material/MenuItem';\nimport Checkbox from '@mui/material/Checkbox';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport ExpandedValueTooltip from '../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nexport default function Option(props) {\n const {\n innerProps,\n innerRef,\n children,\n isFocused,\n isSelected,\n selectProps: {classes},\n label\n } = props;\n\n return (\n <MenuItem\n className={classNames(classes.option, {[classes['option--selected']]: isSelected})}\n ref={innerRef}\n selected={isFocused}\n component=\"div\"\n {...innerProps}\n >\n <Checkbox color=\"primary\" checked={isSelected} />\n <ExpandedValueTooltip value={label}>\n <div className={classes['option--item']}>{children}</div>\n </ExpandedValueTooltip>\n </MenuItem>\n );\n}\n\nOption.propTypes = {\n children: PropTypes.node,\n innerProps: PropTypes.shape({\n id: PropTypes.string.isRequired,\n key: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onMouseMove: PropTypes.func.isRequired,\n onMouseOver: PropTypes.func.isRequired,\n tabIndex: PropTypes.number.isRequired\n }).isRequired,\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n isFocused: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n label: PropTypes.string,\n selectProps: PropTypes.shape({\n classes: PropTypes.shape({\n option: PropTypes.string\n })\n })\n};\n","import Option from './Option';\n\nconst components = {\n Option\n};\n\nexport default components;\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {omit} from 'ramda';\nimport CreatableSelect from '../CreatableSelect';\nimport Select from '../Select';\nimport AsyncSelect from '../AsyncSelect';\nimport multiSelectComponents from './components';\nimport {makeStyles} from '@mui/styles';\nimport {mergeClasses} from '../../../core/utils';\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n top: 6,\n left: 16\n },\n placeholder: (props) => ({\n display: !props.placeholder || props.label ? 'none' : undefined\n }),\n 'option--selected': {\n fontWeight: 400\n },\n clearIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n },\n dropdownIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n }\n}));\n\nlet id = 0;\nconst getInputId = () => `custom-select-${id++}`;\n\nfunction MultiSelect(props) {\n const {\n label,\n creatable,\n getOptions,\n loadingIndicator,\n components: componentsProp,\n classes: classesProp,\n styles: stylesProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n menuPlacement = 'auto',\n ...reactSelectProps\n } = props;\n\n const SelectComponent = creatable ? CreatableSelect : getOptions ? AsyncSelect : Select;\n\n const [inputValue, setInputValue] = useState('');\n const multiSelectClasses = useStyles(omit(['classes'], props));\n const inputId = getInputId();\n\n const components = {\n ...multiSelectComponents,\n ...componentsProp\n };\n\n const classes = mergeClasses(multiSelectClasses, classesProp);\n\n function handleInputChange(value, {action}) {\n onInputChangeProp(value, {action});\n if (action !== 'set-value') {\n setInputValue(value);\n }\n }\n\n function handleChange(value, actionMeta) {\n onChangeProp(value, actionMeta);\n if (actionMeta.action === 'create-option') {\n setInputValue('');\n onInputChangeProp('', {action: 'input-change'});\n }\n }\n\n const styles = {\n indicatorSeparator: (base) => ({\n ...base,\n margin: '10px 0'\n }),\n loadingIndicator: (base) => ({\n ...base,\n display: loadingIndicator ? base.display : 'none'\n }),\n loadingMessage: (base) => ({\n ...base,\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif'\n }),\n ...stylesProp\n };\n\n const labelProps = label\n ? {\n inputId,\n TextFieldProps: {\n label,\n InputLabelProps: {\n htmlFor: inputId,\n shrink: props.value && props.value.length ? true : undefined,\n className: classes.label\n },\n ...props.TextFieldProps\n }\n }\n : {};\n\n return (\n <SelectComponent\n isMulti\n inputId={inputId}\n inputValue={inputValue}\n onChange={handleChange}\n onInputChange={handleInputChange}\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n classes={classes}\n components={components}\n styles={styles}\n menuPlacement={menuPlacement}\n loadOptions={getOptions}\n {...labelProps}\n {...reactSelectProps}\n />\n );\n}\n\nMultiSelect.defaultProps = {\n creatable: false,\n cacheOptions: true,\n components: {},\n classes: {},\n placeholder: '',\n loadingIndicator: false,\n onInputChange: () => {},\n onChange: () => {}\n};\n\nMultiSelect.propTypes = {\n /**\n * Async creatable multi select with optional placeholder, shrink-label, non-closing menu and options with checkboxes.\n * Based on react-select/creatable and react-select/async.\n * See react-select docs: https://react-select.com\n *\n * Below are listed only props used in the MultiSelect component. Check https://react-select.com/props first.\n * */\n\n /** Ability to create values. React-select/async-creatable is used internally */\n creatable: PropTypes.bool,\n /** True for enabling cache. Recommended. */\n cacheOptions: PropTypes.bool,\n defaultOptions: PropTypes.bool,\n /** Array of selected options. */\n value: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n /** Way to receive updated values */\n onChange: PropTypes.func,\n /** Way to receive updated inputValue */\n onInputChange: PropTypes.func,\n /** Input placeholder. Will not be shown if the label prop is specified */\n placeholder: PropTypes.string,\n /** Floating label from @mui/material/TextField component */\n label: PropTypes.string,\n /** Enable to show default react-select's indicator */\n loadingIndicator: PropTypes.bool,\n /** You could redefine any of these components */\n components: PropTypes.shape({\n ClearIndicator: PropTypes.func,\n Control: PropTypes.func,\n DropdownIndicator: PropTypes.func,\n DownChevron: PropTypes.func,\n CrossIcon: PropTypes.func,\n Group: PropTypes.func,\n GroupHeading: PropTypes.func,\n IndicatorsContainer: PropTypes.func,\n IndicatorSeparator: PropTypes.func,\n Input: PropTypes.func,\n LoadingIndicator: PropTypes.func,\n Menu: PropTypes.func,\n MenuList: PropTypes.func,\n MenuPortal: PropTypes.func,\n LoadingMessage: PropTypes.func,\n NoOptionsMessage: PropTypes.func,\n MultiValue: PropTypes.func,\n MultiValueContainer: PropTypes.func,\n MultiValueLabel: PropTypes.func,\n MultiValueRemove: PropTypes.func,\n Option: PropTypes.func,\n Placeholder: PropTypes.func,\n SelectContainer: PropTypes.func,\n SingleValue: PropTypes.func,\n ValueContainer: PropTypes.func\n }),\n /** Classes are passed to mui skin components. Provided classes will be merged with existing ones. */\n classes: PropTypes.shape({\n control: PropTypes.string,\n valueContainer: PropTypes.string,\n multiValue: PropTypes.string,\n noOptionsMessage: PropTypes.string,\n singleValue: PropTypes.string,\n placeholder: PropTypes.string,\n menu: PropTypes.string,\n clearIndicator: PropTypes.string,\n dropdownIndicator: PropTypes.string,\n option: PropTypes.string,\n 'option--selected': PropTypes.string,\n label: PropTypes.string\n }),\n /**\n * React-select's way to customise style. Could be used to style default react-select components.\n * In other cases better to use classes and components props\n * */\n styles: PropTypes.shape({\n clearIndicator: PropTypes.func,\n container: PropTypes.func,\n control: PropTypes.func,\n dropdownIndicator: PropTypes.func,\n group: PropTypes.func,\n groupHeading: PropTypes.func,\n indicatorsContainer: PropTypes.func,\n indicatorSeparator: PropTypes.func,\n input: PropTypes.func,\n loadingIndicator: PropTypes.func,\n loadingMessage: PropTypes.func,\n menu: PropTypes.func,\n menuList: PropTypes.func,\n menuPortal: PropTypes.func,\n multiValue: PropTypes.func,\n multiValueLabel: PropTypes.func,\n multiValueRemove: PropTypes.func,\n noOptionsMessage: PropTypes.func,\n option: PropTypes.func,\n placeholder: PropTypes.func,\n singleValue: PropTypes.func,\n valueContainer: PropTypes.func\n }),\n /** Props from https://material-ui.com/api/text-field/ */\n TextFieldProps: PropTypes.object /* eslint-disable-line react/forbid-prop-types */,\n getOptions: PropTypes.func,\n menuPlacement: PropTypes.string,\n menuPortalTarget: PropTypes.object,\n menuShouldBlockScroll: PropTypes.bool,\n captureMenuScroll: PropTypes.bool,\n getOptionValue: PropTypes.func,\n isSearchable: PropTypes.bool,\n inputRef: PropTypes.shape({current: PropTypes.object})\n};\n\nexport default MultiSelect;\n","import MultiSelect from './MultiSelect';\n\nexport default MultiSelect;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n profileBandNavigation: {\n marginBottom: '10px'\n },\n comments: {\n display: 'flex',\n justifyContent: 'flex-end'\n }\n});\n","import React, {memo, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Entity,\n getEntityUriForLink,\n getProfileBandObjectIdsForCollaboration\n} 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 {CollaborationContextProvider} from '../../contexts';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../constants';\nimport {useCollaboration} from '../../hooks';\nimport {ProfileBandHistory} from '../history';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n className?: string;\n historySlice?: HistorySlice;\n};\n\nexport const ScreenProfileBand = memo(({entity, className, historySlice}: Props) => {\n const styles = useStyles();\n const objectIds = useMemo(() => getProfileBandObjectIdsForCollaboration(entity), [entity]);\n const collaboration = useCollaboration({objectIds});\n const entityUri = getEntityUriForLink(entity);\n\n return (\n <CollaborationContextProvider collaboration={collaboration}>\n <ProfileBand\n className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)}\n entity={historySlice?.aEntity || entity}\n >\n {historySlice ? (\n <ProfileBandHistory />\n ) : (\n <>\n <ProfileBandNavigation className={styles.profileBandNavigation} />\n <CommentsContainer\n className={styles.comments}\n uri={entityUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </>\n )}\n </ProfileBand>\n </CollaborationContextProvider>\n );\n});\n\nScreenProfileBand.displayName = 'ScreenProfileBand';\n","import {alpha} from '@mui/material/styles';\n\nimport {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n width: '64px',\n paddingTop: '8px',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)'\n },\n active: {\n backgroundColor: alpha(theme.palette.primary.main, 0.12),\n color: theme.palette.primary.main,\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n height: '42px',\n width: '3px',\n backgroundColor: theme.palette.primary.main,\n left: '-8px',\n borderRadius: '0 6px 6px 0'\n }\n },\n buttonWrapper: {\n position: 'relative',\n width: '48px',\n height: '44px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '6px',\n margin: '2px 8px',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {ElementType} from 'react';\nimport classnames from 'classnames';\nimport {IconButtonProps} from '@mui/material/IconButton';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n disabled: boolean;\n buttonsProps: Array<{\n icon: ElementType;\n tooltipTitle: string;\n id: number;\n }>;\n classes?: {active?: string; buttonWrapper?: string} & IconButtonProps['classes'];\n activeIndexId: number;\n className?: string;\n onButtonClick: (id: number) => void;\n};\n\nexport const SideButtonsPanel = ({\n disabled,\n buttonsProps,\n activeIndexId,\n className,\n onButtonClick,\n classes = {}\n}: Props) => {\n const styles = useStyles();\n const {active, buttonWrapper, ...iconButtonClasses} = classes;\n\n return (\n <div className={classnames(styles.container, className)}>\n {buttonsProps.map(({id, ...buttonProps}) => {\n return (\n <SmallIconButtonWithTooltip\n {...buttonProps}\n disabled={disabled}\n classes={iconButtonClasses}\n size=\"S\"\n key={id}\n className={classnames(\n {[classnames(styles.active, active)]: activeIndexId === id},\n styles.buttonWrapper,\n buttonWrapper\n )}\n onClick={() => onButtonClick(id)}\n data-reltio-id={`reltio-profile-right-side-button-${id}`}\n />\n );\n })}\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n contentWrapper: {\n display: 'flex',\n boxSizing: 'border-box',\n flex: 1,\n flexDirection: 'column',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)',\n transition: theme.transitions.create(['width'], {\n duration: theme.transitions.duration.enteringScreen\n })\n }\n}));\n","import React, {ReactNode, VFC} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = {\n width?: number;\n open: boolean;\n children: ReactNode;\n};\n\nexport const SidePanel: VFC<Props> = ({width, open, children}) => {\n const styles = useStyles();\n return (\n <div\n className={styles.contentWrapper}\n data-reltio-id=\"side-panel\"\n style={{\n width: width ? `${open ? width : 0}px` : '100%'\n }}\n >\n {open && <>{children}</>}\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nconst iconsWidth = '68px';\n\nexport const useOptionStyles = makeStyles({\n container: {\n display: 'flex',\n alignItems: 'center',\n height: '32px',\n minHeight: '32px',\n padding: 0\n },\n text: {\n display: 'flex',\n width: `calc(100% - ${iconsWidth})`\n },\n textItem: {\n fontSize: '13px',\n lineHeight: '15px',\n marginRight: 10\n },\n primaryTextItem: {\n flex: '1 0',\n flexBasis: 0,\n maxWidth: '50%',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n secondaryTextItem: {\n flex: '1 0',\n flexBasis: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n icons: {\n transform: 'scale(0.5)',\n position: 'relative',\n flexShrink: 0,\n width: iconsWidth,\n bottom: '10px'\n },\n iconTop: {\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 1\n },\n iconBottom: {\n position: 'absolute',\n top: 0,\n left: 26,\n zIndex: 0\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport {useOptionStyles} from './styles';\nimport EntityTypeIcon from '../../../../EntityTypeIcon/EntityTypeIcon';\nimport ExpandedValueTooltip from '../../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nconst RelationOption = ({innerRef, innerProps, selectOption, data}) => {\n const styles = useOptionStyles();\n const {value, label, startObject, endObject} = data;\n const secondaryLabel = startObject.objectType.label + ' \\u2194 ' + endObject.objectType.label;\n return (\n <MenuItem\n className={styles.container}\n ref={innerRef}\n key={value}\n onClick={() => selectOption({label, value, startObject, endObject})}\n {...innerProps}\n >\n <div className={styles.icons}>\n <EntityTypeIcon className={styles.iconTop} entityType={startObject.objectType} />\n <EntityTypeIcon className={styles.iconBottom} entityType={endObject.objectType} />\n </div>\n <div className={styles.text}>\n <ExpandedValueTooltip value={label}>\n <Typography className={classnames(styles.textItem, styles.primaryTextItem)}>{label}</Typography>\n </ExpandedValueTooltip>\n <ExpandedValueTooltip value={secondaryLabel}>\n <Typography color=\"textSecondary\" className={classnames(styles.textItem, styles.secondaryTextItem)}>\n {secondaryLabel}\n </Typography>\n </ExpandedValueTooltip>\n </div>\n </MenuItem>\n );\n};\n\nRelationOption.propTypes = {\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n innerProps: PropTypes.object.isRequired,\n selectOption: PropTypes.func.isRequired,\n data: PropTypes.shape({\n value: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n startObject: PropTypes.object,\n endObject: PropTypes.object\n })\n};\n\nexport default RelationOption;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {identity, defaultTo} from 'ramda';\nimport RelationOption from './components/RelationOption';\nimport DropDownSelector from '../../../DropDownSelector/DropDownSelector';\n\nconst RelationTypeSelector = ({value = {}, options = [], onChange = identity, TextFieldProps, ...otherProps}) => {\n const textFieldProps = useMemo(\n () => ({\n ...defaultTo({}, TextFieldProps),\n ['data-reltio-id']: 'relation-type-selector'\n }),\n [TextFieldProps]\n );\n return (\n <DropDownSelector\n value={value}\n options={options}\n onChange={onChange}\n label={i18n.text('Select relationship type ')}\n components={{Option: RelationOption}}\n TextFieldProps={textFieldProps}\n {...otherProps}\n />\n );\n};\n\nconst ValueType = PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n startObject: PropTypes.object,\n endObject: PropTypes.object\n});\n\nRelationTypeSelector.propTypes = {\n value: ValueType,\n options: PropTypes.arrayOf(ValueType),\n onChange: PropTypes.func\n};\n\nexport default RelationTypeSelector;\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, {useCallback, useContext} from 'react';\nimport {PerspectivesSettings, PerspectiveSettingItem} from '../../types';\n\ntype PerspectivesSettingsProps = {\n settings: PerspectivesSettings;\n onChange: (perspectiveId: string, newSetting: Partial<PerspectiveSettingItem>) => void;\n};\n\nexport const PerspectivesSettingsContext = React.createContext<PerspectivesSettingsProps>({\n settings: {},\n onChange: () => {}\n});\n\nPerspectivesSettingsContext.displayName = 'PerspectivesSettingsContext';\n\nexport const usePerspectivesSettings = (perspectiveId: string) => {\n const {settings, onChange} = useContext(PerspectivesSettingsContext) || {};\n const perspectiveSettings = settings?.[perspectiveId];\n\n const updatePerspectiveSettings = useCallback(\n (newSetting: Partial<PerspectiveSettingItem>) => {\n onChange(perspectiveId, newSetting);\n },\n [perspectiveId, onChange]\n );\n\n return {updatePerspectiveSettings, perspectiveSettings};\n};\n","import {useCallback} from 'react';\nimport {Directions, getDirectionalLabelFromObject} from '@reltio/mdm-sdk';\nimport {ascend, curry, evolve, pipe, prop, propEq, propOr, tap} from 'ramda';\n\nexport const useRelationTypeSelector = ({reversedContextLabels}) => {\n const getRelationTypesOptions = useCallback(\n (inRelations, outRelations) => {\n const labelsMap = {};\n const addLabelInMap = (label) => (labelsMap[label] = propOr(0, label, labelsMap) + 1);\n const getDirectionalLabel = pipe(getDirectionalLabelFromObject, tap(addLabelInMap));\n const byLabel = ascend(prop('label'));\n\n const prepareRelation = curry((direction, {uri, label, startObject, endObject}) => {\n const dirObject =\n direction === (reversedContextLabels ? Directions.OUT : Directions.IN) ? startObject : endObject;\n return {\n label: {directionalLabel: getDirectionalLabel(dirObject), typeLabel: label},\n value: `${uri},${direction}`,\n startObject,\n endObject\n };\n });\n\n return inRelations\n .map(prepareRelation(Directions.IN))\n .concat(outRelations.map(prepareRelation(Directions.OUT)))\n .map(\n evolve({\n label: ({directionalLabel, typeLabel}) => {\n return directionalLabel\n ? labelsMap[directionalLabel] > 1\n ? `${directionalLabel} (${typeLabel})`\n : directionalLabel\n : typeLabel;\n }\n })\n )\n .sort(byLabel);\n },\n [reversedContextLabels]\n );\n\n const fromEditorValue = useCallback(\n (inRelationTypes, outRelationTypes) => (relation) => {\n const [uri, direction] = relation.value.split(',');\n const type = (direction === Directions.IN ? inRelationTypes : outRelationTypes).find(propEq('uri', uri));\n return {type, direction};\n },\n []\n );\n\n const toEditorValue = useCallback(\n (relation, relationsTypesOptions) =>\n relationsTypesOptions.find(propEq('value', `${relation.relationType},${relation.direction}`)),\n []\n );\n\n return {\n getRelationTypesOptions,\n fromEditorValue,\n toEditorValue\n };\n};\n","import React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {pipe} from 'ramda';\nimport Portal from '@mui/material/Portal';\nimport Button from '@mui/material/Button';\nimport Snackbar, {SnackbarOrigin} from '@mui/material/Snackbar';\nimport {noop} from '../core';\n\ntype SnackbarOptions = {\n anchorOrigin?: SnackbarOrigin;\n showDismiss?: boolean;\n dismissTitle?: string;\n autoHideDuration?: number;\n onDismissClick?: () => void;\n};\n\nconst FIVE_MINUTES = 5 * 60 * 1000;\nexport const useSnackbar = ({\n anchorOrigin = {vertical: 'bottom', horizontal: 'center'},\n showDismiss,\n dismissTitle = i18n.text('Dismiss'),\n autoHideDuration = FIVE_MINUTES,\n onDismissClick = noop\n}: SnackbarOptions = {}) => {\n const [isOpenSnackbar, setIsOpenSnackbar] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = useState('');\n\n const closeSnackbar = useCallback(() => {\n setIsOpenSnackbar(false);\n setSnackbarMessage('');\n }, []);\n\n const handleSnackbarClose = useCallback(\n (_, reason?: string) => {\n if (reason === 'clickaway') {\n return;\n }\n closeSnackbar();\n },\n [closeSnackbar]\n );\n\n const showSnackbarMessage = useCallback((message) => {\n setIsOpenSnackbar(true);\n setSnackbarMessage(message);\n }, []);\n\n const SnackbarRenderer = useCallback(() => {\n return (\n <Portal container={document.body}>\n <Snackbar\n open={isOpenSnackbar}\n anchorOrigin={anchorOrigin}\n autoHideDuration={autoHideDuration}\n onClose={handleSnackbarClose}\n message={snackbarMessage}\n style={{maxWidth: 500}}\n action={\n showDismiss ? (\n <Button color=\"primary\" onClick={pipe(closeSnackbar, onDismissClick)}>\n {dismissTitle}\n </Button>\n ) : undefined\n }\n />\n </Portal>\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpenSnackbar, closeSnackbar, snackbarMessage]);\n\n return {SnackbarRenderer, showSnackbarMessage};\n};\n","export enum ActivePanel {\n PotentialMatches,\n FindMatches,\n NotAMatch\n}\n\nexport enum ComparisonViewMode {\n TABLE = 'TABLE',\n COLUMNS = 'COLUMNS'\n}\n\nexport const MAX_PROFILES_TO_COMPARE = 4;\n","import React, {createContext, useContext, useMemo} from 'react';\n\ntype ReloadDataContextValue = {\n reloadData: () => void;\n addReloadHandler: (f: () => void) => void;\n removeReloadHandler: (f: () => void) => void;\n};\n\nconst ReloadDataContext = createContext<ReloadDataContextValue>({\n reloadData: () => {},\n addReloadHandler: () => {},\n removeReloadHandler: () => {}\n});\n\nconst createContextValue = () => {\n const reloadDataHandlers = [];\n const reloadData = () => {\n reloadDataHandlers.forEach((reloadHandler) => reloadHandler());\n };\n const addReloadHandler = (reloadHandler: () => void) => {\n reloadDataHandlers.push(reloadHandler);\n };\n const removeReloadHandler = (reloadHandler: () => void) => {\n const index = reloadDataHandlers.indexOf(reloadHandler);\n if (index !== -1) {\n reloadDataHandlers.splice(index, 1);\n }\n };\n return {\n reloadData,\n addReloadHandler,\n removeReloadHandler\n };\n};\n\nexport const ReloadDataProvider = ({children}: {children: React.ReactElement}) => {\n const contextValue = useMemo(() => createContextValue(), []);\n return <ReloadDataContext.Provider value={contextValue}>{children}</ReloadDataContext.Provider>;\n};\n\nexport const useReloadData = () => {\n const dataContext = useContext(ReloadDataContext);\n if (dataContext === undefined) {\n throw new Error('useReloadData must be used within a ReloadDataProvider');\n }\n return dataContext;\n};\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst RESET = 'RESET';\nconst SET_OPTIONS = 'SET_OPTIONS';\n\nconst actions = {\n ...basicTableViewState.actions,\n reset: createStandardAction(RESET),\n setOptions: createStandardAction(SET_OPTIONS)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case RESET: {\n return {...action.payload};\n }\n case SET_OPTIONS:\n return {...state, options: action.payload};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {append, evolve, includes, propEq, remove} from 'ramda';\nimport React, {createContext, useContext, useReducer} from 'react';\n\nimport {createStandardAction, useActions} from '@reltio/components';\nimport {EntitiesMap, Entity, getEntityUriFromMatchObject, getPotentialMatchesColor, Match} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\n\ntype ActionContext = {\n setGlobalSpinner: (val: boolean) => void;\n setSelectedItems: (matches: Match[]) => void;\n deselectByEntities: (entities: Entity[]) => void;\n toggleSelect: (match: Match) => void;\n actualizeSelectedItemsColors: () => void;\n setLimitSelection: (value?: number) => void;\n setComparisonViewMode: (mode: ComparisonViewMode) => void;\n setEntitiesMap: (entitiesMap?: EntitiesMap) => void;\n deleteExtraMatches: () => void;\n};\n\ntype StateContext = {\n isGlobalSpinnerActive: boolean;\n selectedItems: Match[];\n limitSelection?: number;\n comparisonViewMode: ComparisonViewMode;\n entitiesMap?: EntitiesMap;\n entityColors?: {entityUri: string; color: string}[];\n};\nconst ViewStateContext = createContext<StateContext>(null);\nconst ViewDispatchContext = createContext<ActionContext>(null);\nconst SET_GLOBAL_SPINNER = 'SET_GLOBAL_SPINNER';\nconst SET_SELECTED_ITEMS = 'SET_SELECTED_ITEMS';\nconst DESELECT_BY_ENTITIES = 'DESELECT_BY_ENTITIES';\nconst TOGGLE_SELECT = 'TOGGLE_SELECT';\nconst ACTUALIZE_SELECTED_ITEMS_COLORS = 'ACTUALIZE_SELECTED_ITEMS_COLORS';\nconst SET_LIMIT_SELECTION = 'SET_LIMIT_SELECTION';\nconst SET_COMPARISON_VIEW_MODE = 'SET_COMPARISON_VIEW_MODE';\nconst SET_ENTITIES_MAP = 'SET_ENTITIES_MAP';\nconst DELETE_EXTRA_MATCHES = 'DELETE_EXTRA_MATCHES';\n\nconst actions = {\n setGlobalSpinner: createStandardAction(SET_GLOBAL_SPINNER),\n setSelectedItems: createStandardAction(SET_SELECTED_ITEMS),\n deselectByEntities: createStandardAction(DESELECT_BY_ENTITIES),\n toggleSelect: createStandardAction(TOGGLE_SELECT),\n actualizeSelectedItemsColors: createStandardAction(ACTUALIZE_SELECTED_ITEMS_COLORS),\n setLimitSelection: createStandardAction(SET_LIMIT_SELECTION),\n setComparisonViewMode: createStandardAction(SET_COMPARISON_VIEW_MODE),\n setEntitiesMap: createStandardAction(SET_ENTITIES_MAP),\n deleteExtraMatches: createStandardAction(DELETE_EXTRA_MATCHES)\n};\n\nconst viewStateReducer = (state: StateContext, action: ReturnType<ReturnType<typeof createStandardAction>>) => {\n switch (action.type) {\n case SET_GLOBAL_SPINNER:\n return {...state, isGlobalSpinnerActive: action.payload};\n case DELETE_EXTRA_MATCHES:\n return {...state, selectedItems: state.selectedItems.slice(0, state.limitSelection)};\n case SET_SELECTED_ITEMS:\n return {...state, selectedItems: action.payload.slice(0, state.limitSelection)};\n case DESELECT_BY_ENTITIES:\n return evolve(\n {\n selectedItems: (selectedItems) =>\n selectedItems.filter(({object}) => !action.payload.some(({uri}) => uri === object.uri))\n },\n state\n );\n case TOGGLE_SELECT:\n return evolve(\n {\n selectedItems: (selected) => {\n const item = action.payload;\n const itemIndex = selected.findIndex(\n (selectedItem) => selectedItem?.object?.uri === item?.object?.uri\n );\n const isSelected = itemIndex > -1;\n if (isSelected) {\n return remove(itemIndex, 1, selected);\n } else {\n return append(item, selected);\n }\n }\n },\n state\n );\n case ACTUALIZE_SELECTED_ITEMS_COLORS: {\n return evolve(\n {\n entityColors: (colors) => {\n const selectedItems = state.selectedItems;\n\n const selectedEntitiesUris = selectedItems.map(getEntityUriFromMatchObject);\n\n const entityUrisWithoutColors = selectedEntitiesUris.filter((item) => {\n return !colors.find(propEq('entityUri', item));\n });\n\n return colors.map((item) => {\n return includes(item.entityUri, selectedEntitiesUris)\n ? item\n : {\n ...item,\n entityUri: entityUrisWithoutColors.shift()\n };\n });\n }\n },\n state\n );\n }\n case SET_LIMIT_SELECTION: {\n return {...state, limitSelection: action.payload};\n }\n case SET_COMPARISON_VIEW_MODE: {\n const newMode: ComparisonViewMode = action.payload;\n return {\n ...state,\n comparisonViewMode: newMode,\n limitSelection: newMode === ComparisonViewMode.COLUMNS ? MAX_PROFILES_TO_COMPARE : undefined\n };\n }\n case SET_ENTITIES_MAP: {\n const entitiesMap: EntitiesMap = action.payload;\n return {\n ...state,\n entitiesMap\n };\n }\n }\n};\n\ntype Props = {\n children: React.ReactElement;\n};\nconst getInitialEntityColors = () => {\n return getPotentialMatchesColor().map((color) => ({\n entityUri: '',\n color\n }));\n};\nexport const ViewStateProvider = ({children}: Props) => {\n const [state, dispatch] = useReducer(viewStateReducer, {\n isGlobalSpinnerActive: false,\n selectedItems: [],\n comparisonViewMode: ComparisonViewMode.COLUMNS,\n limitSelection: MAX_PROFILES_TO_COMPARE,\n entitiesMap: {},\n entityColors: getInitialEntityColors()\n });\n const viewStateAction = useActions({actions, dispatch});\n\n return (\n <ViewStateContext.Provider value={state}>\n <ViewDispatchContext.Provider value={viewStateAction as ActionContext}>\n {children}\n </ViewDispatchContext.Provider>\n </ViewStateContext.Provider>\n );\n};\n\nexport const useViewState = () => {\n const viewStateContext = useContext<StateContext>(ViewStateContext);\n if (viewStateContext === undefined) {\n throw new Error('useViewState must be used within a ViewStateProvider');\n }\n return viewStateContext;\n};\n\nexport const useViewStateActions = () => {\n const viewStateActions = useContext<ActionContext>(ViewDispatchContext);\n if (viewStateActions === undefined) {\n throw new Error('useViewStateActions must be used within a ViewStateProvider');\n }\n return viewStateActions;\n};\n","import {\n attributeUriToSearchUri,\n getAttrDataTypeDefinition,\n getEntityAttributesFromMetadata,\n isNested,\n isReference,\n getLabel,\n getAllAttributeTypesTree,\n Metadata,\n TEntityType,\n AttributeNode\n} from '@reltio/mdm-sdk';\nimport {__, curry, either, filter, includes, map, partition, pipe, reject, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {MatchesColumnsData, GroupedColumnData} from '../types/potentialMatchesTypes';\n\ntype AttributeConfig = {\n title: string;\n fieldName: string;\n children?: AttributeConfig[];\n notSelectable?: boolean;\n};\n\nconst createAttributeItemConfig = (metadata: Metadata, attrNode: AttributeNode, fieldName?: string, parents = []) => {\n const config = createAttributeItemBasicConfig(metadata, attrNode, fieldName, parents);\n const children = (attrNode.children || []).map((childNode) =>\n createAttributeItemConfig(metadata, childNode, '', parents.concat({name: attrNode.name, label: attrNode.label}))\n );\n if (children.length) {\n config.children = children;\n config.notSelectable = true;\n }\n return config;\n};\n\nconst createAttributeItemBasicConfig = (\n metadata: Metadata,\n attrNode: AttributeNode,\n fieldName: string,\n parents = []\n): AttributeConfig => {\n const attrType = omit(['children'], attrNode);\n const title = attrType.label || attrType.name;\n return {\n title,\n fieldName: fieldName || attributeUriToSearchUri(attrType.uri, parents)\n };\n};\n\nexport const collectAttributeItems = (metadata: Metadata, entityType?: TEntityType) =>\n entityType\n ? getAllAttributeTypesTree(metadata, entityType).map((attrNode) =>\n createAttributeItemConfig(metadata, attrNode)\n )\n : [];\n\nconst getColumnsDataFromEntityAttributes = pipe(\n map((attr) => ({\n id: attributeUriToSearchUri(attr.uri),\n label: getLabel(attr.label),\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n }))\n);\n\nexport const getColumnsData = pipe(getEntityAttributesFromMetadata, getColumnsDataFromEntityAttributes);\n\nexport const isMatchAttrColumn = curry((matchAttributes: string[], column: MatchesColumnsData) =>\n matchAttributes\n .map((attrUri) => attributeUriToSearchUri(attrUri))\n .some((id) => column.id === id || (isReferenceAttrColumn(column) && isSubAttrIdForColumn(column, id)))\n);\nconst isNestedAttrColumn = (column: MatchesColumnsData) => isNested(column.dataTypeDefinition);\nconst isReferenceAttrColumn = (column: MatchesColumnsData) => isReference(column.dataTypeDefinition);\nconst isSubAttrIdForColumn = curry((parentColumn: MatchesColumnsData, columnId: string) =>\n columnId.startsWith(`${parentColumn.id}.`)\n);\nconst isNestedForOneOfColumns = curry(\n (columns: MatchesColumnsData[], column: MatchesColumnsData) =>\n isNestedAttrColumn(column) && columns.some(({id}) => isSubAttrIdForColumn(column, id))\n);\nconst isRelatedToColumns = (columns: MatchesColumnsData[]) =>\n either(includes(__, columns), isNestedForOneOfColumns(columns));\n\nexport const getMatchAttrColumns = (\n matchAttributes: string[],\n columnsData: MatchesColumnsData[]\n): MatchesColumnsData[] => pipe(reject(isNestedAttrColumn), filter(isMatchAttrColumn(matchAttributes)))(columnsData);\n\nexport const groupColumnsDataByMatchAttributes = (\n matchAttributes: string[],\n columnsData: MatchesColumnsData[]\n): GroupedColumnData[] => {\n const [matchAttrColumns, otherColumns] = pipe(\n reject(isNestedAttrColumn),\n partition(isMatchAttrColumn(matchAttributes))\n )(columnsData);\n\n return matchAttrColumns.length\n ? ([\n {\n id: 'match',\n label: i18n.text('Match attributes'),\n columns: columnsData.filter(isRelatedToColumns(matchAttrColumns))\n },\n {\n id: 'all',\n label: i18n.text('All attributes'),\n columns: columnsData.filter(isRelatedToColumns(otherColumns))\n }\n ] as GroupedColumnData[])\n : columnsData;\n};\n","import i18n from 'ui-i18n';\nimport {any, equals, flatten, pipe, pluck, prop, values} from 'ramda';\nimport {DataTypes, MatchRulesAttrTypes, Metadata, SearchFilter, getEntityType} from '@reltio/mdm-sdk';\nimport {collectAttributeItems} from './attributesHelpers';\n\nexport const ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\n\nexport const MATCHES_SORT_OPTIONS = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n }\n },\n {\n id: 'matchRules',\n get label() {\n return i18n.text('Match rule');\n }\n },\n {\n id: 'mlMatchRules',\n get label() {\n return i18n.text('Match IQ');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_SELECT\n }\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n }\n }\n];\n\nexport const ADDITIONAL_SORT_OPTIONS_DATA = [\n {\n id: 'score',\n get label() {\n return i18n.text('Match score');\n }\n },\n {\n id: 'relevanceScores.relevance',\n get label() {\n return i18n.text('Relevance score');\n }\n },\n {\n id: 'relevanceScores.actionLabel',\n get label() {\n return i18n.text('Match action');\n }\n }\n];\n\nexport const DEFAULT_SORT_OPTIONS = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n }\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n }\n }\n];\n\nexport const getSortOptionIdFromData = pluck('id');\n\nexport const getSortingItemsGroups = (metadata: Metadata, entityTypeUri: string) => [\n {\n title: '',\n attributes: collectAttributeItems(metadata, getEntityType(metadata, entityTypeUri))\n }\n];\n\nexport const buildRulesStringFormFilters = (filters: SearchFilter[]): string =>\n flatten(filters.map(prop('values'))).join(',');\n\nexport const isMatchRuleFilter = ({fieldName}: SearchFilter): boolean => {\n return pipe(values, pluck('name'), any(equals(fieldName)))(MatchRulesAttrTypes);\n};\n","import {useReducer} from 'react';\nimport {useActions} from '@reltio/components';\nimport stateReducer, {actions} from './helpers/stateReducer';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {ROWS_PER_PAGE_OPTIONS} from '../helpers/sortHelpers';\n\nexport const useMatchesReducer = (defaultRowsPerPage: number = ROWS_PER_PAGE_OPTIONS[0]) => {\n const initState = {\n page: 0,\n rowsPerPage: defaultRowsPerPage,\n selectedItems: [],\n limitSelection: null\n };\n\n const [state, dispatch] = useReducer(stateReducer, initState);\n const resultActions = useActions({actions, dispatch});\n const viewActions = useViewStateActions();\n const viewState = useViewState();\n return [{...resultActions, ...viewActions}, {...state, ...viewState}, dispatch];\n};\n","import {ApiError, ApiErrorCode, getRequestErrorMessage, WorkflowApiError} from '@reltio/mdm-sdk';\nimport {ErrorPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nexport const showAddRelationErrors = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: i18n.text(\"Can't add relationship\")\n });\n};\n\nexport const showApiError = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: getRequestErrorMessage(error, i18n.text('Something went wrong...'))\n });\n};\n\nexport const showDCRReviewErrors = (apiError: WorkflowApiError) => {\n const error = apiError.error;\n\n if (error?.errorCode === ApiErrorCode.DCR_ALREADY_EXISTS) {\n return;\n }\n showApiError(error);\n};\n","import {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\nexport const useSpinnerAndReloadData = () => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const onStartRequest = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishRequest = useCallback(() => {\n setGlobalSpinner(false);\n reloadData();\n }, [reloadData, setGlobalSpinner]);\n return {onStartRequest, onFinishRequest, isGlobalSpinnerActive};\n};\n","import React, {forwardRef} from 'react';\nimport {ActionButtonMode, MergeButton as MergeButtonComponent, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {showApiError} from '../../utils/errors';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n size?: string;\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const MergeButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, size, onMenuClose = noop}: Props, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n const {deselectByEntities} = useViewStateActions();\n\n const onSuccess = () => {\n deselectByEntities(entities);\n };\n\n return (\n <MergeButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n {...(size ? {size} : {})}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onSuccess={onSuccess}\n onError={showApiError}\n data-reltio-id=\"reltio-potential-matches-merge-button\"\n ref={ref}\n />\n );\n }\n);\n\nMergeButton.displayName = 'mergeButton';\n","import React, {forwardRef} from 'react';\nimport {ActionButtonMode, noop, NotMatchButton as NotMatchButtonComponent} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {showApiError} from '../../utils/errors';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n size?: string;\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const NotMatchButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, size, onMenuClose = noop}: Props, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n const {deselectByEntities} = useViewStateActions();\n\n const onSuccess = () => {\n deselectByEntities(entities);\n };\n return (\n <NotMatchButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n {...(size ? {size} : {})}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onSuccess={onSuccess}\n onError={showApiError}\n data-reltio-id=\"reltio-potential-matches-not-match-button\"\n ref={ref}\n />\n );\n }\n);\n\nNotMatchButton.displayName = 'NotMatchButton';\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M9 4c4.42 0 8 3.58 8 8s-3.58 8-8 8a8 8 0 01-7.419-5h2.224A6.002 6.002 0 009 18c3.31 0 6-2.69 6-6s-2.69-6-6-6a6.002 6.002 0 00-5.196 3H1.581A8 8 0 019 4zm8 .26c3.45.89 6 4.01 6 7.74 0 3.73-2.55 6.85-6 7.74v-2.09a5.99 5.99 0 000-11.3V4.26zM8 7.5l4.5 4.5L8 16.5V13H0v-2h8V7.5z\",\n fillOpacity: \".541\"\n})));","import React, {forwardRef} from 'react';\nimport {ActionButton, ActionButtonMode, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {useSetAMatch} from '../../hooks/useSetAMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const SetAMatchButton = forwardRef<HTMLLIElement, Props>(\n ({entity, entities, className, mode = ActionButtonMode.iconButton, onMenuClose = noop}: Props, ref) => {\n const {deselectByEntities} = useViewStateActions();\n\n const onSuccess = () => {\n deselectByEntities(entities);\n };\n\n const [markingIsInProgress, setAMatch] = useSetAMatch({entity, entities, onSuccess});\n\n return (\n <ActionButton\n className={className}\n disabled={markingIsInProgress}\n mode={mode}\n label={i18n.text('Save on potential matches')}\n icon={SetAsMatchIcon}\n onClick={setAMatch}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nSetAMatchButton.displayName = 'SetAMatchButton';\n","import {useCallback} from 'react';\nimport {Entity, setAsMatch} from '@reltio/mdm-sdk';\nimport {showApiError} from '../utils/errors';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entity: Entity;\n entities: Entity[];\n onSuccess?: () => void;\n};\n\nexport const useSetAMatch = ({entities, entity, onSuccess}: Props): [boolean, () => void] => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const setAMatch = useCallback(() => {\n setGlobalSpinner(true);\n setAsMatch(entity.uri, entities)\n .then(() => {\n onSuccess?.();\n })\n .catch(showApiError)\n .finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [entities, entity, setGlobalSpinner, reloadData, onSuccess]);\n\n return [isGlobalSpinnerActive, setAMatch];\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M10 6v2H4v12.22h12V14h2v6c0 1.05-.82 1.918-1.851 1.994L16 22H4c-1.05 0-1.918-.82-1.994-1.851L2 20V8c0-1.05.82-1.918 1.851-1.994L4 6h6zm4 10v2H6v-2h8zm-3.997-3l-.001 2H6v-2h4.003zM21 2c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1h-7l-2 2 .005-11c0-.55.445-1 .995-1h8zm-10.996 8l-.001 2H6v-2h4.004zm9.286-6.3l-3.17 3.17-1.41-1.42-1.41 1.41 2.82 2.84 4.59-4.58-1.42-1.42z\",\n id: \"svg3192636834a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg3192636834b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg3192636834a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg3192636834b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef, useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, SnackbarContext, noop} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, isEmptyValue} from '@reltio/mdm-sdk';\nimport {useRequestDCRReview} from '../../hooks/useRequestDCRReview';\nimport DcrReviewIcon from './icons/dcrReview.svg';\n\ntype Props = {\n className?: string;\n entity: Entity;\n entities: Entity[];\n mode?: ActionButtonMode;\n onMenuClose?: () => void;\n};\n\nexport const DCRReviewButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, onMenuClose = noop}: Props, ref) => {\n const showSnackbarMessage = useContext(SnackbarContext);\n const [operationIsInProgress, startPMReview] = useRequestDCRReview({\n entity,\n entities,\n showSnackbarMessage\n });\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n\n return canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath) ? (\n <ActionButton\n className={className}\n disabled={operationIsInProgress}\n mode={mode}\n label={operationIsInProgress ? '' : i18n.text('Potential match request')}\n icon={DcrReviewIcon}\n onClick={startPMReview}\n onMenuClose={onMenuClose}\n data-reltio-id=\"reltio-potential-matches-dcr-review-button\"\n ref={ref}\n />\n ) : null;\n }\n);\n\nDCRReviewButton.displayName = 'DCRReviewButton';\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {concat, map, pipe, prop} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {startProcessInstanceByPairs, Entity} from '@reltio/mdm-sdk';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {showDCRReviewErrors} from '../utils/errors';\n\nconst PROCESS_TYPE = 'potentialMatchReview';\n\ntype Props = {\n entities: Entity[];\n entity: Entity;\n showSnackbarMessage?: (message: string) => void;\n};\n\nexport const useRequestDCRReview = ({\n entities,\n entity,\n showSnackbarMessage\n}: Props): [val: boolean, func: () => void] => {\n const {selectors} = mdmModule;\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const workflowPath = useSelector(selectors.getWorkflowPath);\n const environment = useSelector(selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(selectors.getTenant);\n const getUri = prop('uri');\n const getUrisFromEntities = pipe(concat, map(getUri));\n const uris = getUrisFromEntities([entity], entities);\n\n const startPMReview = useCallback(() => {\n setGlobalSpinner(true);\n startProcessInstanceByPairs({\n workflowPath,\n processType: PROCESS_TYPE,\n objectURIs: uris,\n tenant,\n environment\n })\n .then(() => {\n showSnackbarMessage?.(i18n.text('Potential match request: Done'));\n })\n .catch(showDCRReviewErrors)\n .finally(() => {\n setGlobalSpinner(false);\n });\n }, [setGlobalSpinner, workflowPath, uris, tenant, environment, showSnackbarMessage]);\n\n return [isGlobalSpinnerActive, startPMReview];\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n isDataTenantEntity,\n reinstateDataTenantEntityMatch,\n reinstateMixedEntitiesMatches,\n Entity\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {showApiError} from '../utils/errors';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entities: Entity[];\n entity: Entity;\n showSnackbarMessage?: (message: string) => void;\n onSuccess?: () => void;\n};\n\nexport const useReinstateMatch = ({entities, entity, showSnackbarMessage, onSuccess}: Props): [boolean, () => void] => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const onReinstateMatch = useCallback(() => {\n setGlobalSpinner(true);\n const params = {dtssPath, customerTenant: tenant, entity, entities};\n (isDataTenantEntity(entity) ? reinstateDataTenantEntityMatch(params) : reinstateMixedEntitiesMatches(params))\n .then(() => {\n showSnackbarMessage?.(i18n.text('Save as potential match: Done'));\n onSuccess?.();\n })\n .catch(showApiError)\n .finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [setGlobalSpinner, dtssPath, tenant, entity, entities, showSnackbarMessage, reloadData, onSuccess]);\n\n return [isGlobalSpinnerActive, onReinstateMatch];\n};\n","import React, {forwardRef, useContext} from 'react';\n\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, noop, SnackbarContext} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {useReinstateMatch} from '../../hooks/useReinstateMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const ReinstateMatchButton = forwardRef<HTMLLIElement, Props>(\n ({entity, entities, className, mode = ActionButtonMode.iconButton, onMenuClose = noop}: Props, ref) => {\n const showSnackbarMessage = useContext(SnackbarContext);\n const {deselectByEntities} = useViewStateActions();\n const onSuccess = () => {\n deselectByEntities(entities);\n };\n const [reinstateIsInProgress, onReinstateMatch] = useReinstateMatch({\n entity,\n entities,\n showSnackbarMessage,\n onSuccess\n });\n\n return (\n <ActionButton\n className={className}\n disabled={reinstateIsInProgress}\n mode={mode}\n label={i18n.text('Save as potential match')}\n icon={SetAsMatchIcon}\n onClick={onReinstateMatch}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nReinstateMatchButton.displayName = 'ReinstateMatchButton';\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M19 14v3h3v2h-3v3h-2v-3h-3v-2l3-.001V14h2zM17 2a3 3 0 11-1.293 5.708l-4.535 4.535a5 5 0 11-1.414-1.414l4.534-4.536A3 3 0 0117 2zM7 12a3 3 0 100 6 3 3 0 000-6zm10-8a1 1 0 100 2 1 1 0 000-2z\",\n id: \"svg2192258504a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2192258504b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2192258504a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2192258504b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef} from 'react';\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport AddRelationIcon from './icons/addRelationship.svg';\nimport {MatchesActionsPermissions} from '../../types/potentialMatchesTypes';\n\ntype Props = {\n className?: string;\n mainEntity?: Entity;\n currentEntity?: Entity;\n mode?: ActionButtonMode;\n permission?: MatchesActionsPermissions;\n onMenuClose?: () => void;\n onClick?: (val: Pick<Props, 'mainEntity' | 'currentEntity' | 'matchRules' | 'permission'>) => void;\n matchRules?: string[];\n};\n\nexport const CreateRelationButton = forwardRef<HTMLLIElement, Props>(\n (\n {\n className,\n mainEntity,\n currentEntity,\n matchRules,\n mode = ActionButtonMode.iconButton,\n onClick = noop,\n permission,\n onMenuClose = noop\n }: Props,\n ref\n ) => {\n const handleClick = () => onClick({mainEntity, currentEntity, matchRules, permission});\n return (\n <ActionButton\n className={className}\n mode={mode}\n label={i18n.text('Add relationship')}\n icon={AddRelationIcon}\n onClick={handleClick}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nCreateRelationButton.displayName = 'CreateRelationButton';\n","import React, {ReactNode} from 'react';\n\nexport const RightSideHeaderContext = React.createContext<{\n mainTitle?: string;\n secondTitle?: string;\n content?: ReactNode;\n rightContent?: ReactNode;\n bottomContent?: ReactNode;\n onClose: () => void;\n }>({\n onClose: () => {}\n });\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n attributeSelect: {\n width: '100%',\n height: '40px'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {BasicAttributeSelector, AttributeSelectorItemsGroup} from '@reltio/components';\n\nimport useStyles from './styles';\n\ntype AttributeOption = {\n fieldName: string;\n title: string;\n children?: AttributeOption[];\n};\n\ntype Props = {\n onChange: (field) => void;\n options: AttributeSelectorItemsGroup[];\n field?: string;\n};\n\nconst SortingFieldSelector = ({onChange, options, field}: Props) => {\n const styles = useStyles();\n const value = useMemo(() => {\n const path = field?.split('.');\n const sortLevel = path?.length;\n\n const findNode = (attributes: AttributeOption[]) => {\n const level = attributes[0].fieldName.split('.').length;\n if (level === sortLevel || (level === 1 && field.includes('relevanceScores.'))) {\n return attributes.find((attr) => attr.fieldName === field);\n }\n if (level < sortLevel) {\n const parentFieldName = path.slice(0, level).join('.');\n const children = attributes.find((attr) => attr.fieldName === parentFieldName)?.children;\n if (children) {\n return findNode(children);\n }\n }\n };\n\n for (const option of options) {\n const node = findNode(option.attributes);\n if (node) {\n return node;\n }\n }\n }, [field, options]);\n\n const handleChange = useCallback(\n (val: {attribute: AttributeOption}) => {\n onChange(val.attribute.fieldName);\n },\n [onChange]\n );\n\n return (\n <BasicAttributeSelector\n hideCheckBox\n className={styles.attributeSelect}\n value={value}\n itemsGroups={options}\n onSelect={handleChange}\n ungroup\n single\n />\n );\n};\n\nexport default memo(SortingFieldSelector);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n rowCheckbox: {\n marginRight: '20px',\n position: 'relative',\n padding: '12px',\n alignSelf: 'baseline'\n },\n header: {\n padding: '8px 12px 8px 0',\n border: 'rgba(0,0,0,0.05) 1px solid',\n borderTop: 0,\n display: 'flex',\n justifyContent: 'space-between'\n },\n selector: {\n width: '160px'\n },\n sorting: {\n display: 'flex'\n },\n arrow: {\n transition: 'transform 0.3s ease-in'\n },\n rotate: {\n transform: 'rotate(180deg)'\n }\n}));\n","import React, {useContext} from 'react';\nimport Checkbox from '@mui/material/Checkbox';\nimport {Order, SortingField} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItemsGroup, SidePanelContentHeader} from '@reltio/components';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport SortingFieldSelector from '../SortingFieldSelector';\nimport i18n from 'ui-i18n';\nimport ArrowIcon from '@mui/icons-material/ArrowUpward';\nimport classNames from 'classnames';\nimport IconButton from '@mui/material/IconButton';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n selectedCount: number;\n totalCount: number;\n totalOnPage: number;\n onSelect: () => void;\n sortOptions: AttributeSelectorItemsGroup[];\n onSorting?: (SortingField) => void;\n sorting: SortingField;\n children?: React.ReactNode;\n};\n\nconst RightSidePanelHeader = ({\n selectedCount,\n totalCount,\n onSelect,\n sortOptions,\n sorting,\n onSorting,\n totalOnPage,\n children\n}: Props) => {\n const styles = useStyles();\n\n const onChangeSortOrder = () => {\n onSorting({\n ...sorting,\n order: sorting.order === Order.asc ? Order.desc : Order.asc\n });\n };\n\n const onChangeSortField = (field) => {\n onSorting({\n ...sorting,\n field\n });\n };\n\n const sidePanelHeaderProps = useContext(RightSideHeaderContext);\n return (\n <>\n <SidePanelContentHeader\n {...sidePanelHeaderProps}\n secondTitle={!!totalCount && i18n.text('${n} Profiles', {n: totalCount})}\n />\n {children}\n {!!totalOnPage && (\n <div className={styles.header}>\n <Checkbox\n className={styles.rowCheckbox}\n checked={selectedCount === totalOnPage}\n indeterminate={selectedCount > 0 && selectedCount < totalOnPage}\n onChange={onSelect}\n />\n <div className={styles.sorting}>\n <SortingFieldSelector\n field={sorting?.field}\n options={sortOptions}\n onChange={onChangeSortField}\n />\n <IconButton\n onClick={onChangeSortOrder}\n classes={{root: classNames(styles.arrow, {[styles.rotate]: sorting.order === Order.desc})}}\n size=\"large\"\n >\n <ArrowIcon />\n </IconButton>\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default RightSidePanelHeader;\n","import {useMemo} from 'react';\nimport {getSortingItemsGroups} from '../helpers/sortHelpers';\nimport {Metadata} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItemsGroup} from '@reltio/components';\n\ntype SortOption = {\n id: string;\n label: string;\n};\nexport const useSortOptions = (\n defaultOptions: SortOption[],\n additionalOptions: SortOption[],\n metadata: Metadata,\n entityTypeUri: string\n): AttributeSelectorItemsGroup[] => {\n return useMemo(() => {\n const itemsGroups = getSortingItemsGroups(metadata, entityTypeUri);\n const defaultData = {\n title: '',\n attributes: defaultOptions\n .concat(additionalOptions || [])\n .map((col) => ({title: col.label, fieldName: col.id}))\n };\n return [defaultData, ...itemsGroups];\n }, [metadata, entityTypeUri, defaultOptions, additionalOptions]);\n};\n","import {find, propEq} from 'ramda';\nimport {useViewState} from '../contexts/ViewStateContext';\n\nexport const useEntityColor = (entityUri: string) => {\n const {entityColors} = useViewState();\n\n const entityColor = find(propEq('entityUri', entityUri))(entityColors);\n return entityColor ? entityColor.color : '';\n};\n","import {makeStyles} from '@mui/styles';\n\ntype StylesProps = {\n color?: string;\n};\n\nexport const useStyles = makeStyles((theme) => {\n return {\n hidden: {\n visibility: 'hidden'\n },\n rowCheckbox: {\n marginLeft: '-9px',\n marginRight: '9px',\n position: 'relative',\n padding: '9px',\n alignSelf: 'baseline'\n },\n entity: {\n paddingTop: '12px',\n paddingBottom: '8px',\n overflow: 'hidden',\n flex: 1\n },\n entityHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n whiteSpace: 'pre'\n },\n actions: {\n marginLeft: 'auto',\n marginRight: 0,\n display: 'flex',\n height: '17px'\n },\n actionButtons: {\n display: 'none'\n },\n active: {\n display: 'flex'\n },\n wrapper: {\n position: 'relative',\n padding: '0 15px 0 15px',\n color: 'rgba(0,0,0,0.87)',\n '&::after': {\n content: '\"\"',\n position: 'absolute' as const,\n right: 0,\n top: 0,\n width: '40px',\n height: '100%',\n pointerEvents: 'none'\n },\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.04)',\n '& $actionButtons': {\n display: 'flex'\n },\n '& $commentsContainer': {\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n }\n },\n display: 'flex',\n boxSizing: 'border-box',\n borderBottom: '1px rgba(0,0,0,0.05) solid',\n paddingLeft: '12px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none',\n fontWeight: 500,\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n matchRulesWrapper: {\n padding: '12px 15px 4px 2px',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n '& $dividerWrapper:nth-child(2):not(:last-child)': {\n display: 'block'\n }\n },\n selectedRow: {\n backgroundColor: 'rgba(0, 114, 206, 0.12)'\n },\n coloredRow: {\n '&:before': {\n content: '\"\"',\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: '4px',\n height: '100%',\n borderRadius: '0px 4px 4px 0px',\n background: ({color}: StylesProps) => color\n }\n },\n matchScore: {\n paddingLeft: '12px',\n color: 'rgba(0,0,0,0.54)'\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n height: '24px',\n marginLeft: '6px'\n },\n border: {\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n },\n rightButton: {\n marginLeft: '8px'\n },\n tenantIcon: {\n marginLeft: '12px'\n },\n dividerWrapper: {\n display: 'none',\n marginLeft: '12px',\n alignSelf: 'stretch'\n },\n divider: {\n borderColor: 'rgba(0,0,0,0.12)'\n },\n relevanceBadge: {\n marginLeft: '12px'\n }\n };\n});\n","import React, {memo, useState} from 'react';\nimport Checkbox from '@mui/material/Checkbox';\nimport Divider from '@mui/material/Divider';\nimport {\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n DataTenantBadge,\n EntityUriLink,\n MatchRulesBlock,\n MatchRuleVariant,\n RelevanceScoreBadge\n} from '@reltio/components';\n\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n EntitiesMap,\n Entity,\n getEntityUriForLink,\n getLabel,\n Match,\n Metadata,\n isDataTenantEntity,\n checkMatchRuleSummaryRelevance\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {useEntityColor} from '../../hooks/useEntityColor';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected?: boolean;\n isColumnViewMode?: boolean;\n rowIndex: number;\n toggleSelect?: (match: Match) => void;\n entityToMatch: Entity;\n actionButtonsRenderer: (props: ActionButtonRendererProps) => React.ReactElement;\n match: Match;\n matches: Match[];\n entitiesMap?: EntitiesMap<Pick<Entity, 'label' | 'uri' | 'type'>>;\n metadata: Metadata;\n matchRules?: string[];\n};\n\nconst ItemRenderer = ({\n rowIndex,\n match,\n toggleSelect,\n entityToMatch,\n isRowSelected,\n isColumnViewMode,\n actionButtonsRenderer,\n metadata,\n entitiesMap = {}\n}: Props) => {\n const entity = match.object;\n const color = useEntityColor(entity.uri);\n const styles = useStyles({color});\n const [openMenu, setOpenMenu] = useState(false);\n const onToggleSelect = () => toggleSelect(match);\n\n const isRowSelectable = entity !== entityToMatch;\n const Actions = actionButtonsRenderer;\n\n const showRelevanceBadge = match.matchRuleSummaries?.some(checkMatchRuleSummaryRelevance);\n\n return (\n <div\n className={classnames(styles.wrapper, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [styles.coloredRow]: isColumnViewMode && isRowSelected,\n [styles.selectedRow]: isRowSelected\n })}\n >\n <Checkbox\n className={classnames(styles.rowCheckbox, {[styles.hidden]: !isRowSelectable})}\n checked={isRowSelected}\n onChange={onToggleSelect}\n data-reltio-id={`reltio-matches-table-checkbox-${rowIndex}`}\n />\n <div className={styles.entity}>\n <div className={styles.entityHeader}>\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n <div className={styles.actions}>\n <div className={classnames(styles.actionButtons, {[styles.active]: openMenu})}>\n <Actions\n buttonClassName={styles.rightButton}\n hoveredMatch={match}\n onActionsMenuOpen={() => setOpenMenu(true)}\n onActionsMenuClose={() => setOpenMenu(false)}\n />\n </div>\n {entityToMatch && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.border]: openMenu})}\n uri={createObjectIdForPM(entityToMatch.uri, match.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: match.object.uri\n })}\n allowOnlyOneComment\n showAlways={openMenu}\n />\n )}\n </div>\n </div>\n <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n entitiesMap={entitiesMap}\n entity={entity}\n match={match}\n metadata={metadata}\n variant={MatchRuleVariant.excludeNotMatch}\n />\n <div className={styles.dividerWrapper}>\n <Divider orientation=\"vertical\" className={styles.divider} />\n </div>\n {showRelevanceBadge && (\n <RelevanceScoreBadge\n className={styles.relevanceBadge}\n matchRuleSummaries={match.matchRuleSummaries}\n />\n )}\n {!showRelevanceBadge && !!match.matchScore && (\n <div className={styles.matchScore}>{match.matchScore}</div>\n )}\n {isDataTenantEntity(entity) && (\n <DataTenantBadge className={styles.tenantIcon} dataTenantId={entity.dataTenant} />\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default memo(ItemRenderer);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n view: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflowY: 'auto',\n overflowX: 'hidden'\n }\n}));\n","import React from 'react';\nimport {Entity, Metadata, EntitiesMap, Match} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {ItemRenderer} from '../ItemRenderer';\nimport {useViewState} from '../../contexts/ViewStateContext';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n metadata: Metadata;\n matches: Match[];\n entityToMatch: Entity;\n toggleSelect: (match: Match) => void;\n actionButtonsRenderer: (props: ActionButtonRendererProps) => React.ReactElement;\n entitiesMap?: EntitiesMap<Pick<Entity, 'label' | 'uri' | 'type'>>;\n selectedItems: Match[];\n isLoading: boolean;\n};\n\nexport const MatchItems = ({\n entityToMatch,\n matches,\n toggleSelect,\n actionButtonsRenderer,\n metadata,\n entitiesMap,\n selectedItems,\n isLoading\n}: Props) => {\n const styles = useStyles();\n const {comparisonViewMode} = useViewState();\n return (\n <div className={styles.view}>\n {isLoading && <LinearLoadIndicator />}\n {matches.map((match, index) => (\n <ItemRenderer\n key={match.object.uri}\n rowIndex={index}\n match={match}\n entityToMatch={entityToMatch}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n matchRules={match.matchRules}\n metadata={metadata}\n entitiesMap={entitiesMap}\n isColumnViewMode={comparisonViewMode === ComparisonViewMode.COLUMNS}\n isRowSelected={selectedItems.some((item) => item.object.uri === match.object.uri)}\n />\n ))}\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n padding: '8px 16px',\n gap: '8px',\n borderBottom: 'rgba(0,0,0,0.05) 1px solid'\n },\n inputRoot: {\n borderRadius: '4px'\n },\n menuButtonRoot: {\n padding: 0\n }\n});\n","import React, {memo, useCallback, useRef, useState} from 'react';\nimport {SearchInput, TenantsDropDownSelector} from '@reltio/components';\nimport {always, isEmpty, pipe, propEq, trim, when} from 'ramda';\nimport {DataTenant} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n onSearch: (searchText: string) => void;\n searchTenant: DataTenant;\n onChangeSearchTenant: (tenant: DataTenant) => void;\n entityTypeUri: string;\n};\n\nconst RightSideSearch = ({onSearch, searchTenant, onChangeSearchTenant, entityTypeUri}: Props) => {\n const styles = useStyles();\n const searchInputRef = useRef<HTMLInputElement>();\n const [currentSearchText, setCurrentSearchText] = useState<string>('');\n const handleSearch = useCallback(when(propEq('key', 'Enter'), pipe(always(currentSearchText), trim, onSearch)), [\n currentSearchText,\n onSearch\n ]);\n\n const handleChangeSearchText = useCallback(\n (newSearchText) => {\n setCurrentSearchText(newSearchText);\n if (isEmpty(newSearchText) && document.activeElement !== searchInputRef.current) {\n onSearch(newSearchText);\n }\n },\n [onSearch]\n );\n\n if (!onSearch) {\n return null;\n }\n\n return (\n <div className={styles.root}>\n <TenantsDropDownSelector\n entityTypeUri={entityTypeUri}\n selectedTenant={searchTenant}\n onChangeTenant={onChangeSearchTenant}\n />\n <SearchInput\n classes={{root: styles.inputRoot}}\n inputRef={searchInputRef}\n fullWidth\n height={40}\n autofocus={false}\n value={currentSearchText}\n onSearch={handleChangeSearchText}\n onKeyPress={handleSearch}\n />\n </div>\n );\n};\nexport default memo(RightSideSearch);\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport {Action} from './ActionsPanel';\n\ntype Props = {\n item: Action;\n onMenuClose?: () => void;\n};\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const {ActionButton, props} = item;\n return <ActionButton ref={ref} mode=\"menuItem\" onMenuClose={onMenuClose} {...props} />;\n});\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React from 'react';\nimport {splitAt} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActionButtonMode, DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport MenuItemRenderer from './MenuItemRenderer';\n\nexport type Action = {\n ActionButton: (props) => JSX.Element;\n show: boolean;\n props: Record<string, unknown>;\n};\n\ntype Props = {\n actions: Action[];\n numberOfButtons?: number;\n mode?: 'normal' | 'hover';\n actionButtonSize?: string;\n classes?: {\n actionButton: string;\n moreOptions: string;\n };\n onActionsMenuOpen?: () => void;\n onActionsMenuClose?: () => void;\n};\n\nexport const ActionsPanel = ({\n actions,\n numberOfButtons = 2,\n mode = 'normal',\n actionButtonSize,\n classes,\n onActionsMenuOpen,\n onActionsMenuClose\n}: Props) => {\n const [buttonActions, menuActions] = splitAt(numberOfButtons, actions);\n\n const buttonMode = mode === 'normal' ? ActionButtonMode.button : ActionButtonMode.iconButton;\n const buttonSize = mode === 'normal' ? 'MPlus' : 'S';\n\n return (\n <>\n {buttonActions.map(({ActionButton, props}, index) => (\n <ActionButton\n key={index}\n mode={buttonMode}\n className={classes?.actionButton}\n {...(actionButtonSize ? {size: actionButtonSize} : {})}\n {...props}\n />\n ))}\n {menuActions.length > 0 && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n size: buttonSize,\n tooltipTitle: i18n.text('More actions'),\n 'data-reltio-id': 'reltio-potential-matches-actions-dropdown-menu-button'\n }}\n className={classes?.moreOptions}\n menuId={'matches-view-actions'}\n menuItems={menuActions}\n onMenuOpen={onActionsMenuOpen}\n onMenuClose={onActionsMenuClose}\n MenuItemRenderer={MenuItemRenderer}\n />\n )}\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import {BasicTablePagination, LinearLoadIndicator, useDidUpdateEffect} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n Metadata,\n SearchFilter,\n PotentialMatchesPerspectiveConfig,\n DataTenant,\n SortingField,\n isDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {identity, isEmpty, pathEq, prop} from 'ramda';\nimport React, {memo, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useFindEntities} from '../../hooks/useFindEntities';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {MergeButton, NotMatchButton, SetAMatchButton} from '../Actions';\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {ROWS_PER_PAGE_OPTIONS, DEFAULT_SORT_OPTIONS} from '../../helpers/sortHelpers';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport RightSideSearch from './RightSideSearch/RightSideSearch';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n};\n\nexport const FindMatchesView = memo(({entity, metadata, filters, sorting, onSorting, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer();\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, selectedItems, isGlobalSpinnerActive} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n const tenant = useSelector(mdmModule.selectors.getTenantObject);\n const [searchText, setSearchText] = useState<string>('');\n const [searchTenant, setSearchTenant] = useState<DataTenant>(tenant);\n\n const handleChangeSearchTenant = useCallback(\n (newSearchTenant) => {\n setSearchTenant(newSearchTenant);\n changePage(0);\n },\n [changePage]\n );\n\n const requestFilters: SearchFilter[] = useMemo(\n () =>\n [\n isEmpty(searchText)\n ? null\n : {\n filter: 'containsWordStartingWith',\n fieldName: 'attributes',\n values: [searchText]\n },\n {\n filter: 'equals',\n fieldName: 'type',\n values: [entityType]\n },\n {filter: 'not equals', fieldName: 'uri', values: [entityUri]},\n ...filters\n ].filter(identity),\n [entityType, entityUri, searchText, filters]\n );\n\n const sortOptions = useSortOptions(DEFAULT_SORT_OPTIONS, [], metadata, entityType);\n\n const {entities, total, findEntities, loading} = useFindEntities({\n enabled: !!entityUri,\n entityType,\n filters: requestFilters,\n sorting,\n page,\n rowsPerPage,\n searchTenantId: searchTenant.id\n });\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n addReloadHandler(findEntities);\n return () => removeReloadHandler(findEntities);\n }, [findEntities, addReloadHandler, removeReloadHandler]);\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(entities);\n }, [setSelectedItems, entities]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri]);\n\n useDidUpdateEffect(() => {\n resetPage();\n }, [filters, searchText]);\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const {canMerge, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const entities = [hoveredMatch.object];\n const isDTEntity = isDataTenantEntity(hoveredMatch.object);\n const areBothEntitiesDT = isDTEntity && isDataTenantEntity(entity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: SetAMatchButton,\n show: canMark && !isDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={3}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata]\n );\n\n const selectedCount = useMemo(() => {\n return entities\n .map((match) => selectedItems?.find(pathEq(['object', 'uri'], match.object.uri)))\n .filter(identity).length;\n }, [selectedItems, entities]);\n\n return (\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={entities.length}\n sortOptions={sortOptions}\n sorting={sorting}\n onSorting={onSorting}\n onSelect={selectedCount ? resetSelected : selectAll}\n >\n <RightSideSearch\n searchTenant={searchTenant}\n onChangeSearchTenant={handleChangeSearchTenant}\n entityTypeUri={entityType}\n onSearch={setSearchText}\n />\n </RightSidePanelHeader>\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={entities}\n metadata={metadata}\n selectedItems={selectedItems}\n isLoading={loading}\n />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n );\n});\n\nFindMatchesView.displayName = 'FindMatchesView';\n","import {useSafePromise} from '@reltio/components';\nimport {\n buildFilterQueryString,\n enrichEntityWithDataTenant,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotalFromDataTenant,\n getTotals,\n GlobalSearchRequestOptions,\n SearchFilter,\n SortingField\n} from '@reltio/mdm-sdk';\nimport {useCallback, useState, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {map} from 'ramda';\n\ntype Props = {\n entityType: string;\n filters: SearchFilter[];\n sorting: SortingField;\n page: number;\n rowsPerPage: number;\n enabled: boolean;\n searchTenantId: string;\n};\n\nexport const useFindEntities = ({entityType, filters, sorting, page, rowsPerPage, enabled, searchTenantId}: Props) => {\n const {order, field} = sorting;\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const tenant = useSelector(mdmModule.selectors.getTenantObject);\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const [loading, setLoading] = useState(false);\n const [total, setTotal] = useState(0);\n const [entities, setEntities] = useState([]);\n const safePromise = useSafePromise();\n const DEFAULT_SELECTION = ['uri', 'label', 'type', 'secondaryLabel', 'attributes', 'crosswalks'];\n const filterQuery: string = useMemo(() => buildFilterQueryString()(filters), [filters]);\n const findEntities = useCallback(\n () => {\n if (enabled) {\n setLoading(true);\n const isDtss = searchTenantId !== tenant.id;\n const dtssProps = {\n customerTenant: tenant.id,\n dataTenant: searchTenantId,\n dtssPath\n };\n\n const entityRequestOptions = {\n offset: page * rowsPerPage,\n max: rowsPerPage,\n sort: field,\n order,\n select: DEFAULT_SELECTION.join(','),\n globalFilter,\n activityFilter\n };\n const entityRequest = isDtss\n ? getFilteredEntitiesFromDataTenant({\n filters,\n options: entityRequestOptions,\n ...dtssProps\n }).then(map(enrichEntityWithDataTenant(searchTenantId)))\n : getFilteredEntities(filters, entityRequestOptions);\n\n const totalRequestOption = {activityFilter, globalFilter};\n const totalRequest = isDtss\n ? getTotalFromDataTenant({\n filters,\n options: totalRequestOption,\n ...dtssProps\n })\n : getTotals(filters, totalRequestOption);\n\n safePromise(Promise.all([entityRequest, totalRequest]))\n .then((results) => {\n const [entities, totalResponse] = results;\n const {total} = totalResponse;\n const entityToMatchFormat = (entity) => ({object: entity});\n setEntities(entities.map(entityToMatchFormat));\n setTotal(total);\n })\n .finally(() => setLoading(false));\n }\n },\n [\n entityType,\n filterQuery,\n field,\n order,\n page,\n rowsPerPage,\n enabled,\n activityFilter,\n globalFilter,\n searchTenantId,\n tenant\n ] // eslint-disable-line\n );\n useEffect(() => {\n findEntities();\n }, [findEntities]);\n\n return {entities, total, findEntities, loading};\n};\n","import {assocPath, evolve, identity, propOr, filter, pipe, map} from 'ramda';\nimport {\n canCreateRelationBetweenEntities,\n generateNewRelationUri,\n getRulesConfig,\n getEntityType,\n getRelationType,\n inOutRelationsDeduplicator,\n Metadata,\n Entity,\n InOutRelation,\n Connection,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\n\nexport const getRelationTypesFromConfig = (\n metadata: Metadata,\n config: PotentialMatchesPerspectiveConfig,\n mainEntity: Entity,\n entity: Entity,\n matchRules: string[]\n): {\n inRelations: InOutRelation;\n outRelations: InOutRelation;\n} => {\n const {isNotDuplicatedInRelation, isNotDuplicatedOutRelation} = inOutRelationsDeduplicator();\n\n const setObjectTypes = (relation) =>\n pipe(\n assocPath(['startObject', 'objectType'], getEntityType(metadata, relation.startObject.objectTypeURI)),\n assocPath(['endObject', 'objectType'], getEntityType(metadata, relation.endObject.objectTypeURI))\n )(relation);\n\n const entityType = getEntityType(metadata, entity.type);\n const matchActionConfig = propOr({}, 'matchActions', config);\n const rulesConfig = getRulesConfig(matchActionConfig, entityType, matchRules);\n const [relationTypeUris] = rulesConfig.map(({createRelation}) => createRelation).filter(identity);\n return (\n evolve(\n {\n inRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, entity, mainEntity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedInRelation),\n map(setObjectTypes)\n ),\n outRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, mainEntity, entity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedOutRelation),\n map(setObjectTypes)\n )\n },\n relationTypeUris\n ) || {}\n );\n};\n\nexport const createNewConnection = (entity = {} as Entity): Connection => ({\n relation: {\n relationUri: generateNewRelationUri()\n },\n entity,\n isNew: true\n});\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n dialogPaper: {\n height: '600px',\n maxWidth: '600px'\n },\n dialogTitle: {\n padding: '16px 16px 0'\n },\n titleText: {\n color: theme.palette.text.primary,\n fontSize: '18px',\n letterSpacing: 0,\n lineHeight: '21px'\n },\n path: {\n color: theme.palette.text.secondary,\n fontize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n padding: '6px 0'\n },\n content: {\n padding: '8px 16px 0px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n attributeList: {\n paddingTop: '22px'\n }\n}));\n","import React, {useMemo, useCallback, useRef} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {identity, isEmpty, pipe, pathOr} from 'ramda';\n\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport {AttributesList, ConnectionRelationTypeSelector, PopupBoundariesContext} from '@reltio/components';\n\nimport {\n createRelation,\n Entity,\n getActivenessAttributes,\n getLabel,\n getRelationAttributesList,\n ModeTypes,\n validateConnectionRelation,\n Connection,\n Metadata,\n AttributeType,\n RecordAttributesType,\n PotentialMatchesPerspectiveConfig,\n markAsNotMatch\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getRelationTypesFromConfig} from '../../helpers/relationsHelpers';\nimport {showAddRelationErrors} from '../../utils/errors';\nimport {MatchesActionsPermissions} from '../../types/potentialMatchesTypes';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n open?: boolean;\n onClose: (relationUri: string) => void;\n permission?: MatchesActionsPermissions;\n};\n\nconst AddRelationDialog = ({\n config,\n mainEntity,\n currentEntity,\n matchRules,\n open,\n onClose = identity,\n permission\n}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const containerRef = useRef(null);\n\n const {onFinishRequest} = useSpinnerAndReloadData();\n const {deselectByEntities} = useViewStateActions();\n\n const {relation = {}}: Connection =\n useSelector((state) => mdm.selectors.getRelationToAddByViewId(state, config.id)) || {};\n\n const {inRelations: inRelationTypes = [], outRelations: outRelationTypes = []} = useMemo(\n () => getRelationTypesFromConfig(metadata, config, mainEntity, currentEntity, matchRules),\n [config, mainEntity, currentEntity, matchRules, metadata]\n );\n\n const {relationUri, relationType = {}} = relation;\n const attributes: RecordAttributesType = pathOr({}, ['object', 'attributes'], relation);\n\n const relationAttrTypes: AttributeType[] = useMemo(\n () => getRelationAttributesList(metadata, relationType),\n [relationType, metadata]\n );\n\n const attributeListEntity = useMemo(\n () => ({\n attributes,\n ...getActivenessAttributes(relation)\n }),\n [relation, attributes]\n );\n\n const viewId = config.id;\n\n const onRelationTypeChange = useCallback(\n pipe(profile.relations.actions.setRelationType(config.id, relationUri), dispatch),\n [config, relationUri, dispatch]\n );\n\n const onAddAttributes = useCallback(\n (params) => pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const handleClose = useCallback(() => onClose(relationUri), [relationUri, onClose]);\n\n const resetErrors = useCallback(() => dispatch(profile.errors.actions.errorsSet([])), [dispatch]);\n\n const validate = useCallback(() => {\n const errors = validateConnectionRelation(metadata, {relation});\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [relation, metadata, dispatch]);\n\n const onCancel = useCallback(() => {\n resetErrors();\n handleClose();\n }, [resetErrors, handleClose]);\n\n const onAdd = () => {\n const {relationType, startDate, endDate} = relation;\n if (validate()) {\n createRelation({\n startEntityUri: mainEntity.uri,\n endEntityUri: currentEntity.uri,\n relationType,\n attributes: pathOr({}, ['object', 'attributes'], relation),\n startDate,\n endDate\n })\n .then(async () => {\n if (permission?.canMark) {\n await markAsNotMatch(currentEntity.uri, [mainEntity]);\n deselectByEntities([currentEntity]);\n onFinishRequest();\n }\n })\n .catch(showAddRelationErrors);\n handleClose();\n }\n };\n\n const title = `${getLabel(currentEntity.label)} \\u2192 ${getLabel(mainEntity.label)}`;\n\n const disabled = isEmpty(relationType);\n const boundariesElement = containerRef.current;\n const popupBoundariesValue = useMemo(\n () => ({\n element: boundariesElement,\n priority: ['left', 'right', 'top', 'bottom']\n }),\n [boundariesElement]\n );\n return (\n <Dialog open={open} fullWidth maxWidth=\"sm\" onClose={onCancel} classes={{paper: styles.dialogPaper}}>\n <DialogTitle classes={{root: styles.dialogTitle}}>\n <Typography variant=\"subtitle1\" classes={{root: styles.titleText}}>\n {i18n.text('Add relationship')}\n </Typography>\n <Typography variant=\"body2\" classes={{root: styles.path}}>\n {title}\n </Typography>\n </DialogTitle>\n <DialogContent classes={{root: styles.content}} ref={containerRef}>\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ConnectionRelationTypeSelector\n relation={relation}\n metadata={metadata}\n inRelationTypes={inRelationTypes}\n outRelationTypes={outRelationTypes}\n onChange={onRelationTypeChange}\n applyFirstByDefault={true}\n />\n <AttributesList\n className={styles.attributeList}\n attrTypes={relationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={true}\n mode={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 {profile} from '@reltio/mdm-module';\nimport {Entity, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport React, {useCallback, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport AddRelationDialog from '../components/AddRelationDialog/AddRelationDialog';\nimport {createNewConnection} from '../helpers/relationsHelpers';\nimport {MatchesActionsPermissions} from '../types/potentialMatchesTypes';\n\ntype DialogContentProps = {\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n permission?: MatchesActionsPermissions;\n};\nexport const useAddRelationDialog = (config: PotentialMatchesPerspectiveConfig) => {\n const [showDialog, setShowDialog] = useState(false);\n const [relationDialogContent, setRelationDialogContent] = useState<DialogContentProps>({});\n const dispatch = useDispatch();\n\n const openAddRelationDialog = useCallback(\n ({mainEntity, currentEntity, matchRules, permission}: DialogContentProps) => {\n const newConnection = createNewConnection(currentEntity);\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n setRelationDialogContent({mainEntity, currentEntity, matchRules, permission});\n setShowDialog(true);\n },\n [config, dispatch]\n );\n\n const closeAddRelationDialog = useCallback(\n (relationUri: string) => {\n pipe(profile.relations.actions.closeRelationEditor, dispatch)(config.id, relationUri);\n setShowDialog(false);\n },\n [config, dispatch]\n );\n\n const AddRelationDialogRenderer = useCallback(() => {\n return showDialog ? (\n <AddRelationDialog\n config={config}\n open={showDialog}\n onClose={closeAddRelationDialog}\n {...relationDialogContent}\n />\n ) : null;\n }, [showDialog, config, closeAddRelationDialog, relationDialogContent]);\n\n return {showDialog, openAddRelationDialog, AddRelationDialogRenderer};\n};\n","export const DEFAULT_OPTIONS = {\n showTransitiveMatches: false\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo} from 'react';\nimport {partition, prop, identity, equals} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n useCollaboration,\n EntitiesMapContext,\n CollaborationContextProvider\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue,\n SortingField\n} from '@reltio/mdm-sdk';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useMatches} from '../../hooks/useMatches';\nimport {useAddRelationDialog} from '../../hooks/useAddRelationDialog';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {CreateRelationButton, DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport {\n ROWS_PER_PAGE_OPTIONS,\n MATCHES_SORT_OPTIONS,\n ADDITIONAL_SORT_OPTIONS_DATA,\n isMatchRuleFilter,\n buildRulesStringFormFilters\n} from '../../helpers/sortHelpers';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\nimport {ActionButtonRendererProps, MatchesOptions} from '../../types/potentialMatchesTypes';\nimport {DEFAULT_OPTIONS} from '../../constants/defaultOptions';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n options?: MatchesOptions;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n config: PotentialMatchesPerspectiveConfig;\n};\n\nconst MatchesView = memo(\n ({entity, metadata, filters, options = DEFAULT_OPTIONS, sorting, onSorting, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer();\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, selectedItems, isGlobalSpinnerActive} = state;\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const hasWorkflow = canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath);\n const {uri: entityUri, type: entityType} = entity || {};\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const sortOptions = useSortOptions(MATCHES_SORT_OPTIONS, ADDITIONAL_SORT_OPTIONS_DATA, metadata, entityType);\n\n const [matchRulesFilters, regularFilters] = useMemo(\n (): [SearchFilter[], SearchFilter[]] => partition(isMatchRuleFilter)(filters),\n [filters]\n );\n\n const matchesFilter = useMemo((): string => buildFilterQueryString()(regularFilters), [regularFilters]);\n\n const {matches, total, entitiesMap, loadMatches, loading} = useMatches({\n enabled: !!entityUri,\n entity,\n filter: matchesFilter,\n page,\n sorting,\n rowsPerPage,\n options,\n rules: buildRulesStringFormFilters(matchRulesFilters)\n });\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n addReloadHandler(loadMatches);\n return () => removeReloadHandler(loadMatches);\n }, [loadMatches, addReloadHandler, removeReloadHandler]);\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, options]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)),\n [entityUri, entitiesMap]\n );\n const collaboration = useCollaboration({objectIds});\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const permission = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n const {canMerge, canAddRelation, canMark} = permission;\n\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n const areBothEntitiesDT = [...entities, entity].every(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && hasWorkflow,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity: entity,\n currentEntity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n onClick: openAddRelationDialog,\n permission\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, openAddRelationDialog, hasWorkflow]\n );\n\n const selectedCount = useMemo(() => {\n return matches.map((match) => selectedItems?.find(equals(match))).filter(identity).length;\n }, [selectedItems, matches]);\n\n return (\n <CollaborationContextProvider collaboration={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={matches.length}\n sortOptions={sortOptions}\n sorting={sorting}\n onSorting={onSorting}\n onSelect={selectedCount ? resetSelected : selectAll}\n />\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n metadata={metadata}\n entitiesMap={entitiesMap}\n selectedItems={selectedItems}\n isLoading={loading}\n />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n {showDialog && <AddRelationDialogRenderer />}\n </EntitiesMapContext.Provider>\n </CollaborationContextProvider>\n );\n }\n);\n\nMatchesView.displayName = 'MatchesView';\n\nexport default MatchesView;\n","import {useCallback, useEffect, useState} from 'react';\nimport {useMatchesLoader} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {Entity, SortingField} from '@reltio/mdm-sdk';\n\ntype Params = {\n entity: Entity;\n enabled: boolean;\n page: number;\n filter: string;\n rowsPerPage: number;\n options: {\n showTransitiveMatches?: boolean;\n };\n sorting?: SortingField;\n rules?: string;\n};\n\nexport const useMatches = ({entity, filter, rules, sorting, page, rowsPerPage, options, enabled}: Params) => {\n const {setEntitiesMap} = useViewStateActions();\n const [loading, setLoading] = useState(false);\n const onStartLoading = useCallback(() => {\n setLoading(true);\n }, [setLoading]);\n const onFinishLoading = useCallback(() => {\n setLoading(false);\n }, [setLoading]);\n const {total, matches, entitiesMap, loadMatches} = useMatchesLoader({\n enabled,\n entity,\n filter,\n rules,\n onFinishLoading,\n onStartLoading,\n options,\n page,\n rowsPerPage,\n sorting,\n markMatchedValues: true\n });\n\n useEffect(() => {\n setEntitiesMap(entitiesMap);\n }, [setEntitiesMap, entitiesMap]);\n\n return {matches, total, entitiesMap, loadMatches, loading};\n};\n","import {useState, useEffect, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n getNotMatch,\n getNotMatchesFromDataTenants,\n withDtssPotentialItems,\n getEntitiesMapForTransitiveMatches,\n GlobalSearchRequestOptions,\n addGlobalFilterToQuery,\n Match,\n NOT_MATCH,\n SortingField\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {usePagingSimulator, useSafePromise} from '@reltio/components';\n\ntype Params = {\n entityUri: string;\n enabled: boolean;\n page: number;\n filter: string;\n rowsPerPage: number;\n sorting?: SortingField;\n};\n\nexport const useNotMatches = ({entityUri, filter, sorting, page, rowsPerPage, enabled}: Params) => {\n const {order, field} = sorting || {};\n const [total, setTotal] = useState(0);\n const [loading, setLoading] = useState(false);\n const [matches, setMatches] = useState<Match[]>([]);\n const [entitiesMap, setEntitiesMap] = useState({});\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenants = useSelector(mdmModule.selectors.getDataTenants);\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const dtssParams = useMemo(\n () => ({\n dtssPath,\n dataTenants,\n entity: {uri: entityUri},\n customerTenant: tenant,\n dtssRequest: getNotMatchesFromDataTenants\n }),\n [dtssPath, dataTenants, entityUri, tenant]\n );\n\n //eslint-disable-next-line react-hooks/exhaustive-deps\n const getNotMatchWithDtss = useCallback(withDtssPotentialItems(dtssParams, getNotMatch), [dtssParams]);\n\n const getNotMatchWithPaging = usePagingSimulator(getNotMatchWithDtss);\n\n const safePromise = useSafePromise();\n const markAsNotMatch = (record) => ({matchRules: [NOT_MATCH], ...record});\n const loadNotMatchesIfNeeded = useCallback(\n (force?: boolean) => {\n if (enabled) {\n setLoading(true);\n safePromise(\n getNotMatchWithPaging({\n entityUri: entityUri,\n offset: page * rowsPerPage,\n max: rowsPerPage,\n filter: addGlobalFilterToQuery(globalFilter, filter) || '',\n sort: field,\n force,\n order,\n activeness: activityFilter\n })\n )\n .then((result) => {\n const {response, total, originalResponse} = result;\n setTotal(total);\n setMatches(response.map(markAsNotMatch));\n const notAMatchUris = response.map(({uri}) => uri);\n if (notAMatchUris.length > 0) {\n setEntitiesMap(getEntitiesMapForTransitiveMatches(originalResponse));\n }\n })\n .finally(() => setLoading(false));\n }\n },\n [entityUri, filter, field, order, page, rowsPerPage, activityFilter, enabled, globalFilter] // eslint-disable-line\n );\n\n useEffect(() => {\n loadNotMatchesIfNeeded();\n }, [loadNotMatchesIfNeeded]);\n\n const loadNotMatches = useCallback(() => {\n loadNotMatchesIfNeeded(true);\n }, [loadNotMatchesIfNeeded]);\n\n return {matches, total, entitiesMap, loadNotMatches, loading};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo} from 'react';\nimport {prop, equals, identity} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n useCollaboration,\n EntitiesMapContext,\n CollaborationContextProvider\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue,\n SortingField\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {useNotMatches} from '../../hooks/useNotMatches';\nimport {DCRReviewButton, MergeButton, ReinstateMatchButton} from '../Actions';\nimport {ROWS_PER_PAGE_OPTIONS, DEFAULT_SORT_OPTIONS} from '../../helpers/sortHelpers';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\n\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n};\n\nexport const NotMatchView = memo(({entity, metadata, filters, sorting, onSorting, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer();\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, selectedItems, isGlobalSpinnerActive} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const hasWorkflow = canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath);\n const {matches, total, entitiesMap, loadNotMatches, loading} = useNotMatches({\n enabled: !!entityUri,\n entityUri,\n filter: buildFilterQueryString()(filters),\n page,\n rowsPerPage,\n sorting\n });\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)),\n [entityUri, entitiesMap]\n );\n const collaboration = useCollaboration({objectIds});\n\n const sortOptions = useSortOptions(DEFAULT_SORT_OPTIONS, [], metadata, entityType);\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n addReloadHandler(loadNotMatches);\n return () => removeReloadHandler(loadNotMatches);\n }, [loadNotMatches, addReloadHandler, removeReloadHandler]);\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri]);\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const {canMerge, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n const areBothEntitiesDT = [...entities, entity].every(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && hasWorkflow,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, hasWorkflow]\n );\n\n const selectedCount = useMemo(() => {\n return matches.map((match) => selectedItems?.find(equals(match))).filter(identity).length;\n }, [selectedItems, matches]);\n\n return (\n <CollaborationContextProvider collaboration={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={matches.length}\n sortOptions={sortOptions}\n sorting={sorting}\n onSorting={onSorting}\n onSelect={selectedCount ? resetSelected : selectAll}\n />\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n metadata={metadata}\n selectedItems={selectedItems}\n isLoading={loading}\n />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n </EntitiesMapContext.Provider>\n </CollaborationContextProvider>\n );\n});\n\nNotMatchView.displayName = 'NotMatchView';\n","import {Entity, Metadata, PotentialMatchesPerspectiveConfig, SearchFilter, SortingField} from '@reltio/mdm-sdk';\nimport React from 'react';\nimport {ActivePanel} from '../../constants/views';\nimport FindMatchesView from '../FindMatchesView';\nimport {MatchesView} from '../MatchesView';\nimport NotMatchView from '../NotMatchView';\nimport {MatchesOptions} from '../../types/potentialMatchesTypes';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n activeView: ActivePanel;\n config: PotentialMatchesPerspectiveConfig;\n options?: MatchesOptions;\n};\n\nexport const Content = ({entity, metadata, filters, options, sorting, onSorting, config, activeView}: Props) => {\n const render = () => {\n switch (activeView) {\n case ActivePanel.PotentialMatches:\n return (\n <MatchesView\n entity={entity}\n metadata={metadata}\n filters={filters}\n options={options}\n config={config}\n sorting={sorting}\n onSorting={onSorting}\n />\n );\n case ActivePanel.FindMatches:\n return (\n <FindMatchesView\n entity={entity}\n metadata={metadata}\n filters={filters}\n config={config}\n sorting={sorting}\n onSorting={onSorting}\n />\n );\n case ActivePanel.NotAMatch:\n return (\n <NotMatchView\n entity={entity}\n metadata={metadata}\n filters={filters}\n config={config}\n sorting={sorting}\n onSorting={onSorting}\n />\n );\n default:\n return <div />;\n }\n };\n\n return render();\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n width: '100%',\n height: '100%',\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n }\n});\n","import React, {useMemo, memo} from 'react';\nimport {isNil} from 'ramda';\nimport {useSelector} from 'react-redux';\n\nimport {SidePanel} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport Content from '../../components/Content';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport {PMRightPanelTabs} from '../../PotentialMatchesView';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n active?: number;\n tabs: PMRightPanelTabs;\n config?: PotentialMatchesPerspectiveConfig;\n onClose?: () => void;\n};\n\nexport const RightSidePanel = memo(({active, tabs, onClose, config}: Props) => {\n const styles = useStyles();\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n\n const isOpen = !isNil(active);\n const headerProps = useMemo(() => ({...tabs[active]?.headerProps, onClose}), [onClose, active, tabs]);\n\n const {sorting, filters, options, onSorting} = tabs[active] || {};\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen}>\n <RightSideHeaderContext.Provider value={headerProps}>\n <Content\n config={config}\n entity={entity}\n filters={filters}\n options={options}\n sorting={sorting}\n onSorting={onSorting}\n metadata={metadata}\n activeView={active}\n />\n </RightSideHeaderContext.Provider>\n </SidePanel>\n </div>\n );\n});\n\nRightSidePanel.displayName = 'RightSidePanel';\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n button: {\n '&.MuiButtonGroup-grouped': {\n minWidth: '90px',\n padding: '8px 12px'\n }\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {ModeSwitcher} from '@reltio/components';\n\nimport useStyles from './styles';\nimport ViewColumnRoundedIcon from '@mui/icons-material/ViewColumnRounded';\nimport TableRowsOutlinedIcon from '@mui/icons-material/TableChartOutlined';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {MAX_PROFILES_TO_COMPARE} from '../../constants/views';\n\ntype Mode = {\n id: ComparisonViewMode;\n tooltipTitle: string;\n title: string;\n Icon: React.ElementType;\n disabled?: boolean;\n};\n\nconst MODES: Mode[] = [\n {\n id: ComparisonViewMode.COLUMNS,\n tooltipTitle: i18n.text('Column'),\n title: i18n.text('Column'),\n Icon: ViewColumnRoundedIcon\n },\n {\n id: ComparisonViewMode.TABLE,\n tooltipTitle: i18n.text('Table'),\n title: i18n.text('Table'),\n Icon: TableRowsOutlinedIcon\n }\n];\n\ntype Props = {\n className?: string;\n};\n\nconst ComparisonViewModeSwitcher = ({className}: Props) => {\n const styles = useStyles();\n const {comparisonViewMode, selectedItems} = useViewState();\n const {setComparisonViewMode} = useViewStateActions();\n const isTableOnly = selectedItems.length > MAX_PROFILES_TO_COMPARE;\n const getMode = (baseMode: Mode) =>\n baseMode.id === ComparisonViewMode.COLUMNS\n ? {\n ...baseMode,\n disabled: isTableOnly,\n tooltipTitle: isTableOnly\n ? i18n.text('Column view supports maximum ${maxProfiles} profiles', {\n maxProfiles: MAX_PROFILES_TO_COMPARE\n })\n : baseMode.tooltipTitle\n }\n : baseMode;\n return (\n <ModeSwitcher\n className={className}\n classes={{button: styles.button}}\n modes={MODES.map(getMode)}\n modeId={comparisonViewMode}\n onChange={setComparisonViewMode}\n />\n );\n};\n\nexport default ComparisonViewModeSwitcher;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n 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 from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport {\n getActionPermissionForMatches,\n Entity,\n Metadata,\n isDataTenantEntity,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport ComparisonViewModeSwitcher from '../ComparisonViewModeSwitcher/ComparisonViewModeSwitcher';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\nimport Divider from '@mui/material/Divider';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n columnsData: GroupedColumnData[];\n selectedColumns: string[];\n onChangeColumns: (columns: string[]) => void;\n showNonOv: boolean;\n onChangeShowNonOv: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nconst getEntityObjects = map(prop('object'));\n\nexport const TableHeader = ({\n config,\n columnsData,\n selectedColumns,\n onChangeColumns,\n showNonOv,\n onChangeShowNonOv\n}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n\n const {selectedItems, limitSelection} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n\n const entities = getEntityObjects(selectedItems);\n const {canMerge, canMark} = getActionPermissionForMatches(metadata, config, entity, selectedItems);\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n const hideMerge = entities.some(isDataTenantEntity) && isDataTenantEntity(entity);\n\n const actions = useMemo(\n () =>\n [\n {\n ActionButton: MergeButton,\n show: canMerge && !hideMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show')),\n [canMark, canMerge, entity, entities, hasDTEntity, hideMerge]\n );\n\n const hasSelectedItems = selectedItems.length !== 0;\n\n const handleClearSelection = () => {\n setSelectedItems([]);\n };\n\n const handleToggleShowOvValue = useCallback(() => {\n onChangeShowNonOv(not);\n }, [onChangeShowNonOv]);\n const settingItems = useMemo<Array<DropDownMenuItem>>(() => {\n return [\n {\n selected: !showNonOv,\n text: i18n.text('Show only OV'),\n onClick: handleToggleShowOvValue,\n id: 'showNonOv'\n }\n ];\n }, [handleToggleShowOvValue, showNonOv]);\n return (\n <BasicViewHeader\n title={''}\n classes={{root: styles.header}}\n data-reltio-id=\"reltio-potential-matches-table-header\"\n >\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 '@mui/styles';\n\nexport const matchedAttributeBackground = 'rgba(140, 193, 82, 0.12)';\n\nexport const useStyles = makeStyles({\n complexAttributesHeadRenderer: {\n height: '100%',\n width: '100%',\n display: 'flex',\n alignItems: 'flex-start'\n },\n complexAttributesHeadLabel: {\n flex: 1,\n marginLeft: '5px'\n },\n arrowButton: {\n cursor: 'pointer',\n marginLeft: '-3px'\n },\n attribute: {\n whiteSpace: 'pre-wrap'\n },\n matchedAttribute: {\n fontWeight: 500,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: '-1000px',\n top: 0,\n width: '5000px',\n height: '100%',\n background: matchedAttributeBackground,\n pointerEvents: 'none'\n }\n }\n});\n","import {makeStyles} from '@mui/styles';\nimport {matchedAttributeBackground} from '../styles';\n\nexport const useStyles = makeStyles({\n badge: {\n borderRadius: '50%',\n background: matchedAttributeBackground,\n fontWeight: 500,\n height: '20px',\n width: '20px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n alignSelf: 'flex-start',\n marginBottom: '2px',\n marginTop: '-2px'\n }\n});\n","import React, {useContext} from 'react';\nimport Tooltip from '@mui/material/Tooltip';\nimport {areOneHierarchyUris, ComplexAttributeValue} from '@reltio/mdm-sdk';\nimport {HighlightedValuesContext} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ComplexAttributeValue;\n};\n\nconst MatchedValuesCounter = ({attributeValue}: Props) => {\n const styles = useStyles();\n const {highlightedValuesUris = []} = useContext(HighlightedValuesContext);\n const count = highlightedValuesUris.filter((uri) => areOneHierarchyUris(uri, attributeValue.uri)).length;\n return count > 0 ? (\n <Tooltip title={count === 1 ? i18n.text('${count} match', {count}) : i18n.text('${count} matches', {count})}>\n <div className={styles.badge}>{count}</div>\n </Tooltip>\n ) : null;\n};\n\nexport default MatchedValuesCounter;\n","import React, {useMemo} from 'react';\nimport {HighlightedValuesContext, ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\nimport withExpanded from '../withExpanded';\nimport MatchedValuesCounter from './MatchedValuesCounter/MatchedValuesCounter';\n\nimport {useStyles} from './styles';\n\nconst ExpandableAttributeValuesBlock = withExpanded(\n ReadOnlyAttributeValuesBlock\n) as typeof ReadOnlyAttributeValuesBlock;\n\ntype Props = {\n value: {\n attributeType: AttributeType;\n attributeValues: AttributeValue[];\n matchedValuesUris?: string[];\n showNonOv?: boolean;\n };\n};\n\nexport const AttributesRenderer = ({value: {attributeType, attributeValues, matchedValuesUris, showNonOv}}: Props) => {\n const styles = useStyles();\n const highlightedValuesContextValue = useMemo(\n () => ({highlightedValuesUris: matchedValuesUris, highlightedClassName: styles.matchedAttribute}),\n [matchedValuesUris, styles.matchedAttribute]\n );\n return (\n <div className={styles.attribute}>\n <HighlightedValuesContext.Provider value={highlightedValuesContextValue}>\n <ExpandableAttributeValuesBlock\n values={attributeValues}\n attributeType={attributeType}\n showNonOv={showNonOv}\n RightSlot={MatchedValuesCounter}\n />\n </HighlightedValuesContext.Provider>\n </div>\n );\n};\n","import React from 'react';\n\nexport const ColumnDataContext = React.createContext<{\n setHoveredId?: React.Dispatch<React.SetStateAction<string>>;\n hoveredId?: string;\n setAnchor?: (anchor: HTMLElement) => void;\n }>({});\n\nColumnDataContext.displayName = 'ColumnDataContext';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n menuButtonWrapper: {\n display: 'none',\n position: 'absolute',\n top: '-4px',\n right: '-14px'\n },\n headCell: {\n display: 'flex',\n position: 'relative',\n 'th:hover &': {\n '& $menuButtonWrapper': {\n display: 'block'\n }\n }\n },\n active: {\n display: 'block'\n }\n});\n","import React, {useContext, useRef} from 'react';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport {SmallIconButton} from '@reltio/components';\nimport {ColumnDataContext} from '../../../../contexts/ColumnsDataContext';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\n\ntype Props = {\n label?: string;\n id: string;\n hideable?: boolean;\n};\n\nexport const HeadCellRenderer = ({label, id, hideable}: Props) => {\n const styles = useStyles();\n const {setAnchor, setHoveredId, hoveredId} = useContext(ColumnDataContext);\n const ref = useRef<HTMLDivElement>();\n const openConfigColumnPopup = () => {\n setAnchor(ref.current);\n setHoveredId(id);\n };\n return (\n <div className={styles.headCell}>\n {label}\n {hideable !== false && (\n <div className={classnames(styles.menuButtonWrapper, {[styles.active]: hoveredId === id})} ref={ref}>\n <SmallIconButton icon={MoreVertIcon} onClick={openConfigColumnPopup} size={'S'} />\n </div>\n )}\n </div>\n );\n};\n","import React, {useCallback, useContext} from 'react';\nimport {ArrowExpandButton} from '@reltio/components';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport {ExpandedContext} from '../ExpandedContext';\nimport {HeadCellRenderer} from './HeadCellRenderer';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n attributeType: AttributeType;\n id: string;\n};\n\nexport const ComplexAttributesHeadRenderer = ({label, attributeType, id}: Props) => {\n const styles = useStyles();\n const {expandedMap, onExpandType} = useContext(ExpandedContext);\n const onExpandClick = useCallback(() => onExpandType(attributeType.uri), [onExpandType, attributeType]);\n const expanded = expandedMap[attributeType.uri];\n return (\n <div className={styles.complexAttributesHeadRenderer}>\n <ArrowExpandButton expanded={expanded} onClick={onExpandClick} className={styles.arrowButton} />\n <div className={styles.complexAttributesHeadLabel}>\n <HeadCellRenderer label={label} id={id} />\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const HoveredEntityContext = React.createContext<{\n hoveredEntity: string;\n resetHoveredEntity: () => void;\n }>({\n hoveredEntity: null,\n resetHoveredEntity: () => {}\n });\n\nHoveredEntityContext.displayName = 'HoveredEntityContext';\n","import React, {memo} from 'react';\nimport {prop} from 'ramda';\n\nimport {Entity, isDataTenantEntity, NOT_MATCH} from '@reltio/mdm-sdk';\nimport {\n CreateRelationButton,\n DCRReviewButton,\n MergeButton,\n NotMatchButton,\n ReinstateMatchButton,\n SetAMatchButton\n} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport {MatchesActionsPermissions} from '../../types/potentialMatchesTypes';\n\ntype Props = {\n value: {\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n permission: MatchesActionsPermissions;\n };\n onActionsMenuClose?: () => void;\n onActionsMenuOpen?: () => void;\n openAddRelationDialog?: (param: {\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n permission: MatchesActionsPermissions;\n }) => void;\n classes?: {\n actionButton?: string;\n moreOptions?: string;\n };\n mode?: 'normal' | 'hover';\n};\n\nconst MatchesControls = ({\n value: {mainEntity, entity, matchRules, permission},\n onActionsMenuClose,\n onActionsMenuOpen,\n openAddRelationDialog,\n classes = {},\n mode = 'hover'\n}: Props) => {\n const {canMerge, canAddRelation, canMark} = permission;\n const hasDTEntity = [mainEntity, entity].some(isDataTenantEntity);\n const areBothEntitiesDT = [mainEntity, entity].every(isDataTenantEntity);\n\n const isEntityFindMatch = !matchRules;\n const isEntityNotMatch = !isEntityFindMatch && matchRules.includes(NOT_MATCH);\n const isEntityPotentialMatch = !isEntityNotMatch && !isEntityFindMatch;\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT && (isEntityNotMatch || isEntityPotentialMatch || isEntityFindMatch),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark && (isEntityPotentialMatch || isEntityFindMatch),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark && isEntityNotMatch,\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && (isEntityNotMatch || isEntityPotentialMatch),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: SetAMatchButton,\n show: canMark && isEntityFindMatch && !isDataTenantEntity(entity),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity,\n currentEntity: entity,\n matchRules,\n onClick: openAddRelationDialog,\n permission\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n numberOfButtons={2}\n mode={mode}\n actionButtonSize={mode === 'hover' ? 'XS' : undefined}\n classes={{\n actionButton: classes.actionButton,\n moreOptions: classes.moreOptions\n }}\n onActionsMenuClose={onActionsMenuClose}\n onActionsMenuOpen={onActionsMenuOpen}\n />\n );\n};\n\nexport default memo(MatchesControls);\n","import {makeStyles} from '@mui/styles';\n\ntype StylesProps = {\n color?: string;\n};\n\nconst styles = makeStyles({\n container: {\n position: 'relative',\n width: '100%',\n height: '140px',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n overflow: 'hidden'\n },\n hovered: {\n backgroundColor: 'rgb(245, 245, 245)'\n },\n colored: {\n '&:before': {\n content: '\"\"',\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: '100%',\n height: '4px',\n background: ({color}: StylesProps) => color\n }\n },\n removeButton: {\n position: 'absolute',\n zIndex: 1,\n margin: '4px'\n },\n matchControlsContainer: {\n display: 'flex',\n alignItems: 'center',\n height: '45px',\n margin: '4px 8px'\n },\n rightButton: {\n display: 'flex',\n alignItems: 'center'\n },\n moreOptions: {\n marginLeft: '8px'\n }\n});\n\nexport default styles;\n","export const POTENTIAL_MATCH_REVIEW = 'potentialMatchReview';\n","import {useCallback, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {allPass, includes, map, mergeLeft, propEq, propSatisfies, when} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getEntityUriFromMatchObject, getTasksForEntity, Match, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useSafePromise, useWorkflowDefaultActionSuccessHandler} from '@reltio/components';\n\nimport {POTENTIAL_MATCH_REVIEW} from '../constants/workflow';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\n\nconst isPotentialMatchesTask = (task) => task.processType === POTENTIAL_MATCH_REVIEW;\n\ntype Props = {\n match: Match;\n entity: Entity;\n};\n\nexport const useWorkflowTasks = ({entity, match}: Props) => {\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const safePromise = useSafePromise();\n const {uri: entityUri} = entity;\n const matchUri: string = getEntityUriFromMatchObject(match);\n const [requestIsInProgress, setRequestIsInProgress] = useState(false);\n const [tasks, setTasks] = useState<WorkflowTaskData[]>([]);\n const defaultActionSuccessHandler = useWorkflowDefaultActionSuccessHandler();\n\n const loadTasks = useCallback(\n () => {\n if (workflowPath && matchUri !== entityUri) {\n setRequestIsInProgress(true);\n safePromise(\n getTasksForEntity({\n entityUri,\n workflowPath,\n environment,\n tenant\n })\n )\n .then((result) => {\n const {data} = result;\n const hasMatchEntityUri = propSatisfies(includes(matchUri), 'objectURIs');\n const isTaskBelongsToMatch = allPass([isPotentialMatchesTask, hasMatchEntityUri]);\n const tasks = data.filter(isTaskBelongsToMatch);\n setTasks(tasks);\n })\n .catch((error) => {\n console.warn('Workflow error:', error);\n setTasks([]);\n })\n .finally(() => setRequestIsInProgress(false));\n }\n },\n [entityUri, environment, tenant, workflowPath, matchUri] // eslint-disable-line\n );\n\n const updateTaskState = useCallback((taskId: WorkflowTaskData['taskId'], payload: Partial<WorkflowTaskData>) => {\n setTasks(map(when(propEq('taskId', taskId), mergeLeft(payload))));\n }, []);\n\n const {deselectByEntities} = useViewStateActions();\n const onActionSuccess = useCallback(\n (action: string) => {\n defaultActionSuccessHandler(action);\n deselectByEntities([match.object]);\n },\n [defaultActionSuccessHandler, deselectByEntities, match.object]\n );\n\n return {\n loading: requestIsInProgress,\n tasks,\n loadTasks,\n updateTaskState,\n total: tasks.length,\n onActionSuccess\n };\n};\n","import React from 'react';\n\nexport const WorkflowTasksAvailabilityContext = React.createContext<(entityUri: string, value: boolean) => void>(\n () => {}\n);\n\nWorkflowTasksAvailabilityContext.displayName = 'WorkflowTasksAvailabilityContext';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n position: 'relative',\n minHeight: '86px',\n display: 'flex',\n overflow: 'hidden',\n margin: '-16px'\n },\n assigneeContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n padding: '16px 14px 16px 48px'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport {pick} from 'ramda';\nimport {\n AssigneeSelector,\n PotentialMatchReviewCard,\n TaskActions,\n WorkflowComments,\n WorkflowTasksContext,\n useWorkflowActions\n} from '@reltio/components';\nimport {Entity, getEntityUriFromMatchObject, Match, WorkflowTaskData} from '@reltio/mdm-sdk';\n\nimport {useWorkflowTasks} from '../../hooks/useWorkflowTasks';\nimport {WorkflowTasksAvailabilityContext} from '../ComparisonTable/WorkflowTasksAvailabilityContext';\n\nimport {useStyles} from './styles';\n\nconst getPropsFromTasks = (task: WorkflowTaskData) => ({\n date: task.dueDate,\n type: task.processDefinitionDisplayName,\n createdBy: task.createdBy,\n step: task.displayName\n});\nconst getCommentsInfoFromTasks = pick(['processInstanceComments', 'taskId']);\n\ntype Props = {\n match: Match;\n entity: Entity;\n};\n\nexport const WorkflowCard = ({entity, match}: Props) => {\n const styles = useStyles();\n const workflowTasks = useWorkflowTasks({entity, match});\n const {tasks, loadTasks} = workflowTasks;\n const setWorkflowTaskAvailability = useContext(WorkflowTasksAvailabilityContext);\n useEffect(() => {\n loadTasks();\n }, [loadTasks]);\n const task = tasks[0];\n const matchEntityUri = getEntityUriFromMatchObject(match);\n useEffect(() => {\n setWorkflowTaskAvailability?.(matchEntityUri, !!task);\n }, [setWorkflowTaskAvailability, matchEntityUri, task]);\n const {actions: workflowActions, actionRequestIsInProgress} = useWorkflowActions({\n taskId: task?.taskId,\n possibleActions: task?.possibleActions,\n assignee: task?.assignee,\n isOpen: task?.isOpen\n });\n const Actions = task && <TaskActions actions={workflowActions} isInProgress={actionRequestIsInProgress} />;\n return task ? (\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <div className={styles.container}>\n <PotentialMatchReviewCard {...getPropsFromTasks(task)} Actions={Actions}>\n <div className={styles.assigneeContainer}>\n <AssigneeSelector assignee={task.assignee} taskId={task.taskId} isTaskOpen={task.isOpen} />\n </div>\n <WorkflowComments\n {...getCommentsInfoFromTasks(task)}\n workflowActions={workflowActions}\n actionRequestIsInProgress={actionRequestIsInProgress}\n preferredAction={task.preferredAction}\n />\n </PotentialMatchReviewCard>\n </div>\n </WorkflowTasksContext.Provider>\n ) : null;\n};\n","import i18n from 'ui-i18n';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode} from './views';\nimport {MatchesColumnsData} from '../types/potentialMatchesTypes';\n\nexport const DEFAULT_ROWS: MatchesColumnsData[] = [\n {\n id: 'profile',\n label: i18n.text('Profile name'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n draggable: false,\n initialWidth: 280,\n autoResize: false,\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'matchRules',\n label: i18n.text('Match method'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_SELECT\n },\n initialWidth: 130,\n minWidth: 130,\n autoResize: false,\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'workflowCard',\n label: i18n.text('Workflow'),\n modes: [ComparisonViewMode.COLUMNS]\n },\n {\n id: 'entityId',\n label: i18n.text('Entity ID'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_ENTITY_ID\n },\n initialWidth: 100,\n autoResize: false,\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'score',\n label: i18n.text('Match score'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_INT\n },\n initialWidth: 100,\n modes: [ComparisonViewMode.TABLE, ComparisonViewMode.COLUMNS]\n },\n {\n id: 'relevanceScore',\n label: i18n.text('Relevance score'),\n initialWidth: 130,\n minWidth: 130,\n modes: [ComparisonViewMode.TABLE, ComparisonViewMode.COLUMNS]\n },\n {\n id: 'sources',\n label: i18n.text('Sources'),\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'crosswalks',\n label: i18n.text('Crosswalks'),\n modes: [ComparisonViewMode.COLUMNS]\n }\n];\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n crosswalk: {\n marginBottom: '8px'\n },\n crosswalkIcon: {\n marginRight: '5px'\n },\n labelContainer: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n spacer: {\n flex: 1\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {ColoredSourceIcon} from '@reltio/components';\nimport {Crosswalk, getSourceSystemLabel, NestedAttributeValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: NestedAttributeValue & {\n value: NestedAttributeValue['value'] & {\n crosswalk: Crosswalk;\n };\n };\n};\n\nconst LabelRenderer = ({attributeValue}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const crosswalk = attributeValue.value.crosswalk;\n return (\n <div className={styles.labelContainer}>\n <ColoredSourceIcon className={styles.crosswalkIcon} crosswalk={crosswalk} showTooltip={false} />\n <div>{getSourceSystemLabel(metadata, crosswalk.type)}</div>\n <div className={styles.spacer} />\n <div>{crosswalk.value}</div>\n </div>\n );\n};\n\nexport default LabelRenderer;\n","import React, {useMemo} from 'react';\nimport {ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {\n AttributeType,\n Crosswalk,\n CrosswalksAttrTypes,\n getSourceSystemLabel,\n Metadata,\n NestedAttributeValue\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\n\nimport withExpanded from '../../withExpanded';\nimport LabelRenderer from './LabelRenderer';\nimport {useStyles} from './styles';\nimport {useSelector} from 'react-redux';\n\nexport const ExpandableAttributeValuesBlock = withExpanded(\n ReadOnlyAttributeValuesBlock\n) as typeof ReadOnlyAttributeValuesBlock;\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n attributeType: AttributeType;\n };\n};\n\nconst getFakeAttributeValueForCrosswalk = (crosswalk: Crosswalk, attributeType: AttributeType, metadata: Metadata) => {\n return attributeType.attributes.reduce(\n (nestedAttributeValue: NestedAttributeValue, subAttributeType) => {\n if (subAttributeType.uri === CrosswalksAttrTypes.sourceSystems.uri) {\n nestedAttributeValue.value[subAttributeType.uri] = getSourceSystemLabel(metadata, crosswalk.type);\n } else if (crosswalk[subAttributeType.uri]) {\n nestedAttributeValue.value[subAttributeType.uri] = crosswalk[subAttributeType.uri];\n }\n return nestedAttributeValue;\n },\n {value: {crosswalk}, uri: crosswalk.uri} as NestedAttributeValue\n );\n};\n\nconst CrosswalksRenderer = ({value: {crosswalks, attributeType}}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeValues = useMemo(\n () => crosswalks?.map((crosswalk) => getFakeAttributeValueForCrosswalk(crosswalk, attributeType, metadata)),\n [metadata, crosswalks, attributeType]\n );\n return attributeValues ? (\n <ExpandableAttributeValuesBlock\n values={attributeValues}\n attributeType={attributeType}\n LabelRenderer={LabelRenderer}\n valueContainerClassName={styles.crosswalk}\n />\n ) : null;\n};\n\nexport default CrosswalksRenderer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: '-8px'\n },\n crosswalkIcon: {\n marginRight: '5px',\n marginBottom: '8px'\n }\n});\n","import React, {ReactNode} from 'react';\nimport {Entity, isDataTenantEntity as checkIsDataTenantEntity, isEmptyValue} from '@reltio/mdm-sdk';\nimport {DataTenantBadge, ColoredSourceIcon} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Pick<Entity, 'crosswalks' | 'dataTenant'>;\n children?: ReactNode;\n};\n\nconst SourcesRenderer = ({value, children}: Props) => {\n const {crosswalks, dataTenant} = value;\n const styles = useStyles();\n const isDataTenantEntity = checkIsDataTenantEntity(value);\n\n return isDataTenantEntity || !isEmptyValue(crosswalks) ? (\n <div className={styles.wrapper}>\n {children}\n {crosswalks.map((crosswalk) => (\n <ColoredSourceIcon key={crosswalk.uri} className={styles.crosswalkIcon} crosswalk={crosswalk} />\n ))}\n {isDataTenantEntity && <DataTenantBadge dataTenantId={dataTenant} />}\n </div>\n ) : null;\n};\n\nexport default SourcesRenderer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n inline: {\n display: 'inline-flex'\n }\n});\n","import React from 'react';\nimport {MatchRuleSummary} from '@reltio/mdm-sdk';\nimport {RelevanceScoreBadge} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: MatchRuleSummary[] | undefined;\n};\n\nconst RelevanceScoreRenderer = ({value: matchRuleSummaries}: Props) => {\n const styles = useStyles();\n return <RelevanceScoreBadge className={styles.inline} matchRuleSummaries={matchRuleSummaries} />;\n};\n\nexport default RelevanceScoreRenderer;\n","import {\n always,\n chain,\n cond,\n filter,\n identity,\n last,\n map,\n path,\n pathOr,\n pipe,\n prop,\n split,\n values,\n when,\n pick\n} from 'ramda';\n\nimport {\n AttributeType,\n CrosswalksAttrTypes,\n EntitiesMap,\n Entity,\n findAttributeTypeByUri,\n getActionPermissionForMatch,\n getAttributeSource,\n getEntityId,\n isAttributeSearchUri,\n isComplexAttribute,\n isOv,\n MatchedValues,\n Match,\n Metadata,\n PotentialMatchesPerspectiveConfig,\n searchUriToAttrUri\n} from '@reltio/mdm-sdk';\nimport {AttributesRenderer} from '../cell-renderers/AttributesRenderer';\nimport {HeadCellRenderer} from '../cell-renderers/HeadCellRenderer';\nimport {ComplexAttributesHeadRenderer} from '../cell-renderers/ComplexAttributesHeadRenderer';\nimport EntityCard from '../cell-renderers/EntityCard/EntityCard';\nimport MatchMethod from '../cell-renderers/MatchMethod/MatchMethod';\nimport WorkflowCardRenderer from '../cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer';\nimport {DEFAULT_ROWS} from '../../../constants/defaultRows';\nimport CrosswalksRenderer from '../cell-renderers/CrosswalksRenderer/CrosswalksRenderer';\nimport {ComparisonViewMode} from '../../../constants/views';\nimport SourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\nimport RelevanceScoreRenderer from '../../cell-renderers/RelevanceScoreRenderer/RelevanceScoreRenderer';\n\nexport type RowData = {\n id: string;\n label: string;\n cellRenderer?: (props: unknown) => JSX.Element;\n headCellRenderer?: (props: unknown) => JSX.Element;\n rowClassName?: string;\n attributeType?: AttributeType;\n hideable?: boolean;\n};\n\nconst additionalPropsForDefaultRows = {\n profile: {\n cellRenderer: EntityCard,\n headCellRenderer: HeadCellRenderer,\n label: ''\n },\n matchRules: {\n cellRenderer: MatchMethod,\n headCellRenderer: HeadCellRenderer\n },\n workflowCard: {\n cellRenderer: WorkflowCardRenderer,\n headCellRenderer: HeadCellRenderer\n },\n sources: {\n cellRenderer: SourcesRenderer,\n headCellRenderer: HeadCellRenderer\n },\n entityId: {\n headCellRenderer: HeadCellRenderer\n },\n crosswalks: {\n cellRenderer: CrosswalksRenderer,\n headCellRenderer: ComplexAttributesHeadRenderer,\n attributeType: {\n uri: 'crosswalks',\n name: 'crosswalks',\n type: 'Nested',\n attributes: Object.values(CrosswalksAttrTypes)\n }\n },\n score: {\n headCellRenderer: HeadCellRenderer\n },\n relevanceScore: {\n headCellRenderer: HeadCellRenderer,\n cellRenderer: RelevanceScoreRenderer\n }\n};\n\nconst defaultRows: RowData[] = DEFAULT_ROWS.filter(({modes}) => modes.includes(ComparisonViewMode.COLUMNS)).map(\n (row) => ({\n ...pick(['id', 'label', 'hideable'], row),\n ...additionalPropsForDefaultRows[row.id]\n })\n);\n\nconst getAttrTypeNameByUri = pipe(split('/'), last);\n\nexport const getTableRowsData = (metadata: Metadata, entity: Entity, selectedColumns: string[]): RowData[] => {\n return selectedColumns\n .map((searchUri) => {\n const defaultRow = defaultRows.find(({id}) => id === searchUri);\n\n if (defaultRow) {\n return defaultRow;\n }\n\n if (!isAttributeSearchUri(searchUri)) {\n return null;\n }\n\n const attrTypeUri = searchUriToAttrUri(searchUri, entity.type);\n const attributeType = findAttributeTypeByUri(metadata, attrTypeUri, entity.type);\n const collectionName = getAttributeSource(attrTypeUri);\n\n if (attributeType) {\n return {\n id: `${collectionName}.${getAttrTypeNameByUri(attrTypeUri)}`,\n label: attributeType.label,\n attributeType,\n cellRenderer: AttributesRenderer,\n headCellRenderer: isComplexAttribute(attributeType)\n ? ComplexAttributesHeadRenderer\n : HeadCellRenderer\n };\n }\n\n return null;\n })\n .filter(identity);\n};\n\nexport const getMatchedValuesUris = (matchedValues: MatchedValues): string[] => {\n return when(\n identity,\n pipe(\n values,\n chain(\n chain(\n cond([\n [path(['value', 'uri']), path(['value', 'uri'])],\n [path(['value', 'values']), pipe(path(['value', 'values']), map(prop('uri')))]\n ])\n )\n ),\n filter(identity)\n )\n )(matchedValues);\n};\n\nconst getColumnDataForRowData = (\n metadata: Metadata,\n match: Match,\n entitiesMap: EntitiesMap,\n entity: Entity,\n rowData: RowData,\n config: PotentialMatchesPerspectiveConfig,\n onRemoveItem: (match: Match) => void,\n showNonOv: boolean\n) => {\n const {object, isMainEntity, matchRules, matchedValues, matchScore, matchRuleSummaries} = match;\n switch (rowData.id) {\n case 'entityId':\n return getEntityId(object);\n case 'profile':\n return {\n mainEntity: entity,\n isSelectedEntity: !isMainEntity,\n onRemove: () => onRemoveItem(match),\n entity: object,\n matchRules: matchRules,\n permission: getActionPermissionForMatch(metadata, config, object, entity, matchRules),\n config: config\n };\n case 'matchRules':\n return {\n metadata,\n entity,\n match,\n entitiesMap,\n show: !isMainEntity && !!matchRules\n };\n case 'sources':\n return object;\n case 'crosswalks':\n return {\n crosswalks: object.crosswalks,\n attributeType: rowData.attributeType\n };\n case 'workflowCard':\n return {\n entity,\n match\n };\n case 'score':\n return matchScore || 0;\n case 'relevanceScore':\n return matchRuleSummaries;\n }\n if (isAttributeSearchUri(rowData.id)) {\n const attrSource = getAttributeSource(rowData.attributeType);\n const getAttributeValues = pipe(\n pathOr([], [attrSource, rowData.attributeType.name]),\n when(always(!showNonOv), filter(isOv))\n );\n const attributeValues = getAttributeValues(object);\n return {\n attributeType: rowData.attributeType,\n attributeValues,\n matchedValuesUris: getMatchedValuesUris(matchedValues),\n showNonOv\n };\n }\n};\n\ntype TableColumnsData = {\n id: string;\n isDraggable: boolean;\n [key: string]: unknown;\n};\n\nexport const getTableColumnsData = (\n metadata: Metadata,\n rowsData: RowData[],\n entity: Entity,\n matches: Match[],\n entitiesMap?: EntitiesMap,\n config?: PotentialMatchesPerspectiveConfig,\n onRemoveItem?: (match: Match) => void,\n showNonOnly = false\n) => {\n return [{object: entity, isMainEntity: true} as Match].concat(matches).map((match) => {\n return rowsData.reduce((column, rowData) => {\n column[rowData.id] = getColumnDataForRowData(\n metadata,\n match,\n entitiesMap,\n entity,\n rowData,\n config,\n onRemoveItem,\n showNonOnly\n );\n return {...column, isDraggable: !match.isMainEntity, id: match.object.uri};\n }, {} as TableColumnsData);\n });\n};\n","import React, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {ProfileCard, SmallIconButton} from '@reltio/components';\nimport {Entity, getEntityId, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {HoveredEntityContext} from '../../HoveredEntityContext';\nimport {useEntityColor} from '../../../../hooks/useEntityColor';\nimport {useAddRelationDialog} from '../../../../hooks/useAddRelationDialog';\nimport MatchControls from '../../../MatchControls/MatchControls';\nimport {MatchesActionsPermissions} from '../../../../types/potentialMatchesTypes';\nimport useStyles from './styles';\n\ntype Props = {\n value: {\n onRemove?: () => void;\n isSelectedEntity?: boolean;\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n config: PotentialMatchesPerspectiveConfig;\n permission: MatchesActionsPermissions;\n };\n};\n\nconst EntityCard = ({value: {entity, config, isSelectedEntity, onRemove, ...rest}}: Props) => {\n const color = useEntityColor(entity.uri);\n const styles = useStyles({color});\n const {hoveredEntity, resetHoveredEntity} = useContext(HoveredEntityContext);\n const isHovered = getEntityId(entity) === hoveredEntity;\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const controlProps = useMemo(\n () => ({\n ...rest,\n entity\n }),\n [rest, entity]\n );\n\n return (\n <>\n <div\n className={classnames(styles.container, {\n [styles.hovered]: isSelectedEntity && isHovered,\n [styles.colored]: isSelectedEntity\n })}\n >\n {isSelectedEntity && (\n <SmallIconButton className={styles.removeButton} icon={CloseIcon} onClick={onRemove} size=\"XXS\" />\n )}\n <ProfileCard entity={entity} />\n {isSelectedEntity && (\n <div className={styles.matchControlsContainer}>\n <MatchControls\n mode=\"normal\"\n value={controlProps}\n onActionsMenuClose={resetHoveredEntity}\n openAddRelationDialog={openAddRelationDialog}\n classes={{\n actionButton: styles.rightButton,\n moreOptions: styles.moreOptions\n }}\n />\n </div>\n )}\n </div>\n {showDialog && <AddRelationDialogRenderer />}\n </>\n );\n};\n\nexport default EntityCard;\n","import React from 'react';\nimport {MatchRulesBlock} from '@reltio/components';\n\ntype Props = {\n value: React.ComponentProps<typeof MatchRulesBlock> & {show?: boolean};\n};\nconst MatchMethod = ({value: {metadata, entity, match, entitiesMap, show}}: Props) => {\n if (!show) {\n return null;\n }\n return <MatchRulesBlock entity={entity} match={match} entitiesMap={entitiesMap} metadata={metadata} />;\n};\n\nexport default MatchMethod;\n","import React from 'react';\n\nimport {Entity, Match} from '@reltio/mdm-sdk';\n\nimport WorkflowCard from '../../../WorkflowCard';\n\ntype Props = {\n value: {\n match: Match;\n entity: Entity;\n };\n};\n\nconst WorkflowCardRenderer = ({value: {entity, match}}: Props) => {\n return <WorkflowCard entity={entity} match={match} />;\n};\n\nexport default WorkflowCardRenderer;\n","import React from 'react';\nimport {Match} from '@reltio/mdm-sdk';\n\nexport const ColumnHandlerContext = React.createContext<(match: Match) => void>(() => {});\n\nColumnHandlerContext.displayName = 'ColumnHandlerContext';\n","import {filter, join, map, pipe, slice, split, uniq, when} from 'ramda';\n\nimport {isAttributeSearchUri, searchUriToAttrUri} from '@reltio/mdm-sdk';\n\nconst getFirstLevelParentAttribute = pipe(split('.'), slice(0, 2), join('.'));\nexport const replaceSubAttributesWithParent = pipe(map(when(isAttributeSearchUri, getFirstLevelParentAttribute)), uniq);\n\nexport const getAttributesTypeUris = (entityTypeUri: string, attributes: string[]): string[] =>\n pipe(\n filter(isAttributeSearchUri),\n map((searchUri: string) => searchUriToAttrUri(searchUri, entityTypeUri))\n )(attributes);\n","import React from 'react';\nimport Popover from '@mui/material/Popover';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport i18n from 'ui-i18n';\n\nexport enum Action {\n INSERT_BELOW = 'below',\n INSERT_ABOVE = 'above',\n HIDE = 'hide'\n}\n\nconst TEXT = {\n [Action.INSERT_BELOW]: i18n.text('Insert row below'),\n [Action.INSERT_ABOVE]: i18n.text('Insert row above'),\n [Action.HIDE]: i18n.text('Hide row')\n};\n\nconst renderListItem = (action: Action, handler: () => void, index: number) => (\n <ListItem button component={'div'} key={index} onClick={handler}>\n <ListItemText primary={TEXT[action]} primaryTypographyProps={{variant: 'body2'}} />\n </ListItem>\n);\n\ntype Props = {\n open?: boolean;\n anchorEl: HTMLElement;\n onClick: (action: Action) => void;\n onClose: () => void;\n actions: Action[];\n};\n\nconst ConfigRowPopup = ({open, anchorEl, onClick, onClose, actions}: Props) => {\n const getClickHandler = (action) => () => {\n onClick(action);\n };\n\n return (\n <Popover open={open} anchorEl={anchorEl} onClose={onClose}>\n <List component=\"div\">\n {actions.map((action, index) => renderListItem(action, getClickHandler(action), index))}\n </List>\n </Popover>\n );\n};\n\nexport default ConfigRowPopup;\n","import {GroupedColumns, GroupedColumnData} from '../../../types/potentialMatchesTypes';\n\nconst deepFilter = (nodes: GroupedColumnData[], filter: (col: GroupedColumns) => boolean) =>\n nodes.filter(filter).map((node: GroupedColumns) =>\n node.columns\n ? {\n ...node,\n columns: deepFilter(node.columns, filter)\n }\n : node\n );\n\nexport const getAdditionalRows = (\n groupColumnsData: GroupedColumnData[],\n headColumns: string[] = []\n): GroupedColumnData[] =>\n deepFilter(groupColumnsData, (column: GroupedColumns) => !headColumns.some((elemId) => column.id === elemId));\n","import React, {useEffect, useMemo, useState, memo} from 'react';\nimport ConfigRowPopup, {Action} from './ConfigRowPopup';\nimport {ColumnsSettingsPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {getAdditionalRows} from './helpers';\nimport {GroupedColumnData} from '../../../types/potentialMatchesTypes';\n\ntype Props = {\n anchorEl: HTMLElement;\n onClose: () => void;\n actions: Action[];\n id: string;\n selectedAttributes?: string[];\n setSelectedAttributes?: (cols: string[]) => void;\n groupColumnsData: GroupedColumnData[];\n};\n\nconst AddRowPopups = ({\n anchorEl,\n onClose,\n actions,\n id,\n selectedAttributes,\n setSelectedAttributes,\n groupColumnsData\n}: Props) => {\n const groupedItems = useMemo(\n () => getAdditionalRows(groupColumnsData, selectedAttributes),\n [groupColumnsData, selectedAttributes]\n );\n const [action, setAction] = useState<Action>();\n const [isOpenConfigPopup, setIsOpenConfigPopup] = useState(false);\n useEffect(() => {\n if (anchorEl) {\n setIsOpenConfigPopup(true);\n }\n }, [anchorEl]);\n const onClosePopup = () => {\n setIsOpenConfigPopup(false);\n if (!action) onClose();\n };\n const onChooseAction = (action: Action) => {\n if (action === Action.HIDE) {\n const newAttributes = [...selectedAttributes];\n const index = selectedAttributes.indexOf(id);\n if (index > -1) {\n newAttributes.splice(index, 1);\n setSelectedAttributes(newAttributes);\n closeAddRowPopup();\n }\n return;\n }\n setAction(action);\n setIsOpenConfigPopup(false);\n };\n\n const closeAddRowPopup = () => {\n setAction(null);\n setIsOpenConfigPopup(false);\n onClose();\n };\n const addRowHandler = ({id: newId}: {id: string}) => {\n const newAttributes = [...selectedAttributes];\n const index = selectedAttributes.indexOf(id);\n const newIndex = action === Action.INSERT_ABOVE ? index : index + 1;\n newAttributes.splice(newIndex, 0, newId);\n setSelectedAttributes(newAttributes);\n closeAddRowPopup();\n };\n\n return (\n <>\n <ConfigRowPopup\n open={isOpenConfigPopup}\n anchorEl={anchorEl}\n actions={actions}\n onClose={onClosePopup}\n onClick={onChooseAction}\n />\n <ColumnsSettingsPopup\n hideCheckBox\n anchorEl={action ? anchorEl : undefined}\n columnsData={groupedItems}\n selectedColumns={selectedAttributes}\n onColumnClick={addRowHandler}\n onClose={closeAddRowPopup}\n title={i18n.text('Add row')}\n />\n </>\n );\n};\n\nexport default memo(AddRowPopups);\n","import {useCallback, useState} from 'react';\nimport {any, map, pipe} from 'ramda';\nimport {getEntityUriFromMatchObject} from '@reltio/mdm-sdk';\n\nexport const useWorkflowTasksAvailability = (matches) => {\n const [workflowTasksAvailabilityMap, setWorkflowTasksAvailabilityMap] = useState<{[entityUri: string]: boolean}>(\n {}\n );\n const setWorkflowTaskAvailability = useCallback((entityUri: string, value: boolean) => {\n setWorkflowTasksAvailabilityMap((map) => ({\n ...map,\n [entityUri]: value\n }));\n }, []);\n const isThereAnyTask: boolean = pipe(\n map(getEntityUriFromMatchObject),\n any((uri) => workflowTasksAvailabilityMap[uri])\n )(matches);\n\n return {isThereAnyTask, setWorkflowTaskAvailability};\n};\n","import {makeStyles} from '@mui/styles';\n\nconst headCellWidth = 212;\nconst dataCellWidth = 310;\nconst borderStyle = '1px solid rgba(0,0,0,0.12)';\nconst thickBorderStyle = '2px solid rgba(0,0,0,0.12)';\nconst firstColumnColor = 'rgb(245, 245, 245)';\nconst secondColumnColor = 'rgb(224, 238, 249)';\nconst firstRowHeight = 141;\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n overflow: 'auto',\n height: '100%',\n width: '100%'\n },\n comparisonTableWrapper: {\n display: 'flex',\n alignItems: 'flex-start',\n position: 'relative'\n },\n collapsedRow: {\n display: 'none'\n },\n comparisonTable: {\n borderSpacing: 0,\n '& tbody tr:hover td, & tbody tr:hover th': {\n backgroundColor: 'rgb(235, 235, 235)'\n },\n 'table& tbody tr:hover td:nth-child(2)': {\n backgroundColor: 'rgb(215, 228, 239)'\n },\n '& td, & th': {\n borderRight: borderStyle,\n borderBottom: borderStyle,\n margin: 0,\n verticalAlign: 'top',\n textAlign: 'left',\n fontSize: '13px',\n minHeight: '16px',\n boxSizing: 'border-box',\n wordBreak: 'break-word',\n wordWrap: 'break-word',\n backgroundColor: 'white'\n },\n '& td': {\n minWidth: dataCellWidth,\n maxWidth: dataCellWidth,\n padding: '16px',\n overflow: 'hidden',\n height: 0\n },\n '& td:empty, th:empty': {\n padding: '0px 16px'\n },\n '& th': {\n minWidth: headCellWidth,\n maxWidth: headCellWidth,\n padding: '16px'\n },\n // sticky columns\n '& td:first-child, th:first-child': {\n borderLeft: borderStyle,\n position: 'sticky',\n left: '0',\n zIndex: 2,\n backgroundColor: firstColumnColor,\n color: theme.palette.text.secondary,\n fontWeight: 'normal'\n },\n '& td:nth-child(2), th:nth-child(2)': {\n borderRight: thickBorderStyle,\n position: 'sticky',\n left: `${headCellWidth}px`,\n zIndex: 2\n },\n // sticky rows\n '& thead tr:first-child td, & thead tr:first-child th': {\n borderTop: 'none',\n position: 'sticky',\n top: '0',\n height: firstRowHeight,\n padding: 0,\n zIndex: 2\n },\n // always visible corner\n '& thead tr:nth-child(-n+2) td:nth-child(-n+2), & thead tr:nth-child(-n+2) th:nth-child(-n+2)': {\n zIndex: 3\n },\n // special color for second column\n 'table& tr td:nth-child(2), th:nth-child(2)': {\n backgroundColor: secondColumnColor\n }\n },\n emptyState: {\n position: 'sticky',\n top: '10vh',\n display: 'flex',\n width: '100%'\n }\n}));\n","import React, {useCallback, useContext, useMemo, useState, useEffect} from 'react';\nimport classnames from 'classnames';\nimport {chain, groupBy, insert, nth, pipe, prop, remove, toPairs} from 'ramda';\nimport {\n EntitiesMap,\n Entity,\n getFirstLevelSearchUri,\n isAttributeSearchUri,\n Metadata,\n PotentialMatchesPerspectiveConfig,\n Match\n} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, VerticalHeadingsTable} from '@reltio/components';\nimport {getTableColumnsData, getTableRowsData} from './helpers/tableHelpers';\nimport {ExpandedContext} from './ExpandedContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {replaceSubAttributesWithParent} from './helpers/attributesHelpers';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport AddRowPopups from './AddRowPopups';\nimport {ColumnDataContext} from '../../contexts/ColumnsDataContext';\nimport {Action} from './AddRowPopups/ConfigRowPopup';\nimport {HoveredEntityContext} from './HoveredEntityContext';\nimport {WorkflowTasksAvailabilityContext} from './WorkflowTasksAvailabilityContext';\nimport {useWorkflowTasksAvailability} from '../../hooks/useWorkflowTasksAvailability';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n entity: Entity;\n metadata: Metadata;\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n selectedColumns: Match[];\n setSelectedColumns: (items: Match[]) => void;\n selectedRows: string[];\n setSelectedRows: (items: string[]) => void;\n rowsData: GroupedColumnData[];\n showNonOv?: boolean;\n};\n\nconst actions = [Action.INSERT_BELOW, Action.INSERT_ABOVE, Action.HIDE];\n\nexport const ComparisonTable = ({\n className,\n entity,\n metadata,\n config,\n selectedColumns,\n setSelectedColumns,\n selectedRows,\n setSelectedRows,\n entitiesMap = {},\n rowsData: allRowsData,\n showNonOv = false\n}: Props) => {\n const styles = useStyles();\n\n const [localSelectedRows, setLocalSelectedRows] = useState(selectedRows);\n const [localSelectedColumns, setLocalSelectedColumns] = useState(selectedColumns);\n const [hoveredEntity, setHoveredEntity] = useState(null);\n const [hoveredId, setHoveredId] = useState<string>();\n const [anchor, setAnchor] = useState<HTMLElement>();\n\n useEffect(() => {\n setLocalSelectedRows(selectedRows);\n }, [selectedRows]);\n\n useEffect(() => {\n setLocalSelectedColumns(selectedColumns);\n }, [selectedColumns]);\n\n const matches = useMemo(() => localSelectedColumns.slice(-4), [localSelectedColumns]);\n const selectedRowsWithoutSubAttributes: string[] = useMemo(\n () => replaceSubAttributesWithParent(localSelectedRows),\n [localSelectedRows]\n );\n\n const rowsData = useMemo(\n () => getTableRowsData(metadata, entity, selectedRowsWithoutSubAttributes),\n [metadata, entity, selectedRowsWithoutSubAttributes]\n );\n\n const onRemoveItem = useContext(ColumnHandlerContext);\n\n const columnsData = useMemo(\n () => getTableColumnsData(metadata, rowsData, entity, matches, entitiesMap, config, onRemoveItem, showNonOv),\n [metadata, rowsData, matches, entity, entitiesMap, config, onRemoveItem, showNonOv]\n );\n\n const [expandedMap, setExpandedMap] = useState<{\n [attrTypeUri: string]: boolean;\n }>({});\n\n const onExpandType = useCallback((attrTypeUri: string) => {\n setExpandedMap((map) => ({\n ...map,\n [attrTypeUri]: !map[attrTypeUri]\n }));\n }, []);\n\n const expandedContextValue = useMemo(\n () => ({\n expandedMap,\n onExpandType\n }),\n [onExpandType, expandedMap]\n );\n\n const headCellData = useMemo(\n () => ({\n setHoveredId,\n setAnchor,\n hoveredId\n }),\n [hoveredId]\n );\n\n const onClosePopup = useCallback(() => {\n setHoveredId(null);\n setAnchor(null);\n }, []);\n\n const handleMoveRow = (dragId: string, hoverId: string) => {\n const newArr: Array<[string, string[]]> = pipe(\n groupBy((item) => (isAttributeSearchUri(item) ? getFirstLevelSearchUri(item) : item)),\n toPairs\n )(localSelectedRows);\n\n const dragIndex = newArr.findIndex(([searchUri]) => searchUri === dragId);\n const hoverIndex = newArr.findIndex(([searchUri]) => searchUri === hoverId);\n const dragRow = newArr[dragIndex];\n if (dragRow) {\n setLocalSelectedRows(pipe(remove(dragIndex, 1), insert(hoverIndex, dragRow), chain(nth(1)))(newArr));\n }\n };\n\n const handleMoveColumn = (dragId: string, hoverId: string) => {\n const dragIndex = localSelectedColumns.findIndex(({object}) => object.uri === dragId);\n const hoverIndex = localSelectedColumns.findIndex(({object}) => object.uri === hoverId);\n const dragColumn = localSelectedColumns[dragIndex];\n if (dragColumn) {\n setLocalSelectedColumns(pipe(remove(dragIndex, 1), insert(hoverIndex, dragColumn))(localSelectedColumns));\n }\n };\n\n const handleDropRow = () => {\n setSelectedRows(localSelectedRows);\n };\n\n const handleDropColumn = () => {\n setSelectedColumns(localSelectedColumns);\n };\n\n const selectedAttributeUris: string[] = useMemo(() => rowsData.map(prop('id')), [rowsData]);\n\n const setHoveredEntityHandler = (columnValue) => {\n setHoveredEntity(columnValue?.entityId || null);\n };\n\n const resetHoveredEntity = useCallback(() => {\n setHoveredEntity(null);\n }, []);\n\n const hoveredEntityContextValue = useMemo(\n () => ({\n hoveredEntity,\n resetHoveredEntity\n }),\n [hoveredEntity, resetHoveredEntity]\n );\n\n const {isThereAnyTask, setWorkflowTaskAvailability} = useWorkflowTasksAvailability(matches);\n const workflowCardRowClassname = isThereAnyTask ? undefined : styles.collapsedRow;\n const displayedRowsData = useMemo(\n () =>\n rowsData.map((rowData) =>\n workflowCardRowClassname && rowData.id === 'workflowCard'\n ? {\n ...rowData,\n rowClassName: workflowCardRowClassname\n }\n : rowData\n ),\n [rowsData, workflowCardRowClassname]\n );\n\n return (\n <div data-reltio-id=\"reltio-comparison-table-container\" className={classnames(styles.container, className)}>\n <div className={styles.comparisonTableWrapper}>\n <HoveredEntityContext.Provider value={hoveredEntityContextValue}>\n <ExpandedContext.Provider value={expandedContextValue}>\n <ColumnDataContext.Provider value={headCellData}>\n <WorkflowTasksAvailabilityContext.Provider value={setWorkflowTaskAvailability}>\n <VerticalHeadingsTable\n className={styles.comparisonTable}\n rowsData={displayedRowsData}\n columnsData={columnsData}\n theadRowsNumber={1}\n onMoveRow={handleMoveRow}\n onDropRow={handleDropRow}\n onMoveColumn={handleMoveColumn}\n onDropColumn={handleDropColumn}\n setHoveredColumn={setHoveredEntityHandler}\n resetHoveredColumn={resetHoveredEntity}\n />\n </WorkflowTasksAvailabilityContext.Provider>\n </ColumnDataContext.Provider>\n </ExpandedContext.Provider>\n </HoveredEntityContext.Provider>\n {!matches.length && (\n <div className={styles.emptyState}>\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.SELECT_ATTRIBUTES}\n variant={EMPTY_STATE_VARIANTS.embedded}\n text={i18n.text('Select profiles')}\n secondaryText={i18n.text(\n 'Select one or more profiles to compare it with the current profile'\n )}\n />\n </div>\n )}\n <AddRowPopups\n id={hoveredId}\n anchorEl={anchor}\n onClose={onClosePopup}\n actions={actions}\n selectedAttributes={selectedAttributeUris}\n setSelectedAttributes={setSelectedRows}\n groupColumnsData={allRowsData}\n />\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flexDirection: 'column'\n },\n table: {\n flex: 1\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {EntitiesMap, Match, Entity, Metadata, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport ComparisonTable from '../ComparisonTable';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n selectedRows: string[];\n setSelectedRows: (newRows: string[]) => void;\n selectedColumns: Match[];\n setSelectedColumns: (newColumns: Match[]) => void;\n classes: {\n root?: string;\n };\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n rowsData: GroupedColumnData[];\n showNonOv: boolean;\n};\n\nexport const ComparisonView = ({\n classes = {},\n selectedRows,\n setSelectedRows,\n selectedColumns,\n setSelectedColumns,\n config,\n metadata,\n entity,\n entitiesMap = {},\n rowsData,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(classes.root, styles.container)}>\n <ComparisonTable\n className={styles.table}\n entity={entity}\n metadata={metadata}\n config={config}\n selectedRows={selectedRows}\n setSelectedRows={setSelectedRows}\n selectedColumns={selectedColumns}\n setSelectedColumns={setSelectedColumns}\n rowsData={rowsData}\n entitiesMap={entitiesMap}\n showNonOv={showNonOv}\n />\n </div>\n );\n};\n","import {alpha, lighten} from '@mui/material/styles';\nimport {makeStyles} from '@mui/styles';\nimport {CSSProperties} from '@mui/styles';\n\nconst defaultWrapperStyles: CSSProperties = {\n position: 'relative',\n whiteSpace: 'pre',\n padding: '15px 15px 0 15px',\n '&:last-child': {\n paddingBottom: '15px'\n },\n color: 'rgba(0,0,0,0.87)'\n};\n\nconst textOverflow: CSSProperties = {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '40px',\n height: '100%',\n background: 'linear-gradient(to right, rgba(255, 255, 255, 0.2), #fff 100%)',\n pointerEvents: 'none'\n};\n\nconst tableHoveredRowSelector = 'div.hoveredRow';\n\nconst getColoredRowCellStyle = (color: string, hoveredColor?: string) => {\n return {\n '& > *': {\n position: 'relative'\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: color,\n pointerEvents: 'none',\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor || 'none'\n }\n },\n '& $defaultWrapper::after': {\n background: `linear-gradient(to right, ${alpha(color, 0)}, ${color} 100%)`,\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor && `linear-gradient(to right, ${alpha(hoveredColor, 0)}, ${hoveredColor} 100%)`\n }\n }\n };\n};\n\nexport const useStyles = makeStyles((theme) => {\n const lightPrimaryBackground = lighten(theme.palette.primary.main, 0.88);\n const lightPrimaryBackgroundHovered = lighten(theme.palette.primary.main, 0.82);\n const highlightBackground = lighten('rgb(140,193,82)', 0.88);\n const entityBackground = lighten('rgb(0, 114, 206)', 0.88);\n\n const link = {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none'\n };\n\n return {\n link,\n hidden: {\n visibility: 'hidden'\n },\n rowCloseIcon: {\n color: 'rgba(0, 0, 0, 0.54)',\n margin: '0 24px 0 8px'\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n fontSize: '12px',\n position: 'relative',\n flex: 1,\n overflow: 'hidden',\n color: 'rgba(0,0,0,0.87)',\n 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: '15px 15px 8px 10px',\n display: 'flex',\n flexDirection: 'column',\n boxSizing: 'border-box'\n },\n blobWrapper: {\n ...defaultWrapperStyles,\n whiteSpace: 'pre-wrap',\n height: '100px',\n boxSizing: 'border-box',\n overflowY: 'auto',\n overflowX: 'hidden'\n },\n imageWrapper: {\n ...defaultWrapperStyles,\n display: 'flex',\n '& > img': {\n height: '64px',\n width: '64px'\n }\n },\n referenceWrapper: {\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n height: '48px',\n paddingTop: 0,\n '&:last-child': {\n paddingBottom: 0\n }\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '-10px'\n },\n collapseButton: {\n position: 'absolute',\n left: '40px',\n zIndex: 2\n },\n dragIndicator: {\n position: 'absolute',\n left: '-5px',\n zIndex: 2,\n cursor: 'grab'\n },\n dragIndicatorIcon: {\n opacity: 0.38\n },\n ovFalse: theme.inactive,\n expandButton: {\n marginRight: '5px',\n marginBottom: '8px'\n }\n };\n});\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = Record<string, unknown>;\n\nconst HeadCellRenderer = (props: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport classnames from 'classnames';\nimport {AttributeValue, DataTypes} from '@reltio/mdm-sdk';\nimport {DataTypeValue} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: AttributeValue;\n columnData: {\n dataTypeDefinition: {\n type: DataTypes;\n };\n };\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const {value: simpleValue, ov} = value;\n const styles = useStyles();\n return (\n <div className={classnames(styles.defaultWrapper, {[styles.ovFalse]: ov === false})}>\n <DataTypeValue value={simpleValue} dataTypeDefinition={dataTypeDefinition} />\n </div>\n );\n};\n\nexport default DefaultCellValueRenderer;\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {\n CollapseRowButton,\n EntityUriLink,\n IdContext,\n withTableContext,\n CommentsContainer,\n SmallIconButton\n} from '@reltio/components';\nimport {\n getEntityUriForLink,\n getLabel,\n createObjectIdForPM,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Entity\n} from '@reltio/mdm-sdk';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {MatchesTableContextProps, MatchesTableRowValue} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Entity;\n rowIndex: number;\n rowValue: MatchesTableRowValue;\n onRemove: () => void;\n entityToMatch: Entity;\n isRowSelected: boolean;\n hoverRowIndex: number;\n dragRef?: React.Ref<HTMLDivElement>;\n};\n\nconst EntityProfileRenderer = ({\n value: entity,\n rowIndex,\n rowValue,\n onRemove,\n entityToMatch,\n isRowSelected,\n hoverRowIndex,\n dragRef\n}: Props) => {\n const styles = useStyles();\n const containerId = useContext(IdContext);\n\n const isRowRemovable = entity !== entityToMatch;\n const isRowHovered = rowIndex === hoverRowIndex;\n const isFirstRow = rowIndex === 0;\n const wrapperStyle = isRowHovered ? styles.hoveredDefaultWrapper : styles.defaultWrapper;\n const shouldRenderCommentsContainer = entity.uri !== entityToMatch.uri && !isRowHovered;\n\n return (\n <>\n <div\n className={classnames(wrapperStyle, styles.profileWrapper, styles.entityWrapper, {\n [styles.firstEntityCell]: isFirstRow && !isRowRemovable\n })}\n >\n <div ref={dragRef} style={{opacity: isRowHovered ? 1 : 0}} className={styles.dragIndicator}>\n <DragIndicatorIcon className={styles.dragIndicatorIcon} />\n </div>\n <CollapseRowButton className={styles.collapseButton} rowIndex={rowIndex} rowValue={rowValue} />\n <SmallIconButton\n icon={CloseIcon}\n size=\"XS\"\n className={classnames(styles.rowCloseIcon, {[styles.hidden]: !isRowRemovable})}\n onClick={onRemove}\n data-reltio-id={`reltio-matches-table-${containerId ? containerId + '-' : ''}checkbox-${rowIndex}`}\n />\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {shouldRenderCommentsContainer && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isRowSelected})}\n uri={createObjectIdForPM(entityToMatch.uri, entity.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: entity.uri\n })}\n allowOnlyOneComment\n />\n )}\n </div>\n </>\n );\n};\n\nexport default withTableContext(\n ({onToggleSelect, entityToMatch}: MatchesTableContextProps, {rowValue, value}: Props) => {\n const {rawValue: match} = rowValue;\n return {\n onRemove: () => onToggleSelect(match),\n isRowRemovable: value !== entityToMatch,\n entityToMatch\n };\n }\n)(EntityProfileRenderer);\n","import React from 'react';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, withTableContext} from '@reltio/components';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n headIndex: number;\n [key: string]: unknown;\n};\n\nconst ProfileHeadCellRenderer = (props: Props) => {\n const isFirstColumn = props.headIndex === 0;\n const styles = useStyles();\n return (\n <div className={classnames(styles.headCell, {[styles.firstHeadCell]: isFirstColumn})}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withTableContext()(withFilterAtBottom(ProfileHeadCellRenderer));\n","import {MatchRulesBlock} from '@reltio/components';\nimport {EntitiesMap, Entity, Match, Metadata} from '@reltio/mdm-sdk';\nimport React, {ComponentProps} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n metadata: Metadata;\n match: Match;\n entitiesMap: EntitiesMap;\n entity: Entity;\n variant?: ComponentProps<typeof MatchRulesBlock>['variant'];\n };\n};\n\nconst MatchRulesRenderer = ({value}: Props) => {\n const styles = useStyles();\n if (!value) {\n return null;\n }\n const {metadata, match, entitiesMap, entity, variant} = value;\n return (\n <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n variant={variant}\n metadata={metadata}\n entitiesMap={entitiesMap}\n match={match}\n entity={entity}\n />\n </div>\n );\n};\n\nexport default MatchRulesRenderer;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {stopPropagation} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {value: string; ov: boolean};\n};\n\nconst BlobRenderer = ({value}: Props) => {\n const {value: blobValue, ov} = value;\n const styles = useStyles();\n return (\n <div className={classnames(styles.blobWrapper, {[styles.ovFalse]: ov === false})} onScroll={stopPropagation}>\n {blobValue}\n </div>\n );\n};\n\nexport default BlobRenderer;\n","import React from 'react';\nimport {BasicImageAttributesValue, getImageAttributeOvThumbnailUrl} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {value: BasicImageAttributesValue; ov: boolean};\n};\n\nconst ImageRenderer = ({value}: Props) => {\n const {value: imgValue} = value;\n const styles = useStyles();\n const src = getImageAttributeOvThumbnailUrl({value: imgValue});\n return (\n src && (\n <div className={styles.imageWrapper}>\n <img src={src} />\n </div>\n )\n );\n};\n\nexport default ImageRenderer;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getEntityType, getLabel, getReferencedEntityFromAttrValue, ReferenceAttributeValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: ReferenceAttributeValue;\n};\n\nconst ReferenceRenderer = ({value}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n return (\n value && (\n <div\n className={classnames(styles.defaultWrapper, styles.referenceWrapper, {\n [styles.ovFalse]: value.ov === false\n })}\n >\n <EntityTypeIcon\n className={styles.entityAvatar}\n entityType={getEntityType(metadata, getReferencedEntityFromAttrValue(value).type)}\n />\n <EntityUriLink value={getReferencedEntityFromAttrValue(value).objectURI} className={styles.link}>\n {getLabel(value.label)}\n </EntityUriLink>\n </div>\n )\n );\n};\n\nexport default ReferenceRenderer;\n","import React from 'react';\nimport {useBasicTableCellRenderer} from '@reltio/components';\n\nexport const EntityRowCollapseContext =\n React.createContext<ReturnType<typeof useBasicTableCellRenderer>['collapseContextValue']>(null);\n\nEntityRowCollapseContext.displayName = 'EntityRowCollapseContext';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n chipContainer: {\n position: 'absolute',\n height: '16px',\n top: '6px',\n right: '6px',\n zIndex: 2\n },\n chipLabel: {\n paddingLeft: '4px',\n paddingRight: '4px',\n fontSize: '10px',\n lineHeight: '11px'\n }\n});\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport {BasicTableRowCollapseContext, withTooltip} from '@reltio/components';\nimport {find, pipe, prop, propEq} from 'ramda';\nimport {Crosswalk, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport Chip from '@mui/material/Chip';\nimport {EntityRowCollapseContext} from '../../EntityRowCollapseContext';\n\nimport {useStyles} from './styles';\n\nconst ChipWithTooltip = withTooltip(Chip);\n\ntype Props = {\n needShowChip: boolean;\n crosswalks: Crosswalk[];\n dataTenant?: string;\n};\n\nconst SourceChipWithTooltip = ({needShowChip, crosswalks, dataTenant}: Props) => {\n const styles = useStyles();\n\n const basicTableRowCollapseContext = useContext(BasicTableRowCollapseContext);\n const entityRowCollapseContext = useContext(EntityRowCollapseContext);\n const collapseContext = entityRowCollapseContext || basicTableRowCollapseContext;\n\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n const dataTenants = useSelector(mdm.selectors.getDataTenants) || [];\n\n if (!needShowChip) {\n return null;\n }\n\n const tooltipTitle = (\n <>\n {crosswalks.slice(collapseContext.maxRowValuesCount).map((crosswalk, index) => {\n return <div key={index}>-{getSourceSystemLabel(metadata, crosswalk.type)}</div>;\n })}\n {dataTenant ? <div>-{pipe(find(propEq('id', dataTenant)), prop('label'))(dataTenants)}</div> : null}\n </>\n );\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n label={`+ ${crosswalks.length + (dataTenant ? 1 : 0) - collapseContext.maxRowValuesCount}`}\n variant=\"outlined\"\n classes={{\n root: styles.chipContainer,\n label: styles.chipLabel\n }}\n />\n );\n};\n\nexport default SourceChipWithTooltip;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport {always, slice, when} from 'ramda';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport {ArrowExpandButton, BasicTableRowCollapseContext} from '@reltio/components';\n\nimport CommonSourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\nimport {EntityRowCollapseContext} from '../EntityRowCollapseContext';\nimport SourceChipWithTooltip from './components/SourceChipWithTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n dataTenant?: string;\n };\n};\n\nconst SourcesRenderer = ({value: {crosswalks, dataTenant}}: Props) => {\n const styles = useStyles();\n const [collapsed, setCollapsed] = useState(true);\n\n const basicTableRowCollapseContext = useContext(BasicTableRowCollapseContext);\n const entityRowCollapseContext = useContext(EntityRowCollapseContext);\n\n const collapseContext = entityRowCollapseContext || basicTableRowCollapseContext;\n\n const toggleCollapsed = useCallback(() => {\n setCollapsed((prev) => !prev);\n }, []);\n\n const displayedCrosswalks: Crosswalk[] = useMemo(\n () => when(always(collapsed), slice(0, collapseContext.maxRowValuesCount))(crosswalks),\n [collapsed, collapseContext.maxRowValuesCount, crosswalks]\n );\n const isShowDataTenant = !collapsed || displayedCrosswalks.length < collapseContext.maxRowValuesCount;\n\n const sources = useMemo(\n () => ({\n crosswalks: displayedCrosswalks,\n dataTenant: isShowDataTenant ? dataTenant : undefined\n }),\n [dataTenant, displayedCrosswalks, isShowDataTenant]\n );\n\n const valuesCount = crosswalks.length + (dataTenant ? 1 : 0);\n const hasCollapsedValue = valuesCount > collapseContext.maxRowValuesCount;\n\n const needShowChip = collapsed && hasCollapsedValue;\n\n return (\n <>\n <CommonSourcesRenderer value={sources}>\n {hasCollapsedValue && (\n <ArrowExpandButton\n className={styles.expandButton}\n expanded={!collapsed}\n onClick={toggleCollapsed}\n />\n )}\n </CommonSourcesRenderer>\n <SourceChipWithTooltip needShowChip={needShowChip} crosswalks={crosswalks} dataTenant={dataTenant} />\n </>\n );\n};\n\nexport default SourcesRenderer;\n","import React from 'react';\nimport {MatchRuleSummary} from '@reltio/mdm-sdk';\nimport CommonRelevanceScoreRenderer from '../../cell-renderers/RelevanceScoreRenderer/RelevanceScoreRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n matchRuleSummaries: MatchRuleSummary[] | undefined;\n };\n};\n\nconst RelevanceScoreRenderer = ({value}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.defaultWrapper}>\n <CommonRelevanceScoreRenderer value={value.matchRuleSummaries} />\n </div>\n );\n};\n\nexport default RelevanceScoreRenderer;\n","import {assoc, map, pipe, prop, propOr, reduce, split, filter, ifElse, always} from 'ramda';\nimport {\n DataTypes,\n EntitiesMap,\n Entity,\n getAttributesForMatchRules,\n getEntityId,\n isAttributeSearchUri,\n Metadata,\n Match,\n getAttributeValuesByPathWithOvFlag,\n getOvAttributeValuesByPathWithOvFlag,\n isDataTenantEntity,\n Crosswalk\n} from '@reltio/mdm-sdk';\n\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport EntityProfileRenderer from './cell-renderers/EntityProfileRenderer';\nimport ProfileHeadCellRenderer from './cell-renderers/ProfileHeadCellRenderer';\nimport MatchRulesRenderer from './cell-renderers/MatchRulesRenderer';\nimport BlobRender from './cell-renderers/BlobRenderer';\nimport ImageRenderer from './cell-renderers/ImageRenderer';\nimport ReferenceRenderer from './cell-renderers/ReferenceRenderer';\nimport {MatchesColumnsData, MatchesTableRowValue} from '../../types/potentialMatchesTypes';\nimport {ComparisonViewMode} from '../../constants/views';\nimport SourcesRenderer from './cell-renderers/SourcesRenderer';\nimport RelevanceScoreRenderer from './cell-renderers/RelevanceScoreRenderer';\n\nconst getAttrPathFromColumnId = split('.');\n\ntype RowValue = {\n entity: Entity;\n metadata: Metadata;\n match: Match;\n entitiesMap?: EntitiesMap;\n matchScore: number;\n};\n\nconst getRowValueForColumn = (\n columnData: MatchesColumnsData,\n {entity, metadata, match, entitiesMap, matchScore}: RowValue,\n showNonOv\n) => {\n switch (columnData.id) {\n case 'profile':\n return entity;\n case 'entityId':\n return {value: getEntityId(entity)};\n case 'matchRules':\n return {metadata, match, entitiesMap, entity, variant: 'all'};\n case 'score':\n return {value: matchScore};\n case 'sources': {\n const crosswalks: Crosswalk[] = propOr([], 'crosswalks', entity);\n return isDataTenantEntity(entity)\n ? {\n crosswalks,\n dataTenant: entity.dataTenant\n }\n : {\n crosswalks\n };\n }\n case 'relevanceScore':\n return {matchRuleSummaries: match.matchRuleSummaries};\n default: {\n const [attrSource, ...attrPath]: string[] = getAttrPathFromColumnId(columnData.id);\n return pipe(\n prop(attrSource),\n ifElse(\n always(showNonOv),\n getAttributeValuesByPathWithOvFlag(attrPath),\n getOvAttributeValuesByPathWithOvFlag(attrPath)\n )\n )(entity);\n }\n }\n};\n\nconst getBasicTableRowsData = (\n metadata: Metadata,\n columnsData: MatchesColumnsData[],\n matches: Match[],\n showNonOv: boolean,\n entitiesMap?: EntitiesMap\n): MatchesTableRowValue[] =>\n matches.map((match) => {\n const entity = match.object;\n const allMatchRules = match.matchRules || [];\n const matchScore = match.matchScore || 0;\n const matchAttributes = getAttributesForMatchRules(metadata, entity.type, allMatchRules);\n const rowValue = {entity, metadata, match, entitiesMap, matchScore};\n const filteredColumnsData = columnsData.filter(({modes}) =>\n modes ? modes.includes(ComparisonViewMode.TABLE) : true\n );\n\n return pipe(\n reduce(\n (acc, columnData) => assoc(columnData.id, getRowValueForColumn(columnData, rowValue, showNonOv), acc),\n {}\n ),\n assoc('matchAttributes', matchAttributes),\n assoc('rawValue', match)\n )(filteredColumnsData);\n });\n\nconst getNestedPathByColumnId = (columnId: string) => {\n if (isAttributeSearchUri(columnId) as boolean) {\n const [, ...attrPath]: string[] = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRendererByDataType = (dataType: DataTypes) => {\n switch (dataType) {\n case DataTypes.TYPE_BLOB: {\n return BlobRender;\n }\n case DataTypes.TYPE_IMAGE: {\n return ImageRenderer;\n }\n case DataTypes.TYPE_REFERENCE: {\n return ReferenceRenderer;\n }\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getCellValueRenderer = (columnData: MatchesColumnsData) => {\n switch (columnData.id) {\n case 'profile': {\n return EntityProfileRenderer;\n }\n case 'matchRules': {\n return MatchRulesRenderer;\n }\n case 'sources': {\n return SourcesRenderer;\n }\n case 'relevanceScore': {\n return RelevanceScoreRenderer;\n }\n\n default:\n return getCellValueRendererByDataType(columnData.dataTypeDefinition.type);\n }\n};\n\nconst getBasicTableColumnsData = (sortable: boolean, columnData: MatchesColumnsData[]) =>\n pipe(\n filter(({modes}) => (modes ? modes.includes(ComparisonViewMode.TABLE) : true)),\n map((columnData: MatchesColumnsData) => ({\n sortable,\n ...columnData,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: columnData.id === 'profile' ? ProfileHeadCellRenderer : HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(columnData),\n draggable: propOr(true, 'draggable')(columnData)\n }))\n )(columnData);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import React, {useContext} from 'react';\nimport {MatchesColumnsData, MatchesTableRowValue} from '../../../../types/potentialMatchesTypes';\nimport {BasicTableRowCollapseContext, DataTypeValue, withTooltip} from '@reltio/components';\nimport {EntityRowCollapseContext} from '../../EntityRowCollapseContext';\nimport {\n getAttributeValue,\n getLabel,\n isComplexAttribute,\n NestedAttributeValue,\n ReferenceAttributeValue,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\nimport Chip from '@mui/material/Chip';\n\nimport {useStyles} from './styles';\n\nconst ChipWithTooltip = withTooltip(Chip);\n\ntype Props = {\n columnData: MatchesColumnsData;\n rowValue: MatchesTableRowValue;\n cellIndex: number;\n rowIndex: number;\n};\n\nconst RowCellChipWithTooltip = ({columnData, rowValue, cellIndex, rowIndex}: Props) => {\n const styles = useStyles();\n\n const basicTableRowCollapseContext = useContext(BasicTableRowCollapseContext);\n const entityRowCollapseContext = useContext(EntityRowCollapseContext);\n const collapseContext = entityRowCollapseContext || basicTableRowCollapseContext;\n\n const isAttributeCell = columnData.id.startsWith('attributes.');\n const columnId = columnData.id as `attributes.${string}`;\n const allValue = isAttributeCell ? rowValue[columnId] : [];\n const valuesCount: number = allValue.flat().length;\n\n const needShowChip =\n isAttributeCell &&\n cellIndex === 0 &&\n valuesCount > collapseContext?.maxRowValuesCount &&\n collapseContext?.getIsRowCollapsed(rowIndex);\n\n if (!needShowChip) {\n return null;\n }\n\n const tooltipTitle = allValue\n .slice(collapseContext.maxRowValuesCount)\n .map((value, i) => (\n <div key={i}>\n {isComplexAttribute(columnData.dataTypeDefinition)\n ? getLabel((value as NestedAttributeValue | ReferenceAttributeValue).label)\n : wrapInArrayIfNeeded(value).map((value, index) => (\n <DataTypeValue\n key={index}\n value={getAttributeValue(value)}\n dataTypeDefinition={columnData.dataTypeDefinition}\n rich={false}\n />\n ))}\n </div>\n ));\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n label={`+ ${valuesCount - collapseContext.maxRowValuesCount}`}\n variant=\"outlined\"\n classes={{\n root: styles.chipContainer,\n label: styles.chipLabel\n }}\n />\n );\n};\n\nexport default RowCellChipWithTooltip;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {withTableContext} from '@reltio/components';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {isMatchAttrColumn} from '../../../helpers/attributesHelpers';\nimport {MatchesTableContextProps, RowCellRendererProps} from '../../../types/potentialMatchesTypes';\nimport RowCellChipWithTooltip from './components/RowCellChipWithTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected: boolean;\n isCellHighlighted: boolean;\n cellWrapperClassName: string;\n someRowIsDragging?: boolean;\n isDragLayer?: boolean;\n dragRef?: boolean;\n} & RowCellRendererProps;\n\nconst RowCellRenderer = ({\n rowValue,\n cell,\n CellValueRenderer,\n isRowSelected,\n isCellHighlighted,\n columnIndex,\n cellWrapperClassName,\n someRowIsDragging,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const isFirstColumn = columnIndex === 0;\n const shouldRenderCell = !someRowIsDragging || isFirstColumn;\n const {cellIndex, columnData, rowIndex} = otherProps;\n\n return (\n <div\n className={classnames(\n {\n [styles.rowCellSelected]: isRowSelected,\n [styles.rowCellHighlighted]: isCellHighlighted,\n [styles.rowCellFirstColumn]: isFirstColumn\n },\n styles.rowCell,\n cellWrapperClassName\n )}\n >\n {shouldRenderCell && (\n <>\n {cell.values.map((value, index) => (\n <CellValueRenderer\n key={index}\n value={value}\n rowValue={rowValue}\n isRowSelected={isRowSelected}\n {...otherProps}\n />\n ))}\n <RowCellChipWithTooltip\n cellIndex={cellIndex}\n rowIndex={rowIndex}\n rowValue={rowValue}\n columnData={columnData}\n />\n </>\n )}\n </div>\n );\n};\n\nexport default withTableContext(({selected}: MatchesTableContextProps, {columnData, rowValue, cell}: Props) => ({\n isRowSelected: !!selected && selected.includes(rowValue.rawValue),\n isCellHighlighted: isMatchAttrColumn(rowValue.matchAttributes, columnData) && !cell.values.every(isEmptyValue)\n}))(RowCellRenderer);\n","import {lighten} from '@mui/material/styles';\n\nimport {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n tableContainer: {\n flex: 1,\n display: 'flex',\n color: 'rgba(0,0,0,0.54)',\n overflow: 'hidden',\n background: theme.palette.background.paper\n },\n rowActionButtonsWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n marginRight: '1px'\n },\n rowActionButtons: {\n backgroundColor: 'rgba(238, 238, 238, 1)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n backgroundColor: 'rgba(238, 238, 238, 1)',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n checked: {},\n actionButton: {\n marginLeft: '12px',\n '&:last-child': {\n marginRight: '3px'\n }\n },\n hoveredRowRightContentContainer: {\n alignItems: 'center !important' //overlapping inline style for buttons centering\n },\n dragColumnHead: {\n '& #headCell': {\n border: '1px solid',\n borderColor: theme.palette.primary.main\n },\n '& #entityCell': {\n borderLeft: '1px solid',\n borderRight: '1px solid',\n borderLeftColor: theme.palette.primary.main,\n borderRightColor: theme.palette.primary.main\n }\n },\n dragColumnBody: {\n borderLeft: '1px solid',\n borderRight: '1px solid',\n borderLeftColor: theme.palette.primary.main,\n borderRightColor: theme.palette.primary.main\n },\n sourcesCell: {\n display: 'flex',\n flexWrap: 'wrap',\n padding: '15px',\n columnGap: '5px',\n rowGap: '8px',\n alignItems: 'center'\n }\n}));\n","import React from 'react';\nimport RowCellRenderer from './RowCellRenderer';\nimport {RowCellAutoSizer} from '@reltio/components';\nimport {RowCellRendererProps} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from '../styles';\n\ntype RowCellAutoSizerProps = React.ComponentProps<typeof RowCellAutoSizer>;\n\ntype Props = {\n changeRowCellHeight: RowCellAutoSizerProps['onChangeHeight'];\n basicTableRef?: React.Ref<HTMLElement>;\n hoveredRowRightContent?: React.ReactNode;\n hoverRowIndex?: number;\n someRowIsDragging?: boolean;\n dragRef?: boolean;\n isDragLayer?: boolean;\n} & RowCellRendererProps;\n\nexport const CommonRowCellRenderer = ({\n hoverRowIndex,\n hoveredRowRightContent,\n basicTableRef,\n changeRowCellHeight,\n ...props\n}: Props) => {\n const styles = useStyles();\n switch (props.columnData.id) {\n case 'profile':\n return (\n <RowCellRenderer\n {...props}\n hoverRowIndex={hoverRowIndex}\n actionsContent={hoveredRowRightContent}\n tableRef={basicTableRef}\n />\n );\n case 'matchRules':\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} />\n </RowCellAutoSizer>\n );\n case 'sources':\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer cellWrapperClassName={styles.sourcesCell} {...props} />\n </RowCellAutoSizer>\n );\n default:\n return <RowCellRenderer {...props} />;\n }\n};\n","import React, {useCallback, useEffect, useLayoutEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {either, evolve, move} from 'ramda';\nimport {\n BasicTable,\n defaultGetRowCellHeight,\n CommentsContainer,\n useBasicTableCellRenderer,\n useDynamicRowCellHeight,\n BasicTableCellRenderer as EntityCellRenderer\n} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n Entity,\n Metadata,\n Match,\n EntitiesMap,\n getActionPermissionForMatch,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './dataHelpers';\nimport withEntityCellValue from './cell-renderers/withEntityCellValue';\nimport {CommonRowCellRenderer} from './cell-renderers/CommonRowCellRenderer';\nimport {\n MatchesColumnsData,\n RowCellRendererProps,\n MatchesTableContextProps,\n MatchesTableRowValue,\n GetRowCellKeyProps\n} from '../../types/potentialMatchesTypes';\nimport {useAddRelationDialog} from '../../hooks/useAddRelationDialog';\nimport {useStyles} from './styles';\nimport MatchControls from '../MatchControls/MatchControls';\n\nconst MAX_ROW_VALUES_COUNT = 3;\n\ntype Sorting = {\n field: string;\n order: 'asc' | 'desc';\n};\n\ntype Filter = {\n filter: string;\n value: unknown[];\n};\n\ntype Props = {\n entity?: Entity;\n matches: Match[];\n metadata: Metadata;\n columnsData: MatchesColumnsData[];\n onReorderingColumn: (what, where) => void;\n config: PotentialMatchesPerspectiveConfig;\n filters?: Record<string, Filter>;\n onFilter?: (value: {columnId: string; filter: Filter}) => void;\n sorting?: Sorting;\n onSort?: (column: string) => void;\n selected: Match[];\n onToggleSelect: (match: Match) => void;\n onResetSelect: () => void;\n onSelectAll: () => void;\n isComparisonViewShown: boolean;\n entitiesMap?: EntitiesMap;\n basicTableRef?: React.Ref<HTMLElement>;\n showNonOv: boolean;\n};\n\nconst getIdFromRowValue = (rowValue: MatchesTableRowValue) => rowValue.profile.uri;\n\nconst getRowCellKey = ({columnData: {id}, cellIndex, rowValue}: GetRowCellKeyProps) =>\n `${id}[${getIdFromRowValue(rowValue)}][${cellIndex}]`;\n\nconst MatchesTable = ({\n entity,\n matches,\n metadata,\n columnsData,\n onReorderingColumn,\n config,\n filters,\n onFilter,\n sorting,\n onSort,\n selected,\n onToggleSelect,\n onResetSelect,\n onSelectAll,\n entitiesMap,\n basicTableRef,\n isComparisonViewShown,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n const [orderedMatches, setOrderedMatches] = useState(matches);\n useEffect(() => {\n setOrderedMatches(matches);\n }, [matches]);\n const onDndRowReorder = useCallback((oldPosition: number, newPosition: number) => {\n setOrderedMatches(move(oldPosition, newPosition));\n setHoverRowIndex(newPosition);\n }, []);\n\n const tableRowsData = useMemo(\n () => getBasicTableRowsData(metadata, columnsData, orderedMatches, showNonOv, entitiesMap),\n [metadata, columnsData, orderedMatches, showNonOv, entitiesMap]\n );\n\n const sortable = !!onSort;\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(sortable, columnsData), [columnsData, sortable]);\n\n const entityRowData = useMemo(\n () => (entity ? getBasicTableRowsData(metadata, columnsData, [{object: entity}], showNonOv) : []),\n [entity, metadata, columnsData, showNonOv]\n );\n\n const onDndColumnReorder = useCallback(\n ({what, where}) => {\n const oldPositionId = tableColumnsData[what.columnIndex].id;\n const newPositionId = tableColumnsData[where.columnIndex].id;\n onReorderingColumn(oldPositionId, newPositionId);\n },\n [tableColumnsData]\n );\n\n const tableContext: MatchesTableContextProps = useMemo(\n () => ({\n isAllSelected: selected.length > 0 && selected.length === matches.length,\n entityToMatch: entity,\n selected,\n onToggleSelect,\n onResetSelect,\n onSelectAll,\n isComparisonViewShown\n }),\n [entity, selected, onToggleSelect, onResetSelect, onSelectAll, matches, isComparisonViewShown]\n );\n\n const {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache} = useDynamicRowCellHeight(getRowCellKey);\n\n const [openActionsMenu, setOpenActionsMenu] = useState(false);\n const onActionsMenuOpen = useCallback(() => setOpenActionsMenu(true), []);\n const onActionsMenuClose = useCallback(() => setOpenActionsMenu(false), []);\n\n const [openCollaborationPopup, setOpenCollaborationPopup] = useState(false);\n\n const [hoverRowIndex, setHoverRowIndex] = useState<number>(null);\n const onRowHover = useCallback(\n (rowIndex: number) => {\n setHoverRowIndex((prevHoverRowIndex) =>\n openActionsMenu || openCollaborationPopup ? prevHoverRowIndex : rowIndex\n );\n },\n [openActionsMenu, openCollaborationPopup]\n );\n\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const hoveredRowRightContent = useMemo(() => {\n if (hoverRowIndex === null) {\n return null;\n }\n\n const hoveredMatch = orderedMatches[hoverRowIndex];\n\n if (!hoveredMatch) {\n return null;\n }\n\n const permission = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const isChecked = selected.includes(hoveredMatch);\n return (\n <div className={classnames(styles.rowActionButtonsWrapper)}>\n <div className={classnames(styles.rowActionButtons, {[styles.checked]: isChecked})}>\n <MatchControls\n value={{\n mainEntity: entity,\n entity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n permission\n }}\n openAddRelationDialog={openAddRelationDialog}\n onActionsMenuClose={onActionsMenuClose}\n onActionsMenuOpen={onActionsMenuOpen}\n classes={{\n actionButton: styles.actionButton,\n moreOptions: styles.actionButton\n }}\n />\n </div>\n {entity && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isChecked})}\n uri={createObjectIdForPM(entity.uri, hoveredMatch.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: hoveredMatch.object.uri\n })}\n onChangePopupVisibility={setOpenCollaborationPopup}\n allowOnlyOneComment\n showAlways\n />\n )}\n </div>\n );\n }, [\n hoverRowIndex,\n orderedMatches,\n selected,\n styles,\n entity,\n config,\n metadata,\n onActionsMenuOpen,\n onActionsMenuClose,\n openAddRelationDialog\n ]);\n\n const renderRowCell = useCallback(\n (props: RowCellRendererProps) => {\n return (\n <CommonRowCellRenderer\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n basicTableRef={basicTableRef}\n changeRowCellHeight={changeRowCellHeight}\n {...props}\n />\n );\n },\n [hoverRowIndex, hoveredRowRightContent, basicTableRef, changeRowCellHeight]\n );\n\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, defaultGetRowCellHeight), [\n getDynamicRowCellHeight,\n defaultGetRowCellHeight\n ]);\n\n const tableClasses = useMemo(\n () => ({\n hoveredRowRightContentContainer: styles.hoveredRowRightContentContainer,\n dragColumnHead: styles.dragColumnHead,\n dragColumnBody: styles.dragColumnBody\n }),\n [styles]\n );\n\n const {\n getDynamicRowCellHeight: getDynamicEntityCellHeight,\n changeRowCellHeight: changeEntityCellHeight,\n clearHeightsCache: clearEntityHeightsCache\n } = useDynamicRowCellHeight(getRowCellKey);\n\n const renderEntityCell = useCallback(\n (props: RowCellRendererProps) => {\n return <CommonRowCellRenderer changeRowCellHeight={changeEntityCellHeight} {...props} />;\n },\n [changeEntityCellHeight]\n );\n\n const getEntityCellHeight = useCallback(either(getDynamicEntityCellHeight, defaultGetRowCellHeight), [\n getDynamicEntityCellHeight,\n defaultGetRowCellHeight\n ]);\n\n const {\n getRowHeight,\n getHeightForSubRow,\n tableRowsData: entityTableRowsData,\n collapseContextValue: entityRowCollapseContext\n } = useBasicTableCellRenderer({\n rowsData: entityRowData,\n columnsData: tableColumnsData,\n maxRowValuesCount: MAX_ROW_VALUES_COUNT,\n getRowCellHeight: getEntityCellHeight,\n renderRowCell: renderEntityCell,\n getIdFromRowValue\n });\n\n const entityRowHeight = getRowHeight(entity?.uri);\n\n const enhancedColumnsData = useMemo(() => {\n const withEntityCell = withEntityCellValue(\n EntityCellRenderer,\n entityRowCollapseContext,\n getHeightForSubRow,\n entityTableRowsData,\n getRowHeight,\n tableColumnsData\n );\n return tableColumnsData.map(\n evolve({\n headCellRenderer: withEntityCell\n })\n );\n }, [entityRowCollapseContext, getHeightForSubRow, entityTableRowsData, getRowHeight, tableColumnsData]);\n\n useLayoutEffect(() => {\n clearHeightsCache();\n clearEntityHeightsCache();\n }, [clearEntityHeightsCache, clearHeightsCache, entity?.uri]);\n\n return (\n <div data-reltio-id=\"reltio-matches-table-container\" className={styles.tableContainer}>\n <BasicTable\n fixFirstColumn={true}\n columnsData={enhancedColumnsData}\n rowsData={tableRowsData}\n context={tableContext}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n defaultColumnWidth={250}\n defaultColumnMinWidth={100}\n headRowHeight={56 + entityRowHeight}\n renderRowCell={renderRowCell}\n getRowCellHeight={getRowCellHeight}\n hoverStateEnabled={true}\n hoveredRowRightContent={hoveredRowRightContent}\n hoverRowIndex={hoverRowIndex}\n onRowHover={onRowHover}\n classes={tableClasses}\n getIdFromRowValue={getIdFromRowValue}\n maxRowValuesCount={MAX_ROW_VALUES_COUNT}\n dndRowReorderingEnabled\n dndColumnReorderingEnabled\n dndColumnReorderingHandler={onDndColumnReorder}\n dndRowReorderingHandler={onDndRowReorder}\n ref={basicTableRef}\n hoveredContentPosition={0}\n />\n {showDialog && <AddRelationDialogRenderer />}\n </div>\n );\n};\n\nexport default MatchesTable;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {IdContext, useBasicTableCellRenderer} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n headCellData: {\n id: string;\n };\n [key: string]: unknown;\n};\n\nconst withEntityCellValue =\n (\n EntityCellRenderer: (props: Record<string, unknown>) => JSX.Element,\n entityRowCollapseContext: ReturnType<typeof useBasicTableCellRenderer>['collapseContextValue'],\n getHeightForSubRow,\n tableRowsData,\n getRowHeight,\n columnsData\n ) =>\n (HeadCellRenderer: (props: Record<string, unknown>) => JSX.Element) => {\n const HeadCellWithEntityValue = (props: Props) => {\n const styles = useStyles();\n return (\n <IdContext.Provider value=\"tableHeader\">\n <div className={styles.headCellWithEntity}>\n <div id=\"headCell\">\n <HeadCellRenderer {...props} />\n </div>\n <EntityCellRenderer\n className={classnames(styles.entityRowCell, styles.entityRowCellSelected)}\n columnId={props.headCellData.id}\n rowIndex={0}\n getHeightForSubRow={getHeightForSubRow}\n tableRowsData={tableRowsData}\n getRowHeight={getRowHeight}\n columnsData={columnsData}\n collapseContextValue={entityRowCollapseContext}\n id=\"entityCell\"\n />\n </div>\n </IdContext.Provider>\n );\n };\n\n return HeadCellWithEntityValue;\n };\n\nexport default withEntityCellValue;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n comparisonView: {\n width: '100%',\n overflow: 'auto'\n }\n});\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, identity, has, move} from 'ramda';\nimport {\n Entity,\n getEntityUriForLink,\n getPotentialMatchesObjectIdsForCollaboration,\n Metadata,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {DragAndDrop, useCollaboration, CollaborationContextProvider} from '@reltio/components';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {TableHeader} from '../TableHeader/TableHeader';\nimport {useMatchesColumnsData} from '../../hooks/useMatchesColumnData';\nimport ComparisonView from '../ComparisonView';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {PotentialMatchesSavedState} from '../../types/potentialMatchesTypes';\nimport {DEFAULT_ROWS} from '../../constants/defaultRows';\nimport {useFirstPotentialMatches} from '../../hooks/useFirstPotentialMatches';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\nimport {ComparisonViewMode} from '../../constants/views';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport {addFixedAttributes} from './helpers/helpers';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n isLoaded: boolean;\n savedState: PotentialMatchesSavedState;\n onUpdateSavedState: (stateToSave: PotentialMatchesSavedState) => void;\n};\n\nexport const MatchReviewTable = ({config, isLoaded, savedState, onUpdateSavedState}: Props) => {\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const dispatch = useDispatch();\n const {selectedItems, entitiesMap, comparisonViewMode} = useViewState();\n const {toggleSelect, setSelectedItems, setComparisonViewMode, actualizeSelectedItemsColors} = useViewStateActions();\n const {isGlobalSpinnerActive} = useSpinnerAndReloadData();\n\n const {uri: entityUri} = entity || {};\n useFirstPotentialMatches(!!entityUri, entity);\n\n useEffect(() => {\n actualizeSelectedItemsColors();\n }, [selectedItems]);\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n const reloadHandler = () => {\n dispatch(profile.entity.actions.loadEntity({uri: getEntityUriForLink(entity)}));\n };\n addReloadHandler(reloadHandler);\n return () => removeReloadHandler(reloadHandler);\n }, [entity, dispatch, addReloadHandler, removeReloadHandler]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)),\n [entityUri, entitiesMap]\n );\n\n const collaboration = useCollaboration({objectIds});\n\n const styles = useStyles();\n const [allColumnsData, groupedColumnsData, defaultColumns] = useMatchesColumnsData({\n defaultColumnsData: DEFAULT_ROWS,\n metadata,\n entityTypeUri: entity.type\n });\n\n const [visibleColumns, setVisibleColumns] = useState<string[]>(defaultColumns);\n const [showNonOv, setShowNonOv] = useState(false);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, allColumnsData]\n );\n\n const onReorderingColumn = useCallback(\n (oldPositionId, newPositionId) => {\n const oldPosition = visibleColumns.indexOf(oldPositionId);\n const newPosition = visibleColumns.indexOf(newPositionId);\n setVisibleColumns(move(oldPosition, newPosition));\n },\n [visibleColumns]\n );\n\n const comparisonViewProps = {\n entity,\n metadata,\n selectedColumns: selectedItems || [],\n setSelectedColumns: setSelectedItems,\n config,\n selectedRows: visibleColumns,\n setSelectedRows: setVisibleColumns,\n entitiesMap,\n rowsData: groupedColumnsData,\n showNonOv\n };\n\n const matchesTableProps = {\n entity,\n metadata,\n entitiesMap,\n config,\n matches: selectedItems,\n columnsData: visibleColumnsData,\n onReorderingColumn,\n onSelectAll: () => {},\n onToggleSelect: toggleSelect,\n onResetSelect: () => {},\n selected: [],\n isComparisonViewShown: false,\n showNonOv\n };\n\n useEffect(() => {\n if (!isLoaded) {\n return;\n }\n if (savedState?.visibleColumns) {\n setVisibleColumns(addFixedAttributes(savedState.visibleColumns));\n }\n if (savedState?.comparisonViewMode) {\n setComparisonViewMode(savedState.comparisonViewMode);\n }\n if (has('showNonOv', savedState)) {\n setShowNonOv(savedState.showNonOv);\n }\n }, [isLoaded, savedState]); // eslint-disable-line\n\n useEffect(() => {\n if (!isLoaded) {\n return;\n }\n onUpdateSavedState({comparisonViewMode, visibleColumns, showNonOv});\n }, [visibleColumns, comparisonViewMode, showNonOv]); // eslint-disable-line\n\n return (\n <>\n <TableHeader\n config={config}\n columnsData={groupedColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={setVisibleColumns}\n showNonOv={showNonOv}\n onChangeShowNonOv={setShowNonOv}\n />\n <CollaborationContextProvider collaboration={collaboration}>\n {comparisonViewMode === ComparisonViewMode.COLUMNS ? (\n <DragAndDrop>\n <ColumnHandlerContext.Provider value={toggleSelect}>\n {isLoaded && (\n <ComparisonView {...comparisonViewProps} classes={{root: styles.comparisonView}} />\n )}\n </ColumnHandlerContext.Provider>\n </DragAndDrop>\n ) : (\n isLoaded && <MatchesTable {...matchesTableProps} />\n )}\n </CollaborationContextProvider>\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </>\n );\n};\n","import {useCallback, useEffect, useMemo} from 'react';\nimport {Entity, Order} from '@reltio/mdm-sdk';\nimport {prop} from 'ramda';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {DEFAULT_OPTIONS} from '../constants/defaultOptions';\nimport {useMatchesLoader} from '@reltio/components';\n\nexport const useFirstPotentialMatches = (enabled: boolean, entity: Entity) => {\n const {setSelectedItems, setGlobalSpinner} = useViewStateActions();\n const onStartLoading = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishLoading = useCallback(() => {\n setGlobalSpinner(false);\n }, [setGlobalSpinner]);\n const entityUri = prop('uri', entity);\n const dataTenant = prop('dataTenant', entity);\n const initialRequestParam = useMemo(\n () => ({\n enabled: !!entityUri,\n entity,\n filter: '',\n page: 0,\n sorting: {\n field: 'score',\n order: Order.desc\n },\n rowsPerPage: 3,\n options: DEFAULT_OPTIONS,\n onStartLoading,\n onFinishLoading\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataTenant, entityUri]\n );\n\n const {matches} = useMatchesLoader(initialRequestParam);\n\n useEffect(() => {\n setSelectedItems(matches);\n }, [matches, setSelectedItems]);\n};\n","import {getEntityTypeMatchAttributes, Metadata} from '@reltio/mdm-sdk';\nimport {concat, pipe} from 'ramda';\nimport {useMemo} from 'react';\nimport {getColumnsData, getMatchAttrColumns, groupColumnsDataByMatchAttributes} from '../helpers/attributesHelpers';\nimport {getSortOptionIdFromData} from '../helpers/sortHelpers';\n\nimport {MatchesColumnsData, GroupedColumnData} from '../types/potentialMatchesTypes';\n\ntype MatchesColumnsDataProps = {\n defaultColumnsData: MatchesColumnsData[];\n additionalColumnsData?: MatchesColumnsData[];\n metadata: Metadata;\n entityTypeUri: string;\n};\n\nexport const useMatchesColumnsData = ({\n defaultColumnsData,\n additionalColumnsData,\n metadata,\n entityTypeUri\n}: MatchesColumnsDataProps): [MatchesColumnsData[], GroupedColumnData[], string[]] => {\n return useMemo(() => {\n const attrColumnsData = getColumnsData(metadata, entityTypeUri);\n const allColumnsData: MatchesColumnsData[] = defaultColumnsData\n .concat(additionalColumnsData || [])\n .concat(attrColumnsData);\n const matchAttributes: string[] = getEntityTypeMatchAttributes(metadata, entityTypeUri);\n const groupedColumnsData: GroupedColumnData[] = groupColumnsDataByMatchAttributes(\n matchAttributes,\n allColumnsData\n );\n const defaultColumns: string[] = pipe(\n getMatchAttrColumns,\n concat(defaultColumnsData),\n getSortOptionIdFromData\n )(matchAttributes, attrColumnsData);\n return [allColumnsData, groupedColumnsData, defaultColumns];\n }, [defaultColumnsData, additionalColumnsData, metadata, entityTypeUri]);\n};\n","import {concat, filter, map, pipe, prop, propEq, uniq} from 'ramda';\nimport {DEFAULT_ROWS} from '../../../constants/defaultRows';\n\nconst addFixedAttributes = (visibleAttributes: string[] = []): string[] => {\n const getFixedAttributesIds = pipe(filter(propEq('hideable', false)), map(prop('id')));\n const getUnique = pipe(concat, uniq);\n\n const fixedAttributesIds = getFixedAttributesIds(DEFAULT_ROWS);\n return getUnique(fixedAttributesIds, visibleAttributes);\n};\n\nexport {addFixedAttributes};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.25 3H3.75c-.825 0-1.5.675-1.5 1.5v9c0 .825.675 1.5 1.5 1.5h10.5c.825 0 1.5-.675 1.5-1.5v-9c0-.825-.675-1.5-1.5-1.5zm-9 10.5h-1.5v-6h1.5v6zM3.75 6h1.5V4.5h-1.5V6zm6 7.5h-3v-6h3v6zm-3-7.5h3V4.5h-3V6zm7.5 7.5h-3v-6h3v6zm-3-7.5h3V4.5h-3V6z\",\n fill: \"#000\",\n fillOpacity: \".541\"\n})));","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n flexBox: {\n display: 'flex',\n alignItems: 'center'\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n margin: '0 4px'\n }\n});\n","import {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport i18n from 'ui-i18n';\nimport {ConfirmationDialog} from '@reltio/components';\nimport React, {useCallback} from 'react';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\nimport TableIcon from './TableIcon.svg';\nimport {useStyles} from './styles';\n\nexport const ChangeModeConfirmation = () => {\n const {selectedItems, comparisonViewMode, limitSelection} = useViewState();\n const {setComparisonViewMode, deleteExtraMatches} = useViewStateActions();\n const styles = useStyles();\n const onSave = useCallback(() => {\n setComparisonViewMode(ComparisonViewMode.TABLE);\n }, [setComparisonViewMode]);\n const open = comparisonViewMode === ComparisonViewMode.COLUMNS && selectedItems.length > limitSelection;\n const title = i18n.text('Switch to table view');\n const content = (\n <div className={styles.flexBox}>\n {i18n.text('Please switch to')}\n <div className={styles.icon}>\n <TableIcon />\n </div>\n {i18n.text('Table View to compare more than ${max} profiles', {max: MAX_PROFILES_TO_COMPARE})}\n </div>\n );\n return (\n <ConfirmationDialog\n open={open}\n title={title}\n content={content}\n onSave={onSave}\n onDiscard={deleteExtraMatches}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflowX: 'hidden',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n potentialMatchesWrapper: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1\n },\n potentialMatchesContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M20 4v14h2V4c0-1.1-.9-2-2-2H6v2h14zM2 20c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12z\",\n fill: \"currentColor\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M10 12a4 4 0 100-8 4 4 0 000 8zM10.35 14.01C7.62 13.91 2 15.27 2 18v2h9.54c-2.47-2.76-1.23-5.89-1.19-5.99zM19.43 18.02c.36-.59.57-1.28.57-2.02 0-2.21-1.79-4-4-4s-4 1.79-4 4 1.79 4 4 4c.74 0 1.43-.22 2.02-.57L20.59 22 22 20.59l-2.57-2.57zM16 18c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\",\n fill: \"currentColor\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 20h15.002L21 23l1.27-1.27-20-20.01L1 2.99l6.172 6.175a4.007 4.007 0 002.66 2.662l2.23 2.23A10.754 10.754 0 0011 14c-2.67 0-8 1.34-8 4v2zm8-16a3.987 3.987 0 00-2.795 1.137l5.656 5.659A3.999 3.999 0 0011 4z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n input: {\n margin: 0,\n borderRadius: '4px',\n width: '100%',\n paddingTop: 0,\n paddingBottom: 0\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport {pipe} from 'ramda';\nimport {\n MatchRulesSelector,\n SourceSystemsSelector,\n AttributesValuesEditor,\n AttributeFiltersComponentProps\n} from '@reltio/components';\nimport {\n isMatchRuleAttrType,\n isSourceSystemAttrType,\n SearchFilter,\n MatchRulesAttrNames,\n wrapInArray\n} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype RowData = AttributeFiltersComponentProps['rowData'];\n\nexport const ValuesEditor = ({rowData, rowContext}: AttributeFiltersComponentProps) => {\n const styles = useStyles();\n const {values = [], attribute: {attrType, fieldName = null} = {}, filter, id} = (rowData || {}) as RowData;\n const {changeFilter} = rowContext;\n const {entityType} = rowContext;\n\n const changeValue = useCallback(\n (newValues: SearchFilter['values']) => {\n const newFilter: SearchFilter = {\n fieldName,\n filter,\n values: newValues\n };\n\n changeFilter(newFilter, id);\n },\n [changeFilter, id, fieldName, filter]\n );\n\n const TextFieldProps = useMemo(\n () => ({\n InputProps: {\n classes: {\n root: styles.input\n }\n }\n }),\n [styles]\n );\n\n const commonProps = {\n values: (values[0] || []) as string[],\n onChange: pipe(wrapInArray, changeValue),\n TextFieldProps,\n fullWidth: true\n };\n\n if (isMatchRuleAttrType(attrType)) {\n return (\n <MatchRulesSelector {...commonProps} name={attrType.name as MatchRulesAttrNames} entityType={entityType} />\n );\n } else if (isSourceSystemAttrType(attrType)) {\n return <SourceSystemsSelector {...commonProps} />;\n } else {\n return <AttributesValuesEditor rowContext={rowContext} rowData={rowData} />;\n }\n};\n","import React from 'react';\nimport {AttributesFilterSelector, AttributeFiltersComponentProps} from '@reltio/components';\nimport {FilterOptions, getFilterOptionLabel, isMatchRuleAttrType} from '@reltio/mdm-sdk';\nimport {capitalize} from '@mui/material/utils';\n\ntype RowData = AttributeFiltersComponentProps['rowData'];\n\ntype Props = AttributeFiltersComponentProps & {textFieldInputRef: React.MutableRefObject<HTMLInputElement>};\n\nexport const FilterSelector = (props: Props) => {\n const {rowData} = props;\n const {attribute: {attrType} = {}} = (rowData || {}) as RowData;\n const options = isMatchRuleAttrType(attrType)\n ? [FilterOptions.EQUALS].map((value) => ({value, label: capitalize(getFilterOptionLabel(value))}))\n : null;\n\n return <AttributesFilterSelector {...props} options={options} />;\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n divider: {\n marginBottom: '14px',\n marginRight: '16px',\n borderColor: 'rgba(0, 0, 0, 0.121569)'\n },\n optionLabel: {\n fontSize: '13px',\n paddingLeft: '10px'\n }\n});\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Divider from '@mui/material/Divider';\nimport Checkbox from '@mui/material/Checkbox';\nimport {AttributesFiltersButton} from '@reltio/components';\nimport {AttributeType, buildFilterQueryString, SearchFilter} from '@reltio/mdm-sdk';\nimport {FilterSelector} from '../FilterSelector/FilterSelector';\nimport {ValuesEditor} from '../ValuesEditor/ValuesEditor';\nimport {MatchesOptions} from '../../../types/potentialMatchesTypes';\n\nimport {useStyles} from './styles';\n\nconst potentialMatchesComponents = {\n FilterSelector,\n ValuesEditor\n};\n\ntype Props = {\n filters: SearchFilter[];\n options: MatchesOptions;\n onChange: (filters: SearchFilter[], option: MatchesOptions) => void;\n attributeTypes: AttributeType[];\n};\n\nexport const MatchesAttributesFiltersButton = ({filters, onChange, attributeTypes, options}: Props) => {\n const styles = useStyles();\n const [showTransitiveMatches, setShowTransitiveMatches] = useState(options.showTransitiveMatches);\n return (\n <AttributesFiltersButton\n dataReltioId=\"potential-matches-filter-button\"\n filters={filters}\n onChange={(filters) => onChange(filters, {showTransitiveMatches})}\n attributeTypes={attributeTypes}\n components={potentialMatchesComponents}\n onTogglePopup={(open) => {\n if (open) {\n setShowTransitiveMatches(options.showTransitiveMatches);\n }\n }}\n isFiltersApplied={!!buildFilterQueryString()(filters) || options.showTransitiveMatches}\n >\n <FormControlLabel\n classes={{label: styles.optionLabel}}\n control={\n <Checkbox\n checked={showTransitiveMatches}\n onChange={(e) => setShowTransitiveMatches(e.target.checked)}\n color=\"primary\"\n />\n }\n label={i18n.text('Show transitive matches')}\n />\n <Divider light className={styles.divider} />\n </AttributesFiltersButton>\n );\n};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {AttributesFiltersButton} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n CrosswalksAttrTypes,\n EntityAttrTypes,\n getEntityType,\n hasMatchRulesWithoutML,\n hasMlMatchRule,\n isReadableAttribute,\n MatchRulesAttrTypes,\n Order,\n SearchFilter,\n PotentialMatchesAttrTypes,\n SortingField\n} from '@reltio/mdm-sdk';\nimport PotentialMatchesIcon from '../components/RightSidePanel/icons/potential-matches-icon.svg';\nimport FindMatchesIcon from '../components/RightSidePanel/icons/find-matches-icon.svg';\nimport NotAMatchIcon from '../components/RightSidePanel/icons/not-a-match-icon.svg';\nimport {ActivePanel} from '../constants/views';\n\nimport {ADDITIONAL_SORT_OPTIONS_DATA, DEFAULT_SORT_OPTIONS, getSortOptionIdFromData} from '../helpers/sortHelpers';\nimport {DEFAULT_OPTIONS} from '../constants/defaultOptions';\nimport {ValuesEditor} from '../components/RightSidePanel/ValuesEditor/ValuesEditor';\nimport {MatchesOptions} from '../types/potentialMatchesTypes';\nimport {MatchesAttributesFiltersButton} from '../components/RightSidePanel/MatchesAttributesFiltersButton/MatchesAttributesFiltersButton';\nimport {PMRightPanelTabs} from '../PotentialMatchesView';\n\nconst sourceSystemsComponents = {\n ValuesEditor\n};\n\nexport const usePotentialMatchesRightSidePanelElements = (): {\n active?: number;\n tabs: PMRightPanelTabs;\n toggleActive: (newId: ActivePanel) => void;\n onClose: () => void;\n} => {\n const [matchesFilters, setMatchesFilters] = useState<SearchFilter[]>([]);\n const [matchesOptions, setMatchesOptions] = useState<MatchesOptions>(DEFAULT_OPTIONS);\n const [findMatchesFilters, setFindMatchesFilters] = useState<SearchFilter[]>([]);\n const [notMatchFilters, setNotMatchFilters] = useState<SearchFilter[]>([]);\n const [matchesSorting, setMatchesSorting] = useState<SortingField>({\n field: ADDITIONAL_SORT_OPTIONS_DATA[0].id,\n order: Order.desc\n });\n const [findMatchesSorting, setFindMatchesSorting] = useState<SortingField>({\n field: getSortOptionIdFromData(DEFAULT_SORT_OPTIONS)[0],\n order: Order.asc\n });\n const [notMatchSorting, setNotMatchSorting] = useState<SortingField>({\n field: getSortOptionIdFromData(DEFAULT_SORT_OPTIONS)[0],\n order: Order.asc\n });\n\n const [active, setActive] = useState<ActivePanel>(null);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n\n const toggleActive = useCallback((newId: ActivePanel) => {\n setActive((active) => (active === newId ? null : newId));\n }, []);\n const onClose = useCallback(() => {\n setActive(null);\n }, []);\n\n const entityType = getEntityType(metadata, entity?.type);\n\n const getAttributeTypes = (entityType) =>\n (entityType?.attributes || []).concat(entityType?.analyticsAttributes || []).filter(isReadableAttribute);\n\n const attributeTypes = useMemo(() => getAttributeTypes(entityType), [entityType]);\n\n const matchRulesAttributes = useMemo(() => {\n const matchRulesAttributes = [\n {...MatchRulesAttrTypes.matchRules, check: hasMatchRulesWithoutML},\n {...MatchRulesAttrTypes.MLRecommendedMatch, check: hasMlMatchRule}\n ];\n\n return matchRulesAttributes.reduce((attributes, {check, ...attrType}) => {\n check(entityType) && attributes.push(attrType);\n return attributes;\n }, []);\n }, [entityType]);\n\n const potentialMatchesAttributeTypes = useMemo(\n () => [\n ...matchRulesAttributes,\n PotentialMatchesAttrTypes.relevanceScore,\n PotentialMatchesAttrTypes.matchAction,\n ...attributeTypes\n ],\n [attributeTypes, matchRulesAttributes]\n );\n\n const findMatchesAttributeTypes = useMemo(\n () => [EntityAttrTypes.id, CrosswalksAttrTypes.sourceSystems, ...attributeTypes],\n [attributeTypes]\n );\n\n const onChangeMatchesFilters = (matchesFilters: SearchFilter[], options: MatchesOptions) => {\n setMatchesOptions(options);\n setMatchesFilters(matchesFilters);\n };\n\n const tabs = useMemo(\n () => [\n {\n buttonProps: {\n id: ActivePanel.PotentialMatches,\n icon: PotentialMatchesIcon,\n tooltipTitle: i18n.text('Potential Matches')\n },\n headerProps: {\n mainTitle: i18n.text('Potential Matches'),\n rightContent: (\n <MatchesAttributesFiltersButton\n filters={matchesFilters}\n onChange={onChangeMatchesFilters}\n attributeTypes={potentialMatchesAttributeTypes}\n options={matchesOptions}\n />\n )\n },\n filters: matchesFilters,\n options: matchesOptions,\n sorting: matchesSorting,\n onSorting: setMatchesSorting\n },\n {\n buttonProps: {\n id: ActivePanel.FindMatches,\n icon: FindMatchesIcon,\n tooltipTitle: i18n.text('Find Matches')\n },\n headerProps: {\n mainTitle: i18n.text('Find Matches'),\n rightContent: (\n <AttributesFiltersButton\n filters={findMatchesFilters}\n onChange={setFindMatchesFilters}\n attributeTypes={findMatchesAttributeTypes}\n components={sourceSystemsComponents}\n />\n )\n },\n filters: findMatchesFilters,\n sorting: findMatchesSorting,\n onSorting: setFindMatchesSorting\n },\n {\n buttonProps: {\n id: ActivePanel.NotAMatch,\n icon: NotAMatchIcon,\n tooltipTitle: i18n.text('Not a Match')\n },\n headerProps: {\n mainTitle: i18n.text('Not a Match'),\n rightContent: (\n <AttributesFiltersButton\n filters={notMatchFilters}\n onChange={setNotMatchFilters}\n attributeTypes={attributeTypes}\n />\n )\n },\n filters: notMatchFilters,\n sorting: notMatchSorting,\n onSorting: setNotMatchSorting\n }\n ],\n [\n matchesFilters,\n matchesOptions,\n findMatchesFilters,\n notMatchFilters,\n potentialMatchesAttributeTypes,\n findMatchesAttributeTypes,\n matchesSorting,\n findMatchesSorting,\n notMatchSorting,\n attributeTypes\n ]\n );\n\n return {active, tabs, toggleActive, onClose};\n};\n","import React from 'react';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\n\nconst PotentialMatchesLoadIndicator = () => {\n const {isGlobalSpinnerActive} = useSpinnerAndReloadData();\n return isGlobalSpinnerActive ? <LinearLoadIndicator /> : null;\n};\n\nexport default PotentialMatchesLoadIndicator;\n","import React, {useCallback, useEffect, useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {equals, pluck} from 'ramda';\nimport {\n useSnackbar,\n SnackbarContext,\n useSavedStateForEntityType,\n ScreenProfileBand,\n ProfileResizablePanes,\n RightPanelTab\n} from '@reltio/components';\nimport {Entity, PotentialMatchesPerspectiveConfig, SearchFilter, SortingField} from '@reltio/mdm-sdk';\nimport {RightSidePanel} from './components/RightSidePanel/RightSidePanel';\nimport {MatchReviewTable} from './components/MatchReviewTable/MatchReviewTable';\nimport {ViewStateProvider} from './contexts/ViewStateContext';\nimport {ReloadDataProvider} from './contexts/ReloadDataContext';\nimport {MatchesOptions, PotentialMatchesSavedState} from './types/potentialMatchesTypes';\nimport {ChangeModeConfirmation} from './components/ChangeModeConfirmation';\nimport {useStyles} from './styles';\nimport {usePotentialMatchesRightSidePanelElements} from './hooks/usePotentialMatchesRightSidePanelElements';\nimport PotentialMatchesLoadIndicator from './components/PotentialMatchesLoadIndicator/PotentialMatchesLoadIndicator';\n\nconst perspectiveId = 'potentialMatches';\nconst THIRTY_SECONDS = 30000;\n\nexport type PMRightPanelTabs = Array<\n RightPanelTab & {\n filters: SearchFilter[];\n options?: MatchesOptions;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n }\n>;\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nexport const PotentialMatchesView = ({config, getSavedState, saveState}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar({autoHideDuration: THIRTY_SECONDS});\n const lastSavedState = useRef<PotentialMatchesSavedState>();\n\n const {isLoaded, savedState, updateSavedState} = useSavedStateForEntityType<PotentialMatchesSavedState>({\n getSavedState,\n saveState,\n entityTypeUri: entity.type\n });\n\n const {tabs} = usePotentialMatchesRightSidePanelElements();\n\n useEffect(() => {\n if (!isLoaded) return;\n lastSavedState.current = savedState || {};\n }, [isLoaded, savedState]); // eslint-disable-line\n\n const onUpdateSavedState = useCallback(\n (stateToSave = {}) => {\n if (!lastSavedState.current) return;\n const newSavedState = {...lastSavedState.current, ...stateToSave};\n if (!equals(newSavedState, lastSavedState.current)) {\n updateSavedState(newSavedState);\n lastSavedState.current = newSavedState;\n }\n },\n [updateSavedState]\n );\n\n return (\n <ViewStateProvider>\n <ReloadDataProvider>\n <SnackbarContext.Provider value={showSnackbarMessage}>\n <div className={styles.perspectiveView}>\n <PotentialMatchesLoadIndicator />\n {entity?.uri && (\n <>\n <div className={styles.potentialMatchesContainer}>\n <ProfileResizablePanes\n buttonsProps={pluck('buttonProps', tabs)}\n perspectiveId={perspectiveId}\n >\n <div className={styles.potentialMatchesWrapper}>\n <ScreenProfileBand entity={entity} />\n <MatchReviewTable\n config={config}\n isLoaded={isLoaded}\n savedState={savedState}\n onUpdateSavedState={onUpdateSavedState}\n />\n </div>\n <RightSidePanel tabs={tabs} config={config} />\n </ProfileResizablePanes>\n </div>\n <SnackbarRenderer />\n <ChangeModeConfirmation />\n </>\n )}\n </div>\n </SnackbarContext.Provider>\n </ReloadDataProvider>\n </ViewStateProvider>\n );\n};\n","import {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport React, {useCallback} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\n\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport {Provider} from 'react-redux';\nimport {identity} from 'ramda';\nimport {promisifyCallback, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport {PotentialMatchesView as PMView} from './PotentialMatchesView/PotentialMatchesView';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {PotentialMatchesSavedState} from './PotentialMatchesView/types/potentialMatchesTypes';\nimport {Store} from 'redux';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'potentialMatchesView',\n disableGlobal: true,\n seed: 'pm'\n});\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n store: Store<unknown>;\n onResize: (width: number, height: number) => void;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nconst PotentialMatchesView = ({config, store, onResize = identity, saveState, getSavedState}: Props) => {\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 <LocalizationProvider dateAdapter={AdapterMoment}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <PMView config={config} saveState={saveState} getSavedState={getSavedStatePromisified} />\n )}\n <ErrorPopup />\n </LocalizationProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default PotentialMatchesView;\n","import {PotentialMatchesView} from '@reltio/potential-matches';\n\nexport default PotentialMatchesView;\n"],"names":["useStyles","makeStyles","theme","button","whiteSpace","fontSize","lineHeight","letterSpacing","padding","fill","palette","primary","main","fillOpacity","iconButton","startIcon","marginLeft","marginRight","width","height","alignItems","overflowStyle","overflow","textOverflow","menuIcon","menuItem","minHeight","menuText","color","text","ActionButtonMode","ActionButton","forwardRef","ref","className","mode","label","disabled","icon","Icon","onClick","noop","onMenuClose","otherProps","styles","SmallIconButton","classnames","size","tooltipTitle","showForDisabled","Button","classes","ExpandedValueTooltip","value","handleClick","MenuItem","root","Typography","getButtonView","displayName","maxHeight","maxWidth","group","metadata","absoluteImagePath","useSelector","mdm","entityTypeGraphIcon","getEntityTypeGraphIcon","type","id","absoluteImageUrl","getAbsoluteImageUrl","AvatarWithFallback","avatarText","title","attribute","cursor","flexBasis","display","borderBottom","attributeWithValue","noSelect","name","direction","textAlign","flex","defaultGetLabel","either","prop","getLabel","onSelectAttributeClick","undefined","i18n","ArrowDropDownIcon","isEqualAttributes","eqBy","pick","checkAttributeIncludes","selectedAttributes","find","filterItem","item","filterText","toLowerCase","includes","filterItemsTree","children","some","getAttributeIndex","findIndex","getContainerWidth","getMaxItemWidth","getAttributeGroupData","groupId","groupName","level","noFilter","isItemFiltered","concat","filter","subItem","flatMap","flat","prepareGroupsForSelectAttributeList","curry","groups","map","items","attributes","length","subHeader","backgroundColor","margin","fontWeight","memo","onItemClick","focusIndex","hideCheckBox","mdmModule","VirtualGroupedList","getItemSize","i","renderItem","style","index","checked","isFocused","AttributeListItem","key","fieldName","data","notSelectable","Highlighter","highlight","labelInText","LogoIcon","renderGroupTitle","ListItem","component","needGroupIcon","AttributeGroupIcon","selector","minWidth","background","boxSizing","borderRadius","itemsGroups","onSelect","onRestoreFocus","identity","onOpenPopup","disableRestoreFocus","disableEnforceFocus","single","ungroup","selectAnchor","setSelectAnchor","useState","closePopup","useCallback","isPopupOpen","setFilterText","clearFilterText","setSelectedAttributes","clearSelectedAttributes","filteredItemsGroups","useMemo","pipe","when","always","chain","flatten","flattenGroupedItemsData","containerWidth","Math","max","handleOnClose","tap","searchInputRef","useRef","onListItemClick","selectedAttribute","filterSelectedAttributes","current","focus","handleSearchOnEnter","groupData","getOnEnterHandler","handleKeyDown","useKeyboardNavigation","open","onSelectFocusedItem","selectedItems","onClose","event","currentTarget","SelectionPopup","anchorEl","onSearch","containerHeight","searchInputOnKeyDown","anchorOrigin","horizontal","vertical","defaultGetRowCellKey","rowIndex","columnData","cellIndex","getRowCellKey","rowCellHeightsMap","setRowCellHeightsMap","rowCellHeightsMapCache","batchHeightUpdate","flushHeightUpdates","debounce","prev","next","equals","clearHeightsCache","getDynamicRowCellHeight","__","changeRowCellHeight","useWith","pagination","justifyContent","flexShrink","borderTop","boxShadow","overflowY","containerType","caption","displayedRows","selectRoot","select","actions","BasicTablePagination","count","rowsPerPageOptions","page","onChangePage","rowsPerPage","onChangeRowsPerPage","basicTableRef","labelRowsPerPage","resetScrollbarPosition","pathOr","handleChangePage","handleChangeRowsPerPage","TablePagination","selectLabel","input","backIconButtonProps","nextIconButtonProps","labelDisplayedRows","from","to","fromRow","toRow","countRows","onPageChange","nthArg","onRowsPerPageChange","getValue","hidden","visibility","CollapseRowButton","rowValue","toggleRowCollapse","getIsRowCollapsible","getIsRowCollapsed","useContext","RowCollapseContext","isCollapsibleRow","isCollapsedRow","CollapseButton","isOpen","e","stopPropagation","propTypes","PropTypes","onChangeHeight","cell","cellProps","cellRef","changeCellHeight","adjustCellHeight","clientHeight","useDidUpdateEffect","rawValue","useEffect","handleHeight","onResize","collapseButton","expandLess","transform","buttonProps","ExpandMore","iconClassName","tooltipProps","paper","content","contentText","marginBottom","actionButtons","paddingTop","discardButton","onCancel","cancelCaption","onDiscard","discardCaption","onSave","saveCaption","disabledSave","Dialog","paperScrollPaper","DialogTitle","DialogContent","DialogContentText","DialogActions","disableSpacing","autoFocus","ConnectionRelationTypeSelector","relation","inRelationTypes","outRelationTypes","onChange","applyFirstByDefault","reversedContextLabels","getRelationTypesOptions","fromEditorValue","toEditorValue","useRelationTypeSelector","relationsTypesOptions","handleChange","hasValue","relationType","options","ConnectionRelationType","RelationTypeType","flexWrap","flexDirection","secondary","root_small","embedded","full","textBox","marginTop","secondaryText","EMPTY_STATE_VARIANTS","EMPTY_STATE_ICONS","SEARCH_RESULTS","props","viewBox","xmlns","xmlnsXlink","cx","cy","fx","fy","r","gradientTransform","stopColor","stopOpacity","offset","x1","y1","x2","y2","x","y","filterUnits","stdDeviation","in","stroke","strokeWidth","fillRule","xlinkHref","mask","opacity","d","rx","ry","SELECT_ATTRIBUTES","maskType","maskUnits","clipRule","gradientUnits","NO_DATA","dx","dy","result","values","mixBlendMode","ERROR","colorInterpolationFilters","floodOpacity","in2","variant","LogoRenderer","buttonTitle","access","showButton","h5","subtitle1","image","info","secondaryLabel","link","textDecoration","thirdRow","entityId","entityIdLabel","entityIdValue","ProfileCardContent","entity","secondaryLabelClass","labelClass","handleCopyEntityIdToClipboard","navigator","clipboard","writeText","getEntityId","EntityAvatar","imageClassName","EntityUriLink","getEntityUriForLink","placement","showOnExceededHeight","EntityTypeBadge","wave","position","top","left","right","bottom","animation","avatar","ProfileCardPlaceholder","container","containerClass","resizablePanesWrapper","flexGrow","pane","DEFAULT_R_PANE_SIZE","ProfileResizablePanes","perspectiveId","buttonsProps","defaultTab","perspectiveSettings","updatePerspectiveSettings","usePerspectivesSettings","active","isSidePanelOpen","isNil","handleUpdateSettings","newSetting","toggleActive","newId","resetActive","handlePaneSizeChange","ResizablePanes","orientation","minSize","maxSize","allowResize","debounceInterval","cloneElement","SideButtonsPanel","onButtonClick","activeIndexId","readOnlyLogicOperatorContainer","readOnlyFilter","ReadOnlyLogicOperator","rowData","operator","capitalize","getFilterOptionLabel","row","rowItem","paddingRight","fullWidth","QueryBuilderRow","previousRowData","LogicOperatorComponent","AttributeSelectorComponent","FilterSelectorComponent","ReadOnlyFilter","ValuesEditorComponent","ActionsComponent","filterSelectorRef","attributeSelectorProps","rowContext","logicOperatorContainer","attributeSelectorContainer","filterSelectorContainer","textFieldInputRef","valuesEditorContainer","actionsContainer","QueryBuilderAttributeType","onOpen","disablePopoverRestoreFocus","QueryBuilderRowsGroup","rowClasses","rowsData","lastRowAttributeSelectorProps","filterSelectorRefIndex","rowProps","renderRow","previousRow","path","lastRowProps","withMuiSkin","CreatableSelect","Option","innerProps","innerRef","isSelected","selectProps","classNames","option","selected","Checkbox","onMouseMove","onMouseOver","tabIndex","isRequired","placeholder","clearIndicator","spacing","dropdownIndicator","MultiSelect","creatable","getOptions","loadingIndicator","components","componentsProp","classesProp","stylesProp","onChangeProp","onInputChange","onInputChangeProp","menuPlacement","reactSelectProps","SelectComponent","AsyncSelect","Select","inputValue","setInputValue","multiSelectClasses","omit","inputId","multiSelectComponents","mergeClasses","indicatorSeparator","base","loadingMessage","fontFamily","labelProps","TextFieldProps","InputLabelProps","htmlFor","shrink","isMulti","actionMeta","action","closeMenuOnSelect","hideSelectedOptions","loadOptions","defaultProps","cacheOptions","defaultOptions","ClearIndicator","Control","DropdownIndicator","DownChevron","CrossIcon","Group","GroupHeading","IndicatorsContainer","IndicatorSeparator","Input","LoadingIndicator","Menu","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","MultiValue","MultiValueContainer","MultiValueLabel","MultiValueRemove","Placeholder","SelectContainer","SingleValue","ValueContainer","control","valueContainer","multiValue","noOptionsMessage","singleValue","menu","groupHeading","indicatorsContainer","menuList","menuPortal","multiValueLabel","multiValueRemove","menuPortalTarget","menuShouldBlockScroll","captureMenuScroll","getOptionValue","isSearchable","inputRef","profileBandNavigation","comments","ScreenProfileBand","historySlice","objectIds","getProfileBandObjectIdsForCollaboration","collaboration","useCollaboration","entityUri","CollaborationContext","ProfileBand","COMMENTS_CONTAINER_VISIBILITY_AREA","aEntity","ProfileBandHistory","ProfileBandNavigation","CommentsContainer","uri","relatedObjectUris","createRelatedObjectUris","CollaborationObjectTypes","objectType","alpha","buttonWrapper","iconButtonClasses","contentWrapper","transition","transitions","create","duration","enteringScreen","SidePanel","useOptionStyles","textItem","primaryTextItem","secondaryTextItem","icons","iconTop","zIndex","iconBottom","RelationOption","selectOption","startObject","endObject","EntityTypeIcon","entityType","RelationTypeSelector","textFieldProps","defaultTo","DropDownSelector","ValueType","renderAttributesList","valueContainerClassName","attributeValue","expanded","LabelRenderer","RightSlot","attributeType","DataTypes","attributeValues","imageSize","imageHeight","imageWidth","imageMargin","PerspectivesSettingsContext","React","settings","inRelations","outRelations","labelsMap","getDirectionalLabel","getDirectionalLabelFromObject","propOr","byLabel","ascend","prepareRelation","dirObject","Directions","directionalLabel","typeLabel","evolve","sort","split","propEq","FIVE_MINUTES","useSnackbar","showDismiss","dismissTitle","autoHideDuration","onDismissClick","isOpenSnackbar","setIsOpenSnackbar","snackbarMessage","setSnackbarMessage","closeSnackbar","handleSnackbarClose","_","reason","showSnackbarMessage","message","SnackbarRenderer","document","body","ActivePanel","ComparisonViewMode","ReloadDataContext","createContext","reloadData","addReloadHandler","removeReloadHandler","ReloadDataProvider","contextValue","reloadDataHandlers","forEach","reloadHandler","push","indexOf","splice","createContextValue","Provider","useReloadData","dataContext","Error","RESET","SET_OPTIONS","basicTableViewState","reset","createStandardAction","setOptions","reducer","state","payload","ViewStateContext","ViewDispatchContext","SET_GLOBAL_SPINNER","SET_SELECTED_ITEMS","DESELECT_BY_ENTITIES","TOGGLE_SELECT","ACTUALIZE_SELECTED_ITEMS_COLORS","SET_LIMIT_SELECTION","SET_COMPARISON_VIEW_MODE","SET_ENTITIES_MAP","DELETE_EXTRA_MATCHES","setGlobalSpinner","setSelectedItems","deselectByEntities","toggleSelect","actualizeSelectedItemsColors","setLimitSelection","setComparisonViewMode","setEntitiesMap","deleteExtraMatches","viewStateReducer","isGlobalSpinnerActive","slice","limitSelection","object","itemIndex","selectedItem","remove","append","entityColors","colors","selectedEntitiesUris","getEntityUriFromMatchObject","entityUrisWithoutColors","shift","newMode","comparisonViewMode","COLUMNS","entitiesMap","ViewStateProvider","dispatch","useReducer","getPotentialMatchesColor","viewStateAction","useActions","useViewState","viewStateContext","useViewStateActions","viewStateActions","createAttributeItemConfig","attrNode","parents","config","createAttributeItemBasicConfig","childNode","attrType","attributeUriToSearchUri","collectAttributeItems","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","MatchRulesAttrTypes","useMatchesReducer","defaultRowsPerPage","initState","stateReducer","resultActions","viewActions","viewState","showAddRelationErrors","error","console","ErrorPopup","showApiError","getRequestErrorMessage","showDCRReviewErrors","apiError","errorCode","ApiErrorCode","useSpinnerAndReloadData","onStartRequest","onFinishRequest","MergeButton","entities","onSuccess","onError","NotMatchButton","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","this","version","SetAMatchButton","markingIsInProgress","setAMatch","setAsMatch","then","catch","finally","useSetAMatch","SetAsMatchIcon","DCRReviewButton","SnackbarContext","operationIsInProgress","startPMReview","selectors","workflowPath","getWorkflowPath","environment","getWorkflowEnvironmentUrl","tenant","getTenant","getUri","uris","getUrisFromEntities","startProcessInstanceByPairs","processType","objectURIs","useRequestDCRReview","canStartProcessInstanceSearchQuery","isEmptyValue","DcrReviewIcon","ReinstateMatchButton","reinstateIsInProgress","onReinstateMatch","dtssPath","params","customerTenant","isDataTenantEntity","reinstateDataTenantEntityMatch","reinstateMixedEntitiesMatches","useReinstateMatch","CreateRelationButton","mainEntity","currentEntity","matchRules","permission","AddRelationIcon","RightSideHeaderContext","attributeSelect","field","sortLevel","findNode","parentFieldName","node","val","BasicAttributeSelector","rowCheckbox","alignSelf","header","border","sorting","arrow","rotate","selectedCount","totalCount","sortOptions","onSorting","totalOnPage","sidePanelHeaderProps","SidePanelContentHeader","secondTitle","n","indeterminate","IconButton","order","Order","useSortOptions","additionalOptions","entityTypeUri","getEntityType","getSortingItemsGroups","col","useEntityColor","entityColor","paddingBottom","entityHeader","wrapper","pointerEvents","borderLeft","paddingLeft","entityLabel","matchRulesWrapper","selectedRow","coloredRow","matchScore","commentsContainer","rightButton","tenantIcon","dividerWrapper","divider","borderColor","relevanceBadge","match","entityToMatch","isRowSelected","isColumnViewMode","actionButtonsRenderer","openMenu","setOpenMenu","isRowSelectable","Actions","showRelevanceBadge","matchRuleSummaries","checkMatchRuleSummaryRelevance","buttonClassName","hoveredMatch","onActionsMenuOpen","onActionsMenuClose","createObjectIdForPM","matchEntityUri","allowOnlyOneComment","showAlways","MatchRulesBlock","MatchRuleVariant","Divider","RelevanceScoreBadge","DataTenantBadge","dataTenantId","dataTenant","view","overflowX","MatchItems","matches","isLoading","LinearLoadIndicator","gap","inputRoot","menuButtonRoot","searchTenant","onChangeSearchTenant","currentSearchText","setCurrentSearchText","handleSearch","trim","handleChangeSearchText","newSearchText","isEmpty","activeElement","TenantsDropDownSelector","selectedTenant","onChangeTenant","SearchInput","autofocus","onKeyPress","MenuItemRenderer","ActionsPanel","numberOfButtons","actionButtonSize","buttonActions","menuActions","splitAt","buttonMode","buttonSize","actionButton","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","MoreVertIcon","moreOptions","menuId","menuItems","onMenuOpen","mainArea","FindMatchesView","changeRowsPerPage","changePage","searchText","setSearchText","setSearchTenant","handleChangeSearchTenant","newSearchTenant","requestFilters","total","findEntities","loading","enabled","searchTenantId","activityFilter","globalFilter","setLoading","setTotal","setEntities","safePromise","useSafePromise","DEFAULT_SELECTION","filterQuery","buildFilterQueryString","isDtss","dtssProps","entityRequestOptions","entityRequest","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","totalRequestOption","totalRequest","getTotalFromDataTenant","getTotals","Promise","all","results","totalResponse","useFindEntities","resetPage","resetSelected","selectAll","canMerge","canMark","getActionPermissionForMatch","isDTEntity","areBothEntitiesDT","show","pathEq","dialogPaper","dialogTitle","titleText","fontize","attributeList","useDispatch","containerRef","isNotDuplicatedInRelation","isNotDuplicatedOutRelation","inOutRelationsDeduplicator","setObjectTypes","assocPath","objectTypeURI","matchActionConfig","rulesConfig","getRulesConfig","relationTypeUris","createRelation","canCreateRelationBetweenEntities","getRelationType","getRelationTypesFromConfig","relationUri","relationAttrTypes","getRelationAttributesList","attributeListEntity","getActivenessAttributes","viewId","onRelationTypeChange","profile","onAddAttributes","param","onChangeAttribute","onDeleteAttribute","handleClose","resetErrors","validate","errors","validateConnectionRelation","boundariesElement","popupBoundariesValue","element","priority","PopupBoundariesContext","AttributesList","attrTypes","showEmptyEditors","ModeTypes","parentUri","startDate","endDate","startEntityUri","endEntityUri","async","markAsNotMatch","useAddRelationDialog","showDialog","setShowDialog","relationDialogContent","setRelationDialogContent","openAddRelationDialog","newConnection","generateNewRelationUri","isNew","createNewConnection","closeAddRelationDialog","AddRelationDialogRenderer","DEFAULT_OPTIONS","showTransitiveMatches","MatchesView","hasWorkflow","matchRulesFilters","regularFilters","partition","matchesFilter","loadMatches","rules","onStartLoading","onFinishLoading","useMatchesLoader","markMatchedValues","useMatches","getPotentialMatchesObjectIdsForCollaboration","keys","canAddRelation","hasDTEntity","every","EntitiesMapContext","NotMatchView","loadNotMatches","setMatches","dataTenants","dtssParams","dtssRequest","getNotMatchesFromDataTenants","getNotMatchWithDtss","withDtssPotentialItems","getNotMatch","getNotMatchWithPaging","usePagingSimulator","record","NOT_MATCH","loadNotMatchesIfNeeded","force","addGlobalFilterToQuery","activeness","response","originalResponse","getEntitiesMapForTransitiveMatches","useNotMatches","Content","activeView","PotentialMatches","FindMatches","NotAMatch","render","RightSidePanel","tabs","headerProps","MODES","ViewColumnRoundedIcon","TABLE","TableRowsOutlinedIcon","isTableOnly","ModeSwitcher","modes","baseMode","maxProfiles","modeId","clearAllButton","mergeButton","splitter","actionSplitter","getEntityObjects","TableHeader","selectedColumns","onChangeColumns","showNonOv","onChangeShowNonOv","getActionPermissionForMatches","hideMerge","hasSelectedItems","handleToggleShowOvValue","not","settingItems","BasicViewHeader","Spacer","SettingsMenu","ColumnsSettings","ExpandedContext","expandedMap","onExpandType","Component","WithExpanded","componentProps","matchedAttributeBackground","complexAttributesHeadRenderer","complexAttributesHeadLabel","arrowButton","matchedAttribute","badge","highlightedValuesUris","HighlightedValuesContext","areOneHierarchyUris","Tooltip","ExpandableAttributeValuesBlock","withExpanded","ReadOnlyAttributeValuesBlock","AttributesRenderer","matchedValuesUris","highlightedValuesContextValue","highlightedClassName","MatchedValuesCounter","ColumnDataContext","menuButtonWrapper","headCell","HeadCellRenderer","hideable","setAnchor","setHoveredId","hoveredId","ComplexAttributesHeadRenderer","onExpandClick","ArrowExpandButton","HoveredEntityContext","hoveredEntity","resetHoveredEntity","isEntityFindMatch","isEntityNotMatch","isEntityPotentialMatch","hovered","colored","removeButton","matchControlsContainer","isPotentialMatchesTask","task","WorkflowTasksAvailabilityContext","assigneeContainer","getCommentsInfoFromTasks","WorkflowCard","workflowTasks","matchUri","requestIsInProgress","setRequestIsInProgress","tasks","setTasks","defaultActionSuccessHandler","useWorkflowDefaultActionSuccessHandler","loadTasks","getTasksForEntity","hasMatchEntityUri","propSatisfies","isTaskBelongsToMatch","allPass","warn","updateTaskState","taskId","mergeLeft","onActionSuccess","useWorkflowTasks","setWorkflowTaskAvailability","workflowActions","actionRequestIsInProgress","useWorkflowActions","possibleActions","assignee","TaskActions","isInProgress","WorkflowTasksContext","PotentialMatchReviewCard","date","dueDate","processDefinitionDisplayName","createdBy","step","getPropsFromTasks","AssigneeSelector","isTaskOpen","WorkflowComments","preferredAction","DEFAULT_ROWS","draggable","initialWidth","autoResize","crosswalk","crosswalkIcon","labelContainer","spacer","ColoredSourceIcon","showTooltip","getSourceSystemLabel","crosswalks","checkIsDataTenantEntity","inline","additionalPropsForDefaultRows","cellRenderer","isSelectedEntity","onRemove","rest","isHovered","controlProps","CloseIcon","ProfileCard","MatchControls","headCellRenderer","workflowCard","sources","SourcesRenderer","reduce","nestedAttributeValue","subAttributeType","CrosswalksAttrTypes","getFakeAttributeValueForCrosswalk","score","relevanceScore","RelevanceScoreRenderer","defaultRows","getAttrTypeNameByUri","last","getMatchedValuesUris","matchedValues","cond","getColumnDataForRowData","onRemoveItem","isMainEntity","isAttributeSearchUri","attrSource","getAttributeSource","isOv","getAttributeValues","ColumnHandlerContext","getFirstLevelParentAttribute","replaceSubAttributesWithParent","uniq","Action","TEXT","INSERT_BELOW","INSERT_ABOVE","HIDE","Popover","List","handler","ListItemText","primaryTypographyProps","renderListItem","getClickHandler","deepFilter","nodes","groupColumnsData","groupedItems","headColumns","elemId","getAdditionalRows","setAction","isOpenConfigPopup","setIsOpenConfigPopup","closeAddRowPopup","newAttributes","ColumnsSettingsPopup","onColumnClick","newIndex","borderStyle","comparisonTableWrapper","collapsedRow","comparisonTable","borderSpacing","borderRight","verticalAlign","wordBreak","wordWrap","emptyState","ComparisonTable","setSelectedColumns","selectedRows","setSelectedRows","allRowsData","localSelectedRows","setLocalSelectedRows","localSelectedColumns","setLocalSelectedColumns","setHoveredEntity","anchor","selectedRowsWithoutSubAttributes","searchUri","defaultRow","attrTypeUri","searchUriToAttrUri","findAttributeTypeByUri","collectionName","isComplexAttribute","getTableRowsData","showNonOnly","isDraggable","getTableColumnsData","setExpandedMap","expandedContextValue","headCellData","onClosePopup","selectedAttributeUris","hoveredEntityContextValue","isThereAnyTask","workflowTasksAvailabilityMap","setWorkflowTasksAvailabilityMap","useWorkflowTasksAvailability","workflowCardRowClassname","displayedRowsData","rowClassName","VerticalHeadingsTable","theadRowsNumber","onMoveRow","dragId","hoverId","newArr","groupBy","getFirstLevelSearchUri","toPairs","dragIndex","hoverIndex","dragRow","insert","nth","onDropRow","onMoveColumn","dragColumn","onDropColumn","setHoveredColumn","columnValue","resetHoveredColumn","EmptyState","table","ComparisonView","defaultWrapperStyles","getColoredRowCellStyle","hoveredColor","lightPrimaryBackground","lighten","lightPrimaryBackgroundHovered","highlightBackground","entityBackground","rowCloseIcon","backgroundImage","firstHeadCell","headCellWithEntity","rowCell","rowCellFirstColumn","firstEntityCell","entityRowCell","entityRowCellSelected","rowCellHighlighted","rowCellSelected","defaultWrapper","hoveredDefaultWrapper","entityWrapper","profileWrapper","blobWrapper","imageWrapper","referenceWrapper","entityAvatar","dragIndicator","dragIndicatorIcon","ovFalse","inactive","expandButton","withFilterAtBottom","DefaultHeadCellRenderer","simpleValue","ov","DataTypeValue","withTableContext","onToggleSelect","isRowRemovable","hoverRowIndex","dragRef","containerId","IdContext","isRowHovered","isFirstRow","wrapperStyle","shouldRenderCommentsContainer","DragIndicator","isFirstColumn","headIndex","blobValue","onScroll","imgValue","src","getImageAttributeOvThumbnailUrl","getReferencedEntityFromAttrValue","objectURI","EntityRowCollapseContext","chipContainer","chipLabel","ChipWithTooltip","withTooltip","Chip","needShowChip","basicTableRowCollapseContext","BasicTableRowCollapseContext","collapseContext","maxRowValuesCount","collapsed","setCollapsed","toggleCollapsed","displayedCrosswalks","isShowDataTenant","hasCollapsedValue","getAttrPathFromColumnId","getBasicTableRowsData","allMatchRules","getAttributesForMatchRules","filteredColumnsData","acc","assoc","attrPath","ifElse","getAttributeValuesByPathWithOvFlag","getOvAttributeValuesByPathWithOvFlag","getRowValueForColumn","getNestedPathByColumnId","getCellValueRenderer","EntityProfileRenderer","MatchRulesRenderer","dataType","BlobRender","ImageRenderer","ReferenceRenderer","DefaultCellValueRenderer","getCellValueRendererByDataType","isAttributeCell","allValue","valuesCount","wrapInArrayIfNeeded","getAttributeValue","rich","isCellHighlighted","CellValueRenderer","columnIndex","cellWrapperClassName","someRowIsDragging","shouldRenderCell","tableContainer","rowActionButtonsWrapper","rowActionButtons","hoveredRowRightContentContainer","dragColumnHead","borderLeftColor","borderRightColor","dragColumnBody","sourcesCell","columnGap","rowGap","CommonRowCellRenderer","hoveredRowRightContent","actionsContent","tableRef","RowCellAutoSizer","getIdFromRowValue","onReorderingColumn","onFilter","onSort","onResetSelect","onSelectAll","isComparisonViewShown","orderedMatches","setOrderedMatches","onDndRowReorder","oldPosition","newPosition","move","setHoverRowIndex","tableRowsData","sortable","tableColumnsData","resizable","nestedPath","ProfileHeadCellRenderer","rowCellValueRenderer","getBasicTableColumnsData","entityRowData","onDndColumnReorder","what","where","oldPositionId","newPositionId","tableContext","isAllSelected","useDynamicRowCellHeight","openActionsMenu","setOpenActionsMenu","openCollaborationPopup","setOpenCollaborationPopup","onRowHover","prevHoverRowIndex","isChecked","onChangePopupVisibility","renderRowCell","getRowCellHeight","defaultGetRowCellHeight","tableClasses","getDynamicEntityCellHeight","changeEntityCellHeight","clearEntityHeightsCache","renderEntityCell","getEntityCellHeight","getRowHeight","getHeightForSubRow","entityTableRowsData","collapseContextValue","entityRowCollapseContext","useBasicTableCellRenderer","entityRowHeight","enhancedColumnsData","withEntityCell","EntityCellRenderer","withEntityCellValue","useLayoutEffect","BasicTable","fixFirstColumn","context","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","hoverStateEnabled","dndRowReorderingEnabled","dndColumnReorderingEnabled","dndColumnReorderingHandler","dndRowReorderingHandler","hoveredContentPosition","comparisonView","MatchReviewTable","isLoaded","savedState","onUpdateSavedState","initialRequestParam","useFirstPotentialMatches","allColumnsData","groupedColumnsData","defaultColumns","defaultColumnsData","additionalColumnsData","attrColumnsData","getEntityTypeMatchAttributes","matchAttrColumns","otherColumns","groupColumnsDataByMatchAttributes","useMatchesColumnsData","visibleColumns","setVisibleColumns","setShowNonOv","visibleColumnsData","comparisonViewProps","matchesTableProps","visibleAttributes","getFixedAttributesIds","getUnique","fixedAttributesIds","addFixedAttributes","has","DragAndDrop","flexBox","ChangeModeConfirmation","TableIcon","ConfirmationDialog","perspectiveView","default","potentialMatchesWrapper","potentialMatchesContainer","ValuesEditor","changeFilter","changeValue","newValues","InputProps","commonProps","wrapInArray","isMatchRuleAttrType","MatchRulesSelector","isSourceSystemAttrType","SourceSystemsSelector","optionLabel","potentialMatchesComponents","FilterSelector","FilterOptions","MatchesAttributesFiltersButton","attributeTypes","setShowTransitiveMatches","AttributesFiltersButton","dataReltioId","onTogglePopup","isFiltersApplied","FormControlLabel","light","sourceSystemsComponents","usePotentialMatchesRightSidePanelElements","matchesFilters","setMatchesFilters","matchesOptions","setMatchesOptions","findMatchesFilters","setFindMatchesFilters","notMatchFilters","setNotMatchFilters","matchesSorting","setMatchesSorting","findMatchesSorting","setFindMatchesSorting","notMatchSorting","setNotMatchSorting","setActive","analyticsAttributes","isReadableAttribute","getAttributeTypes","matchRulesAttributes","check","hasMatchRulesWithoutML","hasMlMatchRule","potentialMatchesAttributeTypes","PotentialMatchesAttrTypes","findMatchesAttributeTypes","EntityAttrTypes","onChangeMatchesFilters","PotentialMatchesIcon","mainTitle","rightContent","FindMatchesIcon","NotAMatchIcon","PotentialMatchesView","getSavedState","saveState","lastSavedState","updateSavedState","useSavedStateForEntityType","stateToSave","newSavedState","S","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","seed","store","getSavedStatePromisified","promisifyCallback","ViewIdContext","StylesProvider","LocalizationProvider","dateAdapter","AdapterMoment","floor"],"sourceRoot":""}
1
+ {"version":3,"file":"3358.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/ActionButton/styles.ts","webpack://@reltio/remotes/../components/src/components/ActionButton/ActionButton.tsx","webpack://@reltio/remotes/../components/src/components/AttributeGroupIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeGroupIcon/AttributeGroupIcon.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/AttributeTitle/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/helpers.ts","webpack://@reltio/remotes/../components/src/components/SelectAttributesList/styles.ts","webpack://@reltio/remotes/../components/src/components/SelectAttributesList/SelectAttributesList.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/BasicAttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/hooks/useDynamicRowCellHeight.ts","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/BasicTablePagination.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/CollapseRowButton/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/CollapseRowButton/CollapseRowButton.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/RowCellAutoSizer/RowCellAutoSizer.tsx","webpack://@reltio/remotes/../components/src/components/CollapseButton/styles.ts","webpack://@reltio/remotes/../components/src/components/CollapseButton/CollapseButton.tsx","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/ConfirmationDialog.tsx","webpack://@reltio/remotes/../components/src/components/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.js","webpack://@reltio/remotes/../components/src/components/EmptyState/styles.ts","webpack://@reltio/remotes/../components/src/components/EmptyState/EmptyState.tsx","webpack://@reltio/remotes/../components/src/icons/EmptySearchResults.tsx","webpack://@reltio/remotes/../components/src/icons/SelectAttributes.tsx","webpack://@reltio/remotes/../components/src/icons/NoData.tsx","webpack://@reltio/remotes/../components/src/icons/Error.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardContent/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardContent/ProfileCardContent.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardPlaceholder/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardPlaceholder/ProfileCardPlaceholder.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCard.tsx","webpack://@reltio/remotes/../components/src/components/ProfileResizablePanes/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileResizablePanes/ProfileResizablePanes.tsx","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/styles.ts","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyLogicOperator.tsx","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyFilter.tsx","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/styles.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/QueryBuilderRow.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/CreatableSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/Option.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/index.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/MultiSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/index.js","webpack://@reltio/remotes/../components/src/components/ScreenProfileBand/styles.ts","webpack://@reltio/remotes/../components/src/components/ScreenProfileBand/ScreenProfileBand.tsx","webpack://@reltio/remotes/../components/src/components/SideIconPanel/styles.ts","webpack://@reltio/remotes/../components/src/components/SideIconPanel/SideButtonsPanel.tsx","webpack://@reltio/remotes/../components/src/components/SidePanel/styles.ts","webpack://@reltio/remotes/../components/src/components/SidePanel/SidePanel.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/RelationTypeSelector/components/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/RelationTypeSelector/components/RelationOption.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/RelationTypeSelector/RelationTypeSelector.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributeValuesBlock/AttributeValuesBlock.tsx","webpack://@reltio/remotes/../components/src/contexts/PerspectivesSettingsContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useRelationTypeSelector.js","webpack://@reltio/remotes/../components/src/hooks/useSnackbar.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/views.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ReloadDataContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/helpers/stateReducer.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ViewStateContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/sortHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatchesReducer.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/utils/errors.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSpinnerAndReloadData.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/MergeButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/NotMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/setAsMatch.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/SetAMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSetAMatch.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/dcrReview.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/DcrReviewButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useRequestDCRReview.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useReinstateMatch.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/ReinstateMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/addRelationship.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/CreateRelationButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/RightSideHeaderContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/SortingFieldSelector/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/SortingFieldSelector/SortingFieldSelector.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanelHeader/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanelHeader/RightSidePanelHeader.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSortOptions.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useEntityColor.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ItemRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ItemRenderer/ItemRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchItems/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchItems/MatchItems.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/RightSideSearch/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/RightSideSearch/RightSideSearch.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ActionsPanel/MenuItemRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ActionsPanel/ActionsPanel.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/FindMatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useFindEntities.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/relationsHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/AddRelationDialog/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/AddRelationDialog/AddRelationDialog.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useAddRelationDialog.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/defaultOptions.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/MatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatches.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useNotMatches.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/NotMatchView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Content/Content.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewModeSwitcher/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewModeSwitcher/ComparisonViewModeSwitcher.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/TableHeader/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/TableHeader/TableHeader.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/ExpandedContext.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/withExpanded.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchedValuesCounter/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchedValuesCounter/MatchedValuesCounter.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/AttributesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ColumnsDataContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/HeadCellRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/HeadCellRenderer/HeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/ComplexAttributesHeadRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/HoveredEntityContext.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchControls/MatchControls.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/EntityCard/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/workflow.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/WorkflowTasksAvailabilityContext.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/WorkflowCard/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/WorkflowCard/WorkflowCard.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/defaultRows.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/LabelRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/CrosswalksRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/SourcesRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/SourcesRenderer/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/RelevanceScoreRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/RelevanceScoreRenderer/RelevanceScoreRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/helpers/tableHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/EntityCard/EntityCard.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchMethod/MatchMethod.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ColumnHandlerContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/AddRowPopups/ConfigRowPopup.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/AddRowPopups/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/AddRowPopups/AddRowPopups.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useWorkflowTasksAvailability.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/ComparisonTable.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/ComparisonView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/EntityProfileRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ProfileHeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/MatchRulesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/BlobRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ImageRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ReferenceRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/EntityRowCollapseContext.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/components/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/components/SourceChipWithTooltip.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/RelevanceScoreRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/dataHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/components/RowCellChipWithTooltip.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/CommonRowCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/MatchesTable.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/withEntityCellValue.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchReviewTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchReviewTable/MatchReviewTable.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useFirstPotentialMatches.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatchesColumnData.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchReviewTable/helpers/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ChangeModeConfirmation/TableIcon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ChangeModeConfirmation/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ChangeModeConfirmation/ChangeModeConfirmation.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/icons/potential-matches-icon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/icons/find-matches-icon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/icons/not-a-match-icon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/ValuesEditor/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/ValuesEditor/ValuesEditor.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/FilterSelector/FilterSelector.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/MatchesAttributesFiltersButton/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/MatchesAttributesFiltersButton/MatchesAttributesFiltersButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/usePotentialMatchesRightSidePanelElements.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/PotentialMatchesLoadIndicator/PotentialMatchesLoadIndicator.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/PotentialMatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/index.tsx","webpack://@reltio/remotes/./src/potential-matches.ts"],"sourcesContent":["import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n button: {\n whiteSpace: 'nowrap',\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: 0,\n padding: '9px 16px 9px 12px',\n '& svg g path, & svg path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n }\n },\n iconButton: {\n '& svg g path, & svg path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n }\n },\n startIcon: {\n marginLeft: 0,\n marginRight: '8px',\n width: '18px',\n height: '18px',\n alignItems: 'center'\n },\n overflowStyle: {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n },\n menuIcon: {\n marginRight: '12px'\n },\n menuItem: {\n minHeight: '28px',\n padding: '2px 16px 2px 12px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n }\n}));\n","import React, {forwardRef} from 'react';\nimport classnames from 'classnames';\nimport Button from '@mui/material/Button';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\n\nimport {useStyles} from './styles';\nimport {noop} from '../../core';\nimport ExpandedValueTooltip from '../ExpandedValueTooltip/ExpandedValueTooltip';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\n\nexport enum ActionButtonMode {\n iconButton = 'iconButton',\n button = 'button',\n menuItem = 'menuItem'\n}\n\nexport type Props = {\n className?: string;\n disabled?: boolean;\n icon: React.ElementType;\n label: string;\n mode: ActionButtonMode;\n onClick: () => void;\n onMenuClose?: () => void;\n};\n\nexport const ActionButton = forwardRef<HTMLLIElement, Props>(\n (\n {\n className,\n mode = ActionButtonMode.iconButton,\n label,\n disabled,\n icon: Icon,\n onClick = noop,\n onMenuClose = noop,\n ...otherProps\n }: Props,\n ref: React.Ref<HTMLLIElement>\n ) => {\n const styles = useStyles();\n\n const getButtonView = () => {\n switch (mode) {\n case 'iconButton': {\n return (\n <SmallIconButtonWithTooltip\n disabled={disabled}\n className={classnames(styles.iconButton, className)}\n size=\"S\"\n tooltipTitle={label}\n onClick={onClick}\n icon={Icon}\n showForDisabled\n {...otherProps}\n />\n );\n }\n case 'button': {\n return (\n <Button\n className={classnames(styles.button, className)}\n disabled={disabled}\n startIcon={<Icon />}\n onClick={onClick}\n color=\"primary\"\n classes={{startIcon: styles.startIcon}}\n {...otherProps}\n >\n <ExpandedValueTooltip value={label}>\n <div className={styles.overflowStyle}>{label}</div>\n </ExpandedValueTooltip>\n </Button>\n );\n }\n case 'menuItem': {\n const handleClick = () => {\n onMenuClose();\n onClick();\n };\n return (\n <MenuItem\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n {...otherProps}\n >\n <>\n <Icon className={styles.menuIcon} />\n <Typography classes={{root: styles.menuText}}>{label}</Typography>\n </>\n </MenuItem>\n );\n }\n }\n };\n\n return getButtonView();\n }\n);\n\nActionButton.displayName = 'ActionButton';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n icon: {\n maxHeight: '25px',\n maxWidth: '25px',\n marginRight: '16px'\n }\n});\n","import React from 'react';\nimport {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 {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n attribute: {\n cursor: 'pointer',\n lineHeight: '16px',\n flexBasis: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 10px 0 16px',\n width: 'calc(100% - 32px)',\n '&$attributeWithValue': {\n borderBottom: '1px solid rgba(0,0,0,0.38)'\n },\n '&$disabled': {\n cursor: 'default'\n }\n },\n disabled: {},\n attributeWithValue: {},\n noSelect: {},\n name: {\n fontSize: '14px',\n color: 'rgba(0,0,0,0.87)',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n direction: 'rtl',\n textAlign: 'left',\n flex: '1 0',\n width: '0',\n '& $noSelect': {\n color: 'rgba(0,0,0,0.38)'\n },\n '&$disabled': {\n color: 'rgba(0,0,0,0.26)',\n '& $noSelect': {\n color: 'rgba(0,0,0,0.26)'\n }\n }\n }\n});\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {either, prop} from 'ramda';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport SmallIconButton from '../../SmallIconButton/SmallIconButton';\nimport {AttributeSelectorItem} from '../../../types';\nimport useStyles from './styles';\n\ntype Value = {\n fieldName: string;\n title: string;\n};\ntype Props = {\n value: AttributeSelectorItem;\n disabled: boolean;\n getLabel: (value: Value) => string;\n onSelectAttributeClick: (event) => void;\n};\n\nconst defaultGetLabel = either(prop('title'), prop('fieldName'));\n\nconst AttributeTitle = ({value, getLabel = defaultGetLabel, onSelectAttributeClick, disabled = false}: Props) => {\n const styles = useStyles();\n const label = value && getLabel(value);\n return (\n <div\n onClick={disabled ? undefined : onSelectAttributeClick}\n className={classnames(\n styles.attribute,\n {\n [styles.attributeWithValue]: !!label\n },\n {[styles.disabled]: disabled}\n )}\n >\n <ExpandedValueTooltip value={label}>\n <div className={classnames(styles.name, {[styles.disabled]: disabled})}>\n {label || <span className={styles.noSelect}>{i18n.text('Select attribute')}</span>}\n </div>\n </ExpandedValueTooltip>\n <SmallIconButton size={'M'} icon={ArrowDropDownIcon} disabled={disabled} />\n </div>\n );\n};\n\nexport default AttributeTitle;\n","import {eqBy, pick, curry} from 'ramda';\nimport {getMaxItemWidth} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItem, AttributeSelectorItemsGroup} from '../../types';\n\nexport const isEqualAttributes = eqBy(pick(['fieldName', 'uri', 'entityTypeUri']));\n\nexport const checkAttributeIncludes = (attribute: AttributeSelectorItem, selectedAttributes: AttributeSelectorItem[]) =>\n selectedAttributes && !!selectedAttributes.find(isEqualAttributes(attribute));\n\nconst filterItem = (item: AttributeSelectorItem, filterText: string) =>\n item.title.toLowerCase().includes(filterText.toLowerCase());\n\nexport const filterItemsTree = (item: AttributeSelectorItem, filterText: string): boolean =>\n filterItem(item, filterText) || (item.children || []).some((item) => filterItemsTree(item, filterText));\n\nexport const filterSelectedAttributes = ({\n attribute,\n selectedAttributes,\n checked\n}: {\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n checked: boolean;\n}) => {\n return checked\n ? selectedAttributes.concat(attribute)\n : selectedAttributes.filter((selectedAttribute) => !isEqualAttributes(attribute, selectedAttribute));\n};\n\nexport const getAttributeIndex = (selectedAttributes: AttributeSelectorItem[], attribute: AttributeSelectorItem) =>\n selectedAttributes.findIndex(isEqualAttributes(attribute));\n\nexport const getContainerWidth = getMaxItemWidth('title');\n\nexport const getOnEnterHandler = ({\n onListItemClick,\n selectedAttributes\n}: {\n selectedAttributes: AttributeSelectorItem[];\n onListItemClick: (attribute: AttributeSelectorItem, checked: boolean) => void;\n}) => ({item, groupData}) => {\n const checked = checkAttributeIncludes(item, selectedAttributes);\n onListItemClick({...item, groupName: groupData.groupName}, !checked);\n};\n\nconst getAttributeGroupData = (\n item: AttributeSelectorItem,\n groupId: string,\n groupName: string,\n filterText: string,\n level = 0,\n noFilter = false\n) => {\n const isItemFiltered = filterItem(item, filterText);\n return [\n {\n item: filterText ? {...item, filterText} : item,\n level,\n groupId,\n groupName\n }\n ]\n .concat(\n item.children\n ? item.children\n .filter((subItem) => noFilter || isItemFiltered || filterItemsTree(subItem, filterText))\n .flatMap((subItem) =>\n getAttributeGroupData(\n subItem,\n groupId,\n groupName,\n filterText,\n level + 1,\n noFilter || isItemFiltered\n )\n )\n : []\n )\n .flat();\n};\n\nexport const prepareGroupsForSelectAttributeList: (\n filterText: string,\n groups: AttributeSelectorItemsGroup[]\n) => {item: AttributeSelectorItemsGroup[]; items: AttributeSelectorItem[]} = curry(\n (filterText: string, groups: AttributeSelectorItemsGroup[]) =>\n groups\n .map((group) => ({\n item: group,\n items: group.attributes\n .filter((attribute) => filterItemsTree(attribute, filterText))\n .map((item) => getAttributeGroupData(item, group.id, group.title, filterText))\n }))\n .filter((group) => group.items.length)\n);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n subHeader: {\n backgroundColor: '#f5f5f5',\n padding: '0 16px',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.84)',\n fontSize: '14px',\n fontWeight: 500\n }\n});\n","import React, {memo} from 'react';\nimport {useSelector} from 'react-redux';\nimport ListItem from '@mui/material/ListItem';\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 '@mui/styles';\n\nconst useStyles = makeStyles({\n selector: {\n minWidth: '200px',\n alignItems: 'stretch',\n background: 'rgba(0,0,0, 0.0267)',\n boxSizing: 'border-box',\n borderRadius: '4px',\n display: 'flex'\n }\n});\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {identity, pipe, tap, prop, flatten, pick, map, chain, when, always} from 'ramda';\nimport SelectionPopup from '../SelectionPopup/SelectionPopup';\nimport {useKeyboardNavigation} from '../SelectionPopup/helpers';\nimport AttributeTitle from './AttributeTitle/AttributeTitle';\nimport {\n filterSelectedAttributes,\n getAttributeIndex,\n getContainerWidth,\n getOnEnterHandler,\n prepareGroupsForSelectAttributeList\n} from './helpers';\nimport SelectAttributesList from '../SelectAttributesList/SelectAttributesList';\nimport {flattenGroupedItemsData} from '../VirtualGroupedList/helpers';\nimport {AttributeSelectorItem, BasicAttributeSelectorProps} from '../../types';\nimport useStyles from './styles';\n\nconst ATTRIBUTES_LIST_HEIGHT = 400;\nconst ATTRIBUTES_LIST_WIDTH = 308;\nconst ATTRIBUTES_POPUP_HEIGHT = 507;\n\nconst BasicAttributeSelector = ({\n className,\n itemsGroups,\n value,\n getLabel,\n onSelect,\n onRestoreFocus = identity,\n onOpenPopup = identity,\n disableRestoreFocus = false,\n disableEnforceFocus = false,\n single = false,\n ungroup = false,\n disabled = false,\n hideCheckBox = false\n}: BasicAttributeSelectorProps) => {\n const styles = useStyles();\n const [selectAnchor, setSelectAnchor] = useState(null);\n const openPopup = (event) => {\n onOpenPopup();\n setSelectAnchor(event.currentTarget);\n };\n const closePopup = useCallback(() => setSelectAnchor(null), []);\n const isPopupOpen = !!selectAnchor;\n\n const [filterText, setFilterText] = useState('');\n const clearFilterText = useCallback(() => setFilterText(''), []);\n\n const [selectedAttributes, setSelectedAttributes] = useState([]);\n const clearSelectedAttributes = useCallback(() => setSelectedAttributes([]), []);\n\n const filteredItemsGroups = useMemo(\n () => prepareGroupsForSelectAttributeList(filterText, itemsGroups),\n [itemsGroups, filterText]\n );\n\n const items = useMemo(\n () =>\n pipe(\n when(always(ungroup), chain(pipe(prop('items'), flatten, map(pick(['item', 'level']))))),\n flattenGroupedItemsData\n )(filteredItemsGroups),\n [ungroup, filteredItemsGroups]\n );\n\n const containerWidth = useMemo(\n () => Math.max(getContainerWidth(filteredItemsGroups), ATTRIBUTES_LIST_WIDTH),\n [filteredItemsGroups]\n );\n\n const handleOnClose = pipe(tap(pipe(clearSelectedAttributes, clearFilterText, closePopup)), onRestoreFocus);\n\n const searchInputRef = useRef<HTMLInputElement>();\n\n const onListItemClick = useCallback(\n (attribute: AttributeSelectorItem, checked: boolean) => {\n onSelect({\n checked,\n attribute,\n index: checked ? selectedAttributes.length : getAttributeIndex(selectedAttributes, attribute),\n selectedAttributes\n });\n\n if (single) {\n setSelectedAttributes(checked ? [attribute] : []);\n handleOnClose({});\n } else {\n setSelectedAttributes(filterSelectedAttributes({selectedAttributes, attribute, checked}));\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n },\n [selectedAttributes, onSelect, single, handleOnClose, searchInputRef]\n );\n\n const handleSearchOnEnter = useCallback(getOnEnterHandler({onListItemClick, selectedAttributes}), [\n onListItemClick,\n selectedAttributes\n ]);\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: isPopupOpen,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems: selectedAttributes,\n onClose: handleOnClose\n });\n\n return (\n <div className={classnames(styles.selector, className)} data-reltio-id=\"attribute-selector\">\n <AttributeTitle value={value} getLabel={getLabel} onSelectAttributeClick={openPopup} disabled={disabled} />\n <SelectionPopup\n open={isPopupOpen}\n anchorEl={selectAnchor}\n onClose={handleOnClose}\n onSearch={setFilterText}\n title={i18n.text('Select attribute')}\n containerWidth={containerWidth}\n containerHeight={ATTRIBUTES_POPUP_HEIGHT}\n searchInputOnKeyDown={handleKeyDown}\n anchorOrigin={{horizontal: 'right', vertical: 'bottom'}}\n searchInputRef={searchInputRef}\n disableRestoreFocus={disableRestoreFocus}\n disableEnforceFocus={disableEnforceFocus}\n >\n <SelectAttributesList\n items={items}\n onItemClick={onListItemClick}\n selectedAttributes={selectedAttributes}\n width={containerWidth}\n height={ATTRIBUTES_LIST_HEIGHT}\n focusIndex={focusIndex}\n hideCheckBox={hideCheckBox}\n />\n </SelectionPopup>\n </div>\n );\n};\n\nexport default memo(BasicAttributeSelector);\n","import {useCallback, useRef, useState} from 'react';\nimport {__, curry, identity, pipe, prop, useWith, equals} from 'ramda';\nimport {debounce} from '@reltio/mdm-sdk';\nimport {ColumnData, RowValue} from '../../types';\n\ntype GetRowCellKeyProps = {\n rowIndex: number;\n cellIndex: number;\n columnData: ColumnData;\n rowValue: RowValue;\n};\n\ntype RowCellHeightsMap = Record<string, number>;\n\nconst defaultGetRowCellKey = ({rowIndex, columnData: {id}, cellIndex}: GetRowCellKeyProps) => `${id}[${rowIndex}][${cellIndex}]`;\n\nconst useDynamicRowCellHeight = (getRowCellKey = defaultGetRowCellKey) => {\n const [rowCellHeightsMap, setRowCellHeightsMap] = useState<RowCellHeightsMap>({});\n const rowCellHeightsMapCache = useRef<RowCellHeightsMap>({});\n const batchHeightUpdate = (key: string, value: number) => {\n rowCellHeightsMapCache.current[key] = value;\n };\n const flushHeightUpdates = useCallback(\n debounce(() => {\n setRowCellHeightsMap((prev) => {\n const next = {...rowCellHeightsMapCache.current};\n return equals(prev, next) ? prev : next;\n });\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 '@mui/styles';\n\nexport const useStyles = makeStyles({\n pagination: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n height: '56px',\n flexShrink: 0,\n borderTop: '1px solid rgba(0,0,0,0.12)',\n boxShadow: 'none',\n boxSizing: 'border-box',\n overflowY: 'hidden',\n containerType: 'inline-size',\n '& .MuiInputBase-root': {\n display: 'none',\n '@container (min-width: 420px)': {\n display: 'inline-flex'\n }\n }\n },\n caption: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px',\n display: 'none',\n '@container (min-width: 420px)': {\n display: 'block'\n }\n },\n displayedRows: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px'\n },\n selectRoot: {\n marginLeft: '5px',\n marginRight: '36px'\n },\n select: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px',\n textAlign: 'right'\n },\n actions: {\n marginLeft: '32px!important' //we need it, because of the more specific rule in the mui\n }\n});\n","import React, {useCallback, memo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getValue} from '../../../core/utils';\nimport {nthArg, pipe, pathOr, identity} from 'ramda';\nimport TablePagination, {TablePaginationProps} from '@mui/material/TablePagination';\n\nimport {useStyles} from './styles';\n\ntype BasicTablePaginationProps = {\n classes?: TablePaginationProps['classes'];\n basicTableRef?: React.Ref<HTMLElement>;\n count?: number;\n page?: number;\n rowsPerPage?: number;\n labelRowsPerPage?: React.ReactNode;\n rowsPerPageOptions?: TablePaginationProps['rowsPerPageOptions'];\n onChangePage?: (value: number) => void;\n onChangeRowsPerPage?: (value: number) => void;\n};\n\nconst BasicTablePagination = ({\n classes = {},\n count,\n rowsPerPageOptions,\n page,\n onChangePage,\n rowsPerPage,\n onChangeRowsPerPage,\n basicTableRef,\n labelRowsPerPage\n}: BasicTablePaginationProps) => {\n const styles = useStyles();\n\n const labelDisplayedRows = ({from, to, count}) =>\n i18n.text('${fromRow}-${toRow} of ${countRows}', {\n fromRow: i18n.number(from, '0,0'),\n toRow: i18n.number(to, '0,0'),\n countRows: i18n.number(count, '0,0')\n });\n\n const resetScrollbarPosition = useCallback(() => {\n pathOr(identity, ['current', 'resetScrollbarPosition'], basicTableRef)();\n }, [basicTableRef]);\n\n const handleChangePage = useCallback(\n (value: number) => {\n onChangePage(value);\n resetScrollbarPosition();\n },\n [onChangePage, resetScrollbarPosition]\n );\n const handleChangeRowsPerPage = useCallback(\n (value: number) => {\n onChangePage(0);\n onChangeRowsPerPage(value);\n resetScrollbarPosition();\n },\n [onChangePage, onChangeRowsPerPage, resetScrollbarPosition]\n );\n\n return (\n <TablePagination\n classes={{\n ...classes,\n root: classnames(styles.pagination, classes.root),\n select: classnames(styles.select, classes.select),\n selectLabel: classnames(styles.caption, classes.selectLabel),\n displayedRows: classnames(styles.displayedRows, classes.displayedRows),\n input: classnames(styles.selectRoot, classes.selectRoot),\n actions: styles.actions\n }}\n backIconButtonProps={{size: 'large'}}\n nextIconButtonProps={{size: 'large'}}\n component=\"div\"\n labelRowsPerPage={labelRowsPerPage || i18n.text('Rows per page:')}\n labelDisplayedRows={labelDisplayedRows}\n count={count}\n rowsPerPageOptions={rowsPerPageOptions}\n page={page}\n onPageChange={pipe(nthArg(1), handleChangePage)}\n rowsPerPage={rowsPerPage}\n onRowsPerPageChange={pipe(getValue, handleChangeRowsPerPage)}\n />\n );\n};\n\nBasicTablePagination.displayName = 'BasicTablePagination';\n\nexport default memo(BasicTablePagination);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n hidden: {\n visibility: 'hidden'\n }\n}));\n","import React, {useContext} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {RowCollapseContext} from '../BasicTable/contexts/RowCollapseContext';\nimport CollapseButton from '../../CollapseButton/CollapseButton';\n\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst CollapseRowButton = ({rowIndex, rowValue, className}) => {\n const styles = useStyles();\n const {toggleRowCollapse, getIsRowCollapsible, getIsRowCollapsed} = useContext(RowCollapseContext);\n\n const isCollapsibleRow = getIsRowCollapsible(rowValue);\n const isCollapsedRow = getIsRowCollapsed(rowIndex);\n\n return (\n <CollapseButton\n className={classnames(className, {[styles.hidden]: !isCollapsibleRow})}\n isOpen={!isCollapsedRow}\n onClick={(e) => {\n toggleRowCollapse(rowIndex);\n e.stopPropagation();\n }}\n />\n );\n};\n\nCollapseRowButton.propTypes = {\n rowIndex: PropTypes.number,\n rowValue: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default CollapseRowButton;\n","import React, {ReactNode, useEffect, useRef} from 'react';\n\nimport ReactResizeDetector from 'react-resize-detector';\nimport {useDidUpdateEffect} from '../../../hooks';\nimport {ColumnData, RenderRowCellProps, RowValue} from '../types';\n\ntype OnChangeHeightProps = {\n rowIndex: number;\n cellIndex: number;\n columnData: ColumnData;\n rowValue: RowValue;\n};\n\ntype Props = {\n onChangeHeight: (props: OnChangeHeightProps) => (size: number) => void;\n children: ReactNode;\n} & RenderRowCellProps;\n\nconst RowCellAutoSizer = ({onChangeHeight, children: cell, ...cellProps}: Props) => {\n const cellRef = useRef<HTMLDivElement>();\n const {rowValue, rowIndex, columnData, cellIndex} = cellProps;\n const changeCellHeight = onChangeHeight({rowIndex, cellIndex, columnData, rowValue});\n\n const adjustCellHeight = () => cellRef.current && changeCellHeight(cellRef.current.clientHeight);\n\n useDidUpdateEffect(adjustCellHeight, [rowValue.rawValue]);\n useEffect(() => () => changeCellHeight(undefined), []);\n\n return (\n <div ref={cellRef}>\n <ReactResizeDetector handleHeight onResize={adjustCellHeight} />\n {cell}\n </div>\n );\n};\n\nexport default RowCellAutoSizer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n collapseButton: {\n cursor: 'pointer'\n },\n expandLess: {\n transform: 'rotate( -180deg )'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport ExpandMore from '@mui/icons-material/ExpandMore';\nimport {useStyles} from './styles';\n\ntype SmallIconButtonWithTooltipProps = React.ComponentPropsWithoutRef<typeof SmallIconButtonWithTooltip>;\n\ntype Props = Omit<SmallIconButtonWithTooltipProps, 'tooltipTitle'> & {\n isOpen?: boolean;\n tooltipTitle?: string;\n};\n\nconst CollapseButton = ({isOpen = false, tooltipTitle, ...otherProps}: Props) => {\n const styles = useStyles();\n const buttonProps = {\n icon: ExpandMore,\n className: styles.collapseButton,\n iconClassName: classnames({[styles.expandLess]: isOpen})\n };\n const tooltipProps = {\n tooltipTitle: tooltipTitle\n };\n return (\n <SmallIconButtonWithTooltip\n data-reltio-id=\"collapse-button\"\n {...buttonProps}\n {...tooltipProps}\n {...otherProps}\n />\n );\n};\n\nexport default CollapseButton;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n paper: {\n minHeight: '180px'\n },\n title: {\n padding: '16px 16px 10px 16px',\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px'\n },\n content: {\n padding: '0 16px'\n },\n contentText: {\n marginBottom: 0,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '24px'\n },\n actionButtons: {\n display: 'flex',\n paddingTop: '4px',\n fontSize: '14px',\n fontWeight: 500,\n letterSpacing: 0,\n lineHeight: '16px',\n '& > div': {\n marginLeft: 'auto'\n }\n },\n discardButton: {\n marginRight: '8px'\n }\n});\n\nexport {useStyles};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\n\nimport {useStyles} from './styles';\n\nexport type Props = {\n open: boolean;\n title: React.ReactNode;\n content: React.ReactNode;\n cancelCaption?: string;\n discardCaption?: string;\n saveCaption?: string;\n disabledSave?: boolean;\n onCancel?: () => void;\n onDiscard?: () => void;\n onSave: () => void;\n};\n\nconst ConfirmationDialog = ({\n open,\n title,\n content,\n onCancel,\n cancelCaption = i18n.text('Cancel'),\n onDiscard,\n discardCaption = '',\n onSave,\n saveCaption = i18n.text('Save'),\n disabledSave = false\n}: Props) => {\n const styles = useStyles();\n\n return (\n <Dialog open={open} onClose={onCancel} classes={{paperScrollPaper: styles.paper}}>\n <DialogTitle classes={{root: styles.title}}>{title}</DialogTitle>\n <DialogContent classes={{root: styles.content}}>\n <DialogContentText classes={{root: styles.contentText}}>{content}</DialogContentText>\n </DialogContent>\n <DialogActions className={styles.actionButtons} disableSpacing>\n {onCancel && <Button onClick={onCancel}>{cancelCaption}</Button>}\n <div>\n {onDiscard && (\n <Button onClick={onDiscard} classes={{root: styles.discardButton}}>\n {discardCaption}\n </Button>\n )}\n <Button onClick={onSave} color=\"primary\" disabled={disabledSave} autoFocus>\n {saveCaption}\n </Button>\n </div>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default ConfirmationDialog;\n","import React, {useMemo, useCallback, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {ConnectionRelationType, RelationTypeType} from '@reltio/mdm-sdk';\nimport {identity, pipe} from 'ramda';\nimport {useRelationTypeSelector} from '../../hooks';\nimport RelationTypeSelector from '../attributes/editMode/RelationTypeSelector/RelationTypeSelector';\n\nconst ConnectionRelationTypeSelector = ({\n relation = {},\n inRelationTypes = [],\n outRelationTypes = [],\n onChange = identity,\n applyFirstByDefault = false,\n reversedContextLabels = false,\n ...otherProps\n}) => {\n const {getRelationTypesOptions, fromEditorValue, toEditorValue} = useRelationTypeSelector({reversedContextLabels});\n\n const relationsTypesOptions = useMemo(\n () => getRelationTypesOptions(inRelationTypes, outRelationTypes),\n [getRelationTypesOptions, inRelationTypes, outRelationTypes]\n );\n\n const handleChange = useCallback(pipe(fromEditorValue(inRelationTypes, outRelationTypes), onChange), [\n fromEditorValue,\n inRelationTypes,\n outRelationTypes,\n onChange\n ]);\n\n const hasValue = !!relation.relationType;\n\n useEffect(() => {\n if (applyFirstByDefault && relationsTypesOptions.length && !hasValue) {\n handleChange(relationsTypesOptions[0]);\n }\n }, [relationsTypesOptions, applyFirstByDefault, handleChange, hasValue]);\n\n return (\n <RelationTypeSelector\n value={toEditorValue(relation, relationsTypesOptions)}\n options={relationsTypesOptions}\n onChange={handleChange}\n {...otherProps}\n />\n );\n};\n\nConnectionRelationTypeSelector.propTypes = {\n className: PropTypes.string,\n relation: ConnectionRelationType,\n inRelationTypes: PropTypes.arrayOf(RelationTypeType),\n outRelationTypes: PropTypes.arrayOf(RelationTypeType),\n applyFirstByDefault: PropTypes.bool,\n reversedContextLabels: PropTypes.bool,\n onChange: PropTypes.func\n};\n\nexport default ConnectionRelationTypeSelector;\n","import {makeStyles} from '@mui/styles';\n\nconst maxWidth = 500;\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flex: '1 1 auto',\n flexWrap: 'nowrap',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '10px',\n overflow: 'auto',\n height: '100%',\n minHeight: '350px',\n boxSizing: 'border-box',\n '&$root_small': {\n minHeight: '160px'\n },\n '& $text': {\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n lineHeight: '24px',\n letterSpacing: '0.25px',\n textAlign: 'center'\n },\n '& $secondaryText': {\n color: theme.palette.text.secondary,\n fontSize: '15px',\n fontWeight: 300,\n lineHeight: '18px',\n letterSpacing: '0.11px',\n textAlign: 'center',\n paddingTop: '3px'\n }\n },\n root_small: {},\n embedded: {\n flexShrink: 0,\n width: '190px',\n height: '190px',\n padding: '8px'\n },\n full: {\n width: '256px',\n height: '256px'\n },\n textBox: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n maxWidth: maxWidth,\n marginTop: '16px'\n },\n text: {},\n secondaryText: {},\n button: {\n minHeight: 36,\n minWidth: 64,\n maxWidth: maxWidth,\n padding: '10px 16px',\n borderRadius: '2px',\n boxShadow:\n '0 0 2px 0 rgba(0,0,0,0.12), 0 2px 2px 0 rgba(0,0,0,0.24), 0 0 8px 0 rgba(0,0,0,0.12), 0 8px 8px 0 rgba(0,0,0,0.24)',\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px',\n marginTop: '24px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {identity} from 'ramda';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport EmptySearchResultsIcon from '../../icons/EmptySearchResults';\nimport SelectAttributesIcon from '../../icons/SelectAttributes';\nimport NoData from '../../icons/NoData';\nimport Error from '../../icons/Error';\nimport {useStyles} from './styles';\n\nexport enum EMPTY_STATE_VARIANTS {\n full = 'full',\n embedded = 'embedded',\n small = 'small'\n}\n\nexport const EMPTY_STATE_ICONS = {\n SEARCH_RESULTS: EmptySearchResultsIcon,\n SELECT_ATTRIBUTES: SelectAttributesIcon,\n NO_DATA: NoData,\n ERROR: Error\n};\n\ntype Props = {\n variant?: EMPTY_STATE_VARIANTS;\n LogoRenderer?: React.ElementType;\n text: string;\n secondaryText?: string;\n buttonTitle?: string;\n access?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n};\n\nconst EmptyState = ({\n variant = EMPTY_STATE_VARIANTS.full,\n LogoRenderer = EMPTY_STATE_ICONS.SEARCH_RESULTS,\n text,\n secondaryText,\n buttonTitle,\n onClick = identity,\n access\n}: Props) => {\n const styles = useStyles();\n const showButton = access && buttonTitle;\n\n return (\n <div className={classnames(styles.root, styles[`root_${variant}`])}>\n <LogoRenderer className={styles[`${variant}`]} />\n <div className={styles.textBox}>\n <Typography variant=\"h5\" classes={{h5: styles.text}}>\n {text}\n </Typography>\n {secondaryText && (\n <Typography variant=\"subtitle1\" classes={{subtitle1: styles.secondaryText}}>\n {secondaryText}\n </Typography>\n )}\n </div>\n {showButton && (\n <Button className={styles.button} variant=\"contained\" color=\"primary\" onClick={onClick}>\n {buttonTitle}\n </Button>\n )}\n </div>\n );\n};\n\nexport default EmptyState;\n","import React from 'react';\n\nconst SvgEmptySearchResults: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <radialGradient\n cx=\"50%\"\n cy=\"100%\"\n fx=\"50%\"\n fy=\"100%\"\n r=\"81.681%\"\n gradientTransform=\"matrix(.98998 0 0 .612 .005 .388)\"\n id=\"EmptySearchResults_svg__c\"\n >\n <stop stopColor=\"#00BFFF\" stopOpacity={0.5} offset=\"0%\" />\n <stop stopColor=\"#9EE8FF\" stopOpacity={0} offset=\"100%\" />\n </radialGradient>\n <radialGradient\n cx=\"50%\"\n cy=\"111.651%\"\n fx=\"50%\"\n fy=\"111.651%\"\n r=\"87.693%\"\n gradientTransform=\"matrix(0 -.97693 .7263 0 -.31 1.605)\"\n id=\"EmptySearchResults_svg__f\"\n >\n <stop stopColor=\"#91F8E5\" stopOpacity={0.6} offset=\"0%\" />\n <stop stopColor=\"#14F7FF\" stopOpacity={0} offset=\"100%\" />\n </radialGradient>\n <radialGradient\n cx=\"50%\"\n cy=\"103.659%\"\n fx=\"50%\"\n fy=\"103.659%\"\n r=\"90.207%\"\n gradientTransform=\"matrix(0 -1 2.23905 0 -1.821 1.537)\"\n id=\"EmptySearchResults_svg__g\"\n >\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#73FAFF\" stopOpacity={0.21} offset=\"59.38%\" />\n <stop stopColor=\"#14F7FF\" stopOpacity={0} offset=\"100%\" />\n </radialGradient>\n <linearGradient x1=\"50%\" y1=\"170.771%\" x2=\"50%\" y2=\"10.303%\" id=\"EmptySearchResults_svg__e\">\n <stop stopColor=\"#91F8E5\" offset=\"0%\" />\n <stop stopColor=\"#99FCFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <filter\n x=\"-25.9%\"\n y=\"-26.2%\"\n width=\"151.8%\"\n height=\"152.3%\"\n filterUnits=\"objectBoundingBox\"\n id=\"EmptySearchResults_svg__d\"\n >\n <feGaussianBlur stdDeviation={15} in=\"SourceGraphic\" />\n </filter>\n <circle id=\"EmptySearchResults_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"EmptySearchResults_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#EmptySearchResults_svg__a\" />\n </mask>\n <use fillOpacity={0.2} fill=\"#A792CD\" xlinkHref=\"#EmptySearchResults_svg__a\" />\n <g mask=\"url(#EmptySearchResults_svg__b)\">\n <g transform=\"translate(56 34)\">\n <g opacity={0.9} strokeWidth={1} fill=\"#FFF\">\n <path d=\"M0 6.99C0 3.13 3.137 0 7 0h247.067c3.866 0 7 3.144 7 6.99v169.353c0 3.86-3.137 6.99-7 6.99H7c-3.866 0-7-3.143-7-6.99V6.99z\" />\n <path\n d=\"M13 25.99c0-3.86 3.137-6.99 7-6.99h247.067c3.866 0 7 3.144 7 6.99v169.353c0 3.86-3.137 6.99-7 6.99H20c-3.866 0-7-3.143-7-6.99V25.99z\"\n opacity={0.4}\n />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(21.756 45.833)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={213.204} cy={5.456} rx={4.351} ry={4.365} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={197.976} cy={5.456} rx={4.351} ry={4.365} />\n <path\n d=\"M10.334 1.091c5.707 0 10.334 4.627 10.334 10.334v.067c0 5.707-4.627 10.333-10.334 10.333S0 17.2 0 11.492v-.067C0 5.718 4.627 1.091 10.334 1.091z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M35.365.861h69.768a3.82 3.82 0 010 7.639H35.365a3.82 3.82 0 010-7.639z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M34.274 15.048h126.164a2.728 2.728 0 010 5.456H34.274a2.728 2.728 0 110-5.456z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M33.182 24.869H73.89a1.637 1.637 0 110 3.274H33.182a1.637 1.637 0 010-3.274z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <rect\n fill=\"#645F6D\"\n opacity={0.5}\n x={21.756}\n y={17.46}\n width={87.022}\n height={12.004}\n rx={6.002}\n />\n <g strokeWidth={1} fill=\"none\" transform=\"translate(21.756 87.302)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={213.204} cy={5.456} rx={4.351} ry={4.365} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={197.976} cy={5.456} rx={4.351} ry={4.365} />\n <rect fill=\"#E3EBF4\" x={0} y={1.091} width={20.668} height={20.734} rx={10.334} />\n <path\n d=\"M35.365.861h82.647a3.82 3.82 0 010 7.639H35.365a3.82 3.82 0 010-7.639z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M34.274 15.048H174.58a2.728 2.728 0 010 5.456H34.274a2.728 2.728 0 110-5.456z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M33.182 24.869h113.119a1.637 1.637 0 110 3.274H33.182a1.637 1.637 0 010-3.274z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(21.756 128.77)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={213.204} cy={5.456} rx={4.351} ry={4.365} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={197.976} cy={5.456} rx={4.351} ry={4.365} />\n <path\n d=\"M10.334 1.091c5.707 0 10.334 4.627 10.334 10.334v.067c0 5.707-4.627 10.333-10.334 10.333S0 17.2 0 11.492v-.067C0 5.718 4.627 1.091 10.334 1.091z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M35.365.861h110.929a3.82 3.82 0 010 7.639H35.365a3.82 3.82 0 010-7.639z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M34.274 15.048h92.443a2.728 2.728 0 010 5.456H34.274a2.728 2.728 0 110-5.456z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M33.182 24.869H73.89a1.637 1.637 0 110 3.274H33.182a1.637 1.637 0 010-3.274z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n </g>\n </g>\n <g mask=\"url(#EmptySearchResults_svg__b)\">\n <path\n fill=\"#446275\"\n d=\"M72.246 84.033l8.66 5-35.5 61.488-8.66-5-12.556-24.729-51.307-29.622 20.431-35.388 50.648 29.242z\"\n />\n <path\n d=\"M62.906 120.21l-80.091-46.24 10.5-18.188 50.647 29.242 28.284-.99 8.66 5-18 31.176z\"\n fillOpacity={0.2}\n fill=\"#FFF\"\n />\n <path\n d=\"M27.566 75.558L3.877 109.065l-5.013-2.895 26.045-32.146 2.657 1.534zm9.467 5.466L13.345 114.53l-5.014-2.895L34.377 79.49l2.656 1.534zm8.158 4.71l-22.32 34.297-5.013-2.895L43.903 84.99l1.288.744z\"\n fill=\"#527585\"\n />\n <path\n d=\"M11.524 90.544l13.385-16.52 2.657 1.534-12.174 17.22-3.868-2.234zm9.467 5.467L34.377 79.49l2.656 1.534-12.174 17.22-3.868-2.233zm9.527 5.5L43.903 84.99l1.288.744-11.47 17.626-3.203-1.85z\"\n fill=\"#76A2B5\"\n opacity={0.6}\n />\n <path\n d=\"M.355 59.848l-23.689 33.507-5.013-2.895 26.045-32.146 2.657 1.534zm9.468 5.466L-13.866 98.82l-5.013-2.895L7.166 63.78l2.657 1.534zm8.158 4.71L-4.34 104.32l-5.014-2.895L16.692 69.28l1.289.744z\"\n fillOpacity={0.1}\n fill=\"#000\"\n />\n <g>\n <path\n fill=\"url(#EmptySearchResults_svg__c)\"\n opacity={0.993}\n filter=\"url(#EmptySearchResults_svg__d)\"\n d=\"M.63 0h173.74L123 172H52z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path\n fill=\"url(#EmptySearchResults_svg__e)\"\n opacity={0.3}\n d=\"M4 9h166.37L120.73 172.299H53.64z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path\n fill=\"url(#EmptySearchResults_svg__f)\"\n opacity={0.3}\n d=\"M4 2h166.37L120.73 172.299H53.64z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path\n fill=\"url(#EmptySearchResults_svg__g)\"\n d=\"M4 9h166.37L120.73 172.299H53.64z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path fill=\"#FFF\" opacity={0.196} d=\"M212.363 205.344l-1 1.732L60.418 124.52l4.977-8.62z\" />\n </g>\n <path fill=\"#76A2B5\" d=\"M73.112 84.533l-35.5 61.488-.866-.5 35.5-61.488z\" />\n <path fill=\"#F3F3F3\" d=\"M80.906 89.033l-35.5 61.488-.866-.5 35.5-61.488z\" />\n <path fill=\"#538196\" d=\"M55.112 115.71l-17.5 30.311-.866-.5 17.5-30.31z\" />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgEmptySearchResults;\n","import React from 'react';\n\nconst SvgSelectAttributes: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={256} height={256} viewBox=\"0 0 256 256\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <circle cx={128} cy={128} r={128} fill=\"#0072CE\" fillOpacity={0.1} />\n <mask\n id=\"SelectAttributes_svg__a\"\n style={{\n maskType: 'alpha'\n }}\n maskUnits=\"userSpaceOnUse\"\n x={0}\n y={0}\n width={256}\n height={256}\n >\n <circle cx={128} cy={128} r={128} fill=\"#fff\" />\n </mask>\n <g mask=\"url(#SelectAttributes_svg__a)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M-16 9h256v247H-16V9z\"\n fill=\"url(#SelectAttributes_svg__paint0_linear_0_19219)\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M187.761 56.865l58.639 58.639v148.871H93.383L52 225.083V56.865h135.761z\"\n fill=\"url(#SelectAttributes_svg__paint1_linear_0_19219)\"\n />\n <path\n opacity={0.06}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M47 58h202a7 7 0 017 7v157a7 7 0 01-7 7H47a7 7 0 01-7-7V65a7 7 0 017-7z\"\n fill=\"#000\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M50 56h201a5 5 0 015 5v157a5 5 0 01-5 5H50a5 5 0 01-5-5V61a5 5 0 015-5z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 72.635a3 3 0 013-3H150a3 3 0 110 6h-41.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 84.635a3 3 0 013-3h64.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 163a3 3 0 013-3H150a3 3 0 110 6h-41.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 175a3 3 0 013-3h64.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 193a3 3 0 013-3H190a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 205a3 3 0 013-3h74.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138.376 103a3 3 0 013-3H223a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138 115a3 3 0 013-3h64.205a3 3 0 110 6H141a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <circle cx={67} cy={79} r={9} fill=\"#B6C7DB\" />\n <circle cx={67} cy={79} r={9} fill=\"#B6C7DB\" />\n <circle cx={120} cy={106} r={6} fill=\"#B6C7DB\" />\n <circle cx={120} cy={136} r={6} fill=\"#B6C7DB\" />\n <circle cx={67} cy={169} r={9} fill=\"#B6C7DB\" />\n <circle cx={67} cy={199} r={9} fill=\"#B6C7DB\" />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138.376 133a3 3 0 013-3H223a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138 145a3 3 0 013-3h74.205a3 3 0 110 6H141a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M92.514 108v-8h-2V140.365h11.178v-2h-9.178V110h9.178v-2h-9.178z\"\n fill=\"#2B98F0\"\n />\n <path\n opacity={0.54}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M95.071 77l-3.535 3.535L88 77h7.071z\"\n fill=\"#000\"\n />\n <path\n opacity={0.6}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M50 22h186a6 6 0 016 6v18a6 6 0 01-6 6H50a6 6 0 01-6-6V28a6 6 0 016-6z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M58 37a6 6 0 016-6h70a6 6 0 110 12H64a6 6 0 01-6-6zM148 37a6 6 0 016-6h10a6 6 0 110 12h-10a6 6 0 01-6-6z\"\n fill=\"#979797\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"SelectAttributes_svg__paint0_linear_0_19219\"\n x1={-16}\n y1={9}\n x2={-16}\n y2={256}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FAFAFA\" stopOpacity={0.01} />\n <stop offset={1} stopColor=\"#F4F4F4\" />\n </linearGradient>\n <linearGradient\n id=\"SelectAttributes_svg__paint1_linear_0_19219\"\n x1={266.117}\n y1={181.111}\n x2={154.882}\n y2={77.681}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity={0.01} />\n <stop offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport default SvgSelectAttributes;\n","import React from 'react';\n\nconst SvgNoData: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"NoData_svg__b\">\n <stop stopColor=\"#FAFAFA\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#F4F4F4\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"69.573%\" y1=\"86.747%\" x2=\"38.144%\" y2=\"33.403%\" id=\"NoData_svg__d\">\n <stop stopColor=\"#000\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#000\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"NoData_svg__e\">\n <stop stopColor=\"#EEFBFF\" offset=\"0%\" />\n <stop stopColor=\"#0072CE\" offset=\"100%\" />\n </linearGradient>\n <filter\n x=\"-7.7%\"\n y=\"-7.5%\"\n width=\"115.3%\"\n height=\"115%\"\n filterUnits=\"objectBoundingBox\"\n id=\"NoData_svg__f\"\n >\n <feOffset dx={0} dy={2} in=\"SourceAlpha\" result=\"shadowOffsetOuter1\" />\n <feGaussianBlur stdDeviation={2} in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\" />\n <feColorMatrix\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n type=\"matrix\"\n in=\"shadowBlurOuter1\"\n result=\"shadowMatrixOuter1\"\n />\n <feMerge>\n <feMergeNode in=\"shadowMatrixOuter1\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n <circle id=\"NoData_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"NoData_svg__c\" fill=\"#fff\">\n <use xlinkHref=\"#NoData_svg__a\" />\n </mask>\n <use fillOpacity={0.1} fill=\"#0072CE\" xlinkHref=\"#NoData_svg__a\" />\n <path fill=\"url(#NoData_svg__b)\" mask=\"url(#NoData_svg__c)\" d=\"M0 9h256v247H0z\" />\n <g mask=\"url(#NoData_svg__c)\">\n <g transform=\"translate(29 37)\">\n <g opacity={0.9} strokeWidth={1} fill=\"#FFF\">\n <path fillOpacity={0.8} opacity={0.5} d=\"M14.565 8h228.144v176.476H14.565z\" />\n <path d=\"M0 8.01C0 3.586 3.576 0 7.997 0h223.838a7.997 7.997 0 017.997 8.01v152.401c0 4.424-3.577 8.01-7.997 8.01H7.997A7.997 7.997 0 010 160.411V8.01z\" />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(19.986 42.105)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={195.862} cy={5.013} rx={3.997} ry={4.01} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={181.872} cy={5.013} rx={3.997} ry={4.01} />\n <path\n d=\"M9.493 1.003a9.493 9.493 0 019.494 9.493v.06a9.493 9.493 0 01-18.987 0v-.06a9.493 9.493 0 019.493-9.493z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M32.488.791h64.093a3.509 3.509 0 110 7.018H32.488a3.509 3.509 0 110-7.018z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M31.486 13.824h115.902a2.506 2.506 0 010 5.012H31.486a2.506 2.506 0 010-5.012z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M30.483 22.846H67.88a1.504 1.504 0 110 3.008H30.483a1.504 1.504 0 110-3.008z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <rect\n fill=\"#645F6D\"\n opacity={0.5}\n x={19.986}\n y={16.04}\n width={79.944}\n height={11.028}\n rx={5.514}\n />\n <g strokeWidth={1} fill=\"none\" transform=\"translate(19.986 80.2)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={195.862} cy={5.013} rx={3.997} ry={4.01} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={181.872} cy={5.013} rx={3.997} ry={4.01} />\n <rect fill=\"#E3EBF4\" x={0} y={1.003} width={18.987} height={19.048} rx={9.493} />\n <path\n d=\"M32.488.791h75.925a3.509 3.509 0 010 7.018H32.488a3.509 3.509 0 110-7.018z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M31.486 13.824h128.893a2.506 2.506 0 110 5.012H31.486a2.506 2.506 0 010-5.012z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M30.483 22.846h103.918a1.504 1.504 0 010 3.008H30.483a1.504 1.504 0 110-3.008z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(19.986 118.296)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={195.862} cy={5.013} rx={3.997} ry={4.01} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={181.872} cy={5.013} rx={3.997} ry={4.01} />\n <path\n d=\"M9.493 1.003a9.493 9.493 0 019.494 9.493v.06a9.493 9.493 0 01-18.987 0v-.06a9.493 9.493 0 019.493-9.493z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M32.488.791h101.906a3.509 3.509 0 010 7.018H32.488a3.509 3.509 0 110-7.018z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M31.486 13.824h84.924a2.506 2.506 0 010 5.012H31.486a2.506 2.506 0 010-5.012z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M30.483 22.846H67.88a1.504 1.504 0 110 3.008H30.483a1.504 1.504 0 110-3.008z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n </g>\n </g>\n <g mask=\"url(#NoData_svg__c)\">\n <path\n d=\"M154.445 45.134v154.072H36.625V45.134h.811C35.508 62.52 41.07 80.609 54.12 93.944c22.74 23.235 59.61 23.235 82.352 0 13.05-13.335 18.612-31.424 16.683-48.81h1.29z\"\n fill=\"url(#NoData_svg__d)\"\n opacity={0.1}\n transform=\"rotate(-30 291.014 34.548)\"\n />\n <path\n d=\"M27.473 93.234c17.964 18.355 47.09 18.355 65.054 0s17.964-48.113 0-66.468c-17.964-18.355-47.09-18.355-65.054 0s-17.964 48.113 0 66.468z\"\n fill=\"url(#NoData_svg__e)\"\n opacity={0.2}\n transform=\"translate(70 86)\"\n />\n <g filter=\"url(#NoData_svg__f)\" strokeWidth={1} fill=\"none\" transform=\"translate(70 86)\">\n <path\n d=\"M59.697 0c32.97 0 59.697 26.746 59.697 59.738 0 15.185-5.662 29.047-14.988 39.587l51.204 51.24a89.336 89.336 0 01-10.097 9.392l-51.38-51.416c-9.73 6.888-21.61 10.936-34.436 10.936C26.727 119.477 0 92.73 0 59.738 0 26.746 26.727 0 59.697 0zm0 17.756c-23.17 0-41.953 18.796-41.953 41.982s18.783 41.982 41.953 41.982 41.953-18.796 41.953-41.982-18.783-41.982-41.953-41.982z\"\n fill=\"#B5C8C9\"\n />\n <path\n d=\"M21.508 105.656C8.365 94.698 0 78.196 0 59.738 0 26.746 26.727 0 59.697 0c18.444 0 34.935 8.37 45.885 21.523l-9.794 9.8c-8.408-10.68-21.45-17.537-36.091-17.537-25.361 0-45.92 20.573-45.92 45.952 0 14.652 6.852 27.702 17.525 36.117l-9.794 9.8z\"\n fillOpacity={0.4}\n fill=\"#FFF\"\n />\n </g>\n <path\n d=\"M97.473 179.234c17.964 18.355 47.09 18.355 65.054 0s17.964-48.113 0-66.468c-17.964-18.355-47.09-18.355-65.054 0s-17.964 48.113 0 66.468z\"\n fill=\"#D9F5FF\"\n opacity={0.4}\n style={{\n mixBlendMode: 'soft-light'\n }}\n />\n <path\n d=\"M123.885 158.736c0-3.929.444-7.03 1.332-9.304.888-2.274 2.328-4.245 4.32-5.914 1.99-1.668 3.504-3.195 4.54-4.581 1.037-1.386 1.555-2.913 1.555-4.581 0-4.064-1.75-6.095-5.248-6.095-1.614 0-2.92.592-3.915 1.776-.996 1.184-1.52 2.785-1.574 4.803H111.25c.054-5.382 1.75-9.573 5.086-12.574 3.337-3 8.02-4.5 14.047-4.5 6.001 0 10.65 1.386 13.946 4.157 3.297 2.772 4.945 6.714 4.945 11.827 0 2.234-.444 4.265-1.332 6.095-.888 1.83-2.315 3.7-4.279 5.61l-4.642 4.32c-1.318 1.265-2.233 2.563-2.745 3.895-.51 1.332-.793 3.02-.847 5.066h-11.545zm-1.655 12.27c0-1.99.72-3.625 2.16-4.904 1.44-1.278 3.236-1.917 5.389-1.917 2.152 0 3.949.64 5.388 1.917 1.44 1.279 2.16 2.913 2.16 4.905 0 1.991-.72 3.626-2.16 4.904-1.44 1.278-3.236 1.917-5.388 1.917-2.153 0-3.95-.639-5.389-1.917-1.44-1.278-2.16-2.913-2.16-4.904z\"\n fillOpacity={0.87}\n fill=\"#000\"\n style={{\n mixBlendMode: 'overlay'\n }}\n />\n <path\n d=\"M123.885 158.736c0-3.929.444-7.03 1.332-9.304.888-2.274 2.328-4.245 4.32-5.914 1.99-1.668 3.504-3.195 4.54-4.581 1.037-1.386 1.555-2.913 1.555-4.581 0-4.064-1.75-6.095-5.248-6.095-1.614 0-2.92.592-3.915 1.776-.996 1.184-1.52 2.785-1.574 4.803H111.25c.054-5.382 1.75-9.573 5.086-12.574 3.337-3 8.02-4.5 14.047-4.5 6.001 0 10.65 1.386 13.946 4.157 3.297 2.772 4.945 6.714 4.945 11.827 0 2.234-.444 4.265-1.332 6.095-.888 1.83-2.315 3.7-4.279 5.61l-4.642 4.32c-1.318 1.265-2.233 2.563-2.745 3.895-.51 1.332-.793 3.02-.847 5.066h-11.545zm-1.655 12.27c0-1.99.72-3.625 2.16-4.904 1.44-1.278 3.236-1.917 5.389-1.917 2.152 0 3.949.64 5.388 1.917 1.44 1.279 2.16 2.913 2.16 4.905 0 1.991-.72 3.626-2.16 4.904-1.44 1.278-3.236 1.917-5.388 1.917-2.153 0-3.95-.639-5.389-1.917-1.44-1.278-2.16-2.913-2.16-4.904z\"\n fillOpacity={0.38}\n fill=\"#3C74B4\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgNoData;\n","import React from 'react';\n\nconst SvgError: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={88} height={88} viewBox=\"0 0 88 88\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <mask\n id=\"Error_svg__a\"\n style={{\n maskType: 'alpha'\n }}\n maskUnits=\"userSpaceOnUse\"\n x={0}\n y={0}\n width={88}\n height={88}\n >\n <path d=\"M44 88c24.3 0 44-19.7 44-44S68.3 0 44 0 0 19.7 0 44s19.7 44 44 44z\" fill=\"#fff\" />\n </mask>\n <g mask=\"url(#Error_svg__a)\">\n <path\n d=\"M44 88c24.3 0 44-19.7 44-44S68.3 0 44 0 0 19.7 0 44s19.7 44 44 44z\"\n fill=\"#CAC4D5\"\n fillOpacity={0.3}\n />\n <path\n opacity={0.3}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.987 6.73l49.449 6.072a.687.687 0 01.596.767l-7.845 63.888a.688.688 0 01-.766.6L7.214 71.4a.688.688 0 01-.599-.763l.408-3.326L19.987 6.73z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.267 25.921l45.86-19.466a.687.687 0 01.9.366l25.15 59.251a.61.61 0 01-.386.84L22.34 82.765a.719.719 0 01-.887-.445l-20.185-56.4z\"\n fill=\"#fff\"\n />\n <path\n d=\"M65.631 9.23H11.017a.688.688 0 00-.687.687v64.37c0 .38.307.687.687.687h54.614c.38 0 .688-.308.688-.687V9.917a.688.688 0 00-.688-.688z\"\n fill=\"#F9F9F9\"\n />\n <path\n opacity={0.1}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.885 34.95l3.105-1.666 7.31-4.025 8.852 3.472 7.89-5.223 8.036-2.628 8.113 5.193 3.352-10.255v16.967H14.935l-.05-1.835z\"\n fill=\"#9C6CF0\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.885 32.331l3.105-3.761 7.31 4.31 8.852 1.656 7.89-2.205 8.036 1.827 8.113-12.643 3.352.742V36.36H14.935l-.05-4.029z\"\n fill=\"#FA82AA\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.885 34.946l3.105.432 7.31 1.01 8.852-5.117 7.89 3.675 8.036 1.839 8.113-1.839 3.352.811v1.028H14.935l-.05-1.839z\"\n fill=\"#4DBEE9\"\n />\n <path\n opacity={0.1}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M61.543 35.288l-.05 1.497H14.885v-5.239l3.352-.276 8.114 4.697 8.036-.679 7.889.82 8.852-.616 7.31-1.601 3.105 1.397z\"\n fill=\"#4DBEE9\"\n />\n <path d=\"M21.036 40.178h-5.09a.636.636 0 000 1.272h5.09a.636.636 0 100-1.272z\" fill=\"#ACACAC\" />\n <path\n opacity={0.3}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.582 55.872c.703 0 1.273.57 1.273 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.272-1.272zM25.914 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.273-1.272zM39.91 55.872c.703 0 1.273.57 1.273 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.273-1.272zM21.248 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.273 1.273 0 01-2.545 0V57.144c0-.702.57-1.272 1.273-1.272zM35.245 55.872c.703 0 1.273.57 1.273 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.272-1.272zM30.58 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.272-1.272zM44.577 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.273 1.273 0 01-2.545 0V57.144c0-.702.57-1.272 1.273-1.272z\"\n fill=\"#BDBDBD\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.582 65.628c.703 0 1.273.57 1.273 1.272v2.121a1.272 1.272 0 11-2.545 0v-2.12c0-.703.57-1.273 1.272-1.273zM25.914 62.658c.702 0 1.272.57 1.272 1.273v5.09a1.272 1.272 0 11-2.545 0v-5.09c0-.703.57-1.273 1.273-1.273zM39.91 65.628c.703 0 1.273.57 1.273 1.272v2.121a1.272 1.272 0 11-2.545 0v-2.12c0-.703.57-1.273 1.273-1.273zM21.248 66.477c.702 0 1.272.57 1.272 1.272v1.273a1.273 1.273 0 01-2.545 0v-1.273c0-.703.57-1.272 1.273-1.272z\"\n fill=\"#4DBEE9\"\n />\n <path\n d=\"M36.518 65.628a1.272 1.272 0 00-2.545 0v3.393a1.272 1.272 0 102.545 0v-3.393zM31.852 62.234a1.272 1.272 0 10-2.545 0v6.787a1.272 1.272 0 102.545 0v-6.787z\"\n fill=\"#4DBEE9\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M44.577 60.962c.702 0 1.272.57 1.272 1.272v6.787a1.273 1.273 0 01-2.545 0v-6.787c0-.702.57-1.272 1.273-1.272z\"\n fill=\"#4DBEE9\"\n />\n <path d=\"M18.915 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#9C6CF0\" />\n <path\n opacity={0.5}\n d=\"M34.185 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\"\n fill=\"#4DBEE9\"\n />\n <path\n opacity={0.3}\n d=\"M49.454 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\"\n fill=\"#4DBEE9\"\n />\n <path opacity={0.8} d=\"M26.55 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#FB6597\" />\n <path d=\"M41.82 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#4DBEE9\" />\n <path opacity={0.2} d=\"M57.09 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#4DBEE9\" />\n <path\n opacity={0.5}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.582 19.818h4.666a.424.424 0 110 .849h-4.666a.424.424 0 110-.849zM31.851 19.818h4.666a.424.424 0 010 .849h-4.666a.424.424 0 110-.849zM47.121 19.818h4.666a.424.424 0 010 .849h-4.666a.424.424 0 010-.849zM24.217 19.818h4.665a.424.424 0 010 .849h-4.665a.424.424 0 010-.849zM39.486 19.818h4.666a.424.424 0 110 .849h-4.666a.424.424 0 110-.849zM54.756 19.818h4.666a.424.424 0 110 .849h-4.666a.424.424 0 110-.849z\"\n fill=\"#ACACAC\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.946 43.571h5.09a.636.636 0 110 1.273h-5.09a.636.636 0 010-1.273zM15.946 46.116h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 010-1.273zM15.946 48.661h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 110-1.273zM23.58 43.571h5.09a.636.636 0 110 1.273h-5.09a.636.636 0 010-1.273zM23.58 46.116h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 010-1.273zM23.58 48.661h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 110-1.273zM49.454 43.571h11.028a.636.636 0 010 1.273H49.454a.636.636 0 010-1.273zM49.454 46.116h11.028a.636.636 0 010 1.273H49.454a.636.636 0 010-1.273zM49.454 48.661h11.028a.636.636 0 010 1.273H49.454a.636.636 0 110-1.273zM31.215 43.571h15.27a.636.636 0 110 1.273h-15.27a.636.636 0 010-1.273zM31.215 46.116h15.27a.636.636 0 010 1.273h-15.27a.636.636 0 010-1.273zM31.215 48.661h15.27a.636.636 0 010 1.273h-15.27a.636.636 0 010-1.273zM15.946 51.206h5.09a.636.636 0 110 1.272h-5.09a.636.636 0 110-1.272zM23.58 51.206h5.09a.636.636 0 110 1.272h-5.09a.636.636 0 110-1.272zM49.454 51.206h11.028a.636.636 0 010 1.272H49.454a.636.636 0 110-1.272zM31.215 51.206h15.27a.636.636 0 110 1.272h-15.27a.636.636 0 010-1.272z\"\n fill=\"#E9E9E9\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M49.878 55.872h5.09a.636.636 0 110 1.273h-5.09a.636.636 0 110-1.273z\"\n fill=\"#ACACAC\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M49.878 59.69h11.029a.636.636 0 010 1.272H49.878a.636.636 0 110-1.273zM49.878 62.234h11.029a.636.636 0 010 1.273H49.878a.636.636 0 010-1.273zM49.878 64.78h11.029a.636.636 0 010 1.272H49.878a.636.636 0 010-1.273z\"\n fill=\"#E9E9E9\"\n />\n <path d=\"M54.968 67.324h-5.09a.636.636 0 000 1.273h5.09a.636.636 0 000-1.273z\" fill=\"#E9E9E9\" />\n <g filter=\"url(#Error_svg__filter0_d)\">\n <path\n d=\"M57.406 74.25c9.493 0 17.188-7.695 17.188-17.188 0-9.492-7.695-17.187-17.188-17.187-9.492 0-17.187 7.695-17.187 17.188 0 9.492 7.695 17.187 17.187 17.187z\"\n fill=\"#000\"\n />\n </g>\n <path\n d=\"M57.406 74.25c9.493 0 17.188-7.695 17.188-17.188 0-9.492-7.695-17.187-17.188-17.187-9.492 0-17.187 7.695-17.187 17.188 0 9.492 7.695 17.187 17.187 17.187z\"\n fill=\"#F25252\"\n />\n <path\n opacity={0.15}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M57.406 34.719c12.34 0 22.344 10.003 22.344 22.343S69.746 79.406 57.406 79.406c-12.34 0-22.343-10.003-22.343-22.344 0-12.34 10.003-22.343 22.343-22.343zm-.172 2.406c-10.916 0-19.765 8.85-19.765 19.766 0 10.916 8.85 19.765 19.765 19.765C68.151 76.656 77 67.806 77 56.891c0-10.917-8.85-19.766-19.766-19.766z\"\n fill=\"#F25252\"\n />\n <path\n opacity={0.3}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M57.406 38.844c10.062 0 18.219 8.157 18.219 18.218 0 10.062-8.157 18.22-18.219 18.22-10.062 0-18.218-8.158-18.218-18.22 0-10.061 8.156-18.218 18.218-18.218zm0 2.043c-8.933 0-16.175 7.242-16.175 16.175 0 8.934 7.242 16.176 16.175 16.176 8.934 0 16.176-7.242 16.176-16.175 0-8.934-7.242-16.176-16.176-16.176z\"\n fill=\"#F25252\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M57.406 26.469C74.303 26.469 88 40.166 88 57.062c0 16.897-13.697 30.594-30.594 30.594-16.896 0-30.593-13.697-30.593-30.594 0-16.896 13.697-30.593 30.593-30.593zm-.172 3.437c-14.903 0-26.984 12.082-26.984 26.985 0 14.903 12.081 26.984 26.984 26.984 14.903 0 26.985-12.081 26.985-26.984 0-14.903-12.082-26.985-26.985-26.985z\"\n fill=\"#F25252\"\n />\n <path\n d=\"M57.406 71.844c8.164 0 14.782-6.618 14.782-14.781 0-8.164-6.618-14.782-14.782-14.782-8.163 0-14.781 6.618-14.781 14.782 0 8.163 6.618 14.78 14.781 14.78z\"\n fill=\"#FF6A6A\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M58.298 46.448L75.18 63.331l-9.114 12.078h-2.029l-7.582-7.582 1.006-3.178.837-18.2z\"\n fill=\"url(#Error_svg__paint0_linear)\"\n />\n <g filter=\"url(#Error_svg__filter1_d)\">\n <path d=\"M57.406 68.063a1.719 1.719 0 100-3.438 1.719 1.719 0 000 3.438z\" fill=\"#000\" />\n </g>\n <path d=\"M57.406 68.063a1.719 1.719 0 100-3.438 1.719 1.719 0 000 3.438z\" fill=\"#fff\" />\n <g filter=\"url(#Error_svg__filter2_d)\">\n <path\n d=\"M57.406 46.063c.95 0 1.719.769 1.719 1.718v12.375a1.719 1.719 0 11-3.438 0V47.781c0-.949.77-1.718 1.72-1.718z\"\n fill=\"#000\"\n />\n </g>\n <path\n d=\"M57.406 46.063c.95 0 1.719.769 1.719 1.718v12.375a1.719 1.719 0 11-3.438 0V47.781c0-.949.77-1.718 1.72-1.718z\"\n fill=\"#fff\"\n />\n </g>\n <defs>\n <filter\n id=\"Error_svg__filter0_d\"\n x={36.219}\n y={37.875}\n width={42.375}\n height={42.375}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" />\n <feOffset dy={2} />\n <feGaussianBlur stdDeviation={2} />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\" />\n </filter>\n <filter\n id=\"Error_svg__filter1_d\"\n x={51.688}\n y={62.625}\n width={11.438}\n height={11.438}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" />\n <feOffset dy={2} />\n <feGaussianBlur stdDeviation={2} />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\" />\n </filter>\n <filter\n id=\"Error_svg__filter2_d\"\n x={51.688}\n y={44.063}\n width={11.438}\n height={23.813}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" />\n <feOffset dy={2} />\n <feGaussianBlur stdDeviation={2} />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\" />\n </filter>\n <linearGradient\n id=\"Error_svg__paint0_linear\"\n x1={68.438}\n y1={71.571}\n x2={60.119}\n y2={58.801}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity={0} />\n <stop offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport default SvgError;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n image: {\n width: '40px',\n height: '40px'\n },\n info: {\n marginLeft: '12px',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column'\n },\n label: {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n fontWeight: 400,\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.primary.main\n },\n secondaryLabel: {\n marginTop: '4px',\n fontWeight: 400,\n fontSize: '10px',\n lineHeight: '12px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n link: {\n textDecoration: 'none'\n },\n thirdRow: {\n display: 'flex',\n overflow: 'hidden',\n alignItems: 'center',\n marginTop: 'auto',\n paddingTop: '4px'\n },\n entityId: {\n display: 'flex',\n overflow: 'hidden',\n alignItems: 'baseline',\n whiteSpace: 'nowrap',\n fontWeight: 400,\n fontSize: '12px',\n lineHeight: '16px'\n },\n entityIdLabel: {\n color: theme.palette.text.secondary\n },\n entityIdValue: {\n marginLeft: '8px',\n color: theme.palette.text.primary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n '&[aria-describedby]': {\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Entity, getEntityId, getEntityUriForLink, getLabel} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport EntityTypeBadge from '../../EntityTypeBadge/EntityTypeBadge';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n classes?: {\n label?: string;\n secondaryLabel?: string;\n };\n};\n\nexport const ProfileCardContent = ({entity, classes = {}}: Props) => {\n const styles = useStyles();\n const {secondaryLabel: secondaryLabelClass, label: labelClass} = classes;\n const label = getLabel(entity.label);\n const {secondaryLabel} = entity;\n const handleCopyEntityIdToClipboard = useCallback(() => {\n navigator.clipboard.writeText(getEntityId(entity));\n }, [entity]);\n\n return (\n <>\n <EntityAvatar entity={entity} imageClassName={styles.image} />\n <div className={styles.info}>\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.link}>\n <ExpandedValueTooltip value={label} placement=\"top\" showOnExceededHeight={true}>\n <div className={classnames(styles.label, labelClass)}>{label}</div>\n </ExpandedValueTooltip>\n </EntityUriLink>\n\n {secondaryLabel && (\n <ExpandedValueTooltip value={secondaryLabel} placement=\"top\" showOnExceededHeight={true}>\n <div className={classnames(styles.secondaryLabel, secondaryLabelClass)}>{secondaryLabel}</div>\n </ExpandedValueTooltip>\n )}\n <div className={styles.thirdRow}>\n <EntityTypeBadge entity={entity} size=\"medium\" />\n <div className={styles.entityId} onClick={handleCopyEntityIdToClipboard}>\n <div className={styles.entityIdLabel}>{i18n.text('ID:')}</div>\n <ExpandedValueTooltip value={`Copy to clipboard ${getEntityId(entity)}`} placement=\"top\">\n <div className={styles.entityIdValue}>{getEntityId(entity)}</div>\n </ExpandedValueTooltip>\n </div>\n </div>\n </div>\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n '@keyframes keyframes-wave': {\n '0%': {\n transform: 'translateX(-100%)'\n },\n '60%': {\n transform: 'translateX(100%)'\n },\n '100%': {\n transform: 'translateX(100%)'\n }\n },\n wave: {\n overflow: 'hidden',\n position: 'relative',\n '&:after': {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n content: '\"\"',\n position: 'absolute',\n animation: '$keyframes-wave 1.6s linear 0.5s infinite',\n transform: 'translateX(-100%)',\n background: 'linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.04), transparent);'\n }\n },\n avatar: {\n flex: 'none',\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n info: {\n marginLeft: '12px',\n flex: 'auto'\n },\n label: {\n width: '40%',\n height: '15px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n secondaryLabel: {\n marginTop: '4px',\n width: '100%',\n height: '12px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n thirdRow: {\n marginTop: '4px',\n width: '60%',\n height: '24px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nexport const ProfileCardPlaceholder = () => {\n const styles = useStyles();\n return (\n <>\n <div className={classnames(styles.avatar, styles.wave)} />\n <div className={styles.info}>\n <div className={classnames(styles.label, styles.wave)} />\n <div className={classnames(styles.secondaryLabel, styles.wave)} />\n <div className={classnames(styles.thirdRow, styles.wave)} />\n </div>\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n container: {\n display: 'flex',\n padding: '16px',\n overflow: 'hidden'\n }\n});\n\nexport default useStyles;\n","import React, {memo} from 'react';\nimport classnames from 'classnames';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {ProfileCardContent} from './ProfileCardContent/ProfileCardContent';\nimport {ProfileCardPlaceholder} from './ProfileCardPlaceholder/ProfileCardPlaceholder';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n classes?: {\n label?: string;\n secondaryLabel?: string;\n container?: string;\n };\n variant?: 'loading' | 'normal';\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst ProfileCard = ({entity, classes = {}, variant = 'normal', ...otherProps}: Props) => {\n const styles = useStyles();\n const {container: containerClass} = classes;\n return (\n <div className={classnames(styles.container, containerClass)} {...otherProps}>\n {variant === 'normal' ? (\n <ProfileCardContent entity={entity} classes={classes} />\n ) : (\n <ProfileCardPlaceholder />\n )}\n </div>\n );\n};\n\nexport default memo(ProfileCard);\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n resizablePanesWrapper: {\n flexGrow: 1,\n height: '100%',\n marginRight: '1px'\n },\n pane: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n\nexport {useStyles};\n","import React, {useCallback, cloneElement} from 'react';\nimport {ResizablePanes} from '../ResizablePanes/ResizablePanes';\nimport {SideButtonsPanel} from '../SideIconPanel/SideButtonsPanel';\nimport {usePerspectivesSettings} from '../../contexts';\nimport {isNil} from 'ramda';\n\nimport {useStyles} from './styles';\nimport {RightPanelTab} from '../../types';\n\nconst DEFAULT_R_PANE_SIZE = 480;\nconst MIN_R_PANE_SIZE = 320;\nconst MAX_R_PANE_SIZE = 640;\n\ntype Props = {\n perspectiveId: string;\n children: [React.ReactElement, React.ReactElement];\n buttonsProps: Array<RightPanelTab['buttonProps']>;\n disabled?: boolean;\n defaultTab?: number;\n};\n\nexport const ProfileResizablePanes = ({perspectiveId, children, buttonsProps, disabled, defaultTab}: Props) => {\n const styles = useStyles();\n\n const {perspectiveSettings, updatePerspectiveSettings} = usePerspectivesSettings(perspectiveId);\n const {width = DEFAULT_R_PANE_SIZE} = perspectiveSettings || {};\n const active = defaultTab || perspectiveSettings?.active;\n const isSidePanelOpen = !isNil(active) && !disabled;\n\n const handleUpdateSettings = useCallback(\n (newSetting) => {\n updatePerspectiveSettings(newSetting);\n },\n [updatePerspectiveSettings]\n );\n\n const toggleActive = useCallback(\n (newId: number) => {\n const newActive = active === newId ? null : newId;\n handleUpdateSettings({active: newActive});\n },\n [active, handleUpdateSettings]\n );\n\n const resetActive = useCallback((): void => {\n handleUpdateSettings({active: null});\n }, [handleUpdateSettings]);\n\n const handlePaneSizeChange = useCallback(\n ({size}) => {\n handleUpdateSettings({width: size});\n },\n [handleUpdateSettings]\n );\n\n return (\n <>\n <ResizablePanes\n className={styles.resizablePanesWrapper}\n primary=\"second\"\n orientation=\"vertical\"\n size={isSidePanelOpen ? width : 0}\n minSize={MIN_R_PANE_SIZE}\n maxSize={MAX_R_PANE_SIZE}\n allowResize={isSidePanelOpen}\n onChange={handlePaneSizeChange}\n debounceInterval={2500}\n >\n <div className={styles.pane}>{children[0]}</div>\n <div className={styles.pane}>{cloneElement(children[1], {active, onClose: resetActive})}</div>\n </ResizablePanes>\n <SideButtonsPanel\n disabled={disabled}\n buttonsProps={buttonsProps}\n onButtonClick={toggleActive}\n activeIndexId={active}\n />\n </>\n );\n};\n\nProfileResizablePanes.displayName = 'ProfileResizablePanes';\n","import {makeStyles} from '@mui/styles';\n\nconst height = '46px';\n\nconst useStyles = makeStyles((theme) => ({\n readOnlyLogicOperatorContainer: {\n display: 'flex',\n alignItems: 'center',\n marginRight: '40px',\n width: '76px',\n fontSize: '14px',\n color: theme.palette.text.secondary,\n maxHeight: height\n },\n readOnlyFilter: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '14px',\n color: theme.palette.text.secondary,\n width: '50px',\n marginLeft: '12px',\n maxHeight: height\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {QueryBuilderAttribute} from '../../../types';\nimport useStyles from './styles';\n\nimport {capitalize} from '@mui/material/utils';\n\ntype Props = {\n className: string;\n rowData: QueryBuilderAttribute;\n};\nconst ReadOnlyLogicOperator = ({className, rowData}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.readOnlyLogicOperatorContainer, className)}>\n {rowData && rowData.operator ? capitalize(rowData.operator) : i18n.text('Where')}\n </div>\n );\n};\n\nReadOnlyLogicOperator.propTypes = {\n className: PropTypes.string,\n rowData: PropTypes.object\n};\n\nexport default ReadOnlyLogicOperator;\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getFilterOptionLabel} from '@reltio/mdm-sdk';\nimport {QueryBuilderAttribute} from '../../../types';\n\nimport useStyles from './styles';\n\ntype Props = {\n className: string;\n rowData: QueryBuilderAttribute;\n};\nconst ReadOnlyFilter = ({className, rowData}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.readOnlyFilter, className)}>\n {rowData && rowData.filter ? getFilterOptionLabel(rowData.filter) : i18n.text('equals')}\n </div>\n );\n};\n\nexport default ReadOnlyFilter;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n row: {\n display: 'flex',\n marginBottom: '12px'\n },\n rowItem: {\n paddingRight: '10px',\n display: 'flex'\n },\n fullWidth: {\n flexGrow: '1',\n flexBasis: '0',\n overflow: 'hidden'\n },\n hidden: {\n visibility: 'hidden'\n }\n}));\n\nexport default useStyles;\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport ReadOnlyLogicOperator from './components/ReadOnlyLogicOperator';\nimport ReadOnlyFilter from './components/ReadOnlyFilter';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nimport useStyles from './styles';\n\nconst QueryBuilderRow = ({\n classes = {},\n rowData,\n previousRowData,\n LogicOperatorComponent = ReadOnlyLogicOperator,\n AttributeSelectorComponent,\n FilterSelectorComponent = ReadOnlyFilter,\n ValuesEditorComponent,\n ActionsComponent,\n filterSelectorRef,\n attributeSelectorProps = {},\n ...rowContext\n}) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.row, classes.root)} data-reltio-id=\"query-builder-row\">\n <LogicOperatorComponent\n className={classes.logicOperatorContainer}\n rowContext={rowContext}\n rowData={previousRowData}\n />\n <div className={classnames(styles.rowItem, classes.attributeSelectorContainer)}>\n <AttributeSelectorComponent\n attributeSelectorProps={attributeSelectorProps}\n rowContext={rowContext}\n rowData={rowData}\n />\n </div>\n <div className={classnames(styles.rowItem, classes.filterSelectorContainer)}>\n <FilterSelectorComponent\n textFieldInputRef={filterSelectorRef}\n rowContext={rowContext}\n rowData={rowData}\n />\n </div>\n <div className={classnames(styles.rowItem, styles.fullWidth, classes.valuesEditorContainer)}>\n <ValuesEditorComponent rowContext={rowContext} rowData={rowData} />\n </div>\n <div className={classnames(styles.rowItem, classes.actionsContainer, {[styles.hidden]: !rowData})}>\n <ActionsComponent rowContext={rowContext} rowData={rowData} />\n </div>\n </div>\n );\n};\n\nQueryBuilderRow.propTypes = {\n classes: PropTypes.shape({\n root: PropTypes.string,\n logicOperatorContainer: PropTypes.string,\n attributeSelectorContainer: PropTypes.string,\n filterSelectorContainer: PropTypes.string,\n valuesEditorContainer: PropTypes.string,\n actionsContainer: PropTypes.string\n }),\n rowData: QueryBuilderAttributeType,\n previousRowData: QueryBuilderAttributeType,\n LogicOperatorComponent: PropTypes.elementType,\n AttributeSelectorComponent: PropTypes.elementType,\n FilterSelectorComponent: PropTypes.elementType,\n ValuesEditorComponent: PropTypes.elementType,\n ActionsComponent: PropTypes.elementType,\n filterSelectorRef: PropTypes.object,\n attributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(QueryBuilderRow);\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {path} from 'ramda';\n\nimport QueryBuilderRow from '../QueryBuilderRow/QueryBuilderRow';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nconst QueryBuilderRowsGroup = ({\n className = undefined,\n rowClasses,\n rowsData,\n lastRowAttributeSelectorProps,\n filterSelectorRef,\n filterSelectorRefIndex,\n ...rowProps\n}) => {\n const renderRow = (rowData, index, rowsData) => {\n const previousRow = index > 0 ? path([index - 1], rowsData) : null;\n const lastRowProps =\n index === rowsData.length\n ? {\n attributeSelectorProps: lastRowAttributeSelectorProps\n }\n : {};\n return (\n <QueryBuilderRow\n key={rowData && rowData.id}\n rowData={rowData}\n previousRowData={previousRow}\n classes={rowClasses}\n filterSelectorRef={index === filterSelectorRefIndex ? filterSelectorRef : undefined}\n {...rowProps}\n {...lastRowProps}\n />\n );\n };\n\n return (\n <div className={className}>\n {rowsData.map(renderRow)}\n {renderRow(null, rowsData.length, rowsData)}\n </div>\n );\n};\n\nQueryBuilderRowsGroup.propTypes = {\n className: PropTypes.string,\n rowClasses: PropTypes.shape({\n root: PropTypes.string,\n logicOperatorContainer: PropTypes.string,\n attributeSelectorContainer: PropTypes.string,\n filterSelectorContainer: PropTypes.string,\n valuesEditorContainer: PropTypes.string,\n actionsContainer: PropTypes.string\n }),\n rowsData: PropTypes.arrayOf(QueryBuilderAttributeType),\n LogicOperatorComponent: PropTypes.elementType,\n AttributeSelectorComponent: PropTypes.elementType,\n FilterSelectorComponent: PropTypes.elementType,\n ValuesEditorComponent: PropTypes.elementType,\n ActionsComponent: PropTypes.elementType,\n filterSelectorRef: PropTypes.object,\n filterSelectorRefIndex: PropTypes.number,\n lastRowAttributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(QueryBuilderRowsGroup);\n","import CreatableSelect from 'react-select/creatable';\nimport withMuiSkin from './withMuiSkin';\n\nexport default withMuiSkin(CreatableSelect);\n","import MenuItem from '@mui/material/MenuItem';\nimport Checkbox from '@mui/material/Checkbox';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport ExpandedValueTooltip from '../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nexport default function Option(props) {\n const {\n innerProps,\n innerRef,\n children,\n isFocused,\n isSelected,\n selectProps: {classes},\n label\n } = props;\n\n return (\n <MenuItem\n className={classNames(classes.option, {[classes['option--selected']]: isSelected})}\n ref={innerRef}\n selected={isFocused}\n component=\"div\"\n {...innerProps}\n >\n <Checkbox color=\"primary\" checked={isSelected} />\n <ExpandedValueTooltip value={label}>\n <div className={classes['option--item']}>{children}</div>\n </ExpandedValueTooltip>\n </MenuItem>\n );\n}\n\nOption.propTypes = {\n children: PropTypes.node,\n innerProps: PropTypes.shape({\n id: PropTypes.string.isRequired,\n key: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onMouseMove: PropTypes.func.isRequired,\n onMouseOver: PropTypes.func.isRequired,\n tabIndex: PropTypes.number.isRequired\n }).isRequired,\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n isFocused: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n label: PropTypes.string,\n selectProps: PropTypes.shape({\n classes: PropTypes.shape({\n option: PropTypes.string\n })\n })\n};\n","import Option from './Option';\n\nconst components = {\n Option\n};\n\nexport default components;\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {omit} from 'ramda';\nimport CreatableSelect from '../CreatableSelect';\nimport Select from '../Select';\nimport AsyncSelect from '../AsyncSelect';\nimport multiSelectComponents from './components';\nimport {makeStyles} from '@mui/styles';\nimport {mergeClasses} from '../../../core/utils';\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n top: 6,\n left: 16\n },\n placeholder: (props) => ({\n display: !props.placeholder || props.label ? 'none' : undefined\n }),\n 'option--selected': {\n fontWeight: 400\n },\n clearIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n },\n dropdownIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n }\n}));\n\nlet id = 0;\nconst getInputId = () => `custom-select-${id++}`;\n\nfunction MultiSelect(props) {\n const {\n label,\n creatable,\n getOptions,\n loadingIndicator,\n components: componentsProp,\n classes: classesProp,\n styles: stylesProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n menuPlacement = 'auto',\n ...reactSelectProps\n } = props;\n\n const SelectComponent = creatable ? CreatableSelect : getOptions ? AsyncSelect : Select;\n\n const [inputValue, setInputValue] = useState('');\n const multiSelectClasses = useStyles(omit(['classes'], props));\n const inputId = getInputId();\n\n const components = {\n ...multiSelectComponents,\n ...componentsProp\n };\n\n const classes = mergeClasses(multiSelectClasses, classesProp);\n\n function handleInputChange(value, {action}) {\n onInputChangeProp(value, {action});\n if (action !== 'set-value') {\n setInputValue(value);\n }\n }\n\n function handleChange(value, actionMeta) {\n onChangeProp(value, actionMeta);\n if (actionMeta.action === 'create-option') {\n setInputValue('');\n onInputChangeProp('', {action: 'input-change'});\n }\n }\n\n const styles = {\n indicatorSeparator: (base) => ({\n ...base,\n margin: '10px 0'\n }),\n loadingIndicator: (base) => ({\n ...base,\n display: loadingIndicator ? base.display : 'none'\n }),\n loadingMessage: (base) => ({\n ...base,\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif'\n }),\n ...stylesProp\n };\n\n const labelProps = label\n ? {\n inputId,\n TextFieldProps: {\n label,\n InputLabelProps: {\n htmlFor: inputId,\n shrink: props.value && props.value.length ? true : undefined,\n className: classes.label\n },\n ...props.TextFieldProps\n }\n }\n : {};\n\n return (\n <SelectComponent\n isMulti\n inputId={inputId}\n inputValue={inputValue}\n onChange={handleChange}\n onInputChange={handleInputChange}\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n classes={classes}\n components={components}\n styles={styles}\n menuPlacement={menuPlacement}\n loadOptions={getOptions}\n {...labelProps}\n {...reactSelectProps}\n />\n );\n}\n\nMultiSelect.defaultProps = {\n creatable: false,\n cacheOptions: true,\n components: {},\n classes: {},\n placeholder: '',\n loadingIndicator: false,\n onInputChange: () => {},\n onChange: () => {}\n};\n\nMultiSelect.propTypes = {\n /**\n * Async creatable multi select with optional placeholder, shrink-label, non-closing menu and options with checkboxes.\n * Based on react-select/creatable and react-select/async.\n * See react-select docs: https://react-select.com\n *\n * Below are listed only props used in the MultiSelect component. Check https://react-select.com/props first.\n * */\n\n /** Ability to create values. React-select/async-creatable is used internally */\n creatable: PropTypes.bool,\n /** True for enabling cache. Recommended. */\n cacheOptions: PropTypes.bool,\n defaultOptions: PropTypes.bool,\n /** Array of selected options. */\n value: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n /** Way to receive updated values */\n onChange: PropTypes.func,\n /** Way to receive updated inputValue */\n onInputChange: PropTypes.func,\n /** Input placeholder. Will not be shown if the label prop is specified */\n placeholder: PropTypes.string,\n /** Floating label from @mui/material/TextField component */\n label: PropTypes.string,\n /** Enable to show default react-select's indicator */\n loadingIndicator: PropTypes.bool,\n /** You could redefine any of these components */\n components: PropTypes.shape({\n ClearIndicator: PropTypes.func,\n Control: PropTypes.func,\n DropdownIndicator: PropTypes.func,\n DownChevron: PropTypes.func,\n CrossIcon: PropTypes.func,\n Group: PropTypes.func,\n GroupHeading: PropTypes.func,\n IndicatorsContainer: PropTypes.func,\n IndicatorSeparator: PropTypes.func,\n Input: PropTypes.func,\n LoadingIndicator: PropTypes.func,\n Menu: PropTypes.func,\n MenuList: PropTypes.func,\n MenuPortal: PropTypes.func,\n LoadingMessage: PropTypes.func,\n NoOptionsMessage: PropTypes.func,\n MultiValue: PropTypes.func,\n MultiValueContainer: PropTypes.func,\n MultiValueLabel: PropTypes.func,\n MultiValueRemove: PropTypes.func,\n Option: PropTypes.func,\n Placeholder: PropTypes.func,\n SelectContainer: PropTypes.func,\n SingleValue: PropTypes.func,\n ValueContainer: PropTypes.func\n }),\n /** Classes are passed to mui skin components. Provided classes will be merged with existing ones. */\n classes: PropTypes.shape({\n control: PropTypes.string,\n valueContainer: PropTypes.string,\n multiValue: PropTypes.string,\n noOptionsMessage: PropTypes.string,\n singleValue: PropTypes.string,\n placeholder: PropTypes.string,\n menu: PropTypes.string,\n clearIndicator: PropTypes.string,\n dropdownIndicator: PropTypes.string,\n option: PropTypes.string,\n 'option--selected': PropTypes.string,\n label: PropTypes.string\n }),\n /**\n * React-select's way to customise style. Could be used to style default react-select components.\n * In other cases better to use classes and components props\n * */\n styles: PropTypes.shape({\n clearIndicator: PropTypes.func,\n container: PropTypes.func,\n control: PropTypes.func,\n dropdownIndicator: PropTypes.func,\n group: PropTypes.func,\n groupHeading: PropTypes.func,\n indicatorsContainer: PropTypes.func,\n indicatorSeparator: PropTypes.func,\n input: PropTypes.func,\n loadingIndicator: PropTypes.func,\n loadingMessage: PropTypes.func,\n menu: PropTypes.func,\n menuList: PropTypes.func,\n menuPortal: PropTypes.func,\n multiValue: PropTypes.func,\n multiValueLabel: PropTypes.func,\n multiValueRemove: PropTypes.func,\n noOptionsMessage: PropTypes.func,\n option: PropTypes.func,\n placeholder: PropTypes.func,\n singleValue: PropTypes.func,\n valueContainer: PropTypes.func\n }),\n /** Props from https://material-ui.com/api/text-field/ */\n TextFieldProps: PropTypes.object /* eslint-disable-line react/forbid-prop-types */,\n getOptions: PropTypes.func,\n menuPlacement: PropTypes.string,\n menuPortalTarget: PropTypes.object,\n menuShouldBlockScroll: PropTypes.bool,\n captureMenuScroll: PropTypes.bool,\n getOptionValue: PropTypes.func,\n isSearchable: PropTypes.bool,\n inputRef: PropTypes.shape({current: PropTypes.object})\n};\n\nexport default MultiSelect;\n","import MultiSelect from './MultiSelect';\n\nexport default MultiSelect;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n profileBandNavigation: {\n marginBottom: '10px'\n },\n comments: {\n display: 'flex',\n justifyContent: 'flex-end'\n }\n});\n","import React, {memo, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Entity,\n getEntityUriForLink,\n getProfileBandObjectIdsForCollaboration\n} 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 {CollaborationContextProvider} from '../../contexts';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../constants';\nimport {useCollaboration} from '../../hooks';\nimport {ProfileBandHistory} from '../history';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n className?: string;\n historySlice?: HistorySlice;\n};\n\nexport const ScreenProfileBand = memo(({entity, className, historySlice}: Props) => {\n const styles = useStyles();\n const objectIds = useMemo(() => getProfileBandObjectIdsForCollaboration(entity), [entity]);\n const collaboration = useCollaboration({objectIds});\n const entityUri = getEntityUriForLink(entity);\n\n return (\n <CollaborationContextProvider collaboration={collaboration}>\n <ProfileBand\n className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)}\n entity={historySlice?.aEntity || entity}\n >\n {historySlice ? (\n <ProfileBandHistory />\n ) : (\n <>\n <ProfileBandNavigation className={styles.profileBandNavigation} />\n <CommentsContainer\n className={styles.comments}\n uri={entityUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </>\n )}\n </ProfileBand>\n </CollaborationContextProvider>\n );\n});\n\nScreenProfileBand.displayName = 'ScreenProfileBand';\n","import {alpha} from '@mui/material/styles';\n\nimport {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n width: '64px',\n paddingTop: '8px',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)'\n },\n active: {\n backgroundColor: alpha(theme.palette.primary.main, 0.12),\n color: theme.palette.primary.main,\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n height: '42px',\n width: '3px',\n backgroundColor: theme.palette.primary.main,\n left: '-8px',\n borderRadius: '0 6px 6px 0'\n }\n },\n buttonWrapper: {\n position: 'relative',\n width: '48px',\n height: '44px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '6px',\n margin: '2px 8px',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {ElementType} from 'react';\nimport classnames from 'classnames';\nimport {IconButtonProps} from '@mui/material/IconButton';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n disabled: boolean;\n buttonsProps: Array<{\n icon: ElementType;\n tooltipTitle: string;\n id: number;\n }>;\n classes?: {active?: string; buttonWrapper?: string} & IconButtonProps['classes'];\n activeIndexId: number;\n className?: string;\n onButtonClick: (id: number) => void;\n};\n\nexport const SideButtonsPanel = ({\n disabled,\n buttonsProps,\n activeIndexId,\n className,\n onButtonClick,\n classes = {}\n}: Props) => {\n const styles = useStyles();\n const {active, buttonWrapper, ...iconButtonClasses} = classes;\n\n return (\n <div className={classnames(styles.container, className)}>\n {buttonsProps.map(({id, ...buttonProps}) => {\n return (\n <SmallIconButtonWithTooltip\n {...buttonProps}\n disabled={disabled}\n classes={iconButtonClasses}\n size=\"S\"\n key={id}\n className={classnames(\n {[classnames(styles.active, active)]: activeIndexId === id},\n styles.buttonWrapper,\n buttonWrapper\n )}\n onClick={() => onButtonClick(id)}\n data-reltio-id={`reltio-profile-right-side-button-${id}`}\n />\n );\n })}\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n contentWrapper: {\n display: 'flex',\n boxSizing: 'border-box',\n flex: 1,\n flexDirection: 'column',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)',\n transition: theme.transitions.create(['width'], {\n duration: theme.transitions.duration.enteringScreen\n })\n }\n}));\n","import React, {ReactNode, VFC} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = {\n width?: number;\n open: boolean;\n children: ReactNode;\n};\n\nexport const SidePanel: VFC<Props> = ({width, open, children}) => {\n const styles = useStyles();\n return (\n <div\n className={styles.contentWrapper}\n data-reltio-id=\"side-panel\"\n style={{\n width: width ? `${open ? width : 0}px` : '100%'\n }}\n >\n {open && <>{children}</>}\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nconst iconsWidth = '68px';\n\nexport const useOptionStyles = makeStyles({\n container: {\n display: 'flex',\n alignItems: 'center',\n height: '32px',\n minHeight: '32px',\n padding: 0\n },\n text: {\n display: 'flex',\n width: `calc(100% - ${iconsWidth})`\n },\n textItem: {\n fontSize: '13px',\n lineHeight: '15px',\n marginRight: 10\n },\n primaryTextItem: {\n flex: '1 0',\n flexBasis: 0,\n maxWidth: '50%',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n secondaryTextItem: {\n flex: '1 0',\n flexBasis: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n icons: {\n transform: 'scale(0.5)',\n position: 'relative',\n flexShrink: 0,\n width: iconsWidth,\n bottom: '10px'\n },\n iconTop: {\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 1\n },\n iconBottom: {\n position: 'absolute',\n top: 0,\n left: 26,\n zIndex: 0\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport {useOptionStyles} from './styles';\nimport EntityTypeIcon from '../../../../EntityTypeIcon/EntityTypeIcon';\nimport ExpandedValueTooltip from '../../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nconst RelationOption = ({innerRef, innerProps, selectOption, data}) => {\n const styles = useOptionStyles();\n const {value, label, startObject, endObject} = data;\n const secondaryLabel = startObject.objectType.label + ' \\u2194 ' + endObject.objectType.label;\n return (\n <MenuItem\n className={styles.container}\n ref={innerRef}\n key={value}\n onClick={() => selectOption({label, value, startObject, endObject})}\n {...innerProps}\n >\n <div className={styles.icons}>\n <EntityTypeIcon className={styles.iconTop} entityType={startObject.objectType} />\n <EntityTypeIcon className={styles.iconBottom} entityType={endObject.objectType} />\n </div>\n <div className={styles.text}>\n <ExpandedValueTooltip value={label}>\n <Typography className={classnames(styles.textItem, styles.primaryTextItem)}>{label}</Typography>\n </ExpandedValueTooltip>\n <ExpandedValueTooltip value={secondaryLabel}>\n <Typography color=\"textSecondary\" className={classnames(styles.textItem, styles.secondaryTextItem)}>\n {secondaryLabel}\n </Typography>\n </ExpandedValueTooltip>\n </div>\n </MenuItem>\n );\n};\n\nRelationOption.propTypes = {\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n innerProps: PropTypes.object.isRequired,\n selectOption: PropTypes.func.isRequired,\n data: PropTypes.shape({\n value: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n startObject: PropTypes.object,\n endObject: PropTypes.object\n })\n};\n\nexport default RelationOption;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {identity, defaultTo} from 'ramda';\nimport RelationOption from './components/RelationOption';\nimport DropDownSelector from '../../../DropDownSelector/DropDownSelector';\n\nconst RelationTypeSelector = ({value = {}, options = [], onChange = identity, TextFieldProps, ...otherProps}) => {\n const textFieldProps = useMemo(\n () => ({\n ...defaultTo({}, TextFieldProps),\n ['data-reltio-id']: 'relation-type-selector'\n }),\n [TextFieldProps]\n );\n return (\n <DropDownSelector\n value={value}\n options={options}\n onChange={onChange}\n label={i18n.text('Select relationship type ')}\n components={{Option: RelationOption}}\n TextFieldProps={textFieldProps}\n {...otherProps}\n />\n );\n};\n\nconst ValueType = PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n startObject: PropTypes.object,\n endObject: PropTypes.object\n});\n\nRelationTypeSelector.propTypes = {\n value: ValueType,\n options: PropTypes.arrayOf(ValueType),\n onChange: PropTypes.func\n};\n\nexport default RelationTypeSelector;\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, {useCallback, useContext} from 'react';\nimport {PerspectivesSettings, PerspectiveSettingItem} from '../../types';\n\ntype PerspectivesSettingsProps = {\n settings: PerspectivesSettings;\n onChange: (perspectiveId: string, newSetting: Partial<PerspectiveSettingItem>) => void;\n};\n\nexport const PerspectivesSettingsContext = React.createContext<PerspectivesSettingsProps>({\n settings: {},\n onChange: () => {}\n});\n\nPerspectivesSettingsContext.displayName = 'PerspectivesSettingsContext';\n\nexport const usePerspectivesSettings = (perspectiveId: string) => {\n const {settings, onChange} = useContext(PerspectivesSettingsContext) || {};\n const perspectiveSettings = settings?.[perspectiveId];\n\n const updatePerspectiveSettings = useCallback(\n (newSetting: Partial<PerspectiveSettingItem>) => {\n onChange(perspectiveId, newSetting);\n },\n [perspectiveId, onChange]\n );\n\n return {updatePerspectiveSettings, perspectiveSettings};\n};\n","import {useCallback} from 'react';\nimport {Directions, getDirectionalLabelFromObject} from '@reltio/mdm-sdk';\nimport {ascend, curry, evolve, pipe, prop, propEq, propOr, tap} from 'ramda';\n\nexport const useRelationTypeSelector = ({reversedContextLabels}) => {\n const getRelationTypesOptions = useCallback(\n (inRelations, outRelations) => {\n const labelsMap = {};\n const addLabelInMap = (label) => (labelsMap[label] = propOr(0, label, labelsMap) + 1);\n const getDirectionalLabel = pipe(getDirectionalLabelFromObject, tap(addLabelInMap));\n const byLabel = ascend(prop('label'));\n\n const prepareRelation = curry((direction, {uri, label, startObject, endObject}) => {\n const dirObject =\n direction === (reversedContextLabels ? Directions.OUT : Directions.IN) ? startObject : endObject;\n return {\n label: {directionalLabel: getDirectionalLabel(dirObject), typeLabel: label},\n value: `${uri},${direction}`,\n startObject,\n endObject\n };\n });\n\n return inRelations\n .map(prepareRelation(Directions.IN))\n .concat(outRelations.map(prepareRelation(Directions.OUT)))\n .map(\n evolve({\n label: ({directionalLabel, typeLabel}) => {\n return directionalLabel\n ? labelsMap[directionalLabel] > 1\n ? `${directionalLabel} (${typeLabel})`\n : directionalLabel\n : typeLabel;\n }\n })\n )\n .sort(byLabel);\n },\n [reversedContextLabels]\n );\n\n const fromEditorValue = useCallback(\n (inRelationTypes, outRelationTypes) => (relation) => {\n const [uri, direction] = relation.value.split(',');\n const type = (direction === Directions.IN ? inRelationTypes : outRelationTypes).find(propEq('uri', uri));\n return {type, direction};\n },\n []\n );\n\n const toEditorValue = useCallback(\n (relation, relationsTypesOptions) =>\n relationsTypesOptions.find(propEq('value', `${relation.relationType},${relation.direction}`)),\n []\n );\n\n return {\n getRelationTypesOptions,\n fromEditorValue,\n toEditorValue\n };\n};\n","import React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {pipe} from 'ramda';\nimport Portal from '@mui/material/Portal';\nimport Button from '@mui/material/Button';\nimport Snackbar, {SnackbarOrigin} from '@mui/material/Snackbar';\nimport {noop} from '../core';\n\ntype SnackbarOptions = {\n anchorOrigin?: SnackbarOrigin;\n showDismiss?: boolean;\n dismissTitle?: string;\n autoHideDuration?: number;\n onDismissClick?: () => void;\n};\n\nconst FIVE_MINUTES = 5 * 60 * 1000;\nexport const useSnackbar = ({\n anchorOrigin = {vertical: 'bottom', horizontal: 'center'},\n showDismiss,\n dismissTitle = i18n.text('Dismiss'),\n autoHideDuration = FIVE_MINUTES,\n onDismissClick = noop\n}: SnackbarOptions = {}) => {\n const [isOpenSnackbar, setIsOpenSnackbar] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = useState('');\n\n const closeSnackbar = useCallback(() => {\n setIsOpenSnackbar(false);\n setSnackbarMessage('');\n }, []);\n\n const handleSnackbarClose = useCallback(\n (_, reason?: string) => {\n if (reason === 'clickaway') {\n return;\n }\n closeSnackbar();\n },\n [closeSnackbar]\n );\n\n const showSnackbarMessage = useCallback((message) => {\n setIsOpenSnackbar(true);\n setSnackbarMessage(message);\n }, []);\n\n const SnackbarRenderer = useCallback(() => {\n return (\n <Portal container={document.body}>\n <Snackbar\n open={isOpenSnackbar}\n anchorOrigin={anchorOrigin}\n autoHideDuration={autoHideDuration}\n onClose={handleSnackbarClose}\n message={snackbarMessage}\n style={{maxWidth: 500}}\n action={\n showDismiss ? (\n <Button color=\"primary\" onClick={pipe(closeSnackbar, onDismissClick)}>\n {dismissTitle}\n </Button>\n ) : undefined\n }\n />\n </Portal>\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpenSnackbar, closeSnackbar, snackbarMessage]);\n\n return {SnackbarRenderer, showSnackbarMessage};\n};\n","export enum ActivePanel {\n PotentialMatches,\n FindMatches,\n NotAMatch\n}\n\nexport enum ComparisonViewMode {\n TABLE = 'TABLE',\n COLUMNS = 'COLUMNS'\n}\n\nexport const MAX_PROFILES_TO_COMPARE = 4;\n","import React, {createContext, useContext, useMemo} from 'react';\n\ntype ReloadDataContextValue = {\n reloadData: () => void;\n addReloadHandler: (f: () => void) => void;\n removeReloadHandler: (f: () => void) => void;\n};\n\nconst ReloadDataContext = createContext<ReloadDataContextValue>({\n reloadData: () => {},\n addReloadHandler: () => {},\n removeReloadHandler: () => {}\n});\n\nconst createContextValue = () => {\n const reloadDataHandlers = [];\n const reloadData = () => {\n reloadDataHandlers.forEach((reloadHandler) => reloadHandler());\n };\n const addReloadHandler = (reloadHandler: () => void) => {\n reloadDataHandlers.push(reloadHandler);\n };\n const removeReloadHandler = (reloadHandler: () => void) => {\n const index = reloadDataHandlers.indexOf(reloadHandler);\n if (index !== -1) {\n reloadDataHandlers.splice(index, 1);\n }\n };\n return {\n reloadData,\n addReloadHandler,\n removeReloadHandler\n };\n};\n\nexport const ReloadDataProvider = ({children}: {children: React.ReactElement}) => {\n const contextValue = useMemo(() => createContextValue(), []);\n return <ReloadDataContext.Provider value={contextValue}>{children}</ReloadDataContext.Provider>;\n};\n\nexport const useReloadData = () => {\n const dataContext = useContext(ReloadDataContext);\n if (dataContext === undefined) {\n throw new Error('useReloadData must be used within a ReloadDataProvider');\n }\n return dataContext;\n};\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst RESET = 'RESET';\nconst SET_OPTIONS = 'SET_OPTIONS';\n\nconst actions = {\n ...basicTableViewState.actions,\n reset: createStandardAction(RESET),\n setOptions: createStandardAction(SET_OPTIONS)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case RESET: {\n return {...action.payload};\n }\n case SET_OPTIONS:\n return {...state, options: action.payload};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {append, evolve, includes, propEq, remove} from 'ramda';\nimport React, {createContext, useContext, useReducer} from 'react';\n\nimport {createStandardAction, useActions} from '@reltio/components';\nimport {EntitiesMap, Entity, getEntityUriFromMatchObject, getPotentialMatchesColor, Match} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\n\ntype ActionContext = {\n setGlobalSpinner: (val: boolean) => void;\n setSelectedItems: (matches: Match[]) => void;\n deselectByEntities: (entities: Entity[]) => void;\n toggleSelect: (match: Match) => void;\n actualizeSelectedItemsColors: () => void;\n setLimitSelection: (value?: number) => void;\n setComparisonViewMode: (mode: ComparisonViewMode) => void;\n setEntitiesMap: (entitiesMap?: EntitiesMap) => void;\n deleteExtraMatches: () => void;\n};\n\ntype StateContext = {\n isGlobalSpinnerActive: boolean;\n selectedItems: Match[];\n limitSelection?: number;\n comparisonViewMode: ComparisonViewMode;\n entitiesMap?: EntitiesMap;\n entityColors?: {entityUri: string; color: string}[];\n};\nconst ViewStateContext = createContext<StateContext>(null);\nconst ViewDispatchContext = createContext<ActionContext>(null);\nconst SET_GLOBAL_SPINNER = 'SET_GLOBAL_SPINNER';\nconst SET_SELECTED_ITEMS = 'SET_SELECTED_ITEMS';\nconst DESELECT_BY_ENTITIES = 'DESELECT_BY_ENTITIES';\nconst TOGGLE_SELECT = 'TOGGLE_SELECT';\nconst ACTUALIZE_SELECTED_ITEMS_COLORS = 'ACTUALIZE_SELECTED_ITEMS_COLORS';\nconst SET_LIMIT_SELECTION = 'SET_LIMIT_SELECTION';\nconst SET_COMPARISON_VIEW_MODE = 'SET_COMPARISON_VIEW_MODE';\nconst SET_ENTITIES_MAP = 'SET_ENTITIES_MAP';\nconst DELETE_EXTRA_MATCHES = 'DELETE_EXTRA_MATCHES';\n\nconst actions = {\n setGlobalSpinner: createStandardAction(SET_GLOBAL_SPINNER),\n setSelectedItems: createStandardAction(SET_SELECTED_ITEMS),\n deselectByEntities: createStandardAction(DESELECT_BY_ENTITIES),\n toggleSelect: createStandardAction(TOGGLE_SELECT),\n actualizeSelectedItemsColors: createStandardAction(ACTUALIZE_SELECTED_ITEMS_COLORS),\n setLimitSelection: createStandardAction(SET_LIMIT_SELECTION),\n setComparisonViewMode: createStandardAction(SET_COMPARISON_VIEW_MODE),\n setEntitiesMap: createStandardAction(SET_ENTITIES_MAP),\n deleteExtraMatches: createStandardAction(DELETE_EXTRA_MATCHES)\n};\n\nconst viewStateReducer = (state: StateContext, action: ReturnType<ReturnType<typeof createStandardAction>>) => {\n switch (action.type) {\n case SET_GLOBAL_SPINNER:\n return {...state, isGlobalSpinnerActive: action.payload};\n case DELETE_EXTRA_MATCHES:\n return {...state, selectedItems: state.selectedItems.slice(0, state.limitSelection)};\n case SET_SELECTED_ITEMS:\n return {...state, selectedItems: action.payload.slice(0, state.limitSelection)};\n case DESELECT_BY_ENTITIES:\n return evolve(\n {\n selectedItems: (selectedItems) =>\n selectedItems.filter(({object}) => !action.payload.some(({uri}) => uri === object.uri))\n },\n state\n );\n case TOGGLE_SELECT:\n return evolve(\n {\n selectedItems: (selected) => {\n const item = action.payload;\n const itemIndex = selected.findIndex(\n (selectedItem) => selectedItem?.object?.uri === item?.object?.uri\n );\n const isSelected = itemIndex > -1;\n if (isSelected) {\n return remove(itemIndex, 1, selected);\n } else {\n return append(item, selected);\n }\n }\n },\n state\n );\n case ACTUALIZE_SELECTED_ITEMS_COLORS: {\n return evolve(\n {\n entityColors: (colors) => {\n const selectedItems = state.selectedItems;\n\n const selectedEntitiesUris = selectedItems.map(getEntityUriFromMatchObject);\n\n const entityUrisWithoutColors = selectedEntitiesUris.filter((item) => {\n return !colors.find(propEq('entityUri', item));\n });\n\n return colors.map((item) => {\n return includes(item.entityUri, selectedEntitiesUris)\n ? item\n : {\n ...item,\n entityUri: entityUrisWithoutColors.shift()\n };\n });\n }\n },\n state\n );\n }\n case SET_LIMIT_SELECTION: {\n return {...state, limitSelection: action.payload};\n }\n case SET_COMPARISON_VIEW_MODE: {\n const newMode: ComparisonViewMode = action.payload;\n return {\n ...state,\n comparisonViewMode: newMode,\n limitSelection: newMode === ComparisonViewMode.COLUMNS ? MAX_PROFILES_TO_COMPARE : undefined\n };\n }\n case SET_ENTITIES_MAP: {\n const entitiesMap: EntitiesMap = action.payload;\n return {\n ...state,\n entitiesMap\n };\n }\n }\n};\n\ntype Props = {\n children: React.ReactElement;\n};\nconst getInitialEntityColors = () => {\n return getPotentialMatchesColor().map((color) => ({\n entityUri: '',\n color\n }));\n};\nexport const ViewStateProvider = ({children}: Props) => {\n const [state, dispatch] = useReducer(viewStateReducer, {\n isGlobalSpinnerActive: false,\n selectedItems: [],\n comparisonViewMode: ComparisonViewMode.COLUMNS,\n limitSelection: MAX_PROFILES_TO_COMPARE,\n entitiesMap: {},\n entityColors: getInitialEntityColors()\n });\n const viewStateAction = useActions({actions, dispatch});\n\n return (\n <ViewStateContext.Provider value={state}>\n <ViewDispatchContext.Provider value={viewStateAction as ActionContext}>\n {children}\n </ViewDispatchContext.Provider>\n </ViewStateContext.Provider>\n );\n};\n\nexport const useViewState = () => {\n const viewStateContext = useContext<StateContext>(ViewStateContext);\n if (viewStateContext === undefined) {\n throw new Error('useViewState must be used within a ViewStateProvider');\n }\n return viewStateContext;\n};\n\nexport const useViewStateActions = () => {\n const viewStateActions = useContext<ActionContext>(ViewDispatchContext);\n if (viewStateActions === undefined) {\n throw new Error('useViewStateActions must be used within a ViewStateProvider');\n }\n return viewStateActions;\n};\n","import {\n attributeUriToSearchUri,\n getAttrDataTypeDefinition,\n getEntityAttributesFromMetadata,\n isNested,\n isReference,\n getLabel,\n getAllAttributeTypesTree,\n Metadata,\n TEntityType,\n AttributeNode\n} from '@reltio/mdm-sdk';\nimport {__, curry, either, filter, includes, map, partition, pipe, reject, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {MatchesColumnsData, GroupedColumnData} from '../types/potentialMatchesTypes';\n\ntype AttributeConfig = {\n title: string;\n fieldName: string;\n children?: AttributeConfig[];\n notSelectable?: boolean;\n};\n\nconst createAttributeItemConfig = (metadata: Metadata, attrNode: AttributeNode, fieldName?: string, parents = []) => {\n const config = createAttributeItemBasicConfig(metadata, attrNode, fieldName, parents);\n const children = (attrNode.children || []).map((childNode) =>\n createAttributeItemConfig(metadata, childNode, '', parents.concat({name: attrNode.name, label: attrNode.label}))\n );\n if (children.length) {\n config.children = children;\n config.notSelectable = true;\n }\n return config;\n};\n\nconst createAttributeItemBasicConfig = (\n metadata: Metadata,\n attrNode: AttributeNode,\n fieldName: string,\n parents = []\n): AttributeConfig => {\n const attrType = omit(['children'], attrNode);\n const title = attrType.label || attrType.name;\n return {\n title,\n fieldName: fieldName || attributeUriToSearchUri(attrType.uri, parents)\n };\n};\n\nexport const collectAttributeItems = (metadata: Metadata, entityType?: TEntityType) =>\n entityType\n ? getAllAttributeTypesTree(metadata, entityType).map((attrNode) =>\n createAttributeItemConfig(metadata, attrNode)\n )\n : [];\n\nconst getColumnsDataFromEntityAttributes = pipe(\n map((attr) => ({\n id: attributeUriToSearchUri(attr.uri),\n label: getLabel(attr.label),\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n }))\n);\n\nexport const getColumnsData = pipe(getEntityAttributesFromMetadata, getColumnsDataFromEntityAttributes);\n\nexport const isMatchAttrColumn = curry((matchAttributes: string[], column: MatchesColumnsData) =>\n matchAttributes\n .map((attrUri) => attributeUriToSearchUri(attrUri))\n .some((id) => column.id === id || (isReferenceAttrColumn(column) && isSubAttrIdForColumn(column, id)))\n);\nconst isNestedAttrColumn = (column: MatchesColumnsData) => isNested(column.dataTypeDefinition);\nconst isReferenceAttrColumn = (column: MatchesColumnsData) => isReference(column.dataTypeDefinition);\nconst isSubAttrIdForColumn = curry((parentColumn: MatchesColumnsData, columnId: string) =>\n columnId.startsWith(`${parentColumn.id}.`)\n);\nconst isNestedForOneOfColumns = curry(\n (columns: MatchesColumnsData[], column: MatchesColumnsData) =>\n isNestedAttrColumn(column) && columns.some(({id}) => isSubAttrIdForColumn(column, id))\n);\nconst isRelatedToColumns = (columns: MatchesColumnsData[]) =>\n either(includes(__, columns), isNestedForOneOfColumns(columns));\n\nexport const getMatchAttrColumns = (\n matchAttributes: string[],\n columnsData: MatchesColumnsData[]\n): MatchesColumnsData[] => pipe(reject(isNestedAttrColumn), filter(isMatchAttrColumn(matchAttributes)))(columnsData);\n\nexport const groupColumnsDataByMatchAttributes = (\n matchAttributes: string[],\n columnsData: MatchesColumnsData[]\n): GroupedColumnData[] => {\n const [matchAttrColumns, otherColumns] = pipe(\n reject(isNestedAttrColumn),\n partition(isMatchAttrColumn(matchAttributes))\n )(columnsData);\n\n return matchAttrColumns.length\n ? ([\n {\n id: 'match',\n label: i18n.text('Match attributes'),\n columns: columnsData.filter(isRelatedToColumns(matchAttrColumns))\n },\n {\n id: 'all',\n label: i18n.text('All attributes'),\n columns: columnsData.filter(isRelatedToColumns(otherColumns))\n }\n ] as GroupedColumnData[])\n : columnsData;\n};\n","import i18n from 'ui-i18n';\nimport {any, equals, flatten, pipe, pluck, prop, values} from 'ramda';\nimport {DataTypes, MatchRulesAttrTypes, Metadata, SearchFilter, getEntityType} from '@reltio/mdm-sdk';\nimport {collectAttributeItems} from './attributesHelpers';\n\nexport const ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\n\nexport const MATCHES_SORT_OPTIONS = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n }\n },\n {\n id: 'matchRules',\n get label() {\n return i18n.text('Match rule');\n }\n },\n {\n id: 'mlMatchRules',\n get label() {\n return i18n.text('Match IQ');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_SELECT\n }\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n }\n }\n];\n\nexport const ADDITIONAL_SORT_OPTIONS_DATA = [\n {\n id: 'score',\n get label() {\n return i18n.text('Match score');\n }\n },\n {\n id: 'relevanceScores.relevance',\n get label() {\n return i18n.text('Relevance score');\n }\n },\n {\n id: 'relevanceScores.actionLabel',\n get label() {\n return i18n.text('Match action');\n }\n }\n];\n\nexport const DEFAULT_SORT_OPTIONS = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n }\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n }\n }\n];\n\nexport const getSortOptionIdFromData = pluck('id');\n\nexport const getSortingItemsGroups = (metadata: Metadata, entityTypeUri: string) => [\n {\n title: '',\n attributes: collectAttributeItems(metadata, getEntityType(metadata, entityTypeUri))\n }\n];\n\nexport const buildRulesStringFormFilters = (filters: SearchFilter[]): string =>\n flatten(filters.map(prop('values'))).join(',');\n\nexport const isMatchRuleFilter = ({fieldName}: SearchFilter): boolean => {\n return pipe(values, pluck('name'), any(equals(fieldName)))(MatchRulesAttrTypes);\n};\n","import {useReducer} from 'react';\nimport {useActions} from '@reltio/components';\nimport stateReducer, {actions} from './helpers/stateReducer';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {ROWS_PER_PAGE_OPTIONS} from '../helpers/sortHelpers';\n\nexport const useMatchesReducer = (defaultRowsPerPage: number = ROWS_PER_PAGE_OPTIONS[0]) => {\n const initState = {\n page: 0,\n rowsPerPage: defaultRowsPerPage,\n selectedItems: [],\n limitSelection: null\n };\n\n const [state, dispatch] = useReducer(stateReducer, initState);\n const resultActions = useActions({actions, dispatch});\n const viewActions = useViewStateActions();\n const viewState = useViewState();\n return [{...resultActions, ...viewActions}, {...state, ...viewState}, dispatch];\n};\n","import {ApiError, ApiErrorCode, getRequestErrorMessage, WorkflowApiError} from '@reltio/mdm-sdk';\nimport {ErrorPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nexport const showAddRelationErrors = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: i18n.text(\"Can't add relationship\")\n });\n};\n\nexport const showApiError = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: getRequestErrorMessage(error, i18n.text('Something went wrong...'))\n });\n};\n\nexport const showDCRReviewErrors = (apiError: WorkflowApiError) => {\n const error = apiError.error;\n\n if (error?.errorCode === ApiErrorCode.DCR_ALREADY_EXISTS) {\n return;\n }\n showApiError(error);\n};\n","import {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\nexport const useSpinnerAndReloadData = () => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const onStartRequest = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishRequest = useCallback(() => {\n setGlobalSpinner(false);\n reloadData();\n }, [reloadData, setGlobalSpinner]);\n return {onStartRequest, onFinishRequest, isGlobalSpinnerActive};\n};\n","import React, {forwardRef} from 'react';\nimport {ActionButtonMode, MergeButton as MergeButtonComponent, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {showApiError} from '../../utils/errors';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n size?: string;\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const MergeButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, size, onMenuClose = noop}: Props, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n const {deselectByEntities} = useViewStateActions();\n\n const onSuccess = () => {\n deselectByEntities(entities);\n };\n\n return (\n <MergeButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n {...(size ? {size} : {})}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onSuccess={onSuccess}\n onError={showApiError}\n data-reltio-id=\"reltio-potential-matches-merge-button\"\n ref={ref}\n />\n );\n }\n);\n\nMergeButton.displayName = 'mergeButton';\n","import React, {forwardRef} from 'react';\nimport {ActionButtonMode, noop, NotMatchButton as NotMatchButtonComponent} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {showApiError} from '../../utils/errors';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n size?: string;\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const NotMatchButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, size, onMenuClose = noop}: Props, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n const {deselectByEntities} = useViewStateActions();\n\n const onSuccess = () => {\n deselectByEntities(entities);\n };\n return (\n <NotMatchButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n {...(size ? {size} : {})}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onSuccess={onSuccess}\n onError={showApiError}\n data-reltio-id=\"reltio-potential-matches-not-match-button\"\n ref={ref}\n />\n );\n }\n);\n\nNotMatchButton.displayName = 'NotMatchButton';\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M9 4c4.42 0 8 3.58 8 8s-3.58 8-8 8a8 8 0 01-7.419-5h2.224A6.002 6.002 0 009 18c3.31 0 6-2.69 6-6s-2.69-6-6-6a6.002 6.002 0 00-5.196 3H1.581A8 8 0 019 4zm8 .26c3.45.89 6 4.01 6 7.74 0 3.73-2.55 6.85-6 7.74v-2.09a5.99 5.99 0 000-11.3V4.26zM8 7.5l4.5 4.5L8 16.5V13H0v-2h8V7.5z\",\n fillOpacity: \".541\"\n})));","import React, {forwardRef} from 'react';\nimport {ActionButton, ActionButtonMode, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {useSetAMatch} from '../../hooks/useSetAMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const SetAMatchButton = forwardRef<HTMLLIElement, Props>(\n ({entity, entities, className, mode = ActionButtonMode.iconButton, onMenuClose = noop}: Props, ref) => {\n const {deselectByEntities} = useViewStateActions();\n\n const onSuccess = () => {\n deselectByEntities(entities);\n };\n\n const [markingIsInProgress, setAMatch] = useSetAMatch({entity, entities, onSuccess});\n\n return (\n <ActionButton\n className={className}\n disabled={markingIsInProgress}\n mode={mode}\n label={i18n.text('Save on potential matches')}\n icon={SetAsMatchIcon}\n onClick={setAMatch}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nSetAMatchButton.displayName = 'SetAMatchButton';\n","import {useCallback} from 'react';\nimport {Entity, setAsMatch} from '@reltio/mdm-sdk';\nimport {showApiError} from '../utils/errors';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entity: Entity;\n entities: Entity[];\n onSuccess?: () => void;\n};\n\nexport const useSetAMatch = ({entities, entity, onSuccess}: Props): [boolean, () => void] => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const setAMatch = useCallback(() => {\n setGlobalSpinner(true);\n setAsMatch(entity.uri, entities)\n .then(() => {\n onSuccess?.();\n })\n .catch(showApiError)\n .finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [entities, entity, setGlobalSpinner, reloadData, onSuccess]);\n\n return [isGlobalSpinnerActive, setAMatch];\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M10 6v2H4v12.22h12V14h2v6c0 1.05-.82 1.918-1.851 1.994L16 22H4c-1.05 0-1.918-.82-1.994-1.851L2 20V8c0-1.05.82-1.918 1.851-1.994L4 6h6zm4 10v2H6v-2h8zm-3.997-3l-.001 2H6v-2h4.003zM21 2c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1h-7l-2 2 .005-11c0-.55.445-1 .995-1h8zm-10.996 8l-.001 2H6v-2h4.004zm9.286-6.3l-3.17 3.17-1.41-1.42-1.41 1.41 2.82 2.84 4.59-4.58-1.42-1.42z\",\n id: \"svg3192636834a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg3192636834b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg3192636834a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg3192636834b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef, useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, SnackbarContext, noop} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, isEmptyValue} from '@reltio/mdm-sdk';\nimport {useRequestDCRReview} from '../../hooks/useRequestDCRReview';\nimport DcrReviewIcon from './icons/dcrReview.svg';\n\ntype Props = {\n className?: string;\n entity: Entity;\n entities: Entity[];\n mode?: ActionButtonMode;\n onMenuClose?: () => void;\n};\n\nexport const DCRReviewButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, onMenuClose = noop}: Props, ref) => {\n const showSnackbarMessage = useContext(SnackbarContext);\n const [operationIsInProgress, startPMReview] = useRequestDCRReview({\n entity,\n entities,\n showSnackbarMessage\n });\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n\n return canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath) ? (\n <ActionButton\n className={className}\n disabled={operationIsInProgress}\n mode={mode}\n label={operationIsInProgress ? '' : i18n.text('Potential match request')}\n icon={DcrReviewIcon}\n onClick={startPMReview}\n onMenuClose={onMenuClose}\n data-reltio-id=\"reltio-potential-matches-dcr-review-button\"\n ref={ref}\n />\n ) : null;\n }\n);\n\nDCRReviewButton.displayName = 'DCRReviewButton';\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {concat, map, pipe, prop} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {startProcessInstanceByPairs, Entity} from '@reltio/mdm-sdk';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {showDCRReviewErrors} from '../utils/errors';\n\nconst PROCESS_TYPE = 'potentialMatchReview';\n\ntype Props = {\n entities: Entity[];\n entity: Entity;\n showSnackbarMessage?: (message: string) => void;\n};\n\nexport const useRequestDCRReview = ({\n entities,\n entity,\n showSnackbarMessage\n}: Props): [val: boolean, func: () => void] => {\n const {selectors} = mdmModule;\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const workflowPath = useSelector(selectors.getWorkflowPath);\n const environment = useSelector(selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(selectors.getTenant);\n const getUri = prop('uri');\n const getUrisFromEntities = pipe(concat, map(getUri));\n const uris = getUrisFromEntities([entity], entities);\n\n const startPMReview = useCallback(() => {\n setGlobalSpinner(true);\n startProcessInstanceByPairs({\n workflowPath,\n processType: PROCESS_TYPE,\n objectURIs: uris,\n tenant,\n environment\n })\n .then(() => {\n showSnackbarMessage?.(i18n.text('Potential match request: Done'));\n })\n .catch(showDCRReviewErrors)\n .finally(() => {\n setGlobalSpinner(false);\n });\n }, [setGlobalSpinner, workflowPath, uris, tenant, environment, showSnackbarMessage]);\n\n return [isGlobalSpinnerActive, startPMReview];\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n isDataTenantEntity,\n reinstateDataTenantEntityMatch,\n reinstateMixedEntitiesMatches,\n Entity\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {showApiError} from '../utils/errors';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entities: Entity[];\n entity: Entity;\n showSnackbarMessage?: (message: string) => void;\n onSuccess?: () => void;\n};\n\nexport const useReinstateMatch = ({entities, entity, showSnackbarMessage, onSuccess}: Props): [boolean, () => void] => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const onReinstateMatch = useCallback(() => {\n setGlobalSpinner(true);\n const params = {dtssPath, customerTenant: tenant, entity, entities};\n (isDataTenantEntity(entity) ? reinstateDataTenantEntityMatch(params) : reinstateMixedEntitiesMatches(params))\n .then(() => {\n showSnackbarMessage?.(i18n.text('Save as potential match: Done'));\n onSuccess?.();\n })\n .catch(showApiError)\n .finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [setGlobalSpinner, dtssPath, tenant, entity, entities, showSnackbarMessage, reloadData, onSuccess]);\n\n return [isGlobalSpinnerActive, onReinstateMatch];\n};\n","import React, {forwardRef, useContext} from 'react';\n\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, noop, SnackbarContext} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {useReinstateMatch} from '../../hooks/useReinstateMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const ReinstateMatchButton = forwardRef<HTMLLIElement, Props>(\n ({entity, entities, className, mode = ActionButtonMode.iconButton, onMenuClose = noop}: Props, ref) => {\n const showSnackbarMessage = useContext(SnackbarContext);\n const {deselectByEntities} = useViewStateActions();\n const onSuccess = () => {\n deselectByEntities(entities);\n };\n const [reinstateIsInProgress, onReinstateMatch] = useReinstateMatch({\n entity,\n entities,\n showSnackbarMessage,\n onSuccess\n });\n\n return (\n <ActionButton\n className={className}\n disabled={reinstateIsInProgress}\n mode={mode}\n label={i18n.text('Save as potential match')}\n icon={SetAsMatchIcon}\n onClick={onReinstateMatch}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nReinstateMatchButton.displayName = 'ReinstateMatchButton';\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M19 14v3h3v2h-3v3h-2v-3h-3v-2l3-.001V14h2zM17 2a3 3 0 11-1.293 5.708l-4.535 4.535a5 5 0 11-1.414-1.414l4.534-4.536A3 3 0 0117 2zM7 12a3 3 0 100 6 3 3 0 000-6zm10-8a1 1 0 100 2 1 1 0 000-2z\",\n id: \"svg2192258504a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2192258504b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2192258504a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2192258504b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef} from 'react';\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport AddRelationIcon from './icons/addRelationship.svg';\nimport {MatchesActionsPermissions} from '../../types/potentialMatchesTypes';\n\ntype Props = {\n className?: string;\n mainEntity?: Entity;\n currentEntity?: Entity;\n mode?: ActionButtonMode;\n permission?: MatchesActionsPermissions;\n onMenuClose?: () => void;\n onClick?: (val: Pick<Props, 'mainEntity' | 'currentEntity' | 'matchRules' | 'permission'>) => void;\n matchRules?: string[];\n};\n\nexport const CreateRelationButton = forwardRef<HTMLLIElement, Props>(\n (\n {\n className,\n mainEntity,\n currentEntity,\n matchRules,\n mode = ActionButtonMode.iconButton,\n onClick = noop,\n permission,\n onMenuClose = noop\n }: Props,\n ref\n ) => {\n const handleClick = () => onClick({mainEntity, currentEntity, matchRules, permission});\n return (\n <ActionButton\n className={className}\n mode={mode}\n label={i18n.text('Add relationship')}\n icon={AddRelationIcon}\n onClick={handleClick}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nCreateRelationButton.displayName = 'CreateRelationButton';\n","import React, {ReactNode} from 'react';\n\nexport const RightSideHeaderContext = React.createContext<{\n mainTitle?: string;\n secondTitle?: string;\n content?: ReactNode;\n rightContent?: ReactNode;\n bottomContent?: ReactNode;\n onClose: () => void;\n }>({\n onClose: () => {}\n });\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n attributeSelect: {\n width: '100%',\n height: '40px'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {BasicAttributeSelector, AttributeSelectorItemsGroup} from '@reltio/components';\n\nimport useStyles from './styles';\n\ntype AttributeOption = {\n fieldName: string;\n title: string;\n children?: AttributeOption[];\n};\n\ntype Props = {\n onChange: (field) => void;\n options: AttributeSelectorItemsGroup[];\n field?: string;\n};\n\nconst SortingFieldSelector = ({onChange, options, field}: Props) => {\n const styles = useStyles();\n const value = useMemo(() => {\n const path = field?.split('.');\n const sortLevel = path?.length;\n\n const findNode = (attributes: AttributeOption[]) => {\n const level = attributes[0].fieldName.split('.').length;\n if (level === sortLevel || (level === 1 && field.includes('relevanceScores.'))) {\n return attributes.find((attr) => attr.fieldName === field);\n }\n if (level < sortLevel) {\n const parentFieldName = path.slice(0, level).join('.');\n const children = attributes.find((attr) => attr.fieldName === parentFieldName)?.children;\n if (children) {\n return findNode(children);\n }\n }\n };\n\n for (const option of options) {\n const node = findNode(option.attributes);\n if (node) {\n return node;\n }\n }\n }, [field, options]);\n\n const handleChange = useCallback(\n (val: {attribute: AttributeOption}) => {\n onChange(val.attribute.fieldName);\n },\n [onChange]\n );\n\n return (\n <BasicAttributeSelector\n hideCheckBox\n className={styles.attributeSelect}\n value={value}\n itemsGroups={options}\n onSelect={handleChange}\n ungroup\n single\n />\n );\n};\n\nexport default memo(SortingFieldSelector);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n rowCheckbox: {\n marginRight: '20px',\n position: 'relative',\n padding: '12px',\n alignSelf: 'baseline'\n },\n header: {\n padding: '8px 12px 8px 0',\n border: 'rgba(0,0,0,0.05) 1px solid',\n borderTop: 0,\n display: 'flex',\n justifyContent: 'space-between'\n },\n selector: {\n width: '160px'\n },\n sorting: {\n display: 'flex'\n },\n arrow: {\n transition: 'transform 0.3s ease-in'\n },\n rotate: {\n transform: 'rotate(180deg)'\n }\n}));\n","import React, {useContext} from 'react';\nimport Checkbox from '@mui/material/Checkbox';\nimport {Order, SortingField} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItemsGroup, SidePanelContentHeader} from '@reltio/components';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport SortingFieldSelector from '../SortingFieldSelector';\nimport i18n from 'ui-i18n';\nimport ArrowIcon from '@mui/icons-material/ArrowUpward';\nimport classNames from 'classnames';\nimport IconButton from '@mui/material/IconButton';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n selectedCount: number;\n totalCount: number;\n totalOnPage: number;\n onSelect: () => void;\n sortOptions: AttributeSelectorItemsGroup[];\n onSorting?: (SortingField) => void;\n sorting: SortingField;\n children?: React.ReactNode;\n};\n\nconst RightSidePanelHeader = ({\n selectedCount,\n totalCount,\n onSelect,\n sortOptions,\n sorting,\n onSorting,\n totalOnPage,\n children\n}: Props) => {\n const styles = useStyles();\n\n const onChangeSortOrder = () => {\n onSorting({\n ...sorting,\n order: sorting.order === Order.asc ? Order.desc : Order.asc\n });\n };\n\n const onChangeSortField = (field) => {\n onSorting({\n ...sorting,\n field\n });\n };\n\n const sidePanelHeaderProps = useContext(RightSideHeaderContext);\n return (\n <>\n <SidePanelContentHeader\n {...sidePanelHeaderProps}\n secondTitle={!!totalCount && i18n.text('${n} Profiles', {n: totalCount})}\n />\n {children}\n {!!totalOnPage && (\n <div className={styles.header}>\n <Checkbox\n className={styles.rowCheckbox}\n checked={selectedCount === totalOnPage}\n indeterminate={selectedCount > 0 && selectedCount < totalOnPage}\n onChange={onSelect}\n />\n <div className={styles.sorting}>\n <SortingFieldSelector\n field={sorting?.field}\n options={sortOptions}\n onChange={onChangeSortField}\n />\n <IconButton\n onClick={onChangeSortOrder}\n classes={{root: classNames(styles.arrow, {[styles.rotate]: sorting.order === Order.desc})}}\n size=\"large\"\n >\n <ArrowIcon />\n </IconButton>\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default RightSidePanelHeader;\n","import {useMemo} from 'react';\nimport {getSortingItemsGroups} from '../helpers/sortHelpers';\nimport {Metadata} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItemsGroup} from '@reltio/components';\n\ntype SortOption = {\n id: string;\n label: string;\n};\nexport const useSortOptions = (\n defaultOptions: SortOption[],\n additionalOptions: SortOption[],\n metadata: Metadata,\n entityTypeUri: string\n): AttributeSelectorItemsGroup[] => {\n return useMemo(() => {\n const itemsGroups = getSortingItemsGroups(metadata, entityTypeUri);\n const defaultData = {\n title: '',\n attributes: defaultOptions\n .concat(additionalOptions || [])\n .map((col) => ({title: col.label, fieldName: col.id}))\n };\n return [defaultData, ...itemsGroups];\n }, [metadata, entityTypeUri, defaultOptions, additionalOptions]);\n};\n","import {find, propEq} from 'ramda';\nimport {useViewState} from '../contexts/ViewStateContext';\n\nexport const useEntityColor = (entityUri: string) => {\n const {entityColors} = useViewState();\n\n const entityColor = find(propEq('entityUri', entityUri))(entityColors);\n return entityColor ? entityColor.color : '';\n};\n","import {makeStyles} from '@mui/styles';\n\ntype StylesProps = {\n color?: string;\n};\n\nexport const useStyles = makeStyles((theme) => {\n return {\n hidden: {\n visibility: 'hidden'\n },\n rowCheckbox: {\n marginLeft: '-9px',\n marginRight: '9px',\n position: 'relative',\n padding: '9px',\n alignSelf: 'baseline'\n },\n entity: {\n paddingTop: '12px',\n paddingBottom: '8px',\n overflow: 'hidden',\n flex: 1\n },\n entityHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n whiteSpace: 'pre'\n },\n actions: {\n marginLeft: 'auto',\n marginRight: 0,\n display: 'flex',\n height: '17px'\n },\n actionButtons: {\n display: 'none'\n },\n active: {\n display: 'flex'\n },\n wrapper: {\n position: 'relative',\n padding: '0 15px 0 15px',\n color: 'rgba(0,0,0,0.87)',\n '&::after': {\n content: '\"\"',\n position: 'absolute' as const,\n right: 0,\n top: 0,\n width: '40px',\n height: '100%',\n pointerEvents: 'none'\n },\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.04)',\n '& $actionButtons': {\n display: 'flex'\n },\n '& $commentsContainer': {\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n }\n },\n display: 'flex',\n boxSizing: 'border-box',\n borderBottom: '1px rgba(0,0,0,0.05) solid',\n paddingLeft: '12px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none',\n fontWeight: 500,\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n matchRulesWrapper: {\n padding: '12px 15px 4px 2px',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n '& $dividerWrapper:nth-child(2):not(:last-child)': {\n display: 'block'\n }\n },\n selectedRow: {\n backgroundColor: 'rgba(0, 114, 206, 0.12)'\n },\n coloredRow: {\n '&:before': {\n content: '\"\"',\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: '4px',\n height: '100%',\n borderRadius: '0px 4px 4px 0px',\n background: ({color}: StylesProps) => color\n }\n },\n matchScore: {\n paddingLeft: '12px',\n color: 'rgba(0,0,0,0.54)'\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n height: '24px',\n marginLeft: '6px'\n },\n border: {\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n },\n rightButton: {\n marginLeft: '8px'\n },\n tenantIcon: {\n marginLeft: '12px'\n },\n dividerWrapper: {\n display: 'none',\n marginLeft: '12px',\n alignSelf: 'stretch'\n },\n divider: {\n borderColor: 'rgba(0,0,0,0.12)'\n },\n relevanceBadge: {\n marginLeft: '12px'\n }\n };\n});\n","import React, {memo, useState} from 'react';\nimport Checkbox from '@mui/material/Checkbox';\nimport Divider from '@mui/material/Divider';\nimport {\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n DataTenantBadge,\n EntityUriLink,\n MatchRulesBlock,\n MatchRuleVariant,\n RelevanceScoreBadge\n} from '@reltio/components';\n\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n EntitiesMap,\n Entity,\n getEntityUriForLink,\n getLabel,\n Match,\n Metadata,\n isDataTenantEntity,\n checkMatchRuleSummaryRelevance\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {useEntityColor} from '../../hooks/useEntityColor';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected?: boolean;\n isColumnViewMode?: boolean;\n rowIndex: number;\n toggleSelect?: (match: Match) => void;\n entityToMatch: Entity;\n actionButtonsRenderer: (props: ActionButtonRendererProps) => React.ReactElement;\n match: Match;\n matches: Match[];\n entitiesMap?: EntitiesMap<Pick<Entity, 'label' | 'uri' | 'type'>>;\n metadata: Metadata;\n matchRules?: string[];\n};\n\nconst ItemRenderer = ({\n rowIndex,\n match,\n toggleSelect,\n entityToMatch,\n isRowSelected,\n isColumnViewMode,\n actionButtonsRenderer,\n metadata,\n entitiesMap = {}\n}: Props) => {\n const entity = match.object;\n const color = useEntityColor(entity.uri);\n const styles = useStyles({color});\n const [openMenu, setOpenMenu] = useState(false);\n const onToggleSelect = () => toggleSelect(match);\n\n const isRowSelectable = entity !== entityToMatch;\n const Actions = actionButtonsRenderer;\n\n const showRelevanceBadge = match.matchRuleSummaries?.some(checkMatchRuleSummaryRelevance);\n\n return (\n <div\n className={classnames(styles.wrapper, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [styles.coloredRow]: isColumnViewMode && isRowSelected,\n [styles.selectedRow]: isRowSelected\n })}\n >\n <Checkbox\n className={classnames(styles.rowCheckbox, {[styles.hidden]: !isRowSelectable})}\n checked={isRowSelected}\n onChange={onToggleSelect}\n data-reltio-id={`reltio-matches-table-checkbox-${rowIndex}`}\n />\n <div className={styles.entity}>\n <div className={styles.entityHeader}>\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n <div className={styles.actions}>\n <div className={classnames(styles.actionButtons, {[styles.active]: openMenu})}>\n <Actions\n buttonClassName={styles.rightButton}\n hoveredMatch={match}\n onActionsMenuOpen={() => setOpenMenu(true)}\n onActionsMenuClose={() => setOpenMenu(false)}\n />\n </div>\n {entityToMatch && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.border]: openMenu})}\n uri={createObjectIdForPM(entityToMatch.uri, match.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: match.object.uri\n })}\n allowOnlyOneComment\n showAlways={openMenu}\n />\n )}\n </div>\n </div>\n <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n entitiesMap={entitiesMap}\n entity={entity}\n match={match}\n metadata={metadata}\n variant={MatchRuleVariant.excludeNotMatch}\n />\n <div className={styles.dividerWrapper}>\n <Divider orientation=\"vertical\" className={styles.divider} />\n </div>\n {showRelevanceBadge && (\n <RelevanceScoreBadge\n className={styles.relevanceBadge}\n matchRuleSummaries={match.matchRuleSummaries}\n />\n )}\n {!showRelevanceBadge && !!match.matchScore && (\n <div className={styles.matchScore}>{match.matchScore}</div>\n )}\n {isDataTenantEntity(entity) && (\n <DataTenantBadge className={styles.tenantIcon} dataTenantId={entity.dataTenant} />\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default memo(ItemRenderer);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n view: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflowY: 'auto',\n overflowX: 'hidden'\n }\n}));\n","import React from 'react';\nimport {Entity, Metadata, EntitiesMap, Match} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {ItemRenderer} from '../ItemRenderer';\nimport {useViewState} from '../../contexts/ViewStateContext';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n metadata: Metadata;\n matches: Match[];\n entityToMatch: Entity;\n toggleSelect: (match: Match) => void;\n actionButtonsRenderer: (props: ActionButtonRendererProps) => React.ReactElement;\n entitiesMap?: EntitiesMap<Pick<Entity, 'label' | 'uri' | 'type'>>;\n selectedItems: Match[];\n isLoading: boolean;\n};\n\nexport const MatchItems = ({\n entityToMatch,\n matches,\n toggleSelect,\n actionButtonsRenderer,\n metadata,\n entitiesMap,\n selectedItems,\n isLoading\n}: Props) => {\n const styles = useStyles();\n const {comparisonViewMode} = useViewState();\n return (\n <div className={styles.view}>\n {isLoading && <LinearLoadIndicator />}\n {matches.map((match, index) => (\n <ItemRenderer\n key={match.object.uri}\n rowIndex={index}\n match={match}\n entityToMatch={entityToMatch}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n matchRules={match.matchRules}\n metadata={metadata}\n entitiesMap={entitiesMap}\n isColumnViewMode={comparisonViewMode === ComparisonViewMode.COLUMNS}\n isRowSelected={selectedItems.some((item) => item.object.uri === match.object.uri)}\n />\n ))}\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n padding: '8px 16px',\n gap: '8px',\n borderBottom: 'rgba(0,0,0,0.05) 1px solid'\n },\n inputRoot: {\n borderRadius: '4px'\n },\n menuButtonRoot: {\n padding: 0\n }\n});\n","import React, {memo, useCallback, useRef, useState} from 'react';\nimport {SearchInput, TenantsDropDownSelector} from '@reltio/components';\nimport {always, isEmpty, pipe, propEq, trim, when} from 'ramda';\nimport {DataTenant} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n onSearch: (searchText: string) => void;\n searchTenant: DataTenant;\n onChangeSearchTenant: (tenant: DataTenant) => void;\n entityTypeUri: string;\n};\n\nconst RightSideSearch = ({onSearch, searchTenant, onChangeSearchTenant, entityTypeUri}: Props) => {\n const styles = useStyles();\n const searchInputRef = useRef<HTMLInputElement>();\n const [currentSearchText, setCurrentSearchText] = useState<string>('');\n const handleSearch = useCallback(when(propEq('key', 'Enter'), pipe(always(currentSearchText), trim, onSearch)), [\n currentSearchText,\n onSearch\n ]);\n\n const handleChangeSearchText = useCallback(\n (newSearchText) => {\n setCurrentSearchText(newSearchText);\n if (isEmpty(newSearchText) && document.activeElement !== searchInputRef.current) {\n onSearch(newSearchText);\n }\n },\n [onSearch]\n );\n\n if (!onSearch) {\n return null;\n }\n\n return (\n <div className={styles.root}>\n <TenantsDropDownSelector\n entityTypeUri={entityTypeUri}\n selectedTenant={searchTenant}\n onChangeTenant={onChangeSearchTenant}\n />\n <SearchInput\n classes={{root: styles.inputRoot}}\n inputRef={searchInputRef}\n fullWidth\n height={40}\n autofocus={false}\n value={currentSearchText}\n onSearch={handleChangeSearchText}\n onKeyPress={handleSearch}\n />\n </div>\n );\n};\nexport default memo(RightSideSearch);\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport {Action} from './ActionsPanel';\n\ntype Props = {\n item: Action;\n onMenuClose?: () => void;\n};\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const {ActionButton, props} = item;\n return <ActionButton ref={ref} mode=\"menuItem\" onMenuClose={onMenuClose} {...props} />;\n});\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React from 'react';\nimport {splitAt} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActionButtonMode, DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport MenuItemRenderer from './MenuItemRenderer';\n\nexport type Action = {\n ActionButton: (props) => JSX.Element;\n show: boolean;\n props: Record<string, unknown>;\n};\n\ntype Props = {\n actions: Action[];\n numberOfButtons?: number;\n mode?: 'normal' | 'hover';\n actionButtonSize?: string;\n classes?: {\n actionButton: string;\n moreOptions: string;\n };\n onActionsMenuOpen?: () => void;\n onActionsMenuClose?: () => void;\n};\n\nexport const ActionsPanel = ({\n actions,\n numberOfButtons = 2,\n mode = 'normal',\n actionButtonSize,\n classes,\n onActionsMenuOpen,\n onActionsMenuClose\n}: Props) => {\n const [buttonActions, menuActions] = splitAt(numberOfButtons, actions);\n\n const buttonMode = mode === 'normal' ? ActionButtonMode.button : ActionButtonMode.iconButton;\n const buttonSize = mode === 'normal' ? 'MPlus' : 'S';\n\n return (\n <>\n {buttonActions.map(({ActionButton, props}, index) => (\n <ActionButton\n key={index}\n mode={buttonMode}\n className={classes?.actionButton}\n {...(actionButtonSize ? {size: actionButtonSize} : {})}\n {...props}\n />\n ))}\n {menuActions.length > 0 && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n size: buttonSize,\n tooltipTitle: i18n.text('More actions'),\n 'data-reltio-id': 'reltio-potential-matches-actions-dropdown-menu-button'\n }}\n className={classes?.moreOptions}\n menuId={'matches-view-actions'}\n menuItems={menuActions}\n onMenuOpen={onActionsMenuOpen}\n onMenuClose={onActionsMenuClose}\n MenuItemRenderer={MenuItemRenderer}\n />\n )}\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import {BasicTablePagination, LinearLoadIndicator, useDidUpdateEffect} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n Metadata,\n SearchFilter,\n PotentialMatchesPerspectiveConfig,\n DataTenant,\n SortingField,\n isDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {identity, isEmpty, pathEq, prop} from 'ramda';\nimport React, {memo, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useFindEntities} from '../../hooks/useFindEntities';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {MergeButton, NotMatchButton, SetAMatchButton} from '../Actions';\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {ROWS_PER_PAGE_OPTIONS, DEFAULT_SORT_OPTIONS} from '../../helpers/sortHelpers';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport RightSideSearch from './RightSideSearch/RightSideSearch';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n};\n\nexport const FindMatchesView = memo(({entity, metadata, filters, sorting, onSorting, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer();\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, selectedItems, isGlobalSpinnerActive} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n const tenant = useSelector(mdmModule.selectors.getTenantObject);\n const [searchText, setSearchText] = useState<string>('');\n const [searchTenant, setSearchTenant] = useState<DataTenant>(tenant);\n\n const handleChangeSearchTenant = useCallback(\n (newSearchTenant) => {\n setSearchTenant(newSearchTenant);\n changePage(0);\n },\n [changePage]\n );\n\n const requestFilters: SearchFilter[] = useMemo(\n () =>\n [\n isEmpty(searchText)\n ? null\n : {\n filter: 'containsWordStartingWith',\n fieldName: 'attributes',\n values: [searchText]\n },\n {\n filter: 'equals',\n fieldName: 'type',\n values: [entityType]\n },\n {filter: 'not equals', fieldName: 'uri', values: [entityUri]},\n ...filters\n ].filter(identity),\n [entityType, entityUri, searchText, filters]\n );\n\n const sortOptions = useSortOptions(DEFAULT_SORT_OPTIONS, [], metadata, entityType);\n\n const {entities, total, findEntities, loading} = useFindEntities({\n enabled: !!entityUri,\n entityType,\n filters: requestFilters,\n sorting,\n page,\n rowsPerPage,\n searchTenantId: searchTenant.id\n });\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n addReloadHandler(findEntities);\n return () => removeReloadHandler(findEntities);\n }, [findEntities, addReloadHandler, removeReloadHandler]);\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(entities);\n }, [setSelectedItems, entities]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri]);\n\n useDidUpdateEffect(() => {\n resetPage();\n }, [filters, searchText]);\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const {canMerge, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const entities = [hoveredMatch.object];\n const isDTEntity = isDataTenantEntity(hoveredMatch.object);\n const areBothEntitiesDT = isDTEntity && isDataTenantEntity(entity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: SetAMatchButton,\n show: canMark && !isDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={3}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata]\n );\n\n const selectedCount = useMemo(() => {\n return entities\n .map((match) => selectedItems?.find(pathEq(['object', 'uri'], match.object.uri)))\n .filter(identity).length;\n }, [selectedItems, entities]);\n\n return (\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={entities.length}\n sortOptions={sortOptions}\n sorting={sorting}\n onSorting={onSorting}\n onSelect={selectedCount ? resetSelected : selectAll}\n >\n <RightSideSearch\n searchTenant={searchTenant}\n onChangeSearchTenant={handleChangeSearchTenant}\n entityTypeUri={entityType}\n onSearch={setSearchText}\n />\n </RightSidePanelHeader>\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={entities}\n metadata={metadata}\n selectedItems={selectedItems}\n isLoading={loading}\n />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n );\n});\n\nFindMatchesView.displayName = 'FindMatchesView';\n","import {useSafePromise} from '@reltio/components';\nimport {\n buildFilterQueryString,\n enrichEntityWithDataTenant,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotalFromDataTenant,\n getTotals,\n GlobalSearchRequestOptions,\n SearchFilter,\n SortingField\n} from '@reltio/mdm-sdk';\nimport {useCallback, useState, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {map} from 'ramda';\n\ntype Props = {\n entityType: string;\n filters: SearchFilter[];\n sorting: SortingField;\n page: number;\n rowsPerPage: number;\n enabled: boolean;\n searchTenantId: string;\n};\n\nexport const useFindEntities = ({entityType, filters, sorting, page, rowsPerPage, enabled, searchTenantId}: Props) => {\n const {order, field} = sorting;\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const tenant = useSelector(mdmModule.selectors.getTenantObject);\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const [loading, setLoading] = useState(false);\n const [total, setTotal] = useState(0);\n const [entities, setEntities] = useState([]);\n const safePromise = useSafePromise();\n const DEFAULT_SELECTION = ['uri', 'label', 'type', 'secondaryLabel', 'attributes', 'crosswalks'];\n const filterQuery: string = useMemo(() => buildFilterQueryString()(filters), [filters]);\n const findEntities = useCallback(\n () => {\n if (enabled) {\n setLoading(true);\n const isDtss = searchTenantId !== tenant.id;\n const dtssProps = {\n customerTenant: tenant.id,\n dataTenant: searchTenantId,\n dtssPath\n };\n\n const entityRequestOptions = {\n offset: page * rowsPerPage,\n max: rowsPerPage,\n sort: field,\n order,\n select: DEFAULT_SELECTION.join(','),\n globalFilter,\n activityFilter\n };\n const entityRequest = isDtss\n ? getFilteredEntitiesFromDataTenant({\n filters,\n options: entityRequestOptions,\n ...dtssProps\n }).then(map(enrichEntityWithDataTenant(searchTenantId)))\n : getFilteredEntities(filters, entityRequestOptions);\n\n const totalRequestOption = {activityFilter, globalFilter};\n const totalRequest = isDtss\n ? getTotalFromDataTenant({\n filters,\n options: totalRequestOption,\n ...dtssProps\n })\n : getTotals(filters, totalRequestOption);\n\n safePromise(Promise.all([entityRequest, totalRequest]))\n .then((results) => {\n const [entities, totalResponse] = results;\n const {total} = totalResponse;\n const entityToMatchFormat = (entity) => ({object: entity});\n setEntities(entities.map(entityToMatchFormat));\n setTotal(total);\n })\n .finally(() => setLoading(false));\n }\n },\n [\n entityType,\n filterQuery,\n field,\n order,\n page,\n rowsPerPage,\n enabled,\n activityFilter,\n globalFilter,\n searchTenantId,\n tenant\n ] // eslint-disable-line\n );\n useEffect(() => {\n findEntities();\n }, [findEntities]);\n\n return {entities, total, findEntities, loading};\n};\n","import {assocPath, evolve, identity, propOr, filter, pipe, map} from 'ramda';\nimport {\n canCreateRelationBetweenEntities,\n generateNewRelationUri,\n getRulesConfig,\n getEntityType,\n getRelationType,\n inOutRelationsDeduplicator,\n Metadata,\n Entity,\n InOutRelation,\n Connection,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\n\nexport const getRelationTypesFromConfig = (\n metadata: Metadata,\n config: PotentialMatchesPerspectiveConfig,\n mainEntity: Entity,\n entity: Entity,\n matchRules: string[]\n): {\n inRelations: InOutRelation;\n outRelations: InOutRelation;\n} => {\n const {isNotDuplicatedInRelation, isNotDuplicatedOutRelation} = inOutRelationsDeduplicator();\n\n const setObjectTypes = (relation) =>\n pipe(\n assocPath(['startObject', 'objectType'], getEntityType(metadata, relation.startObject.objectTypeURI)),\n assocPath(['endObject', 'objectType'], getEntityType(metadata, relation.endObject.objectTypeURI))\n )(relation);\n\n const entityType = getEntityType(metadata, entity.type);\n const matchActionConfig = propOr({}, 'matchActions', config);\n const rulesConfig = getRulesConfig(matchActionConfig, entityType, matchRules);\n const [relationTypeUris] = rulesConfig.map(({createRelation}) => createRelation).filter(identity);\n return (\n evolve(\n {\n inRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, entity, mainEntity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedInRelation),\n map(setObjectTypes)\n ),\n outRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, mainEntity, entity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedOutRelation),\n map(setObjectTypes)\n )\n },\n relationTypeUris\n ) || {}\n );\n};\n\nexport const createNewConnection = (entity = {} as Entity): Connection => ({\n relation: {\n relationUri: generateNewRelationUri()\n },\n entity,\n isNew: true\n});\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n dialogPaper: {\n height: '600px',\n maxWidth: '600px'\n },\n dialogTitle: {\n padding: '16px 16px 0'\n },\n titleText: {\n color: theme.palette.text.primary,\n fontSize: '18px',\n letterSpacing: 0,\n lineHeight: '21px'\n },\n path: {\n color: theme.palette.text.secondary,\n fontize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n padding: '6px 0'\n },\n content: {\n padding: '8px 16px 0px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n attributeList: {\n paddingTop: '22px'\n }\n}));\n","import React, {useMemo, useCallback, useRef} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {identity, isEmpty, pipe, pathOr} from 'ramda';\n\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport {AttributesList, ConnectionRelationTypeSelector, PopupBoundariesContext} from '@reltio/components';\n\nimport {\n createRelation,\n Entity,\n getActivenessAttributes,\n getLabel,\n getRelationAttributesList,\n ModeTypes,\n validateConnectionRelation,\n Connection,\n Metadata,\n AttributeType,\n RecordAttributesType,\n PotentialMatchesPerspectiveConfig,\n markAsNotMatch\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getRelationTypesFromConfig} from '../../helpers/relationsHelpers';\nimport {showAddRelationErrors} from '../../utils/errors';\nimport {MatchesActionsPermissions} from '../../types/potentialMatchesTypes';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n open?: boolean;\n onClose: (relationUri: string) => void;\n permission?: MatchesActionsPermissions;\n};\n\nconst AddRelationDialog = ({\n config,\n mainEntity,\n currentEntity,\n matchRules,\n open,\n onClose = identity,\n permission\n}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const containerRef = useRef(null);\n\n const {onFinishRequest} = useSpinnerAndReloadData();\n const {deselectByEntities} = useViewStateActions();\n\n const {relation = {}}: Connection =\n useSelector((state) => mdm.selectors.getRelationToAddByViewId(state, config.id)) || {};\n\n const {inRelations: inRelationTypes = [], outRelations: outRelationTypes = []} = useMemo(\n () => getRelationTypesFromConfig(metadata, config, mainEntity, currentEntity, matchRules),\n [config, mainEntity, currentEntity, matchRules, metadata]\n );\n\n const {relationUri, relationType = {}} = relation;\n const attributes: RecordAttributesType = pathOr({}, ['object', 'attributes'], relation);\n\n const relationAttrTypes: AttributeType[] = useMemo(\n () => getRelationAttributesList(metadata, relationType),\n [relationType, metadata]\n );\n\n const attributeListEntity = useMemo(\n () => ({\n attributes,\n ...getActivenessAttributes(relation)\n }),\n [relation, attributes]\n );\n\n const viewId = config.id;\n\n const onRelationTypeChange = useCallback(\n pipe(profile.relations.actions.setRelationType(config.id, relationUri), dispatch),\n [config, relationUri, dispatch]\n );\n\n const onAddAttributes = useCallback(\n (params) => pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const handleClose = useCallback(() => onClose(relationUri), [relationUri, onClose]);\n\n const resetErrors = useCallback(() => dispatch(profile.errors.actions.errorsSet([])), [dispatch]);\n\n const validate = useCallback(() => {\n const errors = validateConnectionRelation(metadata, {relation});\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [relation, metadata, dispatch]);\n\n const onCancel = useCallback(() => {\n resetErrors();\n handleClose();\n }, [resetErrors, handleClose]);\n\n const onAdd = () => {\n const {relationType, startDate, endDate} = relation;\n if (validate()) {\n createRelation({\n startEntityUri: mainEntity.uri,\n endEntityUri: currentEntity.uri,\n relationType,\n attributes: pathOr({}, ['object', 'attributes'], relation),\n startDate,\n endDate\n })\n .then(async () => {\n if (permission?.canMark) {\n await markAsNotMatch(currentEntity.uri, [mainEntity]);\n deselectByEntities([currentEntity]);\n onFinishRequest();\n }\n })\n .catch(showAddRelationErrors);\n handleClose();\n }\n };\n\n const title = `${getLabel(currentEntity.label)} \\u2192 ${getLabel(mainEntity.label)}`;\n\n const disabled = isEmpty(relationType);\n const boundariesElement = containerRef.current;\n const popupBoundariesValue = useMemo(\n () => ({\n element: boundariesElement,\n priority: ['left', 'right', 'top', 'bottom']\n }),\n [boundariesElement]\n );\n return (\n <Dialog open={open} fullWidth maxWidth=\"sm\" onClose={onCancel} classes={{paper: styles.dialogPaper}}>\n <DialogTitle classes={{root: styles.dialogTitle}}>\n <Typography variant=\"subtitle1\" classes={{root: styles.titleText}}>\n {i18n.text('Add relationship')}\n </Typography>\n <Typography variant=\"body2\" classes={{root: styles.path}}>\n {title}\n </Typography>\n </DialogTitle>\n <DialogContent classes={{root: styles.content}} ref={containerRef}>\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ConnectionRelationTypeSelector\n relation={relation}\n metadata={metadata}\n inRelationTypes={inRelationTypes}\n outRelationTypes={outRelationTypes}\n onChange={onRelationTypeChange}\n applyFirstByDefault={true}\n />\n <AttributesList\n className={styles.attributeList}\n attrTypes={relationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={true}\n mode={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 {profile} from '@reltio/mdm-module';\nimport {Entity, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport React, {useCallback, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport AddRelationDialog from '../components/AddRelationDialog/AddRelationDialog';\nimport {createNewConnection} from '../helpers/relationsHelpers';\nimport {MatchesActionsPermissions} from '../types/potentialMatchesTypes';\n\ntype DialogContentProps = {\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n permission?: MatchesActionsPermissions;\n};\nexport const useAddRelationDialog = (config: PotentialMatchesPerspectiveConfig) => {\n const [showDialog, setShowDialog] = useState(false);\n const [relationDialogContent, setRelationDialogContent] = useState<DialogContentProps>({});\n const dispatch = useDispatch();\n\n const openAddRelationDialog = useCallback(\n ({mainEntity, currentEntity, matchRules, permission}: DialogContentProps) => {\n const newConnection = createNewConnection(currentEntity);\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n setRelationDialogContent({mainEntity, currentEntity, matchRules, permission});\n setShowDialog(true);\n },\n [config, dispatch]\n );\n\n const closeAddRelationDialog = useCallback(\n (relationUri: string) => {\n pipe(profile.relations.actions.closeRelationEditor, dispatch)(config.id, relationUri);\n setShowDialog(false);\n },\n [config, dispatch]\n );\n\n const AddRelationDialogRenderer = useCallback(() => {\n return showDialog ? (\n <AddRelationDialog\n config={config}\n open={showDialog}\n onClose={closeAddRelationDialog}\n {...relationDialogContent}\n />\n ) : null;\n }, [showDialog, config, closeAddRelationDialog, relationDialogContent]);\n\n return {showDialog, openAddRelationDialog, AddRelationDialogRenderer};\n};\n","export const DEFAULT_OPTIONS = {\n showTransitiveMatches: false\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo} from 'react';\nimport {partition, prop, identity, equals} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n useCollaboration,\n EntitiesMapContext,\n CollaborationContextProvider\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue,\n SortingField\n} from '@reltio/mdm-sdk';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useMatches} from '../../hooks/useMatches';\nimport {useAddRelationDialog} from '../../hooks/useAddRelationDialog';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {CreateRelationButton, DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport {\n ROWS_PER_PAGE_OPTIONS,\n MATCHES_SORT_OPTIONS,\n ADDITIONAL_SORT_OPTIONS_DATA,\n isMatchRuleFilter,\n buildRulesStringFormFilters\n} from '../../helpers/sortHelpers';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\nimport {ActionButtonRendererProps, MatchesOptions} from '../../types/potentialMatchesTypes';\nimport {DEFAULT_OPTIONS} from '../../constants/defaultOptions';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n options?: MatchesOptions;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n config: PotentialMatchesPerspectiveConfig;\n};\n\nconst MatchesView = memo(\n ({entity, metadata, filters, options = DEFAULT_OPTIONS, sorting, onSorting, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer();\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, selectedItems, isGlobalSpinnerActive} = state;\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const hasWorkflow = canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath);\n const {uri: entityUri, type: entityType} = entity || {};\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const sortOptions = useSortOptions(MATCHES_SORT_OPTIONS, ADDITIONAL_SORT_OPTIONS_DATA, metadata, entityType);\n\n const [matchRulesFilters, regularFilters] = useMemo(\n (): [SearchFilter[], SearchFilter[]] => partition(isMatchRuleFilter)(filters),\n [filters]\n );\n\n const matchesFilter = useMemo((): string => buildFilterQueryString()(regularFilters), [regularFilters]);\n\n const {matches, total, entitiesMap, loadMatches, loading} = useMatches({\n enabled: !!entityUri,\n entity,\n filter: matchesFilter,\n page,\n sorting,\n rowsPerPage,\n options,\n rules: buildRulesStringFormFilters(matchRulesFilters)\n });\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n addReloadHandler(loadMatches);\n return () => removeReloadHandler(loadMatches);\n }, [loadMatches, addReloadHandler, removeReloadHandler]);\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, options]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)),\n [entityUri, entitiesMap]\n );\n const collaboration = useCollaboration({objectIds});\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const permission = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n const {canMerge, canAddRelation, canMark} = permission;\n\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n const areBothEntitiesDT = [...entities, entity].every(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && hasWorkflow,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity: entity,\n currentEntity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n onClick: openAddRelationDialog,\n permission\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, openAddRelationDialog, hasWorkflow]\n );\n\n const selectedCount = useMemo(() => {\n return matches.map((match) => selectedItems?.find(equals(match))).filter(identity).length;\n }, [selectedItems, matches]);\n\n return (\n <CollaborationContextProvider collaboration={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={matches.length}\n sortOptions={sortOptions}\n sorting={sorting}\n onSorting={onSorting}\n onSelect={selectedCount ? resetSelected : selectAll}\n />\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n metadata={metadata}\n entitiesMap={entitiesMap}\n selectedItems={selectedItems}\n isLoading={loading}\n />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n {showDialog && <AddRelationDialogRenderer />}\n </EntitiesMapContext.Provider>\n </CollaborationContextProvider>\n );\n }\n);\n\nMatchesView.displayName = 'MatchesView';\n\nexport default MatchesView;\n","import {useCallback, useEffect, useState} from 'react';\nimport {useMatchesLoader} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {Entity, SortingField} from '@reltio/mdm-sdk';\n\ntype Params = {\n entity: Entity;\n enabled: boolean;\n page: number;\n filter: string;\n rowsPerPage: number;\n options: {\n showTransitiveMatches?: boolean;\n };\n sorting?: SortingField;\n rules?: string;\n};\n\nexport const useMatches = ({entity, filter, rules, sorting, page, rowsPerPage, options, enabled}: Params) => {\n const {setEntitiesMap} = useViewStateActions();\n const [loading, setLoading] = useState(false);\n const onStartLoading = useCallback(() => {\n setLoading(true);\n }, [setLoading]);\n const onFinishLoading = useCallback(() => {\n setLoading(false);\n }, [setLoading]);\n const {total, matches, entitiesMap, loadMatches} = useMatchesLoader({\n enabled,\n entity,\n filter,\n rules,\n onFinishLoading,\n onStartLoading,\n options,\n page,\n rowsPerPage,\n sorting,\n markMatchedValues: true\n });\n\n useEffect(() => {\n setEntitiesMap(entitiesMap);\n }, [setEntitiesMap, entitiesMap]);\n\n return {matches, total, entitiesMap, loadMatches, loading};\n};\n","import {useState, useEffect, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n getNotMatch,\n getNotMatchesFromDataTenants,\n withDtssPotentialItems,\n getEntitiesMapForTransitiveMatches,\n GlobalSearchRequestOptions,\n addGlobalFilterToQuery,\n Match,\n NOT_MATCH,\n SortingField\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {usePagingSimulator, useSafePromise} from '@reltio/components';\n\ntype Params = {\n entityUri: string;\n enabled: boolean;\n page: number;\n filter: string;\n rowsPerPage: number;\n sorting?: SortingField;\n};\n\nexport const useNotMatches = ({entityUri, filter, sorting, page, rowsPerPage, enabled}: Params) => {\n const {order, field} = sorting || {};\n const [total, setTotal] = useState(0);\n const [loading, setLoading] = useState(false);\n const [matches, setMatches] = useState<Match[]>([]);\n const [entitiesMap, setEntitiesMap] = useState({});\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenants = useSelector(mdmModule.selectors.getDataTenants);\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const dtssParams = useMemo(\n () => ({\n dtssPath,\n dataTenants,\n entity: {uri: entityUri},\n customerTenant: tenant,\n dtssRequest: getNotMatchesFromDataTenants\n }),\n [dtssPath, dataTenants, entityUri, tenant]\n );\n\n //eslint-disable-next-line react-hooks/exhaustive-deps\n const getNotMatchWithDtss = useCallback(withDtssPotentialItems(dtssParams, getNotMatch), [dtssParams]);\n\n const getNotMatchWithPaging = usePagingSimulator(getNotMatchWithDtss);\n\n const safePromise = useSafePromise();\n const markAsNotMatch = (record) => ({matchRules: [NOT_MATCH], ...record});\n const loadNotMatchesIfNeeded = useCallback(\n (force?: boolean) => {\n if (enabled) {\n setLoading(true);\n safePromise(\n getNotMatchWithPaging({\n entityUri: entityUri,\n offset: page * rowsPerPage,\n max: rowsPerPage,\n filter: addGlobalFilterToQuery(globalFilter, filter) || '',\n sort: field,\n force,\n order,\n activeness: activityFilter\n })\n )\n .then((result) => {\n const {response, total, originalResponse} = result;\n setTotal(total);\n setMatches(response.map(markAsNotMatch));\n const notAMatchUris = response.map(({uri}) => uri);\n if (notAMatchUris.length > 0) {\n setEntitiesMap(getEntitiesMapForTransitiveMatches(originalResponse));\n }\n })\n .finally(() => setLoading(false));\n }\n },\n [entityUri, filter, field, order, page, rowsPerPage, activityFilter, enabled, globalFilter] // eslint-disable-line\n );\n\n useEffect(() => {\n loadNotMatchesIfNeeded();\n }, [loadNotMatchesIfNeeded]);\n\n const loadNotMatches = useCallback(() => {\n loadNotMatchesIfNeeded(true);\n }, [loadNotMatchesIfNeeded]);\n\n return {matches, total, entitiesMap, loadNotMatches, loading};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo} from 'react';\nimport {prop, equals, identity} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n useCollaboration,\n EntitiesMapContext,\n CollaborationContextProvider\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue,\n SortingField\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {useNotMatches} from '../../hooks/useNotMatches';\nimport {DCRReviewButton, MergeButton, ReinstateMatchButton} from '../Actions';\nimport {ROWS_PER_PAGE_OPTIONS, DEFAULT_SORT_OPTIONS} from '../../helpers/sortHelpers';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\n\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n};\n\nexport const NotMatchView = memo(({entity, metadata, filters, sorting, onSorting, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer();\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, selectedItems, isGlobalSpinnerActive} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const hasWorkflow = canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath);\n const {matches, total, entitiesMap, loadNotMatches, loading} = useNotMatches({\n enabled: !!entityUri,\n entityUri,\n filter: buildFilterQueryString()(filters),\n page,\n rowsPerPage,\n sorting\n });\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)),\n [entityUri, entitiesMap]\n );\n const collaboration = useCollaboration({objectIds});\n\n const sortOptions = useSortOptions(DEFAULT_SORT_OPTIONS, [], metadata, entityType);\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n addReloadHandler(loadNotMatches);\n return () => removeReloadHandler(loadNotMatches);\n }, [loadNotMatches, addReloadHandler, removeReloadHandler]);\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri]);\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const {canMerge, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n const areBothEntitiesDT = [...entities, entity].every(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && hasWorkflow,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, hasWorkflow]\n );\n\n const selectedCount = useMemo(() => {\n return matches.map((match) => selectedItems?.find(equals(match))).filter(identity).length;\n }, [selectedItems, matches]);\n\n return (\n <CollaborationContextProvider collaboration={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={matches.length}\n sortOptions={sortOptions}\n sorting={sorting}\n onSorting={onSorting}\n onSelect={selectedCount ? resetSelected : selectAll}\n />\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n metadata={metadata}\n selectedItems={selectedItems}\n isLoading={loading}\n />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n </EntitiesMapContext.Provider>\n </CollaborationContextProvider>\n );\n});\n\nNotMatchView.displayName = 'NotMatchView';\n","import {Entity, Metadata, PotentialMatchesPerspectiveConfig, SearchFilter, SortingField} from '@reltio/mdm-sdk';\nimport React from 'react';\nimport {ActivePanel} from '../../constants/views';\nimport FindMatchesView from '../FindMatchesView';\nimport {MatchesView} from '../MatchesView';\nimport NotMatchView from '../NotMatchView';\nimport {MatchesOptions} from '../../types/potentialMatchesTypes';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n activeView: ActivePanel;\n config: PotentialMatchesPerspectiveConfig;\n options?: MatchesOptions;\n};\n\nexport const Content = ({entity, metadata, filters, options, sorting, onSorting, config, activeView}: Props) => {\n const render = () => {\n switch (activeView) {\n case ActivePanel.PotentialMatches:\n return (\n <MatchesView\n entity={entity}\n metadata={metadata}\n filters={filters}\n options={options}\n config={config}\n sorting={sorting}\n onSorting={onSorting}\n />\n );\n case ActivePanel.FindMatches:\n return (\n <FindMatchesView\n entity={entity}\n metadata={metadata}\n filters={filters}\n config={config}\n sorting={sorting}\n onSorting={onSorting}\n />\n );\n case ActivePanel.NotAMatch:\n return (\n <NotMatchView\n entity={entity}\n metadata={metadata}\n filters={filters}\n config={config}\n sorting={sorting}\n onSorting={onSorting}\n />\n );\n default:\n return <div />;\n }\n };\n\n return render();\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n width: '100%',\n height: '100%',\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n }\n});\n","import React, {useMemo, memo} from 'react';\nimport {isNil} from 'ramda';\nimport {useSelector} from 'react-redux';\n\nimport {SidePanel} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport Content from '../../components/Content';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport {PMRightPanelTabs} from '../../PotentialMatchesView';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n active?: number;\n tabs: PMRightPanelTabs;\n config?: PotentialMatchesPerspectiveConfig;\n onClose?: () => void;\n};\n\nexport const RightSidePanel = memo(({active, tabs, onClose, config}: Props) => {\n const styles = useStyles();\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n\n const isOpen = !isNil(active);\n const headerProps = useMemo(() => ({...tabs[active]?.headerProps, onClose}), [onClose, active, tabs]);\n\n const {sorting, filters, options, onSorting} = tabs[active] || {};\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen}>\n <RightSideHeaderContext.Provider value={headerProps}>\n <Content\n config={config}\n entity={entity}\n filters={filters}\n options={options}\n sorting={sorting}\n onSorting={onSorting}\n metadata={metadata}\n activeView={active}\n />\n </RightSideHeaderContext.Provider>\n </SidePanel>\n </div>\n );\n});\n\nRightSidePanel.displayName = 'RightSidePanel';\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n button: {\n '&.MuiButtonGroup-grouped': {\n minWidth: '90px',\n padding: '8px 12px'\n }\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {ModeSwitcher} from '@reltio/components';\n\nimport useStyles from './styles';\nimport ViewColumnRoundedIcon from '@mui/icons-material/ViewColumnRounded';\nimport TableRowsOutlinedIcon from '@mui/icons-material/TableChartOutlined';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {MAX_PROFILES_TO_COMPARE} from '../../constants/views';\n\ntype Mode = {\n id: ComparisonViewMode;\n tooltipTitle: string;\n title: string;\n Icon: React.ElementType;\n disabled?: boolean;\n};\n\nconst MODES: Mode[] = [\n {\n id: ComparisonViewMode.COLUMNS,\n tooltipTitle: i18n.text('Column'),\n title: i18n.text('Column'),\n Icon: ViewColumnRoundedIcon\n },\n {\n id: ComparisonViewMode.TABLE,\n tooltipTitle: i18n.text('Table'),\n title: i18n.text('Table'),\n Icon: TableRowsOutlinedIcon\n }\n];\n\ntype Props = {\n className?: string;\n};\n\nconst ComparisonViewModeSwitcher = ({className}: Props) => {\n const styles = useStyles();\n const {comparisonViewMode, selectedItems} = useViewState();\n const {setComparisonViewMode} = useViewStateActions();\n const isTableOnly = selectedItems.length > MAX_PROFILES_TO_COMPARE;\n const getMode = (baseMode: Mode) =>\n baseMode.id === ComparisonViewMode.COLUMNS\n ? {\n ...baseMode,\n disabled: isTableOnly,\n tooltipTitle: isTableOnly\n ? i18n.text('Column view supports maximum ${maxProfiles} profiles', {\n maxProfiles: MAX_PROFILES_TO_COMPARE\n })\n : baseMode.tooltipTitle\n }\n : baseMode;\n return (\n <ModeSwitcher\n className={className}\n classes={{button: styles.button}}\n modes={MODES.map(getMode)}\n modeId={comparisonViewMode}\n onChange={setComparisonViewMode}\n />\n );\n};\n\nexport default ComparisonViewModeSwitcher;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n 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 from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport {\n getActionPermissionForMatches,\n Entity,\n Metadata,\n isDataTenantEntity,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport ComparisonViewModeSwitcher from '../ComparisonViewModeSwitcher/ComparisonViewModeSwitcher';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\nimport Divider from '@mui/material/Divider';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n columnsData: GroupedColumnData[];\n selectedColumns: string[];\n onChangeColumns: (columns: string[]) => void;\n showNonOv: boolean;\n onChangeShowNonOv: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nconst getEntityObjects = map(prop('object'));\n\nexport const TableHeader = ({\n config,\n columnsData,\n selectedColumns,\n onChangeColumns,\n showNonOv,\n onChangeShowNonOv\n}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n\n const {selectedItems, limitSelection} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n\n const entities = getEntityObjects(selectedItems);\n const {canMerge, canMark} = getActionPermissionForMatches(metadata, config, entity, selectedItems);\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n const hideMerge = entities.some(isDataTenantEntity) && isDataTenantEntity(entity);\n\n const actions = useMemo(\n () =>\n [\n {\n ActionButton: MergeButton,\n show: canMerge && !hideMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show')),\n [canMark, canMerge, entity, entities, hasDTEntity, hideMerge]\n );\n\n const hasSelectedItems = selectedItems.length !== 0;\n\n const handleClearSelection = () => {\n setSelectedItems([]);\n };\n\n const handleToggleShowOvValue = useCallback(() => {\n onChangeShowNonOv(not);\n }, [onChangeShowNonOv]);\n const settingItems = useMemo<Array<DropDownMenuItem>>(() => {\n return [\n {\n selected: !showNonOv,\n text: i18n.text('Show only OV'),\n onClick: handleToggleShowOvValue,\n id: 'showNonOv'\n }\n ];\n }, [handleToggleShowOvValue, showNonOv]);\n return (\n <BasicViewHeader\n title={''}\n classes={{root: styles.header}}\n data-reltio-id=\"reltio-potential-matches-table-header\"\n >\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 '@mui/styles';\n\nexport const matchedAttributeBackground = 'rgba(140, 193, 82, 0.12)';\n\nexport const useStyles = makeStyles({\n complexAttributesHeadRenderer: {\n height: '100%',\n width: '100%',\n display: 'flex',\n alignItems: 'flex-start'\n },\n complexAttributesHeadLabel: {\n flex: 1,\n marginLeft: '5px'\n },\n arrowButton: {\n cursor: 'pointer',\n marginLeft: '-3px'\n },\n attribute: {\n whiteSpace: 'pre-wrap'\n },\n matchedAttribute: {\n fontWeight: 500,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: '-1000px',\n top: 0,\n width: '5000px',\n height: '100%',\n background: matchedAttributeBackground,\n pointerEvents: 'none'\n }\n }\n});\n","import {makeStyles} from '@mui/styles';\nimport {matchedAttributeBackground} from '../styles';\n\nexport const useStyles = makeStyles({\n badge: {\n borderRadius: '50%',\n background: matchedAttributeBackground,\n fontWeight: 500,\n height: '20px',\n width: '20px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n alignSelf: 'flex-start',\n marginBottom: '2px',\n marginTop: '-2px'\n }\n});\n","import React, {useContext} from 'react';\nimport Tooltip from '@mui/material/Tooltip';\nimport {areOneHierarchyUris, ComplexAttributeValue} from '@reltio/mdm-sdk';\nimport {HighlightedValuesContext} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ComplexAttributeValue;\n};\n\nconst MatchedValuesCounter = ({attributeValue}: Props) => {\n const styles = useStyles();\n const {highlightedValuesUris = []} = useContext(HighlightedValuesContext);\n const count = highlightedValuesUris.filter((uri) => areOneHierarchyUris(uri, attributeValue.uri)).length;\n return count > 0 ? (\n <Tooltip title={count === 1 ? i18n.text('${count} match', {count}) : i18n.text('${count} matches', {count})}>\n <div className={styles.badge}>{count}</div>\n </Tooltip>\n ) : null;\n};\n\nexport default MatchedValuesCounter;\n","import React, {useMemo} from 'react';\nimport {HighlightedValuesContext, ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\nimport withExpanded from '../withExpanded';\nimport MatchedValuesCounter from './MatchedValuesCounter/MatchedValuesCounter';\n\nimport {useStyles} from './styles';\n\nconst ExpandableAttributeValuesBlock = withExpanded(\n ReadOnlyAttributeValuesBlock\n) as typeof ReadOnlyAttributeValuesBlock;\n\ntype Props = {\n value: {\n attributeType: AttributeType;\n attributeValues: AttributeValue[];\n matchedValuesUris?: string[];\n showNonOv?: boolean;\n };\n};\n\nexport const AttributesRenderer = ({value: {attributeType, attributeValues, matchedValuesUris, showNonOv}}: Props) => {\n const styles = useStyles();\n const highlightedValuesContextValue = useMemo(\n () => ({highlightedValuesUris: matchedValuesUris, highlightedClassName: styles.matchedAttribute}),\n [matchedValuesUris, styles.matchedAttribute]\n );\n return (\n <div className={styles.attribute}>\n <HighlightedValuesContext.Provider value={highlightedValuesContextValue}>\n <ExpandableAttributeValuesBlock\n values={attributeValues}\n attributeType={attributeType}\n showNonOv={showNonOv}\n RightSlot={MatchedValuesCounter}\n />\n </HighlightedValuesContext.Provider>\n </div>\n );\n};\n","import React from 'react';\n\nexport const ColumnDataContext = React.createContext<{\n setHoveredId?: React.Dispatch<React.SetStateAction<string>>;\n hoveredId?: string;\n setAnchor?: (anchor: HTMLElement) => void;\n }>({});\n\nColumnDataContext.displayName = 'ColumnDataContext';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n menuButtonWrapper: {\n display: 'none',\n position: 'absolute',\n top: '-4px',\n right: '-14px'\n },\n headCell: {\n display: 'flex',\n position: 'relative',\n 'th:hover &': {\n '& $menuButtonWrapper': {\n display: 'block'\n }\n }\n },\n active: {\n display: 'block'\n }\n});\n","import React, {useContext, useRef} from 'react';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport {SmallIconButton} from '@reltio/components';\nimport {ColumnDataContext} from '../../../../contexts/ColumnsDataContext';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\n\ntype Props = {\n label?: string;\n id: string;\n hideable?: boolean;\n};\n\nexport const HeadCellRenderer = ({label, id, hideable}: Props) => {\n const styles = useStyles();\n const {setAnchor, setHoveredId, hoveredId} = useContext(ColumnDataContext);\n const ref = useRef<HTMLDivElement>();\n const openConfigColumnPopup = () => {\n setAnchor(ref.current);\n setHoveredId(id);\n };\n return (\n <div className={styles.headCell}>\n {label}\n {hideable !== false && (\n <div className={classnames(styles.menuButtonWrapper, {[styles.active]: hoveredId === id})} ref={ref}>\n <SmallIconButton icon={MoreVertIcon} onClick={openConfigColumnPopup} size={'S'} />\n </div>\n )}\n </div>\n );\n};\n","import React, {useCallback, useContext} from 'react';\nimport {ArrowExpandButton} from '@reltio/components';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport {ExpandedContext} from '../ExpandedContext';\nimport {HeadCellRenderer} from './HeadCellRenderer';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n attributeType: AttributeType;\n id: string;\n};\n\nexport const ComplexAttributesHeadRenderer = ({label, attributeType, id}: Props) => {\n const styles = useStyles();\n const {expandedMap, onExpandType} = useContext(ExpandedContext);\n const onExpandClick = useCallback(() => onExpandType(attributeType.uri), [onExpandType, attributeType]);\n const expanded = expandedMap[attributeType.uri];\n return (\n <div className={styles.complexAttributesHeadRenderer}>\n <ArrowExpandButton expanded={expanded} onClick={onExpandClick} className={styles.arrowButton} />\n <div className={styles.complexAttributesHeadLabel}>\n <HeadCellRenderer label={label} id={id} />\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const HoveredEntityContext = React.createContext<{\n hoveredEntity: string;\n resetHoveredEntity: () => void;\n }>({\n hoveredEntity: null,\n resetHoveredEntity: () => {}\n });\n\nHoveredEntityContext.displayName = 'HoveredEntityContext';\n","import React, {memo} from 'react';\nimport {prop} from 'ramda';\n\nimport {Entity, isDataTenantEntity, NOT_MATCH} from '@reltio/mdm-sdk';\nimport {\n CreateRelationButton,\n DCRReviewButton,\n MergeButton,\n NotMatchButton,\n ReinstateMatchButton,\n SetAMatchButton\n} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport {MatchesActionsPermissions} from '../../types/potentialMatchesTypes';\n\ntype Props = {\n value: {\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n permission: MatchesActionsPermissions;\n };\n onActionsMenuClose?: () => void;\n onActionsMenuOpen?: () => void;\n openAddRelationDialog?: (param: {\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n permission: MatchesActionsPermissions;\n }) => void;\n classes?: {\n actionButton?: string;\n moreOptions?: string;\n };\n mode?: 'normal' | 'hover';\n};\n\nconst MatchesControls = ({\n value: {mainEntity, entity, matchRules, permission},\n onActionsMenuClose,\n onActionsMenuOpen,\n openAddRelationDialog,\n classes = {},\n mode = 'hover'\n}: Props) => {\n const {canMerge, canAddRelation, canMark} = permission;\n const hasDTEntity = [mainEntity, entity].some(isDataTenantEntity);\n const areBothEntitiesDT = [mainEntity, entity].every(isDataTenantEntity);\n\n const isEntityFindMatch = !matchRules;\n const isEntityNotMatch = !isEntityFindMatch && matchRules.includes(NOT_MATCH);\n const isEntityPotentialMatch = !isEntityNotMatch && !isEntityFindMatch;\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT && (isEntityNotMatch || isEntityPotentialMatch || isEntityFindMatch),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark && (isEntityPotentialMatch || isEntityFindMatch),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark && isEntityNotMatch,\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && (isEntityNotMatch || isEntityPotentialMatch),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: SetAMatchButton,\n show: canMark && isEntityFindMatch && !isDataTenantEntity(entity),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity,\n currentEntity: entity,\n matchRules,\n onClick: openAddRelationDialog,\n permission\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n numberOfButtons={2}\n mode={mode}\n actionButtonSize={mode === 'hover' ? 'XS' : undefined}\n classes={{\n actionButton: classes.actionButton,\n moreOptions: classes.moreOptions\n }}\n onActionsMenuClose={onActionsMenuClose}\n onActionsMenuOpen={onActionsMenuOpen}\n />\n );\n};\n\nexport default memo(MatchesControls);\n","import {makeStyles} from '@mui/styles';\n\ntype StylesProps = {\n color?: string;\n};\n\nconst styles = makeStyles({\n container: {\n position: 'relative',\n width: '100%',\n height: '140px',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n overflow: 'hidden'\n },\n hovered: {\n backgroundColor: 'rgb(245, 245, 245)'\n },\n colored: {\n '&:before': {\n content: '\"\"',\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: '100%',\n height: '4px',\n background: ({color}: StylesProps) => color\n }\n },\n removeButton: {\n position: 'absolute',\n zIndex: 1,\n margin: '4px'\n },\n matchControlsContainer: {\n display: 'flex',\n alignItems: 'center',\n height: '45px',\n margin: '4px 8px'\n },\n rightButton: {\n display: 'flex',\n alignItems: 'center'\n },\n moreOptions: {\n marginLeft: '8px'\n }\n});\n\nexport default styles;\n","export const POTENTIAL_MATCH_REVIEW = 'potentialMatchReview';\n","import {useCallback, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {allPass, includes, map, mergeLeft, propEq, propSatisfies, when} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getEntityUriFromMatchObject, getTasksForEntity, Match, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useSafePromise, useWorkflowDefaultActionSuccessHandler} from '@reltio/components';\n\nimport {POTENTIAL_MATCH_REVIEW} from '../constants/workflow';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\n\nconst isPotentialMatchesTask = (task) => task.processType === POTENTIAL_MATCH_REVIEW;\n\ntype Props = {\n match: Match;\n entity: Entity;\n};\n\nexport const useWorkflowTasks = ({entity, match}: Props) => {\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const safePromise = useSafePromise();\n const {uri: entityUri} = entity;\n const matchUri: string = getEntityUriFromMatchObject(match);\n const [requestIsInProgress, setRequestIsInProgress] = useState(false);\n const [tasks, setTasks] = useState<WorkflowTaskData[]>([]);\n const defaultActionSuccessHandler = useWorkflowDefaultActionSuccessHandler();\n\n const loadTasks = useCallback(\n () => {\n if (workflowPath && matchUri !== entityUri) {\n setRequestIsInProgress(true);\n safePromise(\n getTasksForEntity({\n entityUri,\n workflowPath,\n environment,\n tenant\n })\n )\n .then((result) => {\n const {data} = result;\n const hasMatchEntityUri = propSatisfies(includes(matchUri), 'objectURIs');\n const isTaskBelongsToMatch = allPass([isPotentialMatchesTask, hasMatchEntityUri]);\n const tasks = data.filter(isTaskBelongsToMatch);\n setTasks(tasks);\n })\n .catch((error) => {\n console.warn('Workflow error:', error);\n setTasks([]);\n })\n .finally(() => setRequestIsInProgress(false));\n }\n },\n [entityUri, environment, tenant, workflowPath, matchUri] // eslint-disable-line\n );\n\n const updateTaskState = useCallback((taskId: WorkflowTaskData['taskId'], payload: Partial<WorkflowTaskData>) => {\n setTasks(map(when(propEq('taskId', taskId), mergeLeft(payload))));\n }, []);\n\n const {deselectByEntities} = useViewStateActions();\n const onActionSuccess = useCallback(\n (action: string) => {\n defaultActionSuccessHandler(action);\n deselectByEntities([match.object]);\n },\n [defaultActionSuccessHandler, deselectByEntities, match.object]\n );\n\n return {\n loading: requestIsInProgress,\n tasks,\n loadTasks,\n updateTaskState,\n total: tasks.length,\n onActionSuccess\n };\n};\n","import React from 'react';\n\nexport const WorkflowTasksAvailabilityContext = React.createContext<(entityUri: string, value: boolean) => void>(\n () => {}\n);\n\nWorkflowTasksAvailabilityContext.displayName = 'WorkflowTasksAvailabilityContext';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n position: 'relative',\n minHeight: '86px',\n display: 'flex',\n overflow: 'hidden',\n margin: '-16px'\n },\n assigneeContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n padding: '16px 14px 16px 48px'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport {pick} from 'ramda';\nimport {\n AssigneeSelector,\n PotentialMatchReviewCard,\n TaskActions,\n WorkflowComments,\n WorkflowTasksContext,\n useWorkflowActions\n} from '@reltio/components';\nimport {Entity, getEntityUriFromMatchObject, Match, WorkflowTaskData} from '@reltio/mdm-sdk';\n\nimport {useWorkflowTasks} from '../../hooks/useWorkflowTasks';\nimport {WorkflowTasksAvailabilityContext} from '../ComparisonTable/WorkflowTasksAvailabilityContext';\n\nimport {useStyles} from './styles';\n\nconst getPropsFromTasks = (task: WorkflowTaskData) => ({\n date: task.dueDate,\n type: task.processDefinitionDisplayName,\n createdBy: task.createdBy,\n step: task.displayName\n});\nconst getCommentsInfoFromTasks = pick(['processInstanceComments', 'taskId']);\n\ntype Props = {\n match: Match;\n entity: Entity;\n};\n\nexport const WorkflowCard = ({entity, match}: Props) => {\n const styles = useStyles();\n const workflowTasks = useWorkflowTasks({entity, match});\n const {tasks, loadTasks} = workflowTasks;\n const setWorkflowTaskAvailability = useContext(WorkflowTasksAvailabilityContext);\n useEffect(() => {\n loadTasks();\n }, [loadTasks]);\n const task = tasks[0];\n const matchEntityUri = getEntityUriFromMatchObject(match);\n useEffect(() => {\n setWorkflowTaskAvailability?.(matchEntityUri, !!task);\n }, [setWorkflowTaskAvailability, matchEntityUri, task]);\n const {actions: workflowActions, actionRequestIsInProgress} = useWorkflowActions({\n taskId: task?.taskId,\n possibleActions: task?.possibleActions,\n assignee: task?.assignee,\n isOpen: task?.isOpen\n });\n const Actions = task && <TaskActions actions={workflowActions} isInProgress={actionRequestIsInProgress} />;\n return task ? (\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <div className={styles.container}>\n <PotentialMatchReviewCard {...getPropsFromTasks(task)} Actions={Actions}>\n <div className={styles.assigneeContainer}>\n <AssigneeSelector assignee={task.assignee} taskId={task.taskId} isTaskOpen={task.isOpen} />\n </div>\n <WorkflowComments\n {...getCommentsInfoFromTasks(task)}\n workflowActions={workflowActions}\n actionRequestIsInProgress={actionRequestIsInProgress}\n preferredAction={task.preferredAction}\n />\n </PotentialMatchReviewCard>\n </div>\n </WorkflowTasksContext.Provider>\n ) : null;\n};\n","import i18n from 'ui-i18n';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode} from './views';\nimport {MatchesColumnsData} from '../types/potentialMatchesTypes';\n\nexport const DEFAULT_ROWS: MatchesColumnsData[] = [\n {\n id: 'profile',\n label: i18n.text('Profile name'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n draggable: false,\n initialWidth: 280,\n autoResize: false,\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'matchRules',\n label: i18n.text('Match method'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_SELECT\n },\n initialWidth: 130,\n minWidth: 130,\n autoResize: false,\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'workflowCard',\n label: i18n.text('Workflow'),\n modes: [ComparisonViewMode.COLUMNS]\n },\n {\n id: 'entityId',\n label: i18n.text('Entity ID'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_ENTITY_ID\n },\n initialWidth: 100,\n autoResize: false,\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'score',\n label: i18n.text('Match score'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_INT\n },\n initialWidth: 100,\n modes: [ComparisonViewMode.TABLE, ComparisonViewMode.COLUMNS]\n },\n {\n id: 'relevanceScore',\n label: i18n.text('Relevance score'),\n initialWidth: 130,\n minWidth: 130,\n modes: [ComparisonViewMode.TABLE, ComparisonViewMode.COLUMNS]\n },\n {\n id: 'sources',\n label: i18n.text('Sources'),\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'crosswalks',\n label: i18n.text('Crosswalks'),\n modes: [ComparisonViewMode.COLUMNS]\n }\n];\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n crosswalk: {\n marginBottom: '8px'\n },\n crosswalkIcon: {\n marginRight: '5px'\n },\n labelContainer: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n spacer: {\n flex: 1\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {ColoredSourceIcon} from '@reltio/components';\nimport {Crosswalk, getSourceSystemLabel, NestedAttributeValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: NestedAttributeValue & {\n value: NestedAttributeValue['value'] & {\n crosswalk: Crosswalk;\n };\n };\n};\n\nconst LabelRenderer = ({attributeValue}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const crosswalk = attributeValue.value.crosswalk;\n return (\n <div className={styles.labelContainer}>\n <ColoredSourceIcon className={styles.crosswalkIcon} crosswalk={crosswalk} showTooltip={false} />\n <div>{getSourceSystemLabel(metadata, crosswalk.type)}</div>\n <div className={styles.spacer} />\n <div>{crosswalk.value}</div>\n </div>\n );\n};\n\nexport default LabelRenderer;\n","import React, {useMemo} from 'react';\nimport {ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {\n AttributeType,\n Crosswalk,\n CrosswalksAttrTypes,\n getSourceSystemLabel,\n Metadata,\n NestedAttributeValue\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\n\nimport withExpanded from '../../withExpanded';\nimport LabelRenderer from './LabelRenderer';\nimport {useStyles} from './styles';\nimport {useSelector} from 'react-redux';\n\nexport const ExpandableAttributeValuesBlock = withExpanded(\n ReadOnlyAttributeValuesBlock\n) as typeof ReadOnlyAttributeValuesBlock;\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n attributeType: AttributeType;\n };\n};\n\nconst getFakeAttributeValueForCrosswalk = (crosswalk: Crosswalk, attributeType: AttributeType, metadata: Metadata) => {\n return attributeType.attributes.reduce(\n (nestedAttributeValue: NestedAttributeValue, subAttributeType) => {\n if (subAttributeType.uri === CrosswalksAttrTypes.sourceSystems.uri) {\n nestedAttributeValue.value[subAttributeType.uri] = getSourceSystemLabel(metadata, crosswalk.type);\n } else if (crosswalk[subAttributeType.uri]) {\n nestedAttributeValue.value[subAttributeType.uri] = crosswalk[subAttributeType.uri];\n }\n return nestedAttributeValue;\n },\n {value: {crosswalk}, uri: crosswalk.uri} as NestedAttributeValue\n );\n};\n\nconst CrosswalksRenderer = ({value: {crosswalks, attributeType}}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeValues = useMemo(\n () => crosswalks?.map((crosswalk) => getFakeAttributeValueForCrosswalk(crosswalk, attributeType, metadata)),\n [metadata, crosswalks, attributeType]\n );\n return attributeValues ? (\n <ExpandableAttributeValuesBlock\n values={attributeValues}\n attributeType={attributeType}\n LabelRenderer={LabelRenderer}\n valueContainerClassName={styles.crosswalk}\n />\n ) : null;\n};\n\nexport default CrosswalksRenderer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: '-8px'\n },\n crosswalkIcon: {\n marginRight: '5px',\n marginBottom: '8px'\n }\n});\n","import React, {ReactNode} from 'react';\nimport {Entity, isDataTenantEntity as checkIsDataTenantEntity, isEmptyValue} from '@reltio/mdm-sdk';\nimport {DataTenantBadge, ColoredSourceIcon} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Pick<Entity, 'crosswalks' | 'dataTenant'>;\n children?: ReactNode;\n};\n\nconst SourcesRenderer = ({value, children}: Props) => {\n const {crosswalks, dataTenant} = value;\n const styles = useStyles();\n const isDataTenantEntity = checkIsDataTenantEntity(value);\n\n return isDataTenantEntity || !isEmptyValue(crosswalks) ? (\n <div className={styles.wrapper}>\n {children}\n {crosswalks.map((crosswalk) => (\n <ColoredSourceIcon key={crosswalk.uri} className={styles.crosswalkIcon} crosswalk={crosswalk} />\n ))}\n {isDataTenantEntity && <DataTenantBadge dataTenantId={dataTenant} />}\n </div>\n ) : null;\n};\n\nexport default SourcesRenderer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n inline: {\n display: 'inline-flex'\n }\n});\n","import React from 'react';\nimport {MatchRuleSummary} from '@reltio/mdm-sdk';\nimport {RelevanceScoreBadge} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: MatchRuleSummary[] | undefined;\n};\n\nconst RelevanceScoreRenderer = ({value: matchRuleSummaries}: Props) => {\n const styles = useStyles();\n return <RelevanceScoreBadge className={styles.inline} matchRuleSummaries={matchRuleSummaries} />;\n};\n\nexport default RelevanceScoreRenderer;\n","import {\n always,\n chain,\n cond,\n filter,\n identity,\n last,\n map,\n path,\n pathOr,\n pipe,\n prop,\n split,\n values,\n when,\n pick\n} from 'ramda';\n\nimport {\n AttributeType,\n CrosswalksAttrTypes,\n EntitiesMap,\n Entity,\n findAttributeTypeByUri,\n getActionPermissionForMatch,\n getAttributeSource,\n getEntityId,\n isAttributeSearchUri,\n isComplexAttribute,\n isOv,\n MatchedValues,\n Match,\n Metadata,\n PotentialMatchesPerspectiveConfig,\n searchUriToAttrUri\n} from '@reltio/mdm-sdk';\nimport {AttributesRenderer} from '../cell-renderers/AttributesRenderer';\nimport {HeadCellRenderer} from '../cell-renderers/HeadCellRenderer';\nimport {ComplexAttributesHeadRenderer} from '../cell-renderers/ComplexAttributesHeadRenderer';\nimport EntityCard from '../cell-renderers/EntityCard/EntityCard';\nimport MatchMethod from '../cell-renderers/MatchMethod/MatchMethod';\nimport WorkflowCardRenderer from '../cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer';\nimport {DEFAULT_ROWS} from '../../../constants/defaultRows';\nimport CrosswalksRenderer from '../cell-renderers/CrosswalksRenderer/CrosswalksRenderer';\nimport {ComparisonViewMode} from '../../../constants/views';\nimport SourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\nimport RelevanceScoreRenderer from '../../cell-renderers/RelevanceScoreRenderer/RelevanceScoreRenderer';\n\nexport type RowData = {\n id: string;\n label: string;\n cellRenderer?: (props: unknown) => JSX.Element;\n headCellRenderer?: (props: unknown) => JSX.Element;\n rowClassName?: string;\n attributeType?: AttributeType;\n hideable?: boolean;\n};\n\nconst additionalPropsForDefaultRows = {\n profile: {\n cellRenderer: EntityCard,\n headCellRenderer: HeadCellRenderer,\n label: ''\n },\n matchRules: {\n cellRenderer: MatchMethod,\n headCellRenderer: HeadCellRenderer\n },\n workflowCard: {\n cellRenderer: WorkflowCardRenderer,\n headCellRenderer: HeadCellRenderer\n },\n sources: {\n cellRenderer: SourcesRenderer,\n headCellRenderer: HeadCellRenderer\n },\n entityId: {\n headCellRenderer: HeadCellRenderer\n },\n crosswalks: {\n cellRenderer: CrosswalksRenderer,\n headCellRenderer: ComplexAttributesHeadRenderer,\n attributeType: {\n uri: 'crosswalks',\n name: 'crosswalks',\n type: 'Nested',\n attributes: Object.values(CrosswalksAttrTypes)\n }\n },\n score: {\n headCellRenderer: HeadCellRenderer\n },\n relevanceScore: {\n headCellRenderer: HeadCellRenderer,\n cellRenderer: RelevanceScoreRenderer\n }\n};\n\nconst defaultRows: RowData[] = DEFAULT_ROWS.filter(({modes}) => modes.includes(ComparisonViewMode.COLUMNS)).map(\n (row) => ({\n ...pick(['id', 'label', 'hideable'], row),\n ...additionalPropsForDefaultRows[row.id]\n })\n);\n\nconst getAttrTypeNameByUri = pipe(split('/'), last);\n\nexport const getTableRowsData = (metadata: Metadata, entity: Entity, selectedColumns: string[]): RowData[] => {\n return selectedColumns\n .map((searchUri) => {\n const defaultRow = defaultRows.find(({id}) => id === searchUri);\n\n if (defaultRow) {\n return defaultRow;\n }\n\n if (!isAttributeSearchUri(searchUri)) {\n return null;\n }\n\n const attrTypeUri = searchUriToAttrUri(searchUri, entity.type);\n const attributeType = findAttributeTypeByUri(metadata, attrTypeUri, entity.type);\n const collectionName = getAttributeSource(attrTypeUri);\n\n if (attributeType) {\n return {\n id: `${collectionName}.${getAttrTypeNameByUri(attrTypeUri)}`,\n label: attributeType.label,\n attributeType,\n cellRenderer: AttributesRenderer,\n headCellRenderer: isComplexAttribute(attributeType)\n ? ComplexAttributesHeadRenderer\n : HeadCellRenderer\n };\n }\n\n return null;\n })\n .filter(identity);\n};\n\nexport const getMatchedValuesUris = (matchedValues: MatchedValues): string[] => {\n return when(\n identity,\n pipe(\n values,\n chain(\n chain(\n cond([\n [path(['value', 'uri']), path(['value', 'uri'])],\n [path(['value', 'values']), pipe(path(['value', 'values']), map(prop('uri')))]\n ])\n )\n ),\n filter(identity)\n )\n )(matchedValues);\n};\n\nconst getColumnDataForRowData = (\n metadata: Metadata,\n match: Match,\n entitiesMap: EntitiesMap,\n entity: Entity,\n rowData: RowData,\n config: PotentialMatchesPerspectiveConfig,\n onRemoveItem: (match: Match) => void,\n showNonOv: boolean\n) => {\n const {object, isMainEntity, matchRules, matchedValues, matchScore, matchRuleSummaries} = match;\n switch (rowData.id) {\n case 'entityId':\n return getEntityId(object);\n case 'profile':\n return {\n mainEntity: entity,\n isSelectedEntity: !isMainEntity,\n onRemove: () => onRemoveItem(match),\n entity: object,\n matchRules: matchRules,\n permission: getActionPermissionForMatch(metadata, config, object, entity, matchRules),\n config: config\n };\n case 'matchRules':\n return {\n metadata,\n entity,\n match,\n entitiesMap,\n show: !isMainEntity && !!matchRules\n };\n case 'sources':\n return object;\n case 'crosswalks':\n return {\n crosswalks: object.crosswalks,\n attributeType: rowData.attributeType\n };\n case 'workflowCard':\n return {\n entity,\n match\n };\n case 'score':\n return matchScore || 0;\n case 'relevanceScore':\n return matchRuleSummaries;\n }\n if (isAttributeSearchUri(rowData.id)) {\n const attrSource = getAttributeSource(rowData.attributeType);\n const getAttributeValues = pipe(\n pathOr([], [attrSource, rowData.attributeType.name]),\n when(always(!showNonOv), filter(isOv))\n );\n const attributeValues = getAttributeValues(object);\n return {\n attributeType: rowData.attributeType,\n attributeValues,\n matchedValuesUris: getMatchedValuesUris(matchedValues),\n showNonOv\n };\n }\n};\n\ntype TableColumnsData = {\n id: string;\n isDraggable: boolean;\n [key: string]: unknown;\n};\n\nexport const getTableColumnsData = (\n metadata: Metadata,\n rowsData: RowData[],\n entity: Entity,\n matches: Match[],\n entitiesMap?: EntitiesMap,\n config?: PotentialMatchesPerspectiveConfig,\n onRemoveItem?: (match: Match) => void,\n showNonOnly = false\n) => {\n return [{object: entity, isMainEntity: true} as Match].concat(matches).map((match) => {\n return rowsData.reduce((column, rowData) => {\n column[rowData.id] = getColumnDataForRowData(\n metadata,\n match,\n entitiesMap,\n entity,\n rowData,\n config,\n onRemoveItem,\n showNonOnly\n );\n return {...column, isDraggable: !match.isMainEntity, id: match.object.uri};\n }, {} as TableColumnsData);\n });\n};\n","import React, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {ProfileCard, SmallIconButton} from '@reltio/components';\nimport {Entity, getEntityId, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {HoveredEntityContext} from '../../HoveredEntityContext';\nimport {useEntityColor} from '../../../../hooks/useEntityColor';\nimport {useAddRelationDialog} from '../../../../hooks/useAddRelationDialog';\nimport MatchControls from '../../../MatchControls/MatchControls';\nimport {MatchesActionsPermissions} from '../../../../types/potentialMatchesTypes';\nimport useStyles from './styles';\n\ntype Props = {\n value: {\n onRemove?: () => void;\n isSelectedEntity?: boolean;\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n config: PotentialMatchesPerspectiveConfig;\n permission: MatchesActionsPermissions;\n };\n};\n\nconst EntityCard = ({value: {entity, config, isSelectedEntity, onRemove, ...rest}}: Props) => {\n const color = useEntityColor(entity.uri);\n const styles = useStyles({color});\n const {hoveredEntity, resetHoveredEntity} = useContext(HoveredEntityContext);\n const isHovered = getEntityId(entity) === hoveredEntity;\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const controlProps = useMemo(\n () => ({\n ...rest,\n entity\n }),\n [rest, entity]\n );\n\n return (\n <>\n <div\n className={classnames(styles.container, {\n [styles.hovered]: isSelectedEntity && isHovered,\n [styles.colored]: isSelectedEntity\n })}\n >\n {isSelectedEntity && (\n <SmallIconButton className={styles.removeButton} icon={CloseIcon} onClick={onRemove} size=\"XXS\" />\n )}\n <ProfileCard entity={entity} />\n {isSelectedEntity && (\n <div className={styles.matchControlsContainer}>\n <MatchControls\n mode=\"normal\"\n value={controlProps}\n onActionsMenuClose={resetHoveredEntity}\n openAddRelationDialog={openAddRelationDialog}\n classes={{\n actionButton: styles.rightButton,\n moreOptions: styles.moreOptions\n }}\n />\n </div>\n )}\n </div>\n {showDialog && <AddRelationDialogRenderer />}\n </>\n );\n};\n\nexport default EntityCard;\n","import React from 'react';\nimport {MatchRulesBlock} from '@reltio/components';\n\ntype Props = {\n value: React.ComponentProps<typeof MatchRulesBlock> & {show?: boolean};\n};\nconst MatchMethod = ({value: {metadata, entity, match, entitiesMap, show}}: Props) => {\n if (!show) {\n return null;\n }\n return <MatchRulesBlock entity={entity} match={match} entitiesMap={entitiesMap} metadata={metadata} />;\n};\n\nexport default MatchMethod;\n","import React from 'react';\n\nimport {Entity, Match} from '@reltio/mdm-sdk';\n\nimport WorkflowCard from '../../../WorkflowCard';\n\ntype Props = {\n value: {\n match: Match;\n entity: Entity;\n };\n};\n\nconst WorkflowCardRenderer = ({value: {entity, match}}: Props) => {\n return <WorkflowCard entity={entity} match={match} />;\n};\n\nexport default WorkflowCardRenderer;\n","import React from 'react';\nimport {Match} from '@reltio/mdm-sdk';\n\nexport const ColumnHandlerContext = React.createContext<(match: Match) => void>(() => {});\n\nColumnHandlerContext.displayName = 'ColumnHandlerContext';\n","import {filter, join, map, pipe, slice, split, uniq, when} from 'ramda';\n\nimport {isAttributeSearchUri, searchUriToAttrUri} from '@reltio/mdm-sdk';\n\nconst getFirstLevelParentAttribute = pipe(split('.'), slice(0, 2), join('.'));\nexport const replaceSubAttributesWithParent = pipe(map(when(isAttributeSearchUri, getFirstLevelParentAttribute)), uniq);\n\nexport const getAttributesTypeUris = (entityTypeUri: string, attributes: string[]): string[] =>\n pipe(\n filter(isAttributeSearchUri),\n map((searchUri: string) => searchUriToAttrUri(searchUri, entityTypeUri))\n )(attributes);\n","import React from 'react';\nimport Popover from '@mui/material/Popover';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport i18n from 'ui-i18n';\n\nexport enum Action {\n INSERT_BELOW = 'below',\n INSERT_ABOVE = 'above',\n HIDE = 'hide'\n}\n\nconst TEXT = {\n [Action.INSERT_BELOW]: i18n.text('Insert row below'),\n [Action.INSERT_ABOVE]: i18n.text('Insert row above'),\n [Action.HIDE]: i18n.text('Hide row')\n};\n\nconst renderListItem = (action: Action, handler: () => void, index: number) => (\n <ListItem button component={'div'} key={index} onClick={handler}>\n <ListItemText primary={TEXT[action]} primaryTypographyProps={{variant: 'body2'}} />\n </ListItem>\n);\n\ntype Props = {\n open?: boolean;\n anchorEl: HTMLElement;\n onClick: (action: Action) => void;\n onClose: () => void;\n actions: Action[];\n};\n\nconst ConfigRowPopup = ({open, anchorEl, onClick, onClose, actions}: Props) => {\n const getClickHandler = (action) => () => {\n onClick(action);\n };\n\n return (\n <Popover open={open} anchorEl={anchorEl} onClose={onClose}>\n <List component=\"div\">\n {actions.map((action, index) => renderListItem(action, getClickHandler(action), index))}\n </List>\n </Popover>\n );\n};\n\nexport default ConfigRowPopup;\n","import {GroupedColumns, GroupedColumnData} from '../../../types/potentialMatchesTypes';\n\nconst deepFilter = (nodes: GroupedColumnData[], filter: (col: GroupedColumns) => boolean) =>\n nodes.filter(filter).map((node: GroupedColumns) =>\n node.columns\n ? {\n ...node,\n columns: deepFilter(node.columns, filter)\n }\n : node\n );\n\nexport const getAdditionalRows = (\n groupColumnsData: GroupedColumnData[],\n headColumns: string[] = []\n): GroupedColumnData[] =>\n deepFilter(groupColumnsData, (column: GroupedColumns) => !headColumns.some((elemId) => column.id === elemId));\n","import React, {useEffect, useMemo, useState, memo} from 'react';\nimport ConfigRowPopup, {Action} from './ConfigRowPopup';\nimport {ColumnsSettingsPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {getAdditionalRows} from './helpers';\nimport {GroupedColumnData} from '../../../types/potentialMatchesTypes';\n\ntype Props = {\n anchorEl: HTMLElement;\n onClose: () => void;\n actions: Action[];\n id: string;\n selectedAttributes?: string[];\n setSelectedAttributes?: (cols: string[]) => void;\n groupColumnsData: GroupedColumnData[];\n};\n\nconst AddRowPopups = ({\n anchorEl,\n onClose,\n actions,\n id,\n selectedAttributes,\n setSelectedAttributes,\n groupColumnsData\n}: Props) => {\n const groupedItems = useMemo(\n () => getAdditionalRows(groupColumnsData, selectedAttributes),\n [groupColumnsData, selectedAttributes]\n );\n const [action, setAction] = useState<Action>();\n const [isOpenConfigPopup, setIsOpenConfigPopup] = useState(false);\n useEffect(() => {\n if (anchorEl) {\n setIsOpenConfigPopup(true);\n }\n }, [anchorEl]);\n const onClosePopup = () => {\n setIsOpenConfigPopup(false);\n if (!action) onClose();\n };\n const onChooseAction = (action: Action) => {\n if (action === Action.HIDE) {\n const newAttributes = [...selectedAttributes];\n const index = selectedAttributes.indexOf(id);\n if (index > -1) {\n newAttributes.splice(index, 1);\n setSelectedAttributes(newAttributes);\n closeAddRowPopup();\n }\n return;\n }\n setAction(action);\n setIsOpenConfigPopup(false);\n };\n\n const closeAddRowPopup = () => {\n setAction(null);\n setIsOpenConfigPopup(false);\n onClose();\n };\n const addRowHandler = ({id: newId}: {id: string}) => {\n const newAttributes = [...selectedAttributes];\n const index = selectedAttributes.indexOf(id);\n const newIndex = action === Action.INSERT_ABOVE ? index : index + 1;\n newAttributes.splice(newIndex, 0, newId);\n setSelectedAttributes(newAttributes);\n closeAddRowPopup();\n };\n\n return (\n <>\n <ConfigRowPopup\n open={isOpenConfigPopup}\n anchorEl={anchorEl}\n actions={actions}\n onClose={onClosePopup}\n onClick={onChooseAction}\n />\n <ColumnsSettingsPopup\n hideCheckBox\n anchorEl={action ? anchorEl : undefined}\n columnsData={groupedItems}\n selectedColumns={selectedAttributes}\n onColumnClick={addRowHandler}\n onClose={closeAddRowPopup}\n title={i18n.text('Add row')}\n />\n </>\n );\n};\n\nexport default memo(AddRowPopups);\n","import {useCallback, useState} from 'react';\nimport {any, map, pipe} from 'ramda';\nimport {getEntityUriFromMatchObject} from '@reltio/mdm-sdk';\n\nexport const useWorkflowTasksAvailability = (matches) => {\n const [workflowTasksAvailabilityMap, setWorkflowTasksAvailabilityMap] = useState<{[entityUri: string]: boolean}>(\n {}\n );\n const setWorkflowTaskAvailability = useCallback((entityUri: string, value: boolean) => {\n setWorkflowTasksAvailabilityMap((map) => ({\n ...map,\n [entityUri]: value\n }));\n }, []);\n const isThereAnyTask: boolean = pipe(\n map(getEntityUriFromMatchObject),\n any((uri) => workflowTasksAvailabilityMap[uri])\n )(matches);\n\n return {isThereAnyTask, setWorkflowTaskAvailability};\n};\n","import {makeStyles} from '@mui/styles';\n\nconst headCellWidth = 212;\nconst dataCellWidth = 310;\nconst borderStyle = '1px solid rgba(0,0,0,0.12)';\nconst thickBorderStyle = '2px solid rgba(0,0,0,0.12)';\nconst firstColumnColor = 'rgb(245, 245, 245)';\nconst secondColumnColor = 'rgb(224, 238, 249)';\nconst firstRowHeight = 141;\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n overflow: 'auto',\n height: '100%',\n width: '100%'\n },\n comparisonTableWrapper: {\n display: 'flex',\n alignItems: 'flex-start',\n position: 'relative'\n },\n collapsedRow: {\n display: 'none'\n },\n comparisonTable: {\n borderSpacing: 0,\n '& tbody tr:hover td, & tbody tr:hover th': {\n backgroundColor: 'rgb(235, 235, 235)'\n },\n 'table& tbody tr:hover td:nth-child(2)': {\n backgroundColor: 'rgb(215, 228, 239)'\n },\n '& td, & th': {\n borderRight: borderStyle,\n borderBottom: borderStyle,\n margin: 0,\n verticalAlign: 'top',\n textAlign: 'left',\n fontSize: '13px',\n minHeight: '16px',\n boxSizing: 'border-box',\n wordBreak: 'break-word',\n wordWrap: 'break-word',\n backgroundColor: 'white'\n },\n '& td': {\n minWidth: dataCellWidth,\n maxWidth: dataCellWidth,\n padding: '16px',\n overflow: 'hidden',\n height: 0\n },\n '& td:empty, th:empty': {\n padding: '0px 16px'\n },\n '& th': {\n minWidth: headCellWidth,\n maxWidth: headCellWidth,\n padding: '16px'\n },\n // sticky columns\n '& td:first-child, th:first-child': {\n borderLeft: borderStyle,\n position: 'sticky',\n left: '0',\n zIndex: 2,\n backgroundColor: firstColumnColor,\n color: theme.palette.text.secondary,\n fontWeight: 'normal'\n },\n '& td:nth-child(2), th:nth-child(2)': {\n borderRight: thickBorderStyle,\n position: 'sticky',\n left: `${headCellWidth}px`,\n zIndex: 2\n },\n // sticky rows\n '& thead tr:first-child td, & thead tr:first-child th': {\n borderTop: 'none',\n position: 'sticky',\n top: '0',\n height: firstRowHeight,\n padding: 0,\n zIndex: 2\n },\n // always visible corner\n '& thead tr:nth-child(-n+2) td:nth-child(-n+2), & thead tr:nth-child(-n+2) th:nth-child(-n+2)': {\n zIndex: 3\n },\n // special color for second column\n 'table& tr td:nth-child(2), th:nth-child(2)': {\n backgroundColor: secondColumnColor\n }\n },\n emptyState: {\n position: 'sticky',\n top: '10vh',\n display: 'flex',\n width: '100%'\n }\n}));\n","import React, {useCallback, useContext, useMemo, useState, useEffect} from 'react';\nimport classnames from 'classnames';\nimport {chain, groupBy, insert, nth, pipe, prop, remove, toPairs} from 'ramda';\nimport {\n EntitiesMap,\n Entity,\n getFirstLevelSearchUri,\n isAttributeSearchUri,\n Metadata,\n PotentialMatchesPerspectiveConfig,\n Match\n} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, VerticalHeadingsTable} from '@reltio/components';\nimport {getTableColumnsData, getTableRowsData} from './helpers/tableHelpers';\nimport {ExpandedContext} from './ExpandedContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {replaceSubAttributesWithParent} from './helpers/attributesHelpers';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport AddRowPopups from './AddRowPopups';\nimport {ColumnDataContext} from '../../contexts/ColumnsDataContext';\nimport {Action} from './AddRowPopups/ConfigRowPopup';\nimport {HoveredEntityContext} from './HoveredEntityContext';\nimport {WorkflowTasksAvailabilityContext} from './WorkflowTasksAvailabilityContext';\nimport {useWorkflowTasksAvailability} from '../../hooks/useWorkflowTasksAvailability';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n entity: Entity;\n metadata: Metadata;\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n selectedColumns: Match[];\n setSelectedColumns: (items: Match[]) => void;\n selectedRows: string[];\n setSelectedRows: (items: string[]) => void;\n rowsData: GroupedColumnData[];\n showNonOv?: boolean;\n};\n\nconst actions = [Action.INSERT_BELOW, Action.INSERT_ABOVE, Action.HIDE];\n\nexport const ComparisonTable = ({\n className,\n entity,\n metadata,\n config,\n selectedColumns,\n setSelectedColumns,\n selectedRows,\n setSelectedRows,\n entitiesMap = {},\n rowsData: allRowsData,\n showNonOv = false\n}: Props) => {\n const styles = useStyles();\n\n const [localSelectedRows, setLocalSelectedRows] = useState(selectedRows);\n const [localSelectedColumns, setLocalSelectedColumns] = useState(selectedColumns);\n const [hoveredEntity, setHoveredEntity] = useState(null);\n const [hoveredId, setHoveredId] = useState<string>();\n const [anchor, setAnchor] = useState<HTMLElement>();\n\n useEffect(() => {\n setLocalSelectedRows(selectedRows);\n }, [selectedRows]);\n\n useEffect(() => {\n setLocalSelectedColumns(selectedColumns);\n }, [selectedColumns]);\n\n const matches = useMemo(() => localSelectedColumns.slice(-4), [localSelectedColumns]);\n const selectedRowsWithoutSubAttributes: string[] = useMemo(\n () => replaceSubAttributesWithParent(localSelectedRows),\n [localSelectedRows]\n );\n\n const rowsData = useMemo(\n () => getTableRowsData(metadata, entity, selectedRowsWithoutSubAttributes),\n [metadata, entity, selectedRowsWithoutSubAttributes]\n );\n\n const onRemoveItem = useContext(ColumnHandlerContext);\n\n const columnsData = useMemo(\n () => getTableColumnsData(metadata, rowsData, entity, matches, entitiesMap, config, onRemoveItem, showNonOv),\n [metadata, rowsData, matches, entity, entitiesMap, config, onRemoveItem, showNonOv]\n );\n\n const [expandedMap, setExpandedMap] = useState<{\n [attrTypeUri: string]: boolean;\n }>({});\n\n const onExpandType = useCallback((attrTypeUri: string) => {\n setExpandedMap((map) => ({\n ...map,\n [attrTypeUri]: !map[attrTypeUri]\n }));\n }, []);\n\n const expandedContextValue = useMemo(\n () => ({\n expandedMap,\n onExpandType\n }),\n [onExpandType, expandedMap]\n );\n\n const headCellData = useMemo(\n () => ({\n setHoveredId,\n setAnchor,\n hoveredId\n }),\n [hoveredId]\n );\n\n const onClosePopup = useCallback(() => {\n setHoveredId(null);\n setAnchor(null);\n }, []);\n\n const handleMoveRow = (dragId: string, hoverId: string) => {\n const newArr: Array<[string, string[]]> = pipe(\n groupBy((item) => (isAttributeSearchUri(item) ? getFirstLevelSearchUri(item) : item)),\n toPairs\n )(localSelectedRows);\n\n const dragIndex = newArr.findIndex(([searchUri]) => searchUri === dragId);\n const hoverIndex = newArr.findIndex(([searchUri]) => searchUri === hoverId);\n const dragRow = newArr[dragIndex];\n if (dragRow) {\n setLocalSelectedRows(pipe(remove(dragIndex, 1), insert(hoverIndex, dragRow), chain(nth(1)))(newArr));\n }\n };\n\n const handleMoveColumn = (dragId: string, hoverId: string) => {\n const dragIndex = localSelectedColumns.findIndex(({object}) => object.uri === dragId);\n const hoverIndex = localSelectedColumns.findIndex(({object}) => object.uri === hoverId);\n const dragColumn = localSelectedColumns[dragIndex];\n if (dragColumn) {\n setLocalSelectedColumns(pipe(remove(dragIndex, 1), insert(hoverIndex, dragColumn))(localSelectedColumns));\n }\n };\n\n const handleDropRow = () => {\n setSelectedRows(localSelectedRows);\n };\n\n const handleDropColumn = () => {\n setSelectedColumns(localSelectedColumns);\n };\n\n const selectedAttributeUris: string[] = useMemo(() => rowsData.map(prop('id')), [rowsData]);\n\n const setHoveredEntityHandler = (columnValue) => {\n setHoveredEntity(columnValue?.entityId || null);\n };\n\n const resetHoveredEntity = useCallback(() => {\n setHoveredEntity(null);\n }, []);\n\n const hoveredEntityContextValue = useMemo(\n () => ({\n hoveredEntity,\n resetHoveredEntity\n }),\n [hoveredEntity, resetHoveredEntity]\n );\n\n const {isThereAnyTask, setWorkflowTaskAvailability} = useWorkflowTasksAvailability(matches);\n const workflowCardRowClassname = isThereAnyTask ? undefined : styles.collapsedRow;\n const displayedRowsData = useMemo(\n () =>\n rowsData.map((rowData) =>\n workflowCardRowClassname && rowData.id === 'workflowCard'\n ? {\n ...rowData,\n rowClassName: workflowCardRowClassname\n }\n : rowData\n ),\n [rowsData, workflowCardRowClassname]\n );\n\n return (\n <div data-reltio-id=\"reltio-comparison-table-container\" className={classnames(styles.container, className)}>\n <div className={styles.comparisonTableWrapper}>\n <HoveredEntityContext.Provider value={hoveredEntityContextValue}>\n <ExpandedContext.Provider value={expandedContextValue}>\n <ColumnDataContext.Provider value={headCellData}>\n <WorkflowTasksAvailabilityContext.Provider value={setWorkflowTaskAvailability}>\n <VerticalHeadingsTable\n className={styles.comparisonTable}\n rowsData={displayedRowsData}\n columnsData={columnsData}\n theadRowsNumber={1}\n onMoveRow={handleMoveRow}\n onDropRow={handleDropRow}\n onMoveColumn={handleMoveColumn}\n onDropColumn={handleDropColumn}\n setHoveredColumn={setHoveredEntityHandler}\n resetHoveredColumn={resetHoveredEntity}\n />\n </WorkflowTasksAvailabilityContext.Provider>\n </ColumnDataContext.Provider>\n </ExpandedContext.Provider>\n </HoveredEntityContext.Provider>\n {!matches.length && (\n <div className={styles.emptyState}>\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.SELECT_ATTRIBUTES}\n variant={EMPTY_STATE_VARIANTS.embedded}\n text={i18n.text('Select profiles')}\n secondaryText={i18n.text(\n 'Select one or more profiles to compare it with the current profile'\n )}\n />\n </div>\n )}\n <AddRowPopups\n id={hoveredId}\n anchorEl={anchor}\n onClose={onClosePopup}\n actions={actions}\n selectedAttributes={selectedAttributeUris}\n setSelectedAttributes={setSelectedRows}\n groupColumnsData={allRowsData}\n />\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flexDirection: 'column'\n },\n table: {\n flex: 1\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {EntitiesMap, Match, Entity, Metadata, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport ComparisonTable from '../ComparisonTable';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n selectedRows: string[];\n setSelectedRows: (newRows: string[]) => void;\n selectedColumns: Match[];\n setSelectedColumns: (newColumns: Match[]) => void;\n classes: {\n root?: string;\n };\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n rowsData: GroupedColumnData[];\n showNonOv: boolean;\n};\n\nexport const ComparisonView = ({\n classes = {},\n selectedRows,\n setSelectedRows,\n selectedColumns,\n setSelectedColumns,\n config,\n metadata,\n entity,\n entitiesMap = {},\n rowsData,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(classes.root, styles.container)}>\n <ComparisonTable\n className={styles.table}\n entity={entity}\n metadata={metadata}\n config={config}\n selectedRows={selectedRows}\n setSelectedRows={setSelectedRows}\n selectedColumns={selectedColumns}\n setSelectedColumns={setSelectedColumns}\n rowsData={rowsData}\n entitiesMap={entitiesMap}\n showNonOv={showNonOv}\n />\n </div>\n );\n};\n","import {alpha, lighten} from '@mui/material/styles';\nimport {makeStyles} from '@mui/styles';\nimport {CSSProperties} from '@mui/styles';\n\nconst defaultWrapperStyles: CSSProperties = {\n position: 'relative',\n whiteSpace: 'pre',\n padding: '15px 15px 0 15px',\n '&:last-child': {\n paddingBottom: '15px'\n },\n color: 'rgba(0,0,0,0.87)'\n};\n\nconst textOverflow: CSSProperties = {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '40px',\n height: '100%',\n background: 'linear-gradient(to right, rgba(255, 255, 255, 0.2), #fff 100%)',\n pointerEvents: 'none'\n};\n\nconst tableHoveredRowSelector = 'div.hoveredRow';\n\nconst getColoredRowCellStyle = (color: string, hoveredColor?: string) => {\n return {\n '& > *': {\n position: 'relative'\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: color,\n pointerEvents: 'none',\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor || 'none'\n }\n },\n '& $defaultWrapper::after': {\n background: `linear-gradient(to right, ${alpha(color, 0)}, ${color} 100%)`,\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor && `linear-gradient(to right, ${alpha(hoveredColor, 0)}, ${hoveredColor} 100%)`\n }\n }\n };\n};\n\nexport const useStyles = makeStyles((theme) => {\n const lightPrimaryBackground = lighten(theme.palette.primary.main, 0.88);\n const lightPrimaryBackgroundHovered = lighten(theme.palette.primary.main, 0.82);\n const highlightBackground = lighten('rgb(140,193,82)', 0.88);\n const entityBackground = lighten('rgb(0, 114, 206)', 0.88);\n\n const link = {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none'\n };\n\n return {\n link,\n hidden: {\n visibility: 'hidden'\n },\n rowCloseIcon: {\n color: 'rgba(0, 0, 0, 0.54)',\n margin: '0 24px 0 8px'\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n fontSize: '12px',\n position: 'relative',\n flex: 1,\n overflow: 'hidden',\n color: 'rgba(0,0,0,0.87)',\n 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: '15px 15px 8px 10px',\n display: 'flex',\n flexDirection: 'column',\n boxSizing: 'border-box'\n },\n blobWrapper: {\n ...defaultWrapperStyles,\n whiteSpace: 'pre-wrap',\n height: '100px',\n boxSizing: 'border-box',\n overflowY: 'auto',\n overflowX: 'hidden'\n },\n imageWrapper: {\n ...defaultWrapperStyles,\n display: 'flex',\n '& > img': {\n height: '64px',\n width: '64px'\n }\n },\n referenceWrapper: {\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n height: '48px',\n paddingTop: 0,\n '&:last-child': {\n paddingBottom: 0\n }\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '-10px'\n },\n collapseButton: {\n position: 'absolute',\n left: '40px',\n zIndex: 2\n },\n dragIndicator: {\n position: 'absolute',\n left: '-5px',\n zIndex: 2,\n cursor: 'grab'\n },\n dragIndicatorIcon: {\n opacity: 0.38\n },\n ovFalse: theme.inactive,\n expandButton: {\n marginRight: '5px',\n marginBottom: '8px'\n }\n };\n});\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = Record<string, unknown>;\n\nconst HeadCellRenderer = (props: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport classnames from 'classnames';\nimport {AttributeValue, DataTypes} from '@reltio/mdm-sdk';\nimport {DataTypeValue} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: AttributeValue;\n columnData: {\n dataTypeDefinition: {\n type: DataTypes;\n };\n };\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const {value: simpleValue, ov} = value;\n const styles = useStyles();\n return (\n <div className={classnames(styles.defaultWrapper, {[styles.ovFalse]: ov === false})}>\n <DataTypeValue value={simpleValue} dataTypeDefinition={dataTypeDefinition} />\n </div>\n );\n};\n\nexport default DefaultCellValueRenderer;\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {\n CollapseRowButton,\n EntityUriLink,\n IdContext,\n withTableContext,\n CommentsContainer,\n SmallIconButton\n} from '@reltio/components';\nimport {\n getEntityUriForLink,\n getLabel,\n createObjectIdForPM,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Entity\n} from '@reltio/mdm-sdk';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {MatchesTableContextProps, MatchesTableRowValue} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Entity;\n rowIndex: number;\n rowValue: MatchesTableRowValue;\n onRemove: () => void;\n entityToMatch: Entity;\n isRowSelected: boolean;\n hoverRowIndex: number;\n dragRef?: React.Ref<HTMLDivElement>;\n};\n\nconst EntityProfileRenderer = ({\n value: entity,\n rowIndex,\n rowValue,\n onRemove,\n entityToMatch,\n isRowSelected,\n hoverRowIndex,\n dragRef\n}: Props) => {\n const styles = useStyles();\n const containerId = useContext(IdContext);\n\n const isRowRemovable = entity !== entityToMatch;\n const isRowHovered = rowIndex === hoverRowIndex;\n const isFirstRow = rowIndex === 0;\n const wrapperStyle = isRowHovered ? styles.hoveredDefaultWrapper : styles.defaultWrapper;\n const shouldRenderCommentsContainer = entity.uri !== entityToMatch.uri && !isRowHovered;\n\n return (\n <>\n <div\n className={classnames(wrapperStyle, styles.profileWrapper, styles.entityWrapper, {\n [styles.firstEntityCell]: isFirstRow && !isRowRemovable\n })}\n >\n <div ref={dragRef} style={{opacity: isRowHovered ? 1 : 0}} className={styles.dragIndicator}>\n <DragIndicatorIcon className={styles.dragIndicatorIcon} />\n </div>\n <CollapseRowButton className={styles.collapseButton} rowIndex={rowIndex} rowValue={rowValue} />\n <SmallIconButton\n icon={CloseIcon}\n size=\"XS\"\n className={classnames(styles.rowCloseIcon, {[styles.hidden]: !isRowRemovable})}\n onClick={onRemove}\n data-reltio-id={`reltio-matches-table-${containerId ? containerId + '-' : ''}checkbox-${rowIndex}`}\n />\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {shouldRenderCommentsContainer && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isRowSelected})}\n uri={createObjectIdForPM(entityToMatch.uri, entity.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: entity.uri\n })}\n allowOnlyOneComment\n />\n )}\n </div>\n </>\n );\n};\n\nexport default withTableContext(\n ({onToggleSelect, entityToMatch}: MatchesTableContextProps, {rowValue, value}: Props) => {\n const {rawValue: match} = rowValue;\n return {\n onRemove: () => onToggleSelect(match),\n isRowRemovable: value !== entityToMatch,\n entityToMatch\n };\n }\n)(EntityProfileRenderer);\n","import React from 'react';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, withTableContext} from '@reltio/components';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n headIndex: number;\n [key: string]: unknown;\n};\n\nconst ProfileHeadCellRenderer = (props: Props) => {\n const isFirstColumn = props.headIndex === 0;\n const styles = useStyles();\n return (\n <div className={classnames(styles.headCell, {[styles.firstHeadCell]: isFirstColumn})}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withTableContext()(withFilterAtBottom(ProfileHeadCellRenderer));\n","import {MatchRulesBlock} from '@reltio/components';\nimport {EntitiesMap, Entity, Match, Metadata} from '@reltio/mdm-sdk';\nimport React, {ComponentProps} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n metadata: Metadata;\n match: Match;\n entitiesMap: EntitiesMap;\n entity: Entity;\n variant?: ComponentProps<typeof MatchRulesBlock>['variant'];\n };\n};\n\nconst MatchRulesRenderer = ({value}: Props) => {\n const styles = useStyles();\n if (!value) {\n return null;\n }\n const {metadata, match, entitiesMap, entity, variant} = value;\n return (\n <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n variant={variant}\n metadata={metadata}\n entitiesMap={entitiesMap}\n match={match}\n entity={entity}\n />\n </div>\n );\n};\n\nexport default MatchRulesRenderer;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {stopPropagation} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {value: string; ov: boolean};\n};\n\nconst BlobRenderer = ({value}: Props) => {\n const {value: blobValue, ov} = value;\n const styles = useStyles();\n return (\n <div className={classnames(styles.blobWrapper, {[styles.ovFalse]: ov === false})} onScroll={stopPropagation}>\n {blobValue}\n </div>\n );\n};\n\nexport default BlobRenderer;\n","import React from 'react';\nimport {BasicImageAttributesValue, getImageAttributeOvThumbnailUrl} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {value: BasicImageAttributesValue; ov: boolean};\n};\n\nconst ImageRenderer = ({value}: Props) => {\n const {value: imgValue} = value;\n const styles = useStyles();\n const src = getImageAttributeOvThumbnailUrl({value: imgValue});\n return (\n src && (\n <div className={styles.imageWrapper}>\n <img src={src} />\n </div>\n )\n );\n};\n\nexport default ImageRenderer;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getEntityType, getLabel, getReferencedEntityFromAttrValue, ReferenceAttributeValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: ReferenceAttributeValue;\n};\n\nconst ReferenceRenderer = ({value}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n return (\n value && (\n <div\n className={classnames(styles.defaultWrapper, styles.referenceWrapper, {\n [styles.ovFalse]: value.ov === false\n })}\n >\n <EntityTypeIcon\n className={styles.entityAvatar}\n entityType={getEntityType(metadata, getReferencedEntityFromAttrValue(value).type)}\n />\n <EntityUriLink value={getReferencedEntityFromAttrValue(value).objectURI} className={styles.link}>\n {getLabel(value.label)}\n </EntityUriLink>\n </div>\n )\n );\n};\n\nexport default ReferenceRenderer;\n","import React from 'react';\nimport {useBasicTableCellRenderer} from '@reltio/components';\n\nexport const EntityRowCollapseContext =\n React.createContext<ReturnType<typeof useBasicTableCellRenderer>['collapseContextValue']>(null);\n\nEntityRowCollapseContext.displayName = 'EntityRowCollapseContext';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n chipContainer: {\n position: 'absolute',\n height: '16px',\n top: '6px',\n right: '6px',\n zIndex: 2\n },\n chipLabel: {\n paddingLeft: '4px',\n paddingRight: '4px',\n fontSize: '10px',\n lineHeight: '11px'\n }\n});\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport {BasicTableRowCollapseContext, withTooltip} from '@reltio/components';\nimport {find, pipe, prop, propEq} from 'ramda';\nimport {Crosswalk, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport Chip from '@mui/material/Chip';\nimport {EntityRowCollapseContext} from '../../EntityRowCollapseContext';\n\nimport {useStyles} from './styles';\n\nconst ChipWithTooltip = withTooltip(Chip);\n\ntype Props = {\n needShowChip: boolean;\n crosswalks: Crosswalk[];\n dataTenant?: string;\n};\n\nconst SourceChipWithTooltip = ({needShowChip, crosswalks, dataTenant}: Props) => {\n const styles = useStyles();\n\n const basicTableRowCollapseContext = useContext(BasicTableRowCollapseContext);\n const entityRowCollapseContext = useContext(EntityRowCollapseContext);\n const collapseContext = entityRowCollapseContext || basicTableRowCollapseContext;\n\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n const dataTenants = useSelector(mdm.selectors.getDataTenants) || [];\n\n if (!needShowChip) {\n return null;\n }\n\n const tooltipTitle = (\n <>\n {crosswalks.slice(collapseContext.maxRowValuesCount).map((crosswalk, index) => {\n return <div key={index}>-{getSourceSystemLabel(metadata, crosswalk.type)}</div>;\n })}\n {dataTenant ? <div>-{pipe(find(propEq('id', dataTenant)), prop('label'))(dataTenants)}</div> : null}\n </>\n );\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n label={`+ ${crosswalks.length + (dataTenant ? 1 : 0) - collapseContext.maxRowValuesCount}`}\n variant=\"outlined\"\n classes={{\n root: styles.chipContainer,\n label: styles.chipLabel\n }}\n />\n );\n};\n\nexport default SourceChipWithTooltip;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport {always, slice, when} from 'ramda';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport {ArrowExpandButton, BasicTableRowCollapseContext} from '@reltio/components';\n\nimport CommonSourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\nimport {EntityRowCollapseContext} from '../EntityRowCollapseContext';\nimport SourceChipWithTooltip from './components/SourceChipWithTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n dataTenant?: string;\n };\n};\n\nconst SourcesRenderer = ({value: {crosswalks, dataTenant}}: Props) => {\n const styles = useStyles();\n const [collapsed, setCollapsed] = useState(true);\n\n const basicTableRowCollapseContext = useContext(BasicTableRowCollapseContext);\n const entityRowCollapseContext = useContext(EntityRowCollapseContext);\n\n const collapseContext = entityRowCollapseContext || basicTableRowCollapseContext;\n\n const toggleCollapsed = useCallback(() => {\n setCollapsed((prev) => !prev);\n }, []);\n\n const displayedCrosswalks: Crosswalk[] = useMemo(\n () => when(always(collapsed), slice(0, collapseContext.maxRowValuesCount))(crosswalks),\n [collapsed, collapseContext.maxRowValuesCount, crosswalks]\n );\n const isShowDataTenant = !collapsed || displayedCrosswalks.length < collapseContext.maxRowValuesCount;\n\n const sources = useMemo(\n () => ({\n crosswalks: displayedCrosswalks,\n dataTenant: isShowDataTenant ? dataTenant : undefined\n }),\n [dataTenant, displayedCrosswalks, isShowDataTenant]\n );\n\n const valuesCount = crosswalks.length + (dataTenant ? 1 : 0);\n const hasCollapsedValue = valuesCount > collapseContext.maxRowValuesCount;\n\n const needShowChip = collapsed && hasCollapsedValue;\n\n return (\n <>\n <CommonSourcesRenderer value={sources}>\n {hasCollapsedValue && (\n <ArrowExpandButton\n className={styles.expandButton}\n expanded={!collapsed}\n onClick={toggleCollapsed}\n />\n )}\n </CommonSourcesRenderer>\n <SourceChipWithTooltip needShowChip={needShowChip} crosswalks={crosswalks} dataTenant={dataTenant} />\n </>\n );\n};\n\nexport default SourcesRenderer;\n","import React from 'react';\nimport {MatchRuleSummary} from '@reltio/mdm-sdk';\nimport CommonRelevanceScoreRenderer from '../../cell-renderers/RelevanceScoreRenderer/RelevanceScoreRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n matchRuleSummaries: MatchRuleSummary[] | undefined;\n };\n};\n\nconst RelevanceScoreRenderer = ({value}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.defaultWrapper}>\n <CommonRelevanceScoreRenderer value={value.matchRuleSummaries} />\n </div>\n );\n};\n\nexport default RelevanceScoreRenderer;\n","import {assoc, map, pipe, prop, propOr, reduce, split, filter, ifElse, always} from 'ramda';\nimport {\n DataTypes,\n EntitiesMap,\n Entity,\n getAttributesForMatchRules,\n getEntityId,\n isAttributeSearchUri,\n Metadata,\n Match,\n getAttributeValuesByPathWithOvFlag,\n getOvAttributeValuesByPathWithOvFlag,\n isDataTenantEntity,\n Crosswalk\n} from '@reltio/mdm-sdk';\n\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport EntityProfileRenderer from './cell-renderers/EntityProfileRenderer';\nimport ProfileHeadCellRenderer from './cell-renderers/ProfileHeadCellRenderer';\nimport MatchRulesRenderer from './cell-renderers/MatchRulesRenderer';\nimport BlobRender from './cell-renderers/BlobRenderer';\nimport ImageRenderer from './cell-renderers/ImageRenderer';\nimport ReferenceRenderer from './cell-renderers/ReferenceRenderer';\nimport {MatchesColumnsData, MatchesTableRowValue} from '../../types/potentialMatchesTypes';\nimport {ComparisonViewMode} from '../../constants/views';\nimport SourcesRenderer from './cell-renderers/SourcesRenderer';\nimport RelevanceScoreRenderer from './cell-renderers/RelevanceScoreRenderer';\n\nconst getAttrPathFromColumnId = split('.');\n\ntype RowValue = {\n entity: Entity;\n metadata: Metadata;\n match: Match;\n entitiesMap?: EntitiesMap;\n matchScore: number;\n};\n\nconst getRowValueForColumn = (\n columnData: MatchesColumnsData,\n {entity, metadata, match, entitiesMap, matchScore}: RowValue,\n showNonOv\n) => {\n switch (columnData.id) {\n case 'profile':\n return entity;\n case 'entityId':\n return {value: getEntityId(entity)};\n case 'matchRules':\n return {metadata, match, entitiesMap, entity, variant: 'all'};\n case 'score':\n return {value: matchScore};\n case 'sources': {\n const crosswalks: Crosswalk[] = propOr([], 'crosswalks', entity);\n return isDataTenantEntity(entity)\n ? {\n crosswalks,\n dataTenant: entity.dataTenant\n }\n : {\n crosswalks\n };\n }\n case 'relevanceScore':\n return {matchRuleSummaries: match.matchRuleSummaries};\n default: {\n const [attrSource, ...attrPath]: string[] = getAttrPathFromColumnId(columnData.id);\n return pipe(\n prop(attrSource),\n ifElse(\n always(showNonOv),\n getAttributeValuesByPathWithOvFlag(attrPath),\n getOvAttributeValuesByPathWithOvFlag(attrPath)\n )\n )(entity);\n }\n }\n};\n\nconst getBasicTableRowsData = (\n metadata: Metadata,\n columnsData: MatchesColumnsData[],\n matches: Match[],\n showNonOv: boolean,\n entitiesMap?: EntitiesMap\n): MatchesTableRowValue[] =>\n matches.map((match) => {\n const entity = match.object;\n const allMatchRules = match.matchRules || [];\n const matchScore = match.matchScore || 0;\n const matchAttributes = getAttributesForMatchRules(metadata, entity.type, allMatchRules);\n const rowValue = {entity, metadata, match, entitiesMap, matchScore};\n const filteredColumnsData = columnsData.filter(({modes}) =>\n modes ? modes.includes(ComparisonViewMode.TABLE) : true\n );\n\n return pipe(\n reduce(\n (acc, columnData) => assoc(columnData.id, getRowValueForColumn(columnData, rowValue, showNonOv), acc),\n {}\n ),\n assoc('matchAttributes', matchAttributes),\n assoc('rawValue', match)\n )(filteredColumnsData);\n });\n\nconst getNestedPathByColumnId = (columnId: string) => {\n if (isAttributeSearchUri(columnId) as boolean) {\n const [, ...attrPath]: string[] = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRendererByDataType = (dataType: DataTypes) => {\n switch (dataType) {\n case DataTypes.TYPE_BLOB: {\n return BlobRender;\n }\n case DataTypes.TYPE_IMAGE: {\n return ImageRenderer;\n }\n case DataTypes.TYPE_REFERENCE: {\n return ReferenceRenderer;\n }\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getCellValueRenderer = (columnData: MatchesColumnsData) => {\n switch (columnData.id) {\n case 'profile': {\n return EntityProfileRenderer;\n }\n case 'matchRules': {\n return MatchRulesRenderer;\n }\n case 'sources': {\n return SourcesRenderer;\n }\n case 'relevanceScore': {\n return RelevanceScoreRenderer;\n }\n\n default:\n return getCellValueRendererByDataType(columnData.dataTypeDefinition.type);\n }\n};\n\nconst getBasicTableColumnsData = (sortable: boolean, columnData: MatchesColumnsData[]) =>\n pipe(\n filter(({modes}) => (modes ? modes.includes(ComparisonViewMode.TABLE) : true)),\n map((columnData: MatchesColumnsData) => ({\n sortable,\n ...columnData,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: columnData.id === 'profile' ? ProfileHeadCellRenderer : HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(columnData),\n draggable: propOr(true, 'draggable')(columnData)\n }))\n )(columnData);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import React, {useContext} from 'react';\nimport {MatchesColumnsData, MatchesTableRowValue} from '../../../../types/potentialMatchesTypes';\nimport {BasicTableRowCollapseContext, DataTypeValue, withTooltip} from '@reltio/components';\nimport {EntityRowCollapseContext} from '../../EntityRowCollapseContext';\nimport {\n AttributeValue,\n getAttributeValue,\n getLabel,\n isComplexAttribute,\n NestedAttributeValue,\n ReferenceAttributeValue,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\nimport Chip from '@mui/material/Chip';\n\nimport {useStyles} from './styles';\n\nconst ChipWithTooltip = withTooltip(Chip);\n\ntype Props = {\n columnData: MatchesColumnsData;\n rowValue: MatchesTableRowValue;\n cellIndex: number;\n rowIndex: number;\n};\n\nconst RowCellChipWithTooltip = ({columnData, rowValue, cellIndex, rowIndex}: Props) => {\n const styles = useStyles();\n\n const basicTableRowCollapseContext = useContext(BasicTableRowCollapseContext);\n const entityRowCollapseContext = useContext(EntityRowCollapseContext);\n const collapseContext = entityRowCollapseContext || basicTableRowCollapseContext;\n const maxRowValuesCount: number = collapseContext?.maxRowValuesCount;\n\n const isAttributeCell = columnData.id.startsWith('attributes.');\n const columnId = columnData.id as `attributes.${string}`;\n const allValues = isAttributeCell ? rowValue[columnId] : [];\n const hiddenValues = allValues\n .reduce((acc: Array<AttributeValue | AttributeValue[]>, value, index) => {\n if (index >= maxRowValuesCount) {\n acc.push(value);\n } else if (Array.isArray(value) && value.length > maxRowValuesCount) {\n acc.push(value.slice(maxRowValuesCount));\n }\n return acc;\n }, [])\n .flat();\n\n const needShowChip =\n isAttributeCell && cellIndex === 0 && hiddenValues.length > 0 && collapseContext?.getIsRowCollapsed(rowIndex);\n\n if (!needShowChip) {\n return null;\n }\n\n const tooltipTitle = hiddenValues.map((value, i) => (\n <div key={i}>\n {isComplexAttribute(columnData.dataTypeDefinition)\n ? getLabel((value as NestedAttributeValue | ReferenceAttributeValue).label)\n : wrapInArrayIfNeeded(value).map((value, index) => (\n <DataTypeValue\n key={index}\n value={getAttributeValue(value)}\n dataTypeDefinition={columnData.dataTypeDefinition}\n rich={false}\n />\n ))}\n </div>\n ));\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n label={`+ ${hiddenValues.length}`}\n variant=\"outlined\"\n classes={{\n root: styles.chipContainer,\n label: styles.chipLabel\n }}\n />\n );\n};\n\nexport default RowCellChipWithTooltip;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {withTableContext} from '@reltio/components';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {isMatchAttrColumn} from '../../../helpers/attributesHelpers';\nimport {MatchesTableContextProps, RowCellRendererProps} from '../../../types/potentialMatchesTypes';\nimport RowCellChipWithTooltip from './components/RowCellChipWithTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected: boolean;\n isCellHighlighted: boolean;\n cellWrapperClassName: string;\n someRowIsDragging?: boolean;\n isDragLayer?: boolean;\n dragRef?: boolean;\n} & RowCellRendererProps;\n\nconst RowCellRenderer = ({\n rowValue,\n cell,\n CellValueRenderer,\n isRowSelected,\n isCellHighlighted,\n columnIndex,\n cellWrapperClassName,\n someRowIsDragging,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const isFirstColumn = columnIndex === 0;\n const shouldRenderCell = !someRowIsDragging || isFirstColumn;\n const {cellIndex, columnData, rowIndex} = otherProps;\n\n return (\n <div\n className={classnames(\n {\n [styles.rowCellSelected]: isRowSelected,\n [styles.rowCellHighlighted]: isCellHighlighted,\n [styles.rowCellFirstColumn]: isFirstColumn\n },\n styles.rowCell,\n cellWrapperClassName\n )}\n >\n {shouldRenderCell && (\n <>\n {cell.values.map((value, index) => (\n <CellValueRenderer\n key={index}\n value={value}\n rowValue={rowValue}\n isRowSelected={isRowSelected}\n {...otherProps}\n />\n ))}\n <RowCellChipWithTooltip\n cellIndex={cellIndex}\n rowIndex={rowIndex}\n rowValue={rowValue}\n columnData={columnData}\n />\n </>\n )}\n </div>\n );\n};\n\nexport default withTableContext(({selected}: MatchesTableContextProps, {columnData, rowValue, cell}: Props) => ({\n isRowSelected: !!selected && selected.includes(rowValue.rawValue),\n isCellHighlighted: isMatchAttrColumn(rowValue.matchAttributes, columnData) && !cell.values.every(isEmptyValue)\n}))(RowCellRenderer);\n","import {lighten} from '@mui/material/styles';\n\nimport {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n tableContainer: {\n flex: 1,\n display: 'flex',\n color: 'rgba(0,0,0,0.54)',\n overflow: 'hidden',\n background: theme.palette.background.paper\n },\n rowActionButtonsWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n marginRight: '1px'\n },\n rowActionButtons: {\n backgroundColor: 'rgba(238, 238, 238, 1)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n backgroundColor: 'rgba(238, 238, 238, 1)',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n checked: {},\n actionButton: {\n marginLeft: '12px',\n '&:last-child': {\n marginRight: '3px'\n }\n },\n hoveredRowRightContentContainer: {\n alignItems: 'center !important' //overlapping inline style for buttons centering\n },\n dragColumnHead: {\n '& #headCell': {\n border: '1px solid',\n borderColor: theme.palette.primary.main\n },\n '& #entityCell': {\n borderLeft: '1px solid',\n borderRight: '1px solid',\n borderLeftColor: theme.palette.primary.main,\n borderRightColor: theme.palette.primary.main\n }\n },\n dragColumnBody: {\n borderLeft: '1px solid',\n borderRight: '1px solid',\n borderLeftColor: theme.palette.primary.main,\n borderRightColor: theme.palette.primary.main\n },\n sourcesCell: {\n display: 'flex',\n flexWrap: 'wrap',\n padding: '15px',\n columnGap: '5px',\n rowGap: '8px',\n alignItems: 'center'\n }\n}));\n","import React from 'react';\nimport RowCellRenderer from './RowCellRenderer';\nimport {RowCellAutoSizer} from '@reltio/components';\nimport {RowCellRendererProps} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from '../styles';\n\ntype RowCellAutoSizerProps = React.ComponentProps<typeof RowCellAutoSizer>;\n\ntype Props = {\n changeRowCellHeight: RowCellAutoSizerProps['onChangeHeight'];\n basicTableRef?: React.Ref<HTMLElement>;\n hoveredRowRightContent?: React.ReactNode;\n hoverRowIndex?: number;\n someRowIsDragging?: boolean;\n dragRef?: boolean;\n isDragLayer?: boolean;\n} & RowCellRendererProps;\n\nexport const CommonRowCellRenderer = ({\n hoverRowIndex,\n hoveredRowRightContent,\n basicTableRef,\n changeRowCellHeight,\n ...props\n}: Props) => {\n const styles = useStyles();\n switch (props.columnData.id) {\n case 'profile':\n return (\n <RowCellRenderer\n {...props}\n hoverRowIndex={hoverRowIndex}\n actionsContent={hoveredRowRightContent}\n tableRef={basicTableRef}\n />\n );\n case 'matchRules':\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} />\n </RowCellAutoSizer>\n );\n case 'sources':\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer cellWrapperClassName={styles.sourcesCell} {...props} />\n </RowCellAutoSizer>\n );\n default:\n return <RowCellRenderer {...props} />;\n }\n};\n","import React, {useCallback, useEffect, useLayoutEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {either, evolve, move} from 'ramda';\nimport {\n BasicTable,\n defaultGetRowCellHeight,\n CommentsContainer,\n useBasicTableCellRenderer,\n useDynamicRowCellHeight,\n BasicTableCellRenderer as EntityCellRenderer\n} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n Entity,\n Metadata,\n Match,\n EntitiesMap,\n getActionPermissionForMatch,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './dataHelpers';\nimport withEntityCellValue from './cell-renderers/withEntityCellValue';\nimport {CommonRowCellRenderer} from './cell-renderers/CommonRowCellRenderer';\nimport {\n MatchesColumnsData,\n RowCellRendererProps,\n MatchesTableContextProps,\n MatchesTableRowValue,\n GetRowCellKeyProps\n} from '../../types/potentialMatchesTypes';\nimport {useAddRelationDialog} from '../../hooks/useAddRelationDialog';\nimport {useStyles} from './styles';\nimport MatchControls from '../MatchControls/MatchControls';\n\nconst MAX_ROW_VALUES_COUNT = 3;\n\ntype Sorting = {\n field: string;\n order: 'asc' | 'desc';\n};\n\ntype Filter = {\n filter: string;\n value: unknown[];\n};\n\ntype Props = {\n entity?: Entity;\n matches: Match[];\n metadata: Metadata;\n columnsData: MatchesColumnsData[];\n onReorderingColumn: (what, where) => void;\n config: PotentialMatchesPerspectiveConfig;\n filters?: Record<string, Filter>;\n onFilter?: (value: {columnId: string; filter: Filter}) => void;\n sorting?: Sorting;\n onSort?: (column: string) => void;\n selected: Match[];\n onToggleSelect: (match: Match) => void;\n onResetSelect: () => void;\n onSelectAll: () => void;\n isComparisonViewShown: boolean;\n entitiesMap?: EntitiesMap;\n basicTableRef?: React.Ref<HTMLElement>;\n showNonOv: boolean;\n};\n\nconst getIdFromRowValue = (rowValue: MatchesTableRowValue) => rowValue.profile.uri;\n\nconst getRowCellKey = ({columnData: {id}, cellIndex, rowValue}: GetRowCellKeyProps) =>\n `${id}[${getIdFromRowValue(rowValue)}][${cellIndex}]`;\n\nconst MatchesTable = ({\n entity,\n matches,\n metadata,\n columnsData,\n onReorderingColumn,\n config,\n filters,\n onFilter,\n sorting,\n onSort,\n selected,\n onToggleSelect,\n onResetSelect,\n onSelectAll,\n entitiesMap,\n basicTableRef,\n isComparisonViewShown,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n const [orderedMatches, setOrderedMatches] = useState(matches);\n useEffect(() => {\n setOrderedMatches(matches);\n }, [matches]);\n const onDndRowReorder = useCallback((oldPosition: number, newPosition: number) => {\n setOrderedMatches(move(oldPosition, newPosition));\n setHoverRowIndex(newPosition);\n }, []);\n\n const tableRowsData = useMemo(\n () => getBasicTableRowsData(metadata, columnsData, orderedMatches, showNonOv, entitiesMap),\n [metadata, columnsData, orderedMatches, showNonOv, entitiesMap]\n );\n\n const sortable = !!onSort;\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(sortable, columnsData), [columnsData, sortable]);\n\n const entityRowData = useMemo(\n () => (entity ? getBasicTableRowsData(metadata, columnsData, [{object: entity}], showNonOv) : []),\n [entity, metadata, columnsData, showNonOv]\n );\n\n const onDndColumnReorder = useCallback(\n ({what, where}) => {\n const oldPositionId = tableColumnsData[what.columnIndex].id;\n const newPositionId = tableColumnsData[where.columnIndex].id;\n onReorderingColumn(oldPositionId, newPositionId);\n },\n [tableColumnsData]\n );\n\n const tableContext: MatchesTableContextProps = useMemo(\n () => ({\n isAllSelected: selected.length > 0 && selected.length === matches.length,\n entityToMatch: entity,\n selected,\n onToggleSelect,\n onResetSelect,\n onSelectAll,\n isComparisonViewShown\n }),\n [entity, selected, onToggleSelect, onResetSelect, onSelectAll, matches, isComparisonViewShown]\n );\n\n const {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache} = useDynamicRowCellHeight(getRowCellKey);\n\n const [openActionsMenu, setOpenActionsMenu] = useState(false);\n const onActionsMenuOpen = useCallback(() => setOpenActionsMenu(true), []);\n const onActionsMenuClose = useCallback(() => setOpenActionsMenu(false), []);\n\n const [openCollaborationPopup, setOpenCollaborationPopup] = useState(false);\n\n const [hoverRowIndex, setHoverRowIndex] = useState<number>(null);\n const onRowHover = useCallback(\n (rowIndex: number) => {\n setHoverRowIndex((prevHoverRowIndex) =>\n openActionsMenu || openCollaborationPopup ? prevHoverRowIndex : rowIndex\n );\n },\n [openActionsMenu, openCollaborationPopup]\n );\n\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const hoveredRowRightContent = useMemo(() => {\n if (hoverRowIndex === null) {\n return null;\n }\n\n const hoveredMatch = orderedMatches[hoverRowIndex];\n\n if (!hoveredMatch) {\n return null;\n }\n\n const permission = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const isChecked = selected.includes(hoveredMatch);\n return (\n <div className={classnames(styles.rowActionButtonsWrapper)}>\n <div className={classnames(styles.rowActionButtons, {[styles.checked]: isChecked})}>\n <MatchControls\n value={{\n mainEntity: entity,\n entity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n permission\n }}\n openAddRelationDialog={openAddRelationDialog}\n onActionsMenuClose={onActionsMenuClose}\n onActionsMenuOpen={onActionsMenuOpen}\n classes={{\n actionButton: styles.actionButton,\n moreOptions: styles.actionButton\n }}\n />\n </div>\n {entity && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isChecked})}\n uri={createObjectIdForPM(entity.uri, hoveredMatch.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: hoveredMatch.object.uri\n })}\n onChangePopupVisibility={setOpenCollaborationPopup}\n allowOnlyOneComment\n showAlways\n />\n )}\n </div>\n );\n }, [\n hoverRowIndex,\n orderedMatches,\n selected,\n styles,\n entity,\n config,\n metadata,\n onActionsMenuOpen,\n onActionsMenuClose,\n openAddRelationDialog\n ]);\n\n const renderRowCell = useCallback(\n (props: RowCellRendererProps) => {\n return (\n <CommonRowCellRenderer\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n basicTableRef={basicTableRef}\n changeRowCellHeight={changeRowCellHeight}\n {...props}\n />\n );\n },\n [hoverRowIndex, hoveredRowRightContent, basicTableRef, changeRowCellHeight]\n );\n\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, defaultGetRowCellHeight), [\n getDynamicRowCellHeight,\n defaultGetRowCellHeight\n ]);\n\n const tableClasses = useMemo(\n () => ({\n hoveredRowRightContentContainer: styles.hoveredRowRightContentContainer,\n dragColumnHead: styles.dragColumnHead,\n dragColumnBody: styles.dragColumnBody\n }),\n [styles]\n );\n\n const {\n getDynamicRowCellHeight: getDynamicEntityCellHeight,\n changeRowCellHeight: changeEntityCellHeight,\n clearHeightsCache: clearEntityHeightsCache\n } = useDynamicRowCellHeight(getRowCellKey);\n\n const renderEntityCell = useCallback(\n (props: RowCellRendererProps) => {\n return <CommonRowCellRenderer changeRowCellHeight={changeEntityCellHeight} {...props} />;\n },\n [changeEntityCellHeight]\n );\n\n const getEntityCellHeight = useCallback(either(getDynamicEntityCellHeight, defaultGetRowCellHeight), [\n getDynamicEntityCellHeight,\n defaultGetRowCellHeight\n ]);\n\n const {\n getRowHeight,\n getHeightForSubRow,\n tableRowsData: entityTableRowsData,\n collapseContextValue: entityRowCollapseContext\n } = useBasicTableCellRenderer({\n rowsData: entityRowData,\n columnsData: tableColumnsData,\n maxRowValuesCount: MAX_ROW_VALUES_COUNT,\n getRowCellHeight: getEntityCellHeight,\n renderRowCell: renderEntityCell,\n getIdFromRowValue\n });\n\n const entityRowHeight = getRowHeight(entity?.uri);\n\n const enhancedColumnsData = useMemo(() => {\n const withEntityCell = withEntityCellValue(\n EntityCellRenderer,\n entityRowCollapseContext,\n getHeightForSubRow,\n entityTableRowsData,\n getRowHeight,\n tableColumnsData\n );\n return tableColumnsData.map(\n evolve({\n headCellRenderer: withEntityCell\n })\n );\n }, [entityRowCollapseContext, getHeightForSubRow, entityTableRowsData, getRowHeight, tableColumnsData]);\n\n useLayoutEffect(() => {\n clearHeightsCache();\n clearEntityHeightsCache();\n }, [clearEntityHeightsCache, clearHeightsCache, entity?.uri]);\n\n return (\n <div data-reltio-id=\"reltio-matches-table-container\" className={styles.tableContainer}>\n <BasicTable\n fixFirstColumn={true}\n columnsData={enhancedColumnsData}\n rowsData={tableRowsData}\n context={tableContext}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n defaultColumnWidth={250}\n defaultColumnMinWidth={100}\n headRowHeight={56 + entityRowHeight}\n renderRowCell={renderRowCell}\n getRowCellHeight={getRowCellHeight}\n hoverStateEnabled={true}\n hoveredRowRightContent={hoveredRowRightContent}\n hoverRowIndex={hoverRowIndex}\n onRowHover={onRowHover}\n classes={tableClasses}\n getIdFromRowValue={getIdFromRowValue}\n maxRowValuesCount={MAX_ROW_VALUES_COUNT}\n dndRowReorderingEnabled\n dndColumnReorderingEnabled\n dndColumnReorderingHandler={onDndColumnReorder}\n dndRowReorderingHandler={onDndRowReorder}\n ref={basicTableRef}\n hoveredContentPosition={0}\n />\n {showDialog && <AddRelationDialogRenderer />}\n </div>\n );\n};\n\nexport default MatchesTable;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {IdContext, useBasicTableCellRenderer} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n headCellData: {\n id: string;\n };\n [key: string]: unknown;\n};\n\nconst withEntityCellValue =\n (\n EntityCellRenderer: (props: Record<string, unknown>) => JSX.Element,\n entityRowCollapseContext: ReturnType<typeof useBasicTableCellRenderer>['collapseContextValue'],\n getHeightForSubRow,\n tableRowsData,\n getRowHeight,\n columnsData\n ) =>\n (HeadCellRenderer: (props: Record<string, unknown>) => JSX.Element) => {\n const HeadCellWithEntityValue = (props: Props) => {\n const styles = useStyles();\n return (\n <IdContext.Provider value=\"tableHeader\">\n <div className={styles.headCellWithEntity}>\n <div id=\"headCell\">\n <HeadCellRenderer {...props} />\n </div>\n <EntityCellRenderer\n className={classnames(styles.entityRowCell, styles.entityRowCellSelected)}\n columnId={props.headCellData.id}\n rowIndex={0}\n getHeightForSubRow={getHeightForSubRow}\n tableRowsData={tableRowsData}\n getRowHeight={getRowHeight}\n columnsData={columnsData}\n collapseContextValue={entityRowCollapseContext}\n id=\"entityCell\"\n />\n </div>\n </IdContext.Provider>\n );\n };\n\n return HeadCellWithEntityValue;\n };\n\nexport default withEntityCellValue;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n comparisonView: {\n width: '100%',\n overflow: 'auto'\n }\n});\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, identity, has, move} from 'ramda';\nimport {\n Entity,\n getEntityUriForLink,\n getPotentialMatchesObjectIdsForCollaboration,\n Metadata,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {DragAndDrop, useCollaboration, CollaborationContextProvider} from '@reltio/components';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {TableHeader} from '../TableHeader/TableHeader';\nimport {useMatchesColumnsData} from '../../hooks/useMatchesColumnData';\nimport ComparisonView from '../ComparisonView';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {PotentialMatchesSavedState} from '../../types/potentialMatchesTypes';\nimport {DEFAULT_ROWS} from '../../constants/defaultRows';\nimport {useFirstPotentialMatches} from '../../hooks/useFirstPotentialMatches';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\nimport {ComparisonViewMode} from '../../constants/views';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport {addFixedAttributes} from './helpers/helpers';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n isLoaded: boolean;\n savedState: PotentialMatchesSavedState;\n onUpdateSavedState: (stateToSave: PotentialMatchesSavedState) => void;\n};\n\nexport const MatchReviewTable = ({config, isLoaded, savedState, onUpdateSavedState}: Props) => {\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const dispatch = useDispatch();\n const {selectedItems, entitiesMap, comparisonViewMode} = useViewState();\n const {toggleSelect, setSelectedItems, setComparisonViewMode, actualizeSelectedItemsColors} = useViewStateActions();\n const {isGlobalSpinnerActive} = useSpinnerAndReloadData();\n\n const {uri: entityUri} = entity || {};\n useFirstPotentialMatches(!!entityUri, entity);\n\n useEffect(() => {\n actualizeSelectedItemsColors();\n }, [selectedItems]);\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n const reloadHandler = () => {\n dispatch(profile.entity.actions.loadEntity({uri: getEntityUriForLink(entity)}));\n };\n addReloadHandler(reloadHandler);\n return () => removeReloadHandler(reloadHandler);\n }, [entity, dispatch, addReloadHandler, removeReloadHandler]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)),\n [entityUri, entitiesMap]\n );\n\n const collaboration = useCollaboration({objectIds});\n\n const styles = useStyles();\n const [allColumnsData, groupedColumnsData, defaultColumns] = useMatchesColumnsData({\n defaultColumnsData: DEFAULT_ROWS,\n metadata,\n entityTypeUri: entity.type\n });\n\n const [visibleColumns, setVisibleColumns] = useState<string[]>(defaultColumns);\n const [showNonOv, setShowNonOv] = useState(false);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, allColumnsData]\n );\n\n const onReorderingColumn = useCallback(\n (oldPositionId, newPositionId) => {\n const oldPosition = visibleColumns.indexOf(oldPositionId);\n const newPosition = visibleColumns.indexOf(newPositionId);\n setVisibleColumns(move(oldPosition, newPosition));\n },\n [visibleColumns]\n );\n\n const comparisonViewProps = {\n entity,\n metadata,\n selectedColumns: selectedItems || [],\n setSelectedColumns: setSelectedItems,\n config,\n selectedRows: visibleColumns,\n setSelectedRows: setVisibleColumns,\n entitiesMap,\n rowsData: groupedColumnsData,\n showNonOv\n };\n\n const matchesTableProps = {\n entity,\n metadata,\n entitiesMap,\n config,\n matches: selectedItems,\n columnsData: visibleColumnsData,\n onReorderingColumn,\n onSelectAll: () => {},\n onToggleSelect: toggleSelect,\n onResetSelect: () => {},\n selected: [],\n isComparisonViewShown: false,\n showNonOv\n };\n\n useEffect(() => {\n if (!isLoaded) {\n return;\n }\n if (savedState?.visibleColumns) {\n setVisibleColumns(addFixedAttributes(savedState.visibleColumns));\n }\n if (savedState?.comparisonViewMode) {\n setComparisonViewMode(savedState.comparisonViewMode);\n }\n if (has('showNonOv', savedState)) {\n setShowNonOv(savedState.showNonOv);\n }\n }, [isLoaded, savedState]); // eslint-disable-line\n\n useEffect(() => {\n if (!isLoaded) {\n return;\n }\n onUpdateSavedState({comparisonViewMode, visibleColumns, showNonOv});\n }, [visibleColumns, comparisonViewMode, showNonOv]); // eslint-disable-line\n\n return (\n <>\n <TableHeader\n config={config}\n columnsData={groupedColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={setVisibleColumns}\n showNonOv={showNonOv}\n onChangeShowNonOv={setShowNonOv}\n />\n <CollaborationContextProvider collaboration={collaboration}>\n {comparisonViewMode === ComparisonViewMode.COLUMNS ? (\n <DragAndDrop>\n <ColumnHandlerContext.Provider value={toggleSelect}>\n {isLoaded && (\n <ComparisonView {...comparisonViewProps} classes={{root: styles.comparisonView}} />\n )}\n </ColumnHandlerContext.Provider>\n </DragAndDrop>\n ) : (\n isLoaded && <MatchesTable {...matchesTableProps} />\n )}\n </CollaborationContextProvider>\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </>\n );\n};\n","import {useCallback, useEffect, useMemo} from 'react';\nimport {Entity, Order} from '@reltio/mdm-sdk';\nimport {prop} from 'ramda';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {DEFAULT_OPTIONS} from '../constants/defaultOptions';\nimport {useMatchesLoader} from '@reltio/components';\n\nexport const useFirstPotentialMatches = (enabled: boolean, entity: Entity) => {\n const {setSelectedItems, setGlobalSpinner} = useViewStateActions();\n const onStartLoading = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishLoading = useCallback(() => {\n setGlobalSpinner(false);\n }, [setGlobalSpinner]);\n const entityUri = prop('uri', entity);\n const dataTenant = prop('dataTenant', entity);\n const initialRequestParam = useMemo(\n () => ({\n enabled: !!entityUri,\n entity,\n filter: '',\n page: 0,\n sorting: {\n field: 'score',\n order: Order.desc\n },\n rowsPerPage: 3,\n options: DEFAULT_OPTIONS,\n onStartLoading,\n onFinishLoading\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataTenant, entityUri]\n );\n\n const {matches} = useMatchesLoader(initialRequestParam);\n\n useEffect(() => {\n setSelectedItems(matches);\n }, [matches, setSelectedItems]);\n};\n","import {getEntityTypeMatchAttributes, Metadata} from '@reltio/mdm-sdk';\nimport {concat, pipe} from 'ramda';\nimport {useMemo} from 'react';\nimport {getColumnsData, getMatchAttrColumns, groupColumnsDataByMatchAttributes} from '../helpers/attributesHelpers';\nimport {getSortOptionIdFromData} from '../helpers/sortHelpers';\n\nimport {MatchesColumnsData, GroupedColumnData} from '../types/potentialMatchesTypes';\n\ntype MatchesColumnsDataProps = {\n defaultColumnsData: MatchesColumnsData[];\n additionalColumnsData?: MatchesColumnsData[];\n metadata: Metadata;\n entityTypeUri: string;\n};\n\nexport const useMatchesColumnsData = ({\n defaultColumnsData,\n additionalColumnsData,\n metadata,\n entityTypeUri\n}: MatchesColumnsDataProps): [MatchesColumnsData[], GroupedColumnData[], string[]] => {\n return useMemo(() => {\n const attrColumnsData = getColumnsData(metadata, entityTypeUri);\n const allColumnsData: MatchesColumnsData[] = defaultColumnsData\n .concat(additionalColumnsData || [])\n .concat(attrColumnsData);\n const matchAttributes: string[] = getEntityTypeMatchAttributes(metadata, entityTypeUri);\n const groupedColumnsData: GroupedColumnData[] = groupColumnsDataByMatchAttributes(\n matchAttributes,\n allColumnsData\n );\n const defaultColumns: string[] = pipe(\n getMatchAttrColumns,\n concat(defaultColumnsData),\n getSortOptionIdFromData\n )(matchAttributes, attrColumnsData);\n return [allColumnsData, groupedColumnsData, defaultColumns];\n }, [defaultColumnsData, additionalColumnsData, metadata, entityTypeUri]);\n};\n","import {concat, filter, map, pipe, prop, propEq, uniq} from 'ramda';\nimport {DEFAULT_ROWS} from '../../../constants/defaultRows';\n\nconst addFixedAttributes = (visibleAttributes: string[] = []): string[] => {\n const getFixedAttributesIds = pipe(filter(propEq('hideable', false)), map(prop('id')));\n const getUnique = pipe(concat, uniq);\n\n const fixedAttributesIds = getFixedAttributesIds(DEFAULT_ROWS);\n return getUnique(fixedAttributesIds, visibleAttributes);\n};\n\nexport {addFixedAttributes};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.25 3H3.75c-.825 0-1.5.675-1.5 1.5v9c0 .825.675 1.5 1.5 1.5h10.5c.825 0 1.5-.675 1.5-1.5v-9c0-.825-.675-1.5-1.5-1.5zm-9 10.5h-1.5v-6h1.5v6zM3.75 6h1.5V4.5h-1.5V6zm6 7.5h-3v-6h3v6zm-3-7.5h3V4.5h-3V6zm7.5 7.5h-3v-6h3v6zm-3-7.5h3V4.5h-3V6z\",\n fill: \"#000\",\n fillOpacity: \".541\"\n})));","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n flexBox: {\n display: 'flex',\n alignItems: 'center'\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n margin: '0 4px'\n }\n});\n","import {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport i18n from 'ui-i18n';\nimport {ConfirmationDialog} from '@reltio/components';\nimport React, {useCallback} from 'react';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\nimport TableIcon from './TableIcon.svg';\nimport {useStyles} from './styles';\n\nexport const ChangeModeConfirmation = () => {\n const {selectedItems, comparisonViewMode, limitSelection} = useViewState();\n const {setComparisonViewMode, deleteExtraMatches} = useViewStateActions();\n const styles = useStyles();\n const onSave = useCallback(() => {\n setComparisonViewMode(ComparisonViewMode.TABLE);\n }, [setComparisonViewMode]);\n const open = comparisonViewMode === ComparisonViewMode.COLUMNS && selectedItems.length > limitSelection;\n const title = i18n.text('Switch to table view');\n const content = (\n <div className={styles.flexBox}>\n {i18n.text('Please switch to')}\n <div className={styles.icon}>\n <TableIcon />\n </div>\n {i18n.text('Table View to compare more than ${max} profiles', {max: MAX_PROFILES_TO_COMPARE})}\n </div>\n );\n return (\n <ConfirmationDialog\n open={open}\n title={title}\n content={content}\n onSave={onSave}\n onDiscard={deleteExtraMatches}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflowX: 'hidden',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n potentialMatchesWrapper: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1\n },\n potentialMatchesContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M20 4v14h2V4c0-1.1-.9-2-2-2H6v2h14zM2 20c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12z\",\n fill: \"currentColor\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M10 12a4 4 0 100-8 4 4 0 000 8zM10.35 14.01C7.62 13.91 2 15.27 2 18v2h9.54c-2.47-2.76-1.23-5.89-1.19-5.99zM19.43 18.02c.36-.59.57-1.28.57-2.02 0-2.21-1.79-4-4-4s-4 1.79-4 4 1.79 4 4 4c.74 0 1.43-.22 2.02-.57L20.59 22 22 20.59l-2.57-2.57zM16 18c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\",\n fill: \"currentColor\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 20h15.002L21 23l1.27-1.27-20-20.01L1 2.99l6.172 6.175a4.007 4.007 0 002.66 2.662l2.23 2.23A10.754 10.754 0 0011 14c-2.67 0-8 1.34-8 4v2zm8-16a3.987 3.987 0 00-2.795 1.137l5.656 5.659A3.999 3.999 0 0011 4z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n input: {\n margin: 0,\n borderRadius: '4px',\n width: '100%',\n paddingTop: 0,\n paddingBottom: 0\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport {pipe} from 'ramda';\nimport {\n MatchRulesSelector,\n SourceSystemsSelector,\n AttributesValuesEditor,\n AttributeFiltersComponentProps\n} from '@reltio/components';\nimport {\n isMatchRuleAttrType,\n isSourceSystemAttrType,\n SearchFilter,\n MatchRulesAttrNames,\n wrapInArray\n} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype RowData = AttributeFiltersComponentProps['rowData'];\n\nexport const ValuesEditor = ({rowData, rowContext}: AttributeFiltersComponentProps) => {\n const styles = useStyles();\n const {values = [], attribute: {attrType, fieldName = null} = {}, filter, id} = (rowData || {}) as RowData;\n const {changeFilter} = rowContext;\n const {entityType} = rowContext;\n\n const changeValue = useCallback(\n (newValues: SearchFilter['values']) => {\n const newFilter: SearchFilter = {\n fieldName,\n filter,\n values: newValues\n };\n\n changeFilter(newFilter, id);\n },\n [changeFilter, id, fieldName, filter]\n );\n\n const TextFieldProps = useMemo(\n () => ({\n InputProps: {\n classes: {\n root: styles.input\n }\n }\n }),\n [styles]\n );\n\n const commonProps = {\n values: (values[0] || []) as string[],\n onChange: pipe(wrapInArray, changeValue),\n TextFieldProps,\n fullWidth: true\n };\n\n if (isMatchRuleAttrType(attrType)) {\n return (\n <MatchRulesSelector {...commonProps} name={attrType.name as MatchRulesAttrNames} entityType={entityType} />\n );\n } else if (isSourceSystemAttrType(attrType)) {\n return <SourceSystemsSelector {...commonProps} />;\n } else {\n return <AttributesValuesEditor rowContext={rowContext} rowData={rowData} />;\n }\n};\n","import React from 'react';\nimport {AttributesFilterSelector, AttributeFiltersComponentProps} from '@reltio/components';\nimport {FilterOptions, getFilterOptionLabel, isMatchRuleAttrType} from '@reltio/mdm-sdk';\nimport {capitalize} from '@mui/material/utils';\n\ntype RowData = AttributeFiltersComponentProps['rowData'];\n\ntype Props = AttributeFiltersComponentProps & {textFieldInputRef: React.MutableRefObject<HTMLInputElement>};\n\nexport const FilterSelector = (props: Props) => {\n const {rowData} = props;\n const {attribute: {attrType} = {}} = (rowData || {}) as RowData;\n const options = isMatchRuleAttrType(attrType)\n ? [FilterOptions.EQUALS].map((value) => ({value, label: capitalize(getFilterOptionLabel(value))}))\n : null;\n\n return <AttributesFilterSelector {...props} options={options} />;\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n divider: {\n marginBottom: '14px',\n marginRight: '16px',\n borderColor: 'rgba(0, 0, 0, 0.121569)'\n },\n optionLabel: {\n fontSize: '13px',\n paddingLeft: '10px'\n }\n});\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Divider from '@mui/material/Divider';\nimport Checkbox from '@mui/material/Checkbox';\nimport {AttributesFiltersButton} from '@reltio/components';\nimport {AttributeType, buildFilterQueryString, SearchFilter} from '@reltio/mdm-sdk';\nimport {FilterSelector} from '../FilterSelector/FilterSelector';\nimport {ValuesEditor} from '../ValuesEditor/ValuesEditor';\nimport {MatchesOptions} from '../../../types/potentialMatchesTypes';\n\nimport {useStyles} from './styles';\n\nconst potentialMatchesComponents = {\n FilterSelector,\n ValuesEditor\n};\n\ntype Props = {\n filters: SearchFilter[];\n options: MatchesOptions;\n onChange: (filters: SearchFilter[], option: MatchesOptions) => void;\n attributeTypes: AttributeType[];\n};\n\nexport const MatchesAttributesFiltersButton = ({filters, onChange, attributeTypes, options}: Props) => {\n const styles = useStyles();\n const [showTransitiveMatches, setShowTransitiveMatches] = useState(options.showTransitiveMatches);\n return (\n <AttributesFiltersButton\n dataReltioId=\"potential-matches-filter-button\"\n filters={filters}\n onChange={(filters) => onChange(filters, {showTransitiveMatches})}\n attributeTypes={attributeTypes}\n components={potentialMatchesComponents}\n onTogglePopup={(open) => {\n if (open) {\n setShowTransitiveMatches(options.showTransitiveMatches);\n }\n }}\n isFiltersApplied={!!buildFilterQueryString()(filters) || options.showTransitiveMatches}\n >\n <FormControlLabel\n classes={{label: styles.optionLabel}}\n control={\n <Checkbox\n checked={showTransitiveMatches}\n onChange={(e) => setShowTransitiveMatches(e.target.checked)}\n color=\"primary\"\n />\n }\n label={i18n.text('Show transitive matches')}\n />\n <Divider light className={styles.divider} />\n </AttributesFiltersButton>\n );\n};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {AttributesFiltersButton} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n CrosswalksAttrTypes,\n EntityAttrTypes,\n getEntityType,\n hasMatchRulesWithoutML,\n hasMlMatchRule,\n isReadableAttribute,\n MatchRulesAttrTypes,\n Order,\n SearchFilter,\n PotentialMatchesAttrTypes,\n SortingField\n} from '@reltio/mdm-sdk';\nimport PotentialMatchesIcon from '../components/RightSidePanel/icons/potential-matches-icon.svg';\nimport FindMatchesIcon from '../components/RightSidePanel/icons/find-matches-icon.svg';\nimport NotAMatchIcon from '../components/RightSidePanel/icons/not-a-match-icon.svg';\nimport {ActivePanel} from '../constants/views';\n\nimport {ADDITIONAL_SORT_OPTIONS_DATA, DEFAULT_SORT_OPTIONS, getSortOptionIdFromData} from '../helpers/sortHelpers';\nimport {DEFAULT_OPTIONS} from '../constants/defaultOptions';\nimport {ValuesEditor} from '../components/RightSidePanel/ValuesEditor/ValuesEditor';\nimport {MatchesOptions} from '../types/potentialMatchesTypes';\nimport {MatchesAttributesFiltersButton} from '../components/RightSidePanel/MatchesAttributesFiltersButton/MatchesAttributesFiltersButton';\nimport {PMRightPanelTabs} from '../PotentialMatchesView';\n\nconst sourceSystemsComponents = {\n ValuesEditor\n};\n\nexport const usePotentialMatchesRightSidePanelElements = (): {\n active?: number;\n tabs: PMRightPanelTabs;\n toggleActive: (newId: ActivePanel) => void;\n onClose: () => void;\n} => {\n const [matchesFilters, setMatchesFilters] = useState<SearchFilter[]>([]);\n const [matchesOptions, setMatchesOptions] = useState<MatchesOptions>(DEFAULT_OPTIONS);\n const [findMatchesFilters, setFindMatchesFilters] = useState<SearchFilter[]>([]);\n const [notMatchFilters, setNotMatchFilters] = useState<SearchFilter[]>([]);\n const [matchesSorting, setMatchesSorting] = useState<SortingField>({\n field: ADDITIONAL_SORT_OPTIONS_DATA[0].id,\n order: Order.desc\n });\n const [findMatchesSorting, setFindMatchesSorting] = useState<SortingField>({\n field: getSortOptionIdFromData(DEFAULT_SORT_OPTIONS)[0],\n order: Order.asc\n });\n const [notMatchSorting, setNotMatchSorting] = useState<SortingField>({\n field: getSortOptionIdFromData(DEFAULT_SORT_OPTIONS)[0],\n order: Order.asc\n });\n\n const [active, setActive] = useState<ActivePanel>(null);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n\n const toggleActive = useCallback((newId: ActivePanel) => {\n setActive((active) => (active === newId ? null : newId));\n }, []);\n const onClose = useCallback(() => {\n setActive(null);\n }, []);\n\n const entityType = getEntityType(metadata, entity?.type);\n\n const getAttributeTypes = (entityType) =>\n (entityType?.attributes || []).concat(entityType?.analyticsAttributes || []).filter(isReadableAttribute);\n\n const attributeTypes = useMemo(() => getAttributeTypes(entityType), [entityType]);\n\n const matchRulesAttributes = useMemo(() => {\n const matchRulesAttributes = [\n {...MatchRulesAttrTypes.matchRules, check: hasMatchRulesWithoutML},\n {...MatchRulesAttrTypes.MLRecommendedMatch, check: hasMlMatchRule}\n ];\n\n return matchRulesAttributes.reduce((attributes, {check, ...attrType}) => {\n check(entityType) && attributes.push(attrType);\n return attributes;\n }, []);\n }, [entityType]);\n\n const potentialMatchesAttributeTypes = useMemo(\n () => [\n ...matchRulesAttributes,\n PotentialMatchesAttrTypes.relevanceScore,\n PotentialMatchesAttrTypes.matchAction,\n ...attributeTypes\n ],\n [attributeTypes, matchRulesAttributes]\n );\n\n const findMatchesAttributeTypes = useMemo(\n () => [EntityAttrTypes.id, CrosswalksAttrTypes.sourceSystems, ...attributeTypes],\n [attributeTypes]\n );\n\n const onChangeMatchesFilters = (matchesFilters: SearchFilter[], options: MatchesOptions) => {\n setMatchesOptions(options);\n setMatchesFilters(matchesFilters);\n };\n\n const tabs = useMemo(\n () => [\n {\n buttonProps: {\n id: ActivePanel.PotentialMatches,\n icon: PotentialMatchesIcon,\n tooltipTitle: i18n.text('Potential Matches')\n },\n headerProps: {\n mainTitle: i18n.text('Potential Matches'),\n rightContent: (\n <MatchesAttributesFiltersButton\n filters={matchesFilters}\n onChange={onChangeMatchesFilters}\n attributeTypes={potentialMatchesAttributeTypes}\n options={matchesOptions}\n />\n )\n },\n filters: matchesFilters,\n options: matchesOptions,\n sorting: matchesSorting,\n onSorting: setMatchesSorting\n },\n {\n buttonProps: {\n id: ActivePanel.FindMatches,\n icon: FindMatchesIcon,\n tooltipTitle: i18n.text('Find Matches')\n },\n headerProps: {\n mainTitle: i18n.text('Find Matches'),\n rightContent: (\n <AttributesFiltersButton\n filters={findMatchesFilters}\n onChange={setFindMatchesFilters}\n attributeTypes={findMatchesAttributeTypes}\n components={sourceSystemsComponents}\n />\n )\n },\n filters: findMatchesFilters,\n sorting: findMatchesSorting,\n onSorting: setFindMatchesSorting\n },\n {\n buttonProps: {\n id: ActivePanel.NotAMatch,\n icon: NotAMatchIcon,\n tooltipTitle: i18n.text('Not a Match')\n },\n headerProps: {\n mainTitle: i18n.text('Not a Match'),\n rightContent: (\n <AttributesFiltersButton\n filters={notMatchFilters}\n onChange={setNotMatchFilters}\n attributeTypes={attributeTypes}\n />\n )\n },\n filters: notMatchFilters,\n sorting: notMatchSorting,\n onSorting: setNotMatchSorting\n }\n ],\n [\n matchesFilters,\n matchesOptions,\n findMatchesFilters,\n notMatchFilters,\n potentialMatchesAttributeTypes,\n findMatchesAttributeTypes,\n matchesSorting,\n findMatchesSorting,\n notMatchSorting,\n attributeTypes\n ]\n );\n\n return {active, tabs, toggleActive, onClose};\n};\n","import React from 'react';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\n\nconst PotentialMatchesLoadIndicator = () => {\n const {isGlobalSpinnerActive} = useSpinnerAndReloadData();\n return isGlobalSpinnerActive ? <LinearLoadIndicator /> : null;\n};\n\nexport default PotentialMatchesLoadIndicator;\n","import React, {useCallback, useEffect, useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {equals, pluck} from 'ramda';\nimport {\n useSnackbar,\n SnackbarContext,\n useSavedStateForEntityType,\n ScreenProfileBand,\n ProfileResizablePanes,\n RightPanelTab\n} from '@reltio/components';\nimport {Entity, PotentialMatchesPerspectiveConfig, SearchFilter, SortingField} from '@reltio/mdm-sdk';\nimport {RightSidePanel} from './components/RightSidePanel/RightSidePanel';\nimport {MatchReviewTable} from './components/MatchReviewTable/MatchReviewTable';\nimport {ViewStateProvider} from './contexts/ViewStateContext';\nimport {ReloadDataProvider} from './contexts/ReloadDataContext';\nimport {MatchesOptions, PotentialMatchesSavedState} from './types/potentialMatchesTypes';\nimport {ChangeModeConfirmation} from './components/ChangeModeConfirmation';\nimport {useStyles} from './styles';\nimport {usePotentialMatchesRightSidePanelElements} from './hooks/usePotentialMatchesRightSidePanelElements';\nimport PotentialMatchesLoadIndicator from './components/PotentialMatchesLoadIndicator/PotentialMatchesLoadIndicator';\n\nconst perspectiveId = 'potentialMatches';\nconst THIRTY_SECONDS = 30000;\n\nexport type PMRightPanelTabs = Array<\n RightPanelTab & {\n filters: SearchFilter[];\n options?: MatchesOptions;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n }\n>;\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nexport const PotentialMatchesView = ({config, getSavedState, saveState}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar({autoHideDuration: THIRTY_SECONDS});\n const lastSavedState = useRef<PotentialMatchesSavedState>();\n\n const {isLoaded, savedState, updateSavedState} = useSavedStateForEntityType<PotentialMatchesSavedState>({\n getSavedState,\n saveState,\n entityTypeUri: entity.type\n });\n\n const {tabs} = usePotentialMatchesRightSidePanelElements();\n\n useEffect(() => {\n if (!isLoaded) return;\n lastSavedState.current = savedState || {};\n }, [isLoaded, savedState]); // eslint-disable-line\n\n const onUpdateSavedState = useCallback(\n (stateToSave = {}) => {\n if (!lastSavedState.current) return;\n const newSavedState = {...lastSavedState.current, ...stateToSave};\n if (!equals(newSavedState, lastSavedState.current)) {\n updateSavedState(newSavedState);\n lastSavedState.current = newSavedState;\n }\n },\n [updateSavedState]\n );\n\n return (\n <ViewStateProvider>\n <ReloadDataProvider>\n <SnackbarContext.Provider value={showSnackbarMessage}>\n <div className={styles.perspectiveView}>\n <PotentialMatchesLoadIndicator />\n {entity?.uri && (\n <>\n <div className={styles.potentialMatchesContainer}>\n <ProfileResizablePanes\n buttonsProps={pluck('buttonProps', tabs)}\n perspectiveId={perspectiveId}\n >\n <div className={styles.potentialMatchesWrapper}>\n <ScreenProfileBand entity={entity} />\n <MatchReviewTable\n config={config}\n isLoaded={isLoaded}\n savedState={savedState}\n onUpdateSavedState={onUpdateSavedState}\n />\n </div>\n <RightSidePanel tabs={tabs} config={config} />\n </ProfileResizablePanes>\n </div>\n <SnackbarRenderer />\n <ChangeModeConfirmation />\n </>\n )}\n </div>\n </SnackbarContext.Provider>\n </ReloadDataProvider>\n </ViewStateProvider>\n );\n};\n","import {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport React, {useCallback} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\n\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport {Provider} from 'react-redux';\nimport {identity} from 'ramda';\nimport {promisifyCallback, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport {PotentialMatchesView as PMView} from './PotentialMatchesView/PotentialMatchesView';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {PotentialMatchesSavedState} from './PotentialMatchesView/types/potentialMatchesTypes';\nimport {Store} from 'redux';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'potentialMatchesView',\n disableGlobal: true,\n seed: 'pm'\n});\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n store: Store<unknown>;\n onResize: (width: number, height: number) => void;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nconst PotentialMatchesView = ({config, store, onResize = identity, saveState, getSavedState}: Props) => {\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 <LocalizationProvider dateAdapter={AdapterMoment}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <PMView config={config} saveState={saveState} getSavedState={getSavedStatePromisified} />\n )}\n <ErrorPopup />\n </LocalizationProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default PotentialMatchesView;\n","import {PotentialMatchesView} from '@reltio/potential-matches';\n\nexport default PotentialMatchesView;\n"],"names":["useStyles","makeStyles","theme","button","whiteSpace","fontSize","lineHeight","letterSpacing","padding","fill","palette","primary","main","fillOpacity","iconButton","startIcon","marginLeft","marginRight","width","height","alignItems","overflowStyle","overflow","textOverflow","menuIcon","menuItem","minHeight","menuText","color","text","ActionButtonMode","ActionButton","forwardRef","ref","className","mode","label","disabled","icon","Icon","onClick","noop","onMenuClose","otherProps","styles","SmallIconButton","classnames","size","tooltipTitle","showForDisabled","Button","classes","ExpandedValueTooltip","value","handleClick","MenuItem","root","Typography","getButtonView","displayName","maxHeight","maxWidth","group","metadata","absoluteImagePath","useSelector","mdm","entityTypeGraphIcon","getEntityTypeGraphIcon","type","id","absoluteImageUrl","getAbsoluteImageUrl","AvatarWithFallback","avatarText","title","attribute","cursor","flexBasis","display","borderBottom","attributeWithValue","noSelect","name","direction","textAlign","flex","defaultGetLabel","either","prop","getLabel","onSelectAttributeClick","undefined","i18n","ArrowDropDownIcon","isEqualAttributes","eqBy","pick","checkAttributeIncludes","selectedAttributes","find","filterItem","item","filterText","toLowerCase","includes","filterItemsTree","children","some","getAttributeIndex","findIndex","getContainerWidth","getMaxItemWidth","getAttributeGroupData","groupId","groupName","level","noFilter","isItemFiltered","concat","filter","subItem","flatMap","flat","prepareGroupsForSelectAttributeList","curry","groups","map","items","attributes","length","subHeader","backgroundColor","margin","fontWeight","memo","onItemClick","focusIndex","hideCheckBox","mdmModule","VirtualGroupedList","getItemSize","i","renderItem","style","index","checked","isFocused","AttributeListItem","key","fieldName","data","notSelectable","Highlighter","highlight","labelInText","LogoIcon","renderGroupTitle","ListItem","component","needGroupIcon","AttributeGroupIcon","selector","minWidth","background","boxSizing","borderRadius","itemsGroups","onSelect","onRestoreFocus","identity","onOpenPopup","disableRestoreFocus","disableEnforceFocus","single","ungroup","selectAnchor","setSelectAnchor","useState","closePopup","useCallback","isPopupOpen","setFilterText","clearFilterText","setSelectedAttributes","clearSelectedAttributes","filteredItemsGroups","useMemo","pipe","when","always","chain","flatten","flattenGroupedItemsData","containerWidth","Math","max","handleOnClose","tap","searchInputRef","useRef","onListItemClick","selectedAttribute","filterSelectedAttributes","current","focus","handleSearchOnEnter","groupData","getOnEnterHandler","handleKeyDown","useKeyboardNavigation","open","onSelectFocusedItem","selectedItems","onClose","event","currentTarget","SelectionPopup","anchorEl","onSearch","containerHeight","searchInputOnKeyDown","anchorOrigin","horizontal","vertical","defaultGetRowCellKey","rowIndex","columnData","cellIndex","getRowCellKey","rowCellHeightsMap","setRowCellHeightsMap","rowCellHeightsMapCache","batchHeightUpdate","flushHeightUpdates","debounce","prev","next","equals","clearHeightsCache","getDynamicRowCellHeight","__","changeRowCellHeight","useWith","pagination","justifyContent","flexShrink","borderTop","boxShadow","overflowY","containerType","caption","displayedRows","selectRoot","select","actions","BasicTablePagination","count","rowsPerPageOptions","page","onChangePage","rowsPerPage","onChangeRowsPerPage","basicTableRef","labelRowsPerPage","resetScrollbarPosition","pathOr","handleChangePage","handleChangeRowsPerPage","TablePagination","selectLabel","input","backIconButtonProps","nextIconButtonProps","labelDisplayedRows","from","to","fromRow","toRow","countRows","onPageChange","nthArg","onRowsPerPageChange","getValue","hidden","visibility","CollapseRowButton","rowValue","toggleRowCollapse","getIsRowCollapsible","getIsRowCollapsed","useContext","RowCollapseContext","isCollapsibleRow","isCollapsedRow","CollapseButton","isOpen","e","stopPropagation","propTypes","PropTypes","onChangeHeight","cell","cellProps","cellRef","changeCellHeight","adjustCellHeight","clientHeight","useDidUpdateEffect","rawValue","useEffect","handleHeight","onResize","collapseButton","expandLess","transform","buttonProps","ExpandMore","iconClassName","tooltipProps","paper","content","contentText","marginBottom","actionButtons","paddingTop","discardButton","onCancel","cancelCaption","onDiscard","discardCaption","onSave","saveCaption","disabledSave","Dialog","paperScrollPaper","DialogTitle","DialogContent","DialogContentText","DialogActions","disableSpacing","autoFocus","ConnectionRelationTypeSelector","relation","inRelationTypes","outRelationTypes","onChange","applyFirstByDefault","reversedContextLabels","getRelationTypesOptions","fromEditorValue","toEditorValue","useRelationTypeSelector","relationsTypesOptions","handleChange","hasValue","relationType","options","ConnectionRelationType","RelationTypeType","flexWrap","flexDirection","secondary","root_small","embedded","full","textBox","marginTop","secondaryText","EMPTY_STATE_VARIANTS","EMPTY_STATE_ICONS","SEARCH_RESULTS","props","viewBox","xmlns","xmlnsXlink","cx","cy","fx","fy","r","gradientTransform","stopColor","stopOpacity","offset","x1","y1","x2","y2","x","y","filterUnits","stdDeviation","in","stroke","strokeWidth","fillRule","xlinkHref","mask","opacity","d","rx","ry","SELECT_ATTRIBUTES","maskType","maskUnits","clipRule","gradientUnits","NO_DATA","dx","dy","result","values","mixBlendMode","ERROR","colorInterpolationFilters","floodOpacity","in2","variant","LogoRenderer","buttonTitle","access","showButton","h5","subtitle1","image","info","secondaryLabel","link","textDecoration","thirdRow","entityId","entityIdLabel","entityIdValue","ProfileCardContent","entity","secondaryLabelClass","labelClass","handleCopyEntityIdToClipboard","navigator","clipboard","writeText","getEntityId","EntityAvatar","imageClassName","EntityUriLink","getEntityUriForLink","placement","showOnExceededHeight","EntityTypeBadge","wave","position","top","left","right","bottom","animation","avatar","ProfileCardPlaceholder","container","containerClass","resizablePanesWrapper","flexGrow","pane","DEFAULT_R_PANE_SIZE","ProfileResizablePanes","perspectiveId","buttonsProps","defaultTab","perspectiveSettings","updatePerspectiveSettings","usePerspectivesSettings","active","isSidePanelOpen","isNil","handleUpdateSettings","newSetting","toggleActive","newId","resetActive","handlePaneSizeChange","ResizablePanes","orientation","minSize","maxSize","allowResize","debounceInterval","cloneElement","SideButtonsPanel","onButtonClick","activeIndexId","readOnlyLogicOperatorContainer","readOnlyFilter","ReadOnlyLogicOperator","rowData","operator","capitalize","getFilterOptionLabel","row","rowItem","paddingRight","fullWidth","QueryBuilderRow","previousRowData","LogicOperatorComponent","AttributeSelectorComponent","FilterSelectorComponent","ReadOnlyFilter","ValuesEditorComponent","ActionsComponent","filterSelectorRef","attributeSelectorProps","rowContext","logicOperatorContainer","attributeSelectorContainer","filterSelectorContainer","textFieldInputRef","valuesEditorContainer","actionsContainer","QueryBuilderAttributeType","onOpen","disablePopoverRestoreFocus","QueryBuilderRowsGroup","rowClasses","rowsData","lastRowAttributeSelectorProps","filterSelectorRefIndex","rowProps","renderRow","previousRow","path","lastRowProps","withMuiSkin","CreatableSelect","Option","innerProps","innerRef","isSelected","selectProps","classNames","option","selected","Checkbox","onMouseMove","onMouseOver","tabIndex","isRequired","placeholder","clearIndicator","spacing","dropdownIndicator","MultiSelect","creatable","getOptions","loadingIndicator","components","componentsProp","classesProp","stylesProp","onChangeProp","onInputChange","onInputChangeProp","menuPlacement","reactSelectProps","SelectComponent","AsyncSelect","Select","inputValue","setInputValue","multiSelectClasses","omit","inputId","multiSelectComponents","mergeClasses","indicatorSeparator","base","loadingMessage","fontFamily","labelProps","TextFieldProps","InputLabelProps","htmlFor","shrink","isMulti","actionMeta","action","closeMenuOnSelect","hideSelectedOptions","loadOptions","defaultProps","cacheOptions","defaultOptions","ClearIndicator","Control","DropdownIndicator","DownChevron","CrossIcon","Group","GroupHeading","IndicatorsContainer","IndicatorSeparator","Input","LoadingIndicator","Menu","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","MultiValue","MultiValueContainer","MultiValueLabel","MultiValueRemove","Placeholder","SelectContainer","SingleValue","ValueContainer","control","valueContainer","multiValue","noOptionsMessage","singleValue","menu","groupHeading","indicatorsContainer","menuList","menuPortal","multiValueLabel","multiValueRemove","menuPortalTarget","menuShouldBlockScroll","captureMenuScroll","getOptionValue","isSearchable","inputRef","profileBandNavigation","comments","ScreenProfileBand","historySlice","objectIds","getProfileBandObjectIdsForCollaboration","collaboration","useCollaboration","entityUri","CollaborationContext","ProfileBand","COMMENTS_CONTAINER_VISIBILITY_AREA","aEntity","ProfileBandHistory","ProfileBandNavigation","CommentsContainer","uri","relatedObjectUris","createRelatedObjectUris","CollaborationObjectTypes","objectType","alpha","buttonWrapper","iconButtonClasses","contentWrapper","transition","transitions","create","duration","enteringScreen","SidePanel","useOptionStyles","textItem","primaryTextItem","secondaryTextItem","icons","iconTop","zIndex","iconBottom","RelationOption","selectOption","startObject","endObject","EntityTypeIcon","entityType","RelationTypeSelector","textFieldProps","defaultTo","DropDownSelector","ValueType","renderAttributesList","valueContainerClassName","attributeValue","expanded","LabelRenderer","RightSlot","attributeType","DataTypes","attributeValues","imageSize","imageHeight","imageWidth","imageMargin","PerspectivesSettingsContext","React","settings","inRelations","outRelations","labelsMap","getDirectionalLabel","getDirectionalLabelFromObject","propOr","byLabel","ascend","prepareRelation","dirObject","Directions","directionalLabel","typeLabel","evolve","sort","split","propEq","FIVE_MINUTES","useSnackbar","showDismiss","dismissTitle","autoHideDuration","onDismissClick","isOpenSnackbar","setIsOpenSnackbar","snackbarMessage","setSnackbarMessage","closeSnackbar","handleSnackbarClose","_","reason","showSnackbarMessage","message","SnackbarRenderer","document","body","ActivePanel","ComparisonViewMode","ReloadDataContext","createContext","reloadData","addReloadHandler","removeReloadHandler","ReloadDataProvider","contextValue","reloadDataHandlers","forEach","reloadHandler","push","indexOf","splice","createContextValue","Provider","useReloadData","dataContext","Error","RESET","SET_OPTIONS","basicTableViewState","reset","createStandardAction","setOptions","reducer","state","payload","ViewStateContext","ViewDispatchContext","SET_GLOBAL_SPINNER","SET_SELECTED_ITEMS","DESELECT_BY_ENTITIES","TOGGLE_SELECT","ACTUALIZE_SELECTED_ITEMS_COLORS","SET_LIMIT_SELECTION","SET_COMPARISON_VIEW_MODE","SET_ENTITIES_MAP","DELETE_EXTRA_MATCHES","setGlobalSpinner","setSelectedItems","deselectByEntities","toggleSelect","actualizeSelectedItemsColors","setLimitSelection","setComparisonViewMode","setEntitiesMap","deleteExtraMatches","viewStateReducer","isGlobalSpinnerActive","slice","limitSelection","object","itemIndex","selectedItem","remove","append","entityColors","colors","selectedEntitiesUris","getEntityUriFromMatchObject","entityUrisWithoutColors","shift","newMode","comparisonViewMode","COLUMNS","entitiesMap","ViewStateProvider","dispatch","useReducer","getPotentialMatchesColor","viewStateAction","useActions","useViewState","viewStateContext","useViewStateActions","viewStateActions","createAttributeItemConfig","attrNode","parents","config","createAttributeItemBasicConfig","childNode","attrType","attributeUriToSearchUri","collectAttributeItems","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","MatchRulesAttrTypes","useMatchesReducer","defaultRowsPerPage","initState","stateReducer","resultActions","viewActions","viewState","showAddRelationErrors","error","console","ErrorPopup","showApiError","getRequestErrorMessage","showDCRReviewErrors","apiError","errorCode","ApiErrorCode","useSpinnerAndReloadData","onStartRequest","onFinishRequest","MergeButton","entities","onSuccess","onError","NotMatchButton","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","this","version","SetAMatchButton","markingIsInProgress","setAMatch","setAsMatch","then","catch","finally","useSetAMatch","SetAsMatchIcon","DCRReviewButton","SnackbarContext","operationIsInProgress","startPMReview","selectors","workflowPath","getWorkflowPath","environment","getWorkflowEnvironmentUrl","tenant","getTenant","getUri","uris","getUrisFromEntities","startProcessInstanceByPairs","processType","objectURIs","useRequestDCRReview","canStartProcessInstanceSearchQuery","isEmptyValue","DcrReviewIcon","ReinstateMatchButton","reinstateIsInProgress","onReinstateMatch","dtssPath","params","customerTenant","isDataTenantEntity","reinstateDataTenantEntityMatch","reinstateMixedEntitiesMatches","useReinstateMatch","CreateRelationButton","mainEntity","currentEntity","matchRules","permission","AddRelationIcon","RightSideHeaderContext","attributeSelect","field","sortLevel","findNode","parentFieldName","node","val","BasicAttributeSelector","rowCheckbox","alignSelf","header","border","sorting","arrow","rotate","selectedCount","totalCount","sortOptions","onSorting","totalOnPage","sidePanelHeaderProps","SidePanelContentHeader","secondTitle","n","indeterminate","IconButton","order","Order","useSortOptions","additionalOptions","entityTypeUri","getEntityType","getSortingItemsGroups","col","useEntityColor","entityColor","paddingBottom","entityHeader","wrapper","pointerEvents","borderLeft","paddingLeft","entityLabel","matchRulesWrapper","selectedRow","coloredRow","matchScore","commentsContainer","rightButton","tenantIcon","dividerWrapper","divider","borderColor","relevanceBadge","match","entityToMatch","isRowSelected","isColumnViewMode","actionButtonsRenderer","openMenu","setOpenMenu","isRowSelectable","Actions","showRelevanceBadge","matchRuleSummaries","checkMatchRuleSummaryRelevance","buttonClassName","hoveredMatch","onActionsMenuOpen","onActionsMenuClose","createObjectIdForPM","matchEntityUri","allowOnlyOneComment","showAlways","MatchRulesBlock","MatchRuleVariant","Divider","RelevanceScoreBadge","DataTenantBadge","dataTenantId","dataTenant","view","overflowX","MatchItems","matches","isLoading","LinearLoadIndicator","gap","inputRoot","menuButtonRoot","searchTenant","onChangeSearchTenant","currentSearchText","setCurrentSearchText","handleSearch","trim","handleChangeSearchText","newSearchText","isEmpty","activeElement","TenantsDropDownSelector","selectedTenant","onChangeTenant","SearchInput","autofocus","onKeyPress","MenuItemRenderer","ActionsPanel","numberOfButtons","actionButtonSize","buttonActions","menuActions","splitAt","buttonMode","buttonSize","actionButton","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","MoreVertIcon","moreOptions","menuId","menuItems","onMenuOpen","mainArea","FindMatchesView","changeRowsPerPage","changePage","searchText","setSearchText","setSearchTenant","handleChangeSearchTenant","newSearchTenant","requestFilters","total","findEntities","loading","enabled","searchTenantId","activityFilter","globalFilter","setLoading","setTotal","setEntities","safePromise","useSafePromise","DEFAULT_SELECTION","filterQuery","buildFilterQueryString","isDtss","dtssProps","entityRequestOptions","entityRequest","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","totalRequestOption","totalRequest","getTotalFromDataTenant","getTotals","Promise","all","results","totalResponse","useFindEntities","resetPage","resetSelected","selectAll","canMerge","canMark","getActionPermissionForMatch","isDTEntity","areBothEntitiesDT","show","pathEq","dialogPaper","dialogTitle","titleText","fontize","attributeList","useDispatch","containerRef","isNotDuplicatedInRelation","isNotDuplicatedOutRelation","inOutRelationsDeduplicator","setObjectTypes","assocPath","objectTypeURI","matchActionConfig","rulesConfig","getRulesConfig","relationTypeUris","createRelation","canCreateRelationBetweenEntities","getRelationType","getRelationTypesFromConfig","relationUri","relationAttrTypes","getRelationAttributesList","attributeListEntity","getActivenessAttributes","viewId","onRelationTypeChange","profile","onAddAttributes","param","onChangeAttribute","onDeleteAttribute","handleClose","resetErrors","validate","errors","validateConnectionRelation","boundariesElement","popupBoundariesValue","element","priority","PopupBoundariesContext","AttributesList","attrTypes","showEmptyEditors","ModeTypes","parentUri","startDate","endDate","startEntityUri","endEntityUri","async","markAsNotMatch","useAddRelationDialog","showDialog","setShowDialog","relationDialogContent","setRelationDialogContent","openAddRelationDialog","newConnection","generateNewRelationUri","isNew","createNewConnection","closeAddRelationDialog","AddRelationDialogRenderer","DEFAULT_OPTIONS","showTransitiveMatches","MatchesView","hasWorkflow","matchRulesFilters","regularFilters","partition","matchesFilter","loadMatches","rules","onStartLoading","onFinishLoading","useMatchesLoader","markMatchedValues","useMatches","getPotentialMatchesObjectIdsForCollaboration","keys","canAddRelation","hasDTEntity","every","EntitiesMapContext","NotMatchView","loadNotMatches","setMatches","dataTenants","dtssParams","dtssRequest","getNotMatchesFromDataTenants","getNotMatchWithDtss","withDtssPotentialItems","getNotMatch","getNotMatchWithPaging","usePagingSimulator","record","NOT_MATCH","loadNotMatchesIfNeeded","force","addGlobalFilterToQuery","activeness","response","originalResponse","getEntitiesMapForTransitiveMatches","useNotMatches","Content","activeView","PotentialMatches","FindMatches","NotAMatch","render","RightSidePanel","tabs","headerProps","MODES","ViewColumnRoundedIcon","TABLE","TableRowsOutlinedIcon","isTableOnly","ModeSwitcher","modes","baseMode","maxProfiles","modeId","clearAllButton","mergeButton","splitter","actionSplitter","getEntityObjects","TableHeader","selectedColumns","onChangeColumns","showNonOv","onChangeShowNonOv","getActionPermissionForMatches","hideMerge","hasSelectedItems","handleToggleShowOvValue","not","settingItems","BasicViewHeader","Spacer","SettingsMenu","ColumnsSettings","ExpandedContext","expandedMap","onExpandType","Component","WithExpanded","componentProps","matchedAttributeBackground","complexAttributesHeadRenderer","complexAttributesHeadLabel","arrowButton","matchedAttribute","badge","highlightedValuesUris","HighlightedValuesContext","areOneHierarchyUris","Tooltip","ExpandableAttributeValuesBlock","withExpanded","ReadOnlyAttributeValuesBlock","AttributesRenderer","matchedValuesUris","highlightedValuesContextValue","highlightedClassName","MatchedValuesCounter","ColumnDataContext","menuButtonWrapper","headCell","HeadCellRenderer","hideable","setAnchor","setHoveredId","hoveredId","ComplexAttributesHeadRenderer","onExpandClick","ArrowExpandButton","HoveredEntityContext","hoveredEntity","resetHoveredEntity","isEntityFindMatch","isEntityNotMatch","isEntityPotentialMatch","hovered","colored","removeButton","matchControlsContainer","isPotentialMatchesTask","task","WorkflowTasksAvailabilityContext","assigneeContainer","getCommentsInfoFromTasks","WorkflowCard","workflowTasks","matchUri","requestIsInProgress","setRequestIsInProgress","tasks","setTasks","defaultActionSuccessHandler","useWorkflowDefaultActionSuccessHandler","loadTasks","getTasksForEntity","hasMatchEntityUri","propSatisfies","isTaskBelongsToMatch","allPass","warn","updateTaskState","taskId","mergeLeft","onActionSuccess","useWorkflowTasks","setWorkflowTaskAvailability","workflowActions","actionRequestIsInProgress","useWorkflowActions","possibleActions","assignee","TaskActions","isInProgress","WorkflowTasksContext","PotentialMatchReviewCard","date","dueDate","processDefinitionDisplayName","createdBy","step","getPropsFromTasks","AssigneeSelector","isTaskOpen","WorkflowComments","preferredAction","DEFAULT_ROWS","draggable","initialWidth","autoResize","crosswalk","crosswalkIcon","labelContainer","spacer","ColoredSourceIcon","showTooltip","getSourceSystemLabel","crosswalks","checkIsDataTenantEntity","inline","additionalPropsForDefaultRows","cellRenderer","isSelectedEntity","onRemove","rest","isHovered","controlProps","CloseIcon","ProfileCard","MatchControls","headCellRenderer","workflowCard","sources","SourcesRenderer","reduce","nestedAttributeValue","subAttributeType","CrosswalksAttrTypes","getFakeAttributeValueForCrosswalk","score","relevanceScore","RelevanceScoreRenderer","defaultRows","getAttrTypeNameByUri","last","getMatchedValuesUris","matchedValues","cond","getColumnDataForRowData","onRemoveItem","isMainEntity","isAttributeSearchUri","attrSource","getAttributeSource","isOv","getAttributeValues","ColumnHandlerContext","getFirstLevelParentAttribute","replaceSubAttributesWithParent","uniq","Action","TEXT","INSERT_BELOW","INSERT_ABOVE","HIDE","Popover","List","handler","ListItemText","primaryTypographyProps","renderListItem","getClickHandler","deepFilter","nodes","groupColumnsData","groupedItems","headColumns","elemId","getAdditionalRows","setAction","isOpenConfigPopup","setIsOpenConfigPopup","closeAddRowPopup","newAttributes","ColumnsSettingsPopup","onColumnClick","newIndex","borderStyle","comparisonTableWrapper","collapsedRow","comparisonTable","borderSpacing","borderRight","verticalAlign","wordBreak","wordWrap","emptyState","ComparisonTable","setSelectedColumns","selectedRows","setSelectedRows","allRowsData","localSelectedRows","setLocalSelectedRows","localSelectedColumns","setLocalSelectedColumns","setHoveredEntity","anchor","selectedRowsWithoutSubAttributes","searchUri","defaultRow","attrTypeUri","searchUriToAttrUri","findAttributeTypeByUri","collectionName","isComplexAttribute","getTableRowsData","showNonOnly","isDraggable","getTableColumnsData","setExpandedMap","expandedContextValue","headCellData","onClosePopup","selectedAttributeUris","hoveredEntityContextValue","isThereAnyTask","workflowTasksAvailabilityMap","setWorkflowTasksAvailabilityMap","useWorkflowTasksAvailability","workflowCardRowClassname","displayedRowsData","rowClassName","VerticalHeadingsTable","theadRowsNumber","onMoveRow","dragId","hoverId","newArr","groupBy","getFirstLevelSearchUri","toPairs","dragIndex","hoverIndex","dragRow","insert","nth","onDropRow","onMoveColumn","dragColumn","onDropColumn","setHoveredColumn","columnValue","resetHoveredColumn","EmptyState","table","ComparisonView","defaultWrapperStyles","getColoredRowCellStyle","hoveredColor","lightPrimaryBackground","lighten","lightPrimaryBackgroundHovered","highlightBackground","entityBackground","rowCloseIcon","backgroundImage","firstHeadCell","headCellWithEntity","rowCell","rowCellFirstColumn","firstEntityCell","entityRowCell","entityRowCellSelected","rowCellHighlighted","rowCellSelected","defaultWrapper","hoveredDefaultWrapper","entityWrapper","profileWrapper","blobWrapper","imageWrapper","referenceWrapper","entityAvatar","dragIndicator","dragIndicatorIcon","ovFalse","inactive","expandButton","withFilterAtBottom","DefaultHeadCellRenderer","simpleValue","ov","DataTypeValue","withTableContext","onToggleSelect","isRowRemovable","hoverRowIndex","dragRef","containerId","IdContext","isRowHovered","isFirstRow","wrapperStyle","shouldRenderCommentsContainer","DragIndicator","isFirstColumn","headIndex","blobValue","onScroll","imgValue","src","getImageAttributeOvThumbnailUrl","getReferencedEntityFromAttrValue","objectURI","EntityRowCollapseContext","chipContainer","chipLabel","ChipWithTooltip","withTooltip","Chip","needShowChip","basicTableRowCollapseContext","BasicTableRowCollapseContext","collapseContext","maxRowValuesCount","collapsed","setCollapsed","toggleCollapsed","displayedCrosswalks","isShowDataTenant","hasCollapsedValue","getAttrPathFromColumnId","getBasicTableRowsData","allMatchRules","getAttributesForMatchRules","filteredColumnsData","acc","assoc","attrPath","ifElse","getAttributeValuesByPathWithOvFlag","getOvAttributeValuesByPathWithOvFlag","getRowValueForColumn","getNestedPathByColumnId","getCellValueRenderer","EntityProfileRenderer","MatchRulesRenderer","dataType","BlobRender","ImageRenderer","ReferenceRenderer","DefaultCellValueRenderer","getCellValueRendererByDataType","isAttributeCell","hiddenValues","Array","isArray","wrapInArrayIfNeeded","getAttributeValue","rich","isCellHighlighted","CellValueRenderer","columnIndex","cellWrapperClassName","someRowIsDragging","shouldRenderCell","tableContainer","rowActionButtonsWrapper","rowActionButtons","hoveredRowRightContentContainer","dragColumnHead","borderLeftColor","borderRightColor","dragColumnBody","sourcesCell","columnGap","rowGap","CommonRowCellRenderer","hoveredRowRightContent","actionsContent","tableRef","RowCellAutoSizer","getIdFromRowValue","onReorderingColumn","onFilter","onSort","onResetSelect","onSelectAll","isComparisonViewShown","orderedMatches","setOrderedMatches","onDndRowReorder","oldPosition","newPosition","move","setHoverRowIndex","tableRowsData","sortable","tableColumnsData","resizable","nestedPath","ProfileHeadCellRenderer","rowCellValueRenderer","getBasicTableColumnsData","entityRowData","onDndColumnReorder","what","where","oldPositionId","newPositionId","tableContext","isAllSelected","useDynamicRowCellHeight","openActionsMenu","setOpenActionsMenu","openCollaborationPopup","setOpenCollaborationPopup","onRowHover","prevHoverRowIndex","isChecked","onChangePopupVisibility","renderRowCell","getRowCellHeight","defaultGetRowCellHeight","tableClasses","getDynamicEntityCellHeight","changeEntityCellHeight","clearEntityHeightsCache","renderEntityCell","getEntityCellHeight","getRowHeight","getHeightForSubRow","entityTableRowsData","collapseContextValue","entityRowCollapseContext","useBasicTableCellRenderer","entityRowHeight","enhancedColumnsData","withEntityCell","EntityCellRenderer","withEntityCellValue","useLayoutEffect","BasicTable","fixFirstColumn","context","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","hoverStateEnabled","dndRowReorderingEnabled","dndColumnReorderingEnabled","dndColumnReorderingHandler","dndRowReorderingHandler","hoveredContentPosition","comparisonView","MatchReviewTable","isLoaded","savedState","onUpdateSavedState","initialRequestParam","useFirstPotentialMatches","allColumnsData","groupedColumnsData","defaultColumns","defaultColumnsData","additionalColumnsData","attrColumnsData","getEntityTypeMatchAttributes","matchAttrColumns","otherColumns","groupColumnsDataByMatchAttributes","useMatchesColumnsData","visibleColumns","setVisibleColumns","setShowNonOv","visibleColumnsData","comparisonViewProps","matchesTableProps","visibleAttributes","getFixedAttributesIds","getUnique","fixedAttributesIds","addFixedAttributes","has","DragAndDrop","flexBox","ChangeModeConfirmation","TableIcon","ConfirmationDialog","perspectiveView","default","potentialMatchesWrapper","potentialMatchesContainer","ValuesEditor","changeFilter","changeValue","newValues","InputProps","commonProps","wrapInArray","isMatchRuleAttrType","MatchRulesSelector","isSourceSystemAttrType","SourceSystemsSelector","optionLabel","potentialMatchesComponents","FilterSelector","FilterOptions","MatchesAttributesFiltersButton","attributeTypes","setShowTransitiveMatches","AttributesFiltersButton","dataReltioId","onTogglePopup","isFiltersApplied","FormControlLabel","light","sourceSystemsComponents","usePotentialMatchesRightSidePanelElements","matchesFilters","setMatchesFilters","matchesOptions","setMatchesOptions","findMatchesFilters","setFindMatchesFilters","notMatchFilters","setNotMatchFilters","matchesSorting","setMatchesSorting","findMatchesSorting","setFindMatchesSorting","notMatchSorting","setNotMatchSorting","setActive","analyticsAttributes","isReadableAttribute","getAttributeTypes","matchRulesAttributes","check","hasMatchRulesWithoutML","hasMlMatchRule","potentialMatchesAttributeTypes","PotentialMatchesAttrTypes","findMatchesAttributeTypes","EntityAttrTypes","onChangeMatchesFilters","PotentialMatchesIcon","mainTitle","rightContent","FindMatchesIcon","NotAMatchIcon","PotentialMatchesView","getSavedState","saveState","lastSavedState","updateSavedState","useSavedStateForEntityType","stateToSave","newSavedState","S","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","seed","store","getSavedStatePromisified","promisifyCallback","ViewIdContext","StylesProvider","LocalizationProvider","dateAdapter","AdapterMoment","floor"],"sourceRoot":""}