@reltio/remotes 1.4.1384 → 1.4.1385

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/9211.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"9211.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeSelector/AttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/BasicView/styles.js","webpack://@reltio/remotes/../components/src/components/BasicView/BasicView.tsx","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/DateIntervalSelector.tsx","webpack://@reltio/remotes/../components/src/components/ErrorBoundary/ErrorBoundary.tsx","webpack://@reltio/remotes/../components/src/components/UserSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/UserSelector/UserSelector.tsx","webpack://@reltio/remotes/../components/src/components/activityLog/types/ActivityTypes.ts","webpack://@reltio/remotes/../components/src/components/activityLog/utils/activities.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/CustomDateRangeEditor.tsx","webpack://@reltio/remotes/../components/src/types/index.ts","webpack://@reltio/remotes/../hierarchy-tree/src/icons/SelectNode.svg","webpack://@reltio/remotes/../hierarchy-tree/src/icons/ShowGraph.svg","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyViewHeader/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyViewHeader/HierarchyViewHeader.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyPanel/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/theme/utils.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/theme/node-content-renderer.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/treeThemeContext.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/theme/tree-node-renderer.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/theme/index.js","webpack://@reltio/remotes/../hierarchy-tree/src/constants/prop-types.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/measureHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/nodeHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/Tree.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/commonStyles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/LoadingNode/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/LoadingNode/LoadingNode.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/multiParentOverlap.svg","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/NodeTitle/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/NodeTitle/NodeTitle.tsx","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlock/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlock/parentIcon.svg","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlock/MultiParentBlock.tsx","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/RelationDetails/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/helpers/treeDataProvider.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/treeHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/nodeHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/RelationDetails/RelationDetails.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/ActionsBlock/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/ActionsBlock/ActionsBlock.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/configHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/helpers/nodeMappingHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/nodeContext.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/useEntityDetails.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/RegularNode.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/NodeRelationTypeSelector/NodeRelationTypeSelector.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/EditorNode/helpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/EditorNode/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/EditorNode/EditorNode.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/NodesFactory.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/Node.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyPanel/HierarchyPanel.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/useTreeLoader.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/GraphTypeSelector/GraphTypeSelector.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/ActivenessDateControl/ActivenessDateControl.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/FilterSortButton/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/FilterSortButton/FilterSortButton.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Breadcrumbs/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Breadcrumbs/Breadcrumbs.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/saveStateHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/useNewEntityTree.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyView.tsx","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/index.js","webpack://@reltio/remotes/../hierarchy-tree/src/index.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileAttributesView/ProfileAttributesView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/contexts/SingleAttributeContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/SingleAttributeHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/hooks/helpers/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/SingleAttributeEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/SingleAttributeReadableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/SingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useSingleAttributeLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/RelationsViewStateContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/ImportDTContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/hooks/useImportFromDTLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/MultipleImportIcon.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/ImportFromDT.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/RelationsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/RelationTooltip.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationInfo.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/SuggestedButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/EditableRelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/permissions.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/relation.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/RelationArrowButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/SecondLevelWrapper.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSecondLevelConnections.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/RelationsEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/RelationAttributes.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/ShowDetailsButton/ShowDetailsButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/RelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/ratings.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/Ratings.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/RatingsButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/RelationComplexItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationsList.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSuggestedRelations.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/RelationsContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/RelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/filters.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationsState.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/contexts/TableAttributeContext.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/reducer.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/HeadCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/helpers/tableAttributeHelpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/AttributeTableHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/RowCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/EditButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/AttributeTable.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/AttributeEditing.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/hooks/useEditableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/TableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useLoadPaths.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/ConfigContext.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/Node.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/helpers.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/node-content-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/index.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/tree-node-data-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/icons/ShowGraph.svg","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/Sandbox/styles.ts","webpack://@reltio/remotes/../profile/src/components/Sandbox/CustomView.tsx","webpack://@reltio/remotes/../profile/src/components/views/HOCs/styles.ts","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withDragHandle.tsx","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withErrorBoundary.tsx","webpack://@reltio/remotes/../profile/src/components/views/styles.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/useMarkers.js","webpack://@reltio/remotes/../profile/src/components/EntityMapView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/ImageLineCaption.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeViewEditableContent/ImageAttributeViewEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ActionButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/MatchCard.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ProfilePotentialMatchesView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewsFactory.tsx","webpack://@reltio/remotes/../profile/src/components/views/StubView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/ProfileSingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/hooks/useSingleAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/ProfileTableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/useTableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/ProfileRelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsView.tsx","webpack://@reltio/remotes/../profile/src/components/EntityMapView/EntityMapView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewComponent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/ProfileLayoutItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayout/ProfileLayout.tsx","webpack://@reltio/remotes/../profile/src/components/Notifications/styles.ts","webpack://@reltio/remotes/../profile/src/components/Notifications/Notification.tsx","webpack://@reltio/remotes/../profile/src/components/Notifications/Notifications.tsx","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/suggest.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/copy.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/hooks/useCloneAction.ts","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/PerspectiveProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowButton/WorkflowButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/CollaborationList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/WorkflowList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/icons/CollaborationIcon.svg","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationButton/CollaborationButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowPanelEmptyState/WorkflowPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationPanelEmptyState/CollaborationPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/icons/ConnectorsIcon.svg","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/DBConnectorsList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/DBConnectorsList/DBConnectorsList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/components/ErrorsPanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/icons/hyperlink.svg","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/components/Error.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/useCachedErrors.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/ProfileErrorsPanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/ProfilePerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useProfileValidation.ts","webpack://@reltio/remotes/../profile/src/perspectives/ProfilePerspective.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/TagListHeader.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/TagProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTagsProvider.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/TagPerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTag.ts","webpack://@reltio/remotes/../profile/src/perspectives/TagPerspective.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/AddRelationButton/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/AddRelationButton/AddRelationButton.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/RowCellRenderer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/EntityProfileRenderer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/HeadCellRenderer.js","webpack://@reltio/remotes/../relations-table/src/core/relations.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/helpers/dataHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/EditButtons.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/RelationsTable.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/helpers/buttonsHelper.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/MoreButton/styles.ts","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/MoreButton/MoreButton.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/RelationsTableHeader.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/stateReducer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/helpers/tableHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/helpers/relationsHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableView.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/index.js","webpack://@reltio/remotes/../relations-table/src/index.tsx"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n },\n noOptionsMessage: {\n fontSize: '14px'\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe, defaultTo} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {AttributeOption} from '../../types';\nimport mdmModule from '@reltio/mdm-module';\nimport {MultiValueProps, OptionProps} from 'react-select';\nimport {AttributeType, getAttributeTypeSubAttributes, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport MultiValue from '../ReactSelect/commonComponents/MultiValue';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n entityType: TEntityType;\n selectedAttributes: AttributeOption[];\n className?: string;\n onChange?: (attributes: AttributeOption[]) => void;\n title?: string;\n disableUnderline?: boolean;\n menuPlacement?: string;\n};\n\nconst AttributeSelector = ({\n entityType,\n selectedAttributes,\n className,\n onChange,\n title,\n disableUnderline,\n menuPlacement = 'bottom'\n}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const styles = useStyles();\n\n const prepareItems = useCallback(\n (data: AttributeType[], level = 0, prevLabel = ''): AttributeOption[] => {\n return data.reduce((acc, item) => {\n if (item.hidden) return acc;\n const chipLabel = `${prevLabel && prevLabel + ' / '}${item.label}`;\n acc.push({\n label: item.label,\n value: item.uri,\n attrType: item,\n chipLabel,\n level\n });\n const subAttributes = getAttributeTypeSubAttributes(metadata, item);\n return acc.concat(subAttributes ? prepareItems(subAttributes, level + 1, chipLabel) : []);\n }, []);\n },\n [metadata]\n );\n\n const options = useMemo(() => prepareItems(entityType?.attributes || []), [entityType, prepareItems]);\n\n const CustomOption = ({isFocused, isSelected, data, label, innerProps}: OptionProps<AttributeOption, true>) => (\n <div {...innerProps}>\n <AttributeListItem\n checked={isSelected}\n level={data.level}\n data={data}\n label={label}\n labelInText={label}\n isFocused={isFocused}\n />\n </div>\n );\n\n const CustomMultiValue = ({data, ...props}: MultiValueProps<AttributeOption>) => (\n <MultiValue {...props}>{data.chipLabel}</MultiValue>\n );\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {title || i18n.text('Attribute')}\n </Typography>\n <MultiSelect\n value={selectedAttributes}\n options={options}\n TextFieldProps={{\n InputProps: {disableUnderline},\n classes: {root: styles.dropDownInput}\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton,\n MultiValue: CustomMultiValue,\n Option: CustomOption\n }}\n onChange={pipe(defaultTo([]), onChange)}\n styles={customStyles}\n classes={styles}\n menuPlacement={menuPlacement}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default AttributeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n 'basic-view__paper': {\n display: 'flex',\n flexDirection: 'column',\n ...theme.basicView\n }\n}));\n","import Paper, {PaperProps} from '@material-ui/core/Paper';\nimport PropTypes from 'prop-types';\nimport React, {forwardRef, Ref} from 'react';\nimport {useStyles} from './styles';\n\nconst BasicView = forwardRef<Ref<typeof Paper>, PaperProps>(({children, className, ...otherProps}, ref) => {\n const styles = useStyles();\n return (\n <Paper ref={ref} className={className} classes={{root: styles['basic-view__paper']}} {...otherProps}>\n {children}\n </Paper>\n );\n});\n\nBasicView.displayName = 'BasicView';\n\nBasicView.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n};\n\nexport default BasicView;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flex: 1\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px',\n fontSize: '14px'\n },\n inputNumber: {\n minWidth: '60px',\n marginRight: 10,\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n inputUnit: {\n width: '100%'\n }\n});\n","import React from 'react';\nimport {pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport capitalize from '@material-ui/core/utils/capitalize';\nimport {TextField as TextField} from '@material-ui/core';\nimport SimpleDropDownSelector from '../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {getValue} from '../../core/utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n interval: [number, string];\n onChange: ([number, string]) => void;\n onFocus?: () => void;\n};\n\nconst periods = [\n i18n.text('minutes'),\n i18n.text('hours'),\n i18n.text('days'),\n i18n.text('weeks'),\n i18n.text('months'),\n i18n.text('years')\n];\n\nconst DateIntervalSelector = ({interval: [value, unit], onChange, onFocus}: Props) => {\n const styles = useStyles();\n const getIntervalFromValue = (newValue: number) => [newValue, unit];\n const getIntervalFromUnit = ({value: newUnit}: {value: string}) => [value, newUnit];\n const onNumberChange = pipe(getValue, parseInt, getIntervalFromValue, onChange);\n const onUnitChange = pipe(getIntervalFromUnit, onChange);\n return (\n <div className={styles.root}>\n <TextField\n type=\"number\"\n value={value || ''}\n onChange={onNumberChange}\n inputProps={{min: 1, onFocus: onFocus}}\n InputProps={{classes: {root: styles.input}}}\n className={styles.inputNumber}\n />\n <SimpleDropDownSelector\n label={''}\n placeholder={capitalize(unit)}\n className={styles.inputUnit}\n value={{value: unit, label: capitalize(unit)}}\n options={periods.map((value) => ({\n value,\n label: capitalize(value)\n }))}\n onChange={onUnitChange}\n TextFieldProps={{\n inputProps: {onFocus: onFocus},\n InputProps: {classes: {root: styles.input}}\n }}\n />\n </div>\n );\n};\n\nexport default DateIntervalSelector;\n","import React from 'react';\n\ntype State = {\n error: Error | null;\n};\n\ntype Props = {\n error: React.ReactNode;\n};\n\nexport default class ErrorBoundary extends React.Component<Props, State> {\n constructor(props) {\n super(props);\n this.state = {\n error: null\n };\n }\n\n componentDidCatch(error) {\n this.setState({\n error: error\n });\n console.error(error);\n }\n\n render() {\n const {children, error} = this.props;\n if (this.state.error) {\n return error;\n }\n return children;\n }\n}\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n loadingMessage: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n }\n});\n","import React, {useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {defaultTo, pipe, pluck, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getAllUsersForTenant, User, utils} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n selectedUsers: string[];\n onChange: (activities: string[]) => void;\n className?: string;\n disableUnderline?: boolean;\n};\n\nconst UserSelector = ({selectedUsers, onChange, className, disableUnderline}: Props) => {\n const styles = useStyles();\n\n const valueToOption = (value: string) => ({value, label: value});\n const prepareValues = (values: string[]) => values.map(valueToOption);\n const filterUsers = (inputValue) => (users) =>\n inputValue ? users.filter((username) => utils.strings.search(username, inputValue)) : users;\n\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n\n const cachedRequest = useRef<Promise<{array: User[]}>>();\n const getOptions = (inputValue) => {\n if (!cachedRequest.current) {\n cachedRequest.current = getAllUsersForTenant({tenant, servicesPath});\n }\n return cachedRequest.current.then(\n pipe(prop('array'), pluck('username'), filterUsers(inputValue), prepareValues)\n );\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('User')}\n </Typography>\n <MultiSelect\n value={prepareValues(selectedUsers)}\n onChange={pipe(defaultTo([]), pluck('value'), onChange)}\n defaultOptions={true}\n getOptions={getOptions}\n TextFieldProps={{\n InputProps: {disableUnderline},\n className: styles.dropDownInput\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default UserSelector;\n","export enum ActivityTypes {\n MODEL_UPDATED = 'MODEL_UPDATED',\n ENTITY_REMOVED = 'ENTITY_REMOVED',\n ENTITY_CREATED = 'ENTITY_CREATED',\n ENTITY_CHANGED = 'ENTITY_CHANGED',\n ENTITIES_MERGED = 'ENTITIES_MERGED',\n ENTITIES_SPLITTED = 'ENTITIES_SPLITTED',\n ENTITY_LOST_MERGE = 'ENTITY_LOST_MERGE',\n RELATIONSHIP_CREATED = 'RELATIONSHIP_CREATED',\n RELATIONSHIP_REMOVED = 'RELATIONSHIP_REMOVED',\n RELATIONSHIP_CHANGED = 'RELATIONSHIP_CHANGED',\n POTENTIAL_MATCHES_FOUND = 'POTENTIAL_MATCHES_FOUND',\n NOT_MATCHES_SET = 'NOT_MATCHES_SET',\n NOT_MATCHES_RESET = 'NOT_MATCHES_RESET',\n PERIODIC_TASK_SCHEDULED = 'PERIODIC_TASK_SCHEDULED',\n ENTITIES_MERGED_MANUALLY = 'ENTITIES_MERGED_MANUALLY',\n POTENTIAL_MATCHES_REMOVED = 'POTENTIAL_MATCHES_REMOVED',\n ENTITIES_MERGED_ON_THE_FLY = 'ENTITIES_MERGED_ON_THE_FLY',\n USER_LOGIN = 'USER_LOGIN',\n USER_LOGOUT = 'USER_LOGOUT',\n USER_SEARCH = 'USER_SEARCH',\n USER_PROFILE_VIEW = 'USER_PROFILE_VIEW',\n COMMENT_ADDED = 'COMMENT_ADDED',\n COMMENT_UPDATED = 'COMMENT_UPDATED',\n COMMENT_DELETED = 'COMMENT_DELETED',\n ANALYTICS_ATTRIBUTES_CHANGED = 'ANALYTICS_ATTRIBUTES_CHANGED',\n SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE = 'SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE',\n GROUP_CREATED = 'GROUP_CREATED',\n GROUP_REMOVED = 'GROUP_REMOVED',\n GROUP_CHANGED = 'GROUP_CHANGED'\n}\n","import {\n formatDataTypeValue,\n findAttributeTypeByUri,\n Metadata,\n AttributePresentations,\n makeAttrTypeUri,\n getAttrDataTypeDefinition\n} from '@reltio/mdm-sdk';\nimport {\n filter,\n groupBy,\n ifElse,\n map,\n path,\n pipe,\n propOr,\n values,\n isNil,\n includes,\n reject\n} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActivityData, ActivityItem, ActivityTypes, DeltaValue} from '../types';\n\nconst getItemDataType = path(['data', 'type']);\n\nexport const getActivityType = (activity: ActivityData) => {\n const {items, label} = activity;\n const [firstItem] = items || [];\n return getItemDataType(firstItem) || label;\n};\n\nexport const isValidActivityType = (type: string): boolean => pipe(values, includes(type))(ActivityTypes);\n\nexport const removeIgnoredItems = (activity: ActivityData): ActivityData => {\n const {items, label} = activity;\n const isImplementedItem = (item: ActivityItem): boolean => isValidActivityType(getItemDataType(item) || label);\n const filteredItems = filter(isImplementedItem)(items);\n if (items.length !== filteredItems.length) {\n console.error('Activities not implemented:', reject(isImplementedItem)(items));\n }\n return {\n ...activity,\n items: filteredItems,\n itemsTotal: filteredItems.length\n };\n};\n\nexport const splitActivityByType = (activity: ActivityData) => {\n return pipe(\n propOr([], 'items'),\n groupBy(getItemDataType),\n values,\n ifElse(\n ({length}) => length > 1,\n map((items) => ({\n ...activity,\n items,\n itemsTotal: items.length\n })),\n () => [activity]\n )\n )(activity);\n};\n\nexport const stringifyDeltaValue = (\n deltaValue: DeltaValue['value'],\n attributeTypeUri: string,\n metadata: Metadata,\n attributePresentations: AttributePresentations\n) => {\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n const dataTypeDefinition = getAttrDataTypeDefinition(attributeType);\n const formatValue = formatDataTypeValue({attributePresentations, dataTypeDefinition});\n\n if (isNil(deltaValue)) {\n return '';\n }\n\n if (typeof deltaValue === 'string') {\n return attributeType ? formatValue(deltaValue) : deltaValue;\n }\n\n return Object.entries(deltaValue)\n .flatMap(([attributeTypeName, deltaValues]) =>\n deltaValues.map((deltaValue) =>\n stringifyDeltaValue(\n deltaValue.value,\n makeAttrTypeUri(attributeTypeUri, attributeTypeName),\n metadata,\n attributePresentations\n )\n )\n )\n .join(', ');\n};\n\nexport const getActivityLabel = (type: ActivityTypes) => {\n const labels = {\n [ActivityTypes.COMMENT_ADDED]: i18n.text('Comment added'),\n [ActivityTypes.COMMENT_DELETED]: i18n.text('Comment deleted'),\n [ActivityTypes.COMMENT_UPDATED]: i18n.text('Comment updated'),\n [ActivityTypes.ENTITIES_MERGED]: i18n.text('Profile merged'),\n [ActivityTypes.ENTITIES_MERGED_MANUALLY]: i18n.text('Profile merged manually'),\n [ActivityTypes.ENTITIES_MERGED_ON_THE_FLY]: i18n.text('Profile merged on the fly'),\n [ActivityTypes.ENTITIES_SPLITTED]: i18n.text('Profile un-merged'),\n [ActivityTypes.ENTITY_CHANGED]: i18n.text('Profile updated'),\n [ActivityTypes.ENTITY_CREATED]: i18n.text('Profile created'),\n [ActivityTypes.ENTITY_LOST_MERGE]: i18n.text('Profile lost merge'),\n [ActivityTypes.ENTITY_REMOVED]: i18n.text('Profile removed'),\n [ActivityTypes.GROUP_CHANGED]: i18n.text('Group updated'),\n [ActivityTypes.GROUP_CREATED]: i18n.text('Group created'),\n [ActivityTypes.GROUP_REMOVED]: i18n.text('Group removed'),\n [ActivityTypes.MODEL_UPDATED]: i18n.text('Model was updated'),\n [ActivityTypes.NOT_MATCHES_RESET]: i18n.text('Not matches reset'),\n [ActivityTypes.NOT_MATCHES_SET]: i18n.text('Not matches set'),\n [ActivityTypes.PERIODIC_TASK_SCHEDULED]: i18n.text('Periodic task was scheduled'),\n [ActivityTypes.POTENTIAL_MATCHES_FOUND]: i18n.text('Potential matches found'),\n [ActivityTypes.POTENTIAL_MATCHES_REMOVED]: i18n.text('Potential matches removed'),\n [ActivityTypes.RELATIONSHIP_CHANGED]: i18n.text('Relationship updated'),\n [ActivityTypes.RELATIONSHIP_CREATED]: i18n.text('Relationship created'),\n [ActivityTypes.RELATIONSHIP_REMOVED]: i18n.text('Relationship removed'),\n [ActivityTypes.USER_LOGIN]: i18n.text('Logged in'),\n [ActivityTypes.USER_LOGOUT]: i18n.text('Logged out'),\n [ActivityTypes.USER_PROFILE_VIEW]: i18n.text('Profile viewed'),\n [ActivityTypes.USER_SEARCH]: i18n.text('Searched'),\n [ActivityTypes.ANALYTICS_ATTRIBUTES_CHANGED]: i18n.text('Analytics attribute changed'),\n [ActivityTypes.SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE]: i18n.text('SFDC connector synchronization issue')\n };\n return labels[type] || '';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n dropdownIndicator: {\n transition: 'transform .15s ease'\n },\n inputRoot: {\n fontSize: '14px',\n height: 46\n },\n input: {\n padding: '0 12px 0'\n },\n dateOptionLabel: {\n minWidth: '100px'\n },\n paper: {\n minWidth: '112px'\n }\n});\n","import React, {useCallback, useRef, useState} from 'react';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {DataTypes, formatDataTypeValue} from '@reltio/mdm-sdk';\n\nimport {TextField as TextField} from '@material-ui/core';\nimport {Menu as Menu} from '@material-ui/core';\nimport DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport DateRangePicker from '../../DateRangePicker/DateRangePicker';\nimport {useStyles} from './styles';\n\ntype DateValues = [Date, Date];\ntype Props = {\n values: DateValues;\n onChange: (values: DateValues) => void;\n onFocus?: () => void;\n};\n\nconst localeFormat = moment.localeData().longDateFormat('L');\n\nconst formatValue = (value: Date, placeholder: string) => {\n return isNil(value)\n ? `${placeholder}`\n : `${formatDataTypeValue({dataTypeDefinition: {type: DataTypes.TYPE_ACTIVENESS_DATE}}, value)}`;\n};\n\nconst CustomDateRangeEditor = ({values, onChange, onFocus}: Props) => {\n const placeholder = localeFormat;\n const inputRef = useRef(null);\n const [open, setOpen] = useState(false);\n const styles = useStyles();\n\n const onApply = (values: DateValues) => {\n onChange(values);\n setOpen(false);\n };\n\n const handleToggle = useCallback(() => {\n setOpen((open) => !open);\n onFocus();\n }, [onFocus]);\n\n const onCancel = () => {\n setOpen(false);\n };\n\n return (\n <div className={styles.root}>\n <TextField\n fullWidth\n value={values.map((value) => formatValue(value, placeholder)).join(' \\u2014 ')}\n onClick={handleToggle}\n variant=\"filled\"\n ref={inputRef}\n InputProps={{\n endAdornment: (\n <DropdownIndicatorWithIconButton\n selectProps={{classes: styles, menuIsOpen: open}}\n innerProps={{}}\n />\n ),\n disableUnderline: isNil(values),\n readOnly: true,\n classes: {\n root: styles.inputRoot,\n input: styles.input\n }\n }}\n InputLabelProps={{\n shrink: false\n }}\n placeholder={i18n.text(`${placeholder} \\u2014 ${placeholder}`)}\n />\n <Menu\n variant=\"menu\"\n open={open}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={inputRef.current}\n onClose={onCancel}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{\n autoFocusItem: open,\n style: {width: '100%'}\n }}\n >\n <DateRangePicker\n values={values}\n onCancel={onCancel}\n onApply={onApply}\n type={DataTypes.TYPE_ACTIVENESS_DATE}\n />\n </Menu>\n </div>\n );\n};\n\nexport default CustomDateRangeEditor;\n","import {AttributeType} from '@reltio/mdm-sdk';\n\nexport type ReactGridLayoutItem = {\n i: string;\n x: number;\n y: number;\n w: number;\n h: number;\n minW?: number;\n minH?: number;\n maxW?: number;\n maxH?: number;\n static?: boolean;\n};\n\nexport type AttributeOption = {\n label: string;\n value: string;\n attrType: AttributeType;\n chipLabel: string;\n level: number;\n};\n\nexport enum DateRangeTypes {\n WITHIN = 'within',\n AGO = 'ago',\n BETWEEN = 'between'\n}\n\nexport type DateRangeFilter = {\n type: DateRangeTypes;\n period: [number, string] | [Date, Date];\n};\n\nexport type QueryBuilderAttributeData = {\n title: string;\n pathToTitle: Array<string>;\n fieldName: string;\n entityTypeUri: string;\n attrType: AttributeType;\n uri: string;\n groupName: string;\n filterOptions: Array<string>;\n};\n\nexport type QueryBuilderAttribute = {\n id: string;\n values: Array<unknown>;\n data: QueryBuilderAttributeData;\n filter: string;\n operator: string;\n};\n\nexport type AttributeSelectorItem = {\n attrType?: AttributeType;\n entityTypeUri?: string;\n fieldName: string;\n groupName?: string;\n title: string;\n uri?: string;\n children?: AttributeSelectorItem[];\n pathToTitle?: string[];\n};\n\nexport type AttributeSelectorItemsGroup = {\n id?: string;\n title: string;\n attributes: AttributeSelectorItem[];\n};\n\nexport type AttributeSelectionInfo = {\n index: number;\n checked: boolean;\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n};\n\nexport type BasicAttributeSelectorProps = {\n className?: string;\n itemsGroups: AttributeSelectorItemsGroup[];\n value: AttributeSelectorItem;\n onSelect: (selectInfo: AttributeSelectionInfo) => void;\n onRestoreFocus?: () => void;\n onOpenPopup?: () => void;\n getLabel?: (value: {fieldName?: string; pathToTitle?: string[]; title: string}) => string;\n disableRestoreFocus?: boolean;\n disableEnforceFocus?: boolean;\n single?: boolean;\n ungroup?: boolean;\n disabled?: boolean;\n hideCheckBox?: boolean;\n};\nexport enum RequestStates {\n INIT = 'init',\n LOADING = 'loading',\n LOADED = 'loaded',\n ERROR = 'error'\n}\n\nexport type SelectableItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selected?: boolean;\n};\n\nexport type DropDownMenuItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selectable?: boolean;\n selected?: boolean;\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: \"M12 7c2.762 0 5 2.238 5 5s-2.238 5-5 5-5-2.238-5-5 2.238-5 5-5zm0 2a3 3 0 100 6 3 3 0 100-6zm8.94 2A8.994 8.994 0 0013 3.06V1h-2v2.06A8.994 8.994 0 003.06 11H1v2h2.06A8.994 8.994 0 0011 20.94V23h2v-2.06A8.994 8.994 0 0020.94 13H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\",\n id: \"svg2250934887a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2250934887b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2250934887a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2250934887b)\",\n d: \"M0 0h24v24H0z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\",\n fillOpacity: \".54\"\n}, React.createElement(\"path\", {\n d: \"M14.5 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm4 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm-17 1a1.5 1.5 0 110-3 1.5 1.5 0 010 3zM4 4a2 2 0 110-4 2 2 0 010 4zm1 16a2 2 0 110-4 2 2 0 010 4zm4.5-6a4.5 4.5 0 110-9 4.5 4.5 0 010 9zm0-2a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm6 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3z\",\n fill: \"#000\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n header: {\n padding: '0 4px 0 16px'\n },\n buttonsContainer: {\n flexShrink: 0,\n marginLeft: 'auto',\n '& > * + *': {\n marginLeft: '-4px'\n }\n },\n button: {\n padding: '8px'\n },\n icon: {\n width: '24px',\n height: '24px'\n },\n disabledIcon: {\n opacity: 0.54\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {IconButton as IconButton} from '@material-ui/core';\nimport {FacetViewHeader, withTooltip} from '@reltio/components';\nimport SelectNodeIcon from '../../icons/SelectNode.svg';\nimport ShowGraphIcon from '../../icons/ShowGraph.svg';\nimport {useStyles} from './styles';\n\nconst IconButtonWithTooltip = withTooltip(IconButton);\n\nconst HierarchyViewHeader = ({title, entityLabel = '', onScrollToCurrentEntity, onGraphOpen, disabled = false}) => {\n const styles = useStyles();\n const iconClassName = classnames(styles.icon, {[styles.disabledIcon]: disabled});\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <div className={styles.buttonsContainer}>\n <IconButtonWithTooltip\n tooltipTitle={i18n.text('Show Graph')}\n onClick={onGraphOpen}\n classes={{root: styles.button, label: iconClassName}}\n disabled={disabled}\n showForDisabled\n >\n <ShowGraphIcon />\n </IconButtonWithTooltip>\n <IconButtonWithTooltip\n tooltipTitle={i18n.text('Scroll to ${node}', {node: entityLabel})}\n tooltipPlacement=\"bottom-end\"\n onClick={onScrollToCurrentEntity}\n classes={{root: styles.button, label: iconClassName}}\n disabled={disabled}\n showForDisabled\n >\n <SelectNodeIcon />\n </IconButtonWithTooltip>\n </div>\n </FacetViewHeader>\n );\n};\n\nHierarchyViewHeader.propTypes = {\n title: PropTypes.string,\n entityLabel: PropTypes.string,\n total: PropTypes.number,\n onScrollToCurrentEntity: PropTypes.func,\n onGraphOpen: PropTypes.func,\n disabled: PropTypes.bool\n};\n\nexport default HierarchyViewHeader;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n textField: {\n marginLeft: theme.spacing(),\n marginRight: theme.spacing(),\n width: 200\n },\n panel: {\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: '372px',\n maxHeight: '507px'\n },\n treeWrapper: {\n flexGrow: 1,\n height: 0,\n marginTop: 7\n },\n checkedNode: {\n backgroundColor: 'rgba(0,114,206, 0.12)'\n },\n editorNode: {\n overflow: 'hidden',\n '&:hover': {\n backgroundColor: 'transparent !important'\n },\n '&:hover div.rst__moveHandle': {\n visibility: 'hidden'\n },\n '& div.rst__rowLabel': {\n paddingRight: 0\n }\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%'\n },\n root: {\n minHeight: '28px',\n display: 'flex',\n padding: '0 18px',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.06)'\n },\n wordBreak: 'break-all'\n },\n tree: {\n flexGrow: 1,\n height: 0\n }\n}));\n","export function classnames(...classes) {\n // Use Boolean constructor as a filter callback\n // Allows for loose type truthy/falsey checks\n // Boolean(\"\") === false;\n // Boolean(false) === false;\n // Boolean(undefined) === false;\n // Boolean(null) === false;\n // Boolean(0) === false;\n // Boolean(\"classname\") === true;\n return classes.filter(Boolean).join(' ');\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport './node-content.css';\nimport {classnames} from './utils';\nimport {ReactSortableTreeUtils} from '@reltio/components';\n\nclass NodeRendererDefault extends Component {\n render() {\n const {\n scaffoldBlockPxWidth,\n toggleChildrenVisibility,\n connectDragPreview,\n connectDragSource,\n isDragging,\n canDrop,\n canDrag,\n node,\n title,\n subtitle,\n draggedNode,\n path,\n treeIndex,\n isSearchMatch,\n isSearchFocus,\n buttons,\n className,\n style,\n didDrop,\n //eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n treeId,\n //eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isOver, // Not needed, but preserved for other renderers\n //eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n parentNode, // Needed for dndManager\n rowDirection,\n ...otherProps\n } = this.props;\n const nodeTitle = title || node.title;\n const nodeSubtitle = subtitle || node.subtitle;\n const rowDirectionClass = rowDirection === 'rtl' ? 'rst__rtl' : null;\n let handle;\n if (canDrag) {\n if (typeof node.children === 'function' && node.expanded) {\n // Show a loading symbol on the handle when the children are expanded\n // and yet still defined by a function (a callback to fetch the children)\n handle = (\n <div className=\"rst__loadingHandle\">\n <div className=\"rst__loadingCircle\">\n {[...new Array(12)].map((_, index) => (\n <div\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n className={classnames('rst__loadingCirclePoint', rowDirectionClass)}\n />\n ))}\n </div>\n </div>\n );\n } else {\n // Show the handle used to initiate a drag-and-drop\n handle = connectDragSource(\n <div className=\"rst__moveHandle\">\n <Tooltip title={i18n.text('Drag node')}>\n <DragIndicatorIcon />\n </Tooltip>\n </div>,\n {\n dropEffect: 'copy'\n }\n );\n }\n }\n\n const isDraggedDescendant = draggedNode && ReactSortableTreeUtils.isDescendant(draggedNode, node);\n const isLandingPadActive = !didDrop && isDragging;\n\n const showToggleChildrenButton =\n toggleChildrenVisibility &&\n !node.root &&\n !node.cycled &&\n ((node.children && node.children.length > 0) || node.pending);\n\n const onToggle = () => {\n toggleChildrenVisibility({\n node,\n path,\n treeIndex\n });\n };\n\n return (\n <div style={{height: '100%'}} {...otherProps} key={node.nodeId}>\n {showToggleChildrenButton && node.expanded && !isDragging && (\n <div\n style={{width: scaffoldBlockPxWidth - 2}}\n className={classnames('rst__lineChildren', rowDirectionClass)}\n />\n )}\n\n <div className={classnames('rst__rowWrapper', rowDirectionClass)}>\n {/* Set the row preview to be used during drag and drop */}\n {connectDragPreview(\n <div\n className={classnames(\n 'rst__row',\n isLandingPadActive && 'rst__rowLandingPad',\n isLandingPadActive && !canDrop && 'rst__rowCancelPad',\n isSearchMatch && 'rst__rowSearchMatch',\n isSearchFocus && 'rst__rowSearchFocus',\n rowDirectionClass,\n className\n )}\n style={{\n opacity: isDraggedDescendant ? 0.5 : 1,\n ...style\n }}\n >\n {handle}\n\n <div\n className={classnames(\n 'rst__rowContents',\n !canDrag && 'rst__rowContentsDragDisabled',\n rowDirectionClass\n )}\n >\n {showToggleChildrenButton ? (\n <div className=\"rst__buttonWrapper\" onClick={onToggle}>\n <div\n aria-label={node.expanded ? 'Collapse' : 'Expand'}\n className={classnames(\n node.expanded ? 'rst__collapseButton' : 'rst__expandButton',\n rowDirectionClass\n )}\n />\n </div>\n ) : (\n <div className={classnames('rst__buttonWrapper', 'rst__noButton')} />\n )}\n <div className={classnames('rst__rowLabel', rowDirectionClass)}>\n <div\n className={classnames(\n 'rst__rowTitle',\n node.subtitle && 'rst__rowTitleWithSubtitle'\n )}\n >\n {typeof nodeTitle === 'function'\n ? nodeTitle({\n node,\n path,\n treeIndex\n })\n : nodeTitle}\n </div>\n\n {nodeSubtitle && (\n <span className=\"rst__rowSubtitle\">\n {typeof nodeSubtitle === 'function'\n ? nodeSubtitle({\n node,\n path,\n treeIndex\n })\n : nodeSubtitle}\n </span>\n )}\n </div>\n\n <div className=\"rst__rowToolbar\">\n {buttons.map((btn, index) => (\n <div\n key={index} // eslint-disable-line react/no-array-index-key\n className=\"rst__toolbarButton\"\n >\n {btn}\n </div>\n ))}\n </div>\n </div>\n </div>,\n {offsetX: 0, offsetY: 0}\n )}\n </div>\n </div>\n );\n }\n}\n\nNodeRendererDefault.defaultProps = {\n isSearchMatch: false,\n isSearchFocus: false,\n canDrag: false,\n toggleChildrenVisibility: null,\n buttons: [],\n className: '',\n style: {},\n parentNode: null,\n draggedNode: null,\n canDrop: false,\n title: null,\n subtitle: null,\n rowDirection: 'ltr'\n};\n\nNodeRendererDefault.propTypes = {\n node: PropTypes.shape({}).isRequired,\n title: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n subtitle: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n path: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])).isRequired,\n treeIndex: PropTypes.number.isRequired,\n treeId: PropTypes.string.isRequired,\n isSearchMatch: PropTypes.bool,\n isSearchFocus: PropTypes.bool,\n canDrag: PropTypes.bool,\n scaffoldBlockPxWidth: PropTypes.number.isRequired,\n toggleChildrenVisibility: PropTypes.func,\n buttons: PropTypes.arrayOf(PropTypes.node),\n className: PropTypes.string,\n style: PropTypes.shape({}),\n\n // Drag and drop API functions\n // Drag source\n connectDragPreview: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n parentNode: PropTypes.shape({}), // Needed for dndManager\n isDragging: PropTypes.bool.isRequired,\n didDrop: PropTypes.bool.isRequired,\n draggedNode: PropTypes.shape({}),\n // Drop target\n isOver: PropTypes.bool.isRequired,\n canDrop: PropTypes.bool,\n\n // rtl support\n rowDirection: PropTypes.string\n};\n\nexport default NodeRendererDefault;\n","import {createContext} from 'react';\n\nexport const TreeThemeContext = createContext({\n generateTreeNodeProps: undefined\n});\n\nTreeThemeContext.displayName = 'TreeThemeContext';\n","import React, {Component, Children, cloneElement} from 'react';\nimport PropTypes from 'prop-types';\n\nimport './tree-node.css';\nimport {classnames} from './utils';\nimport {MIN_NODE_CONTENT_WIDTH} from '.';\nimport {TreeThemeContext} from '../treeThemeContext';\n\nclass TreeNode extends Component {\n static contextType = TreeThemeContext;\n\n render() {\n const {\n children,\n listIndex,\n swapFrom,\n swapLength,\n swapDepth,\n scaffoldBlockPxWidth,\n lowerSiblingCounts,\n connectDropTarget,\n isOver,\n draggedNode,\n canDrop,\n treeIndex,\n // eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n treeId, // Delete from otherProps\n // eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getPrevRow, // Delete from otherProps\n // eslint-disable-next-line no-unused-vars\n node, // Delete from otherProps\n // eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n path, // Delete from otherProps\n rowDirection,\n ...otherProps\n } = this.props;\n\n const rowDirectionClass = rowDirection === 'rtl' ? 'rst__rtl' : null;\n\n // Construct the scaffold representing the structure of the tree\n const scaffoldBlockCount = lowerSiblingCounts.length;\n const scaffold = [];\n lowerSiblingCounts.forEach((lowerSiblingCount, i) => {\n let lineClass = '';\n if (lowerSiblingCount > 0) {\n // At this level in the tree, the nodes had sibling nodes further down\n\n /*if (listIndex === 0) {\n // Top-left corner of the tree\n // +-----+\n // | |\n // | +--+\n // | | |\n // +--+--+\n lineClass =\n 'rst__lineHalfHorizontalRight rst__lineHalfVerticalBottom';\n } else*/ if (\n i ===\n scaffoldBlockCount - 1\n ) {\n // Last scaffold block in the row, right before the row content\n // +--+--+\n // | | |\n // | +--+\n // | | |\n // +--+--+\n lineClass = 'rst__lineHalfHorizontalRight rst__lineFullVertical';\n } else {\n // Simply connecting the line extending down to the next sibling on this level\n // +--+--+\n // | | |\n // | | |\n // | | |\n // +--+--+\n lineClass = 'rst__lineFullVertical';\n }\n } /*else if (listIndex === 0) {\n // Top-left corner of the tree, but has no siblings\n // +-----+\n // | |\n // | +--+\n // | |\n // +-----+\n lineClass = 'rst__lineHalfHorizontalRight';\n }*/ else if (\n i ===\n scaffoldBlockCount - 1\n ) {\n // The last or only node in this level of the tree\n // +--+--+\n // | | |\n // | +--+\n // | |\n // +-----+\n lineClass = 'rst__lineHalfVerticalTop rst__lineHalfHorizontalRight';\n }\n\n scaffold.push(\n <div\n key={`pre_${1 + i}`}\n style={{width: scaffoldBlockPxWidth}}\n className={classnames('rst__lineBlock', lineClass, rowDirectionClass)}\n />\n );\n\n if (treeIndex !== listIndex && i === swapDepth) {\n // This row has been shifted, and is at the depth of\n // the line pointing to the new destination\n let highlightLineClass = '';\n\n if (listIndex === swapFrom + swapLength - 1) {\n // This block is on the bottom (target) line\n // This block points at the target block (where the row will go when released)\n highlightLineClass = 'rst__highlightBottomLeftCorner';\n } else if (treeIndex === swapFrom) {\n // This block is on the top (source) line\n highlightLineClass = 'rst__highlightTopLeftCorner';\n } else {\n // This block is between the bottom and top\n highlightLineClass = 'rst__highlightLineVertical';\n }\n\n let style;\n if (rowDirection === 'rtl') {\n style = {\n width: scaffoldBlockPxWidth,\n right: scaffoldBlockPxWidth * i\n };\n } else {\n // Default ltr\n style = {\n width: scaffoldBlockPxWidth,\n left: scaffoldBlockPxWidth * i\n };\n }\n\n scaffold.push(\n <div\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n style={style}\n className={classnames('rst__absoluteLineBlock', highlightLineClass, rowDirectionClass)}\n />\n );\n }\n });\n\n let style;\n const scaffoldWidth = scaffoldBlockPxWidth * scaffoldBlockCount;\n if (rowDirection === 'rtl') {\n style = {right: scaffoldWidth};\n } else {\n // Default ltr\n style = {left: scaffoldWidth};\n }\n style = {...style, width: `calc(100% - ${scaffoldWidth}px`};\n const width = `${scaffoldWidth + MIN_NODE_CONTENT_WIDTH}px`;\n const nodeStyle = {...otherProps.style, width};\n const treeNodeProps =\n this.context && this.context.generateTreeNodeProps && this.context.generateTreeNodeProps(this.props);\n return connectDropTarget(\n <div\n {...otherProps}\n className={classnames(\n 'rst__node',\n node.root && 'rst__root',\n rowDirectionClass,\n treeNodeProps && treeNodeProps.treeNodeClassName,\n !!draggedNode && draggedNode.nodeId !== node.nodeId && 'rst_node_hover_disabled'\n )}\n style={nodeStyle}\n >\n {scaffold}\n\n <div className=\"rst__nodeContent\" style={style}>\n {Children.map(children, (child) =>\n cloneElement(child, {\n isOver,\n canDrop,\n draggedNode\n })\n )}\n </div>\n </div>\n );\n }\n}\n\nTreeNode.defaultProps = {\n swapFrom: null,\n swapDepth: null,\n swapLength: null,\n canDrop: false,\n draggedNode: null,\n rowDirection: 'ltr'\n};\n\nTreeNode.propTypes = {\n treeIndex: PropTypes.number.isRequired,\n treeId: PropTypes.string.isRequired,\n swapFrom: PropTypes.number,\n swapDepth: PropTypes.number,\n swapLength: PropTypes.number,\n scaffoldBlockPxWidth: PropTypes.number.isRequired,\n lowerSiblingCounts: PropTypes.arrayOf(PropTypes.number).isRequired,\n\n listIndex: PropTypes.number.isRequired,\n children: PropTypes.node.isRequired,\n\n // Drop target\n connectDropTarget: PropTypes.func.isRequired,\n isOver: PropTypes.bool.isRequired,\n canDrop: PropTypes.bool,\n draggedNode: PropTypes.shape({}),\n\n // used in dndManager\n getPrevRow: PropTypes.func.isRequired,\n node: PropTypes.shape({}).isRequired,\n path: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])).isRequired,\n\n // rtl support\n rowDirection: PropTypes.string\n};\n\nexport default TreeNode;\n","// Can override the following:\n//\n// style: PropTypes.shape({}),\n// innerStyle: PropTypes.shape({}),\n// reactVirtualizedListProps: PropTypes.shape({}),\n// scaffoldBlockPxWidth: PropTypes.number,\n// slideRegionSize: PropTypes.number,\n// rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n// treeNodeRenderer: PropTypes.func,\n// nodeContentRenderer: PropTypes.func,\n// placeholderRenderer: PropTypes.func,\n\nimport nodeContentRenderer from './node-content-renderer';\nimport treeNodeRenderer from './tree-node-renderer';\n\nexport const MIN_NODE_CONTENT_WIDTH = 250;\nconst scaffoldBlockPxWidth = 16;\nconst rowHeight = 28;\nconst slideRegionSize = 50;\nexport {nodeContentRenderer, treeNodeRenderer, scaffoldBlockPxWidth, rowHeight, slideRegionSize};\n","import PropTypes from 'prop-types';\nimport {EntityType, RelationType} from '@reltio/mdm-sdk';\n\nconst lazyGenericNodeType = () => GenericNodeType;\nconst lazyHierarchyNodeType = () => HierarchyNodeType;\n\nconst GenericNodeType = PropTypes.shape({\n nodeId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n children: PropTypes.arrayOf(lazyGenericNodeType),\n showParents: PropTypes.bool,\n expanded: PropTypes.bool,\n pending: PropTypes.bool,\n cycled: PropTypes.bool\n});\n\nconst HierarchyNodeType = PropTypes.shape({\n nodeId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n entity: EntityType,\n relation: RelationType,\n relations: PropTypes.arrayOf(RelationType),\n total: PropTypes.number,\n parent: PropTypes.arrayOf(PropTypes.string),\n directParentUri: PropTypes.string,\n children: PropTypes.arrayOf(lazyHierarchyNodeType),\n loading: PropTypes.bool,\n expanded: PropTypes.bool,\n showParents: PropTypes.bool,\n cycled: PropTypes.bool,\n pending: PropTypes.bool\n});\n\nconst ActivenessDateType = PropTypes.number;\n\nconst TreeType = PropTypes.shape({\n root: HierarchyNodeType,\n graphTypes: PropTypes.string,\n entitiesMap: PropTypes.object,\n title: PropTypes.string,\n activenessDate: ActivenessDateType,\n scrollTo: HierarchyNodeType,\n loading: PropTypes.bool\n});\n\nexport {ActivenessDateType, GenericNodeType, HierarchyNodeType, TreeType};\n","import React, {useCallback, useEffect, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {GenericNodeType} from '../../constants/prop-types';\nimport {ReactSortableTreeUtils} from '@reltio/components';\nimport * as hierarchyTheme from './theme';\nimport {propOr} from 'ramda';\nimport {CellMeasurerCache} from 'react-virtualized';\n\nconst MeasuredNode = ({measure, registerChild, NodeRenderer, node, treeIndex}) => {\n useEffect(measure, [treeIndex]);\n return <NodeRenderer measure={measure} registerChild={registerChild} node={node} />;\n};\n\nMeasuredNode.propTypes = {\n measure: PropTypes.func,\n registerChild: PropTypes.func,\n NodeRenderer: PropTypes.func,\n node: GenericNodeType,\n treeIndex: PropTypes.number\n};\n\n// eslint-disable-next-line react/prop-types,react/display-name\nconst getMeasuredNode = ({NodeRenderer, node, treeIndex}) => ({measure, registerChild}) => (\n <MeasuredNode\n NodeRenderer={NodeRenderer}\n node={node}\n treeIndex={treeIndex}\n measure={measure}\n registerChild={registerChild}\n />\n);\n\nconst useRefreshableMeasurerCache = (treeDataRef, getNodeKey) => {\n const keyMapper = useCallback(\n (rawIndex) => {\n const nodeInfo = ReactSortableTreeUtils.getVisibleNodeInfoAtIndex({\n treeData: treeDataRef.current,\n index: rawIndex,\n getNodeKey\n });\n return getNodeKey({node: propOr({nodeId: -1}, 'node', nodeInfo)});\n },\n [getNodeKey, treeDataRef]\n );\n const [measurerCache] = useState(\n new CellMeasurerCache({\n fixedWidth: true,\n defaultHeight: hierarchyTheme.rowHeight,\n minHeight: hierarchyTheme.rowHeight,\n keyMapper\n })\n );\n const clearCache = () => {\n measurerCache.clearAll();\n };\n\n const onWindowResize = useCallback(clearCache, []);\n useEffect(() => {\n window.addEventListener('resize', onWindowResize);\n return () => {\n window.removeEventListener('resize', onWindowResize);\n };\n }, [onWindowResize]);\n return measurerCache;\n};\n\nexport {getMeasuredNode, useRefreshableMeasurerCache};\n","const getElementByNodeId = (nodeId) => {\n return document.querySelector(`[data-node-id=\"${nodeId}\"]`);\n};\n\nconst scrollToElementByNodeId = (nodeId) => {\n const element = getElementByNodeId(nodeId);\n\n if (element) {\n element.scrollIntoView({block: 'nearest', inline: 'start'});\n } else {\n setTimeout(() => scrollToElementByNodeId(nodeId), 0);\n }\n};\n\nconst getNodeKey = ({node}) => node.nodeId;\n\nconst DefaultNodeRenderer = ({node}) => node.title || null;\n\nexport {scrollToElementByNodeId, getNodeKey, DefaultNodeRenderer};\n","import React, {useCallback, useEffect, useMemo, useRef} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport PropTypes from 'prop-types';\nimport {assoc, identity, omit, path, pick, pipe} from 'ramda';\nimport {CellMeasurer} from 'react-virtualized';\nimport {useStyles} from './styles';\nimport {\n ReactSortableTree,\n ReactSortableTreeUtils,\n usePrevious,\n useRunOnceAfterValueInitialization\n} from '@reltio/components';\nimport * as hierarchyTheme from './theme';\nimport {GenericNodeType} from '../../constants/prop-types';\nimport {getMeasuredNode, useRefreshableMeasurerCache} from './measureHelpers';\nimport {DefaultNodeRenderer, getNodeKey, scrollToElementByNodeId} from './nodeHelpers';\n\nconst theme = pick(\n ['nodeContentRenderer', 'treeNodeRenderer', 'scaffoldBlockPxWidth', 'rowHeight', 'slideRegionSize'],\n hierarchyTheme\n);\n\nconst Tree = ({\n NodeRenderer = DefaultNodeRenderer,\n root,\n scrollToNode,\n onChange,\n onRequestChildren,\n canDrag = false,\n canDrop,\n onScroll = identity,\n onNodeMoved = identity,\n inlineRoot\n}) => {\n const styles = useStyles();\n\n const treeData = useMemo(() => {\n const rootChildren = (root && root.children) || [];\n if (inlineRoot) {\n const inlinedRoot = pipe(omit(['children']), assoc('root', true))(root);\n return [inlinedRoot, ...rootChildren];\n } else {\n return rootChildren;\n }\n }, [root, inlineRoot]);\n\n const virtualizedListRef = useRef(null);\n const treeDataRef = useRef(null);\n treeDataRef.current = treeData;\n const measurerCache = useRefreshableMeasurerCache(treeDataRef, getNodeKey);\n useRunOnceAfterValueInitialization(() => {\n // force applying of rows measurements after first grid render\n setTimeout(() => {\n const vList = getVirtualizedListInstance();\n vList && vList.forceUpdateGrid();\n }, 0);\n }, root);\n\n useEffect(() => {\n if (root && scrollToNode) {\n const results = ReactSortableTreeUtils.find({\n treeData,\n getNodeKey: getNodeKey,\n searchFocusOffset: 0,\n searchQuery: '',\n searchMethod: ({node}) => node === scrollToNode\n });\n const treeIndex = path(['matches', 0, 'treeIndex'], results);\n const vList = getVirtualizedListInstance();\n if (vList && treeIndex != null) {\n vList.scrollToRow(treeIndex);\n setTimeout(() => {\n scrollToElementByNodeId(scrollToNode.nodeId);\n }, 500);\n }\n }\n }, [root, treeData, scrollToNode]);\n\n const getVirtualizedListInstance = () => path(['current', 'wrappedInstance', 'current'], virtualizedListRef);\n const onSortableTreeChange = useCallback(\n (treeData) => {\n onChange && onChange({...root, children: inlineRoot ? treeData.slice(1) : treeData});\n },\n [onChange, root, inlineRoot]\n );\n\n //eslint-disable-next-line\n const nodeRenderWithMeasure = useCallback(\n ({node, treeIndex}) => (\n <CellMeasurer\n cache={measurerCache}\n columnIndex={0}\n key={getNodeKey({node})}\n rowIndex={treeIndex}\n parent={getVirtualizedListInstance()}\n >\n {getMeasuredNode({NodeRenderer, node, treeIndex})}\n </CellMeasurer>\n ),\n [NodeRenderer, measurerCache]\n );\n\n const generateNodeProps = useCallback(\n (rowInfo) => ({\n title: nodeRenderWithMeasure(rowInfo)\n }),\n [nodeRenderWithMeasure]\n );\n const previousTreeData = usePrevious(treeData);\n const onMoveNode = useCallback(\n (movedNodeInfo) => {\n const {prevPath, nextParentNode} = movedNodeInfo;\n let prevParentNode;\n if (prevPath.length > 1) {\n const parentPath = prevPath.slice(0, -1);\n const result = ReactSortableTreeUtils.getNodeAtPath({\n treeData: previousTreeData,\n getNodeKey: getNodeKey,\n path: parentPath\n });\n if (result) {\n prevParentNode = result.node;\n }\n } else {\n prevParentNode = root;\n }\n onNodeMoved({prevParentNode, ...movedNodeInfo, nextParentNode: nextParentNode || root});\n },\n [onNodeMoved, root, previousTreeData]\n );\n\n const handleOnLazyLoadChildren = useCallback(\n ({node}) => {\n onRequestChildren(node);\n },\n [onRequestChildren]\n );\n const handleResize = useCallback(() => {\n measurerCache.clearAll();\n }, [measurerCache]);\n\n return root ? (\n <ReactResizeDetector skipOnMount handleWidth onResize={handleResize}>\n <div className={styles.container}>\n {!inlineRoot && (\n <div className={styles.root}>\n <NodeRenderer node={root} />\n </div>\n )}\n <div className={styles.tree}>\n <ReactSortableTree\n isVirtualized={true}\n canDrag={canDrag}\n canDrop={canDrop}\n treeData={treeData}\n theme={theme}\n generateNodeProps={generateNodeProps}\n rowHeight={measurerCache.rowHeight}\n reactVirtualizedListProps={{\n ref: virtualizedListRef,\n scrollToAlignment: 'end',\n onScroll\n }}\n onMoveNode={onMoveNode}\n onChange={onSortableTreeChange}\n onLazyLoadChildren={handleOnLazyLoadChildren}\n getNodeKey={getNodeKey}\n />\n </div>\n </div>\n </ReactResizeDetector>\n ) : null;\n};\n\nTree.propTypes = {\n NodeRenderer: PropTypes.elementType,\n root: GenericNodeType,\n canDrag: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n canDrop: PropTypes.func,\n scrollToNode: PropTypes.object,\n onChange: PropTypes.func,\n onRequestChildren: PropTypes.func,\n onNodeMoved: PropTypes.func,\n onScroll: PropTypes.func,\n inlineRoot: PropTypes.bool,\n getNodeKey: PropTypes.func\n};\n\nexport default Tree;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useCommonStyles = makeStyles(() => ({\n container: {\n fontSize: '13px',\n display: 'flex',\n paddingTop: '6px',\n position: 'relative'\n },\n title: {\n flexGrow: 1,\n width: 0,\n minHeight: '15px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n loadingSpinner: {\n alignSelf: 'center',\n maxHeight: '16px',\n marginRight: '16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {useCommonStyles} from '../commonStyles';\nimport {useStyles} from './styles';\n\nimport {LoadingSpinner} from '@reltio/components';\n\nexport const LoadingNode = ({className, registerChild}) => {\n const commonStyles = useCommonStyles();\n const styles = useStyles();\n return (\n <div className={classnames(commonStyles.container, className)} ref={registerChild}>\n <LoadingSpinner className={styles.loadingSpinner} />\n <div className={commonStyles.title}>{i18n.text('Loading...')}</div>\n </div>\n );\n};\n\nLoadingNode.propTypes = {\n className: PropTypes.string,\n registerChild: PropTypes.func\n};\n\nexport default LoadingNode;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n wrapper: {\n width: '100%'\n },\n avatar: {\n height: '16px',\n width: '16px',\n marginRight: '8px'\n },\n avatarWithMultiParent: {\n cursor: 'pointer'\n },\n number: {\n color: 'rgba(0,0,0,0.54)',\n marginLeft: '13px'\n },\n multiParentIcon: {\n position: 'absolute',\n top: '15px',\n left: '-3px',\n cursor: 'pointer'\n },\n actionsBlock: {\n position: 'absolute',\n right: '0',\n top: '2px',\n backgroundColor: 'rgb(240,240,240)',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: '-40px',\n top: 0,\n width: '40px',\n height: '100%',\n background: 'linear-gradient(to right, rgba(240,240,240, 0.2), rgba(240,240,240, 1) 100%)',\n pointerEvents: 'none'\n }\n },\n actionsBlockWithOpenMenu: {\n backgroundColor: 'white',\n '&::after': {\n background: 'linear-gradient(to right, rgba(255,255,255, 0.2), rgba(255,255,255, 1) 100%)'\n }\n },\n actionsBlockForCheckedNode: {\n backgroundColor: 'rgb(224,238,249)',\n '&::after': {\n background: 'linear-gradient(to right, rgba(224,238,249, 0.2), rgba(224,238,249, 1) 100%)'\n }\n },\n regularNodeCheckbox: {\n padding: 0,\n marginRight: '16px',\n marginTop: '-4px',\n marginLeft: '-4px'\n },\n subtitle: {\n fontSize: '11px',\n letterSpacing: 0,\n lineHeight: '13px',\n paddingLeft: '24px',\n paddingTop: '2px',\n paddingBottom: '4px',\n wordBreak: 'break-word'\n },\n popper: {\n maxWidth: '345px',\n minWidth: '200px',\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)',\n backgroundColor: 'white',\n borderRadius: '2px'\n }\n}));\n","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: \"11\",\n height: \"11\",\n viewBox: \"0 0 12 12\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"circle\", {\n strokeOpacity: \".54\",\n stroke: \"#000\",\n fill: \"#FFF\",\n cx: \"6\",\n cy: \"6\",\n r: \"5.5\"\n}), React.createElement(\"path\", {\n d: \"M5.536 4.641L4.505 3.61H8v3.495L6.874 5.98 5.509 7.344a1.995 1.995 0 00-.581 1.548l-.407-.408a2 2 0 010-2.828l1.015-1.015z\",\n fillOpacity: \".87\",\n fill: \"#000\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n link: {\n cursor: 'pointer',\n color: theme.palette.primary.main,\n lineHeight: '15px'\n },\n selected: {\n fontWeight: 'bold'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Link} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype NodeTitleProps = React.HTMLProps<HTMLSpanElement> & {\n title: string;\n isSelected?: boolean;\n link: string;\n onClick: () => void;\n};\n\nconst NodeTitle = ({title, isSelected, link, onClick, ...otherProps}: NodeTitleProps) => {\n const styles = useStyles();\n\n return (\n <span {...otherProps} className={classnames(styles.link, {[styles.selected]: isSelected})}>\n <Link to={link} onClick={onClick}>\n {title}\n </Link>\n </span>\n );\n};\n\nexport default NodeTitle;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n avatar: {\n height: '16px',\n width: '16px',\n marginRight: '6px',\n flexShrink: '0'\n },\n multiParent: {\n position: 'relative',\n background: '#ffffff',\n border: '1px solid rgba(0,0,0,0.12)',\n marginLeft: '-5px',\n marginTop: '10px',\n padding: '10px 11px 9px 6px',\n '&:after,&:before': {\n bottom: '100%',\n left: '12px',\n border: 'solid transparent',\n content: \"' '\",\n height: 0,\n width: 0,\n position: 'absolute',\n 'pointer-events': 'none'\n },\n '&:after': {\n borderColor: 'rgba(255, 255, 255, 0)',\n borderBottomColor: '#ffffff',\n borderWidth: '6px',\n marginLeft: '-6px'\n },\n '&:before': {\n borderColor: 'rgba(220, 216, 245, 0)',\n borderBottomColor: 'rgba(0,0,0,0.12)',\n borderWidth: '7px',\n marginLeft: '-7px'\n }\n },\n parentContainer: {\n fontSize: '13px',\n lineHeight: '16px',\n display: 'flex',\n marginBottom: '12px',\n alignItems: 'center',\n '&:last-child': {\n marginBottom: 0\n }\n },\n loadingNode: {\n paddingTop: 0\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: \"10\",\n height: \"10\",\n viewBox: \"0 0 10 10\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\",\n fillOpacity: \".38\"\n}, React.createElement(\"path\", {\n d: \"M4.536 3.641L3.505 2.61H7v3.495L5.874 4.98 4.509 6.344a1.995 1.995 0 00-.581 1.548l-.407-.408a2 2 0 010-2.828l1.015-1.015z\",\n fill: \"#000\"\n}))));","import React from 'react';\nimport {useDispatch} from 'react-redux';\nimport {ui} from '@reltio/mdm-module';\nimport {useStyles} from './styles';\nimport ParentIcon from './parentIcon.svg';\n\nimport LoadingNode from '../../LoadingNode/LoadingNode';\nimport NodeTitle from '../NodeTitle/NodeTitle';\n\ntype NodeType = {\n pending: boolean;\n title?: string;\n entityLink?: string;\n viewId?: string;\n entityUri?: string;\n};\ntype MultiParentBlockProps = {\n showParents: boolean;\n additionalParents: Array<NodeType>;\n};\nconst MultiParentBlock = ({showParents, additionalParents}: MultiParentBlockProps) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n return showParents && additionalParents.length > 0 ? (\n <div className={styles.multiParent}>\n {additionalParents.map((parent, i) => (\n <div key={i} className={styles.parentContainer}>\n {parent.pending ? (\n <LoadingNode className={styles.loadingNode} />\n ) : (\n <>\n <ParentIcon className={styles.avatar} />\n <NodeTitle\n title={parent.title}\n link={parent.entityLink}\n onClick={() =>\n dispatch(ui.actions.openEntity({uri: parent.entityUri, viewId: parent.viewId}))\n }\n />\n </>\n )}\n </div>\n ))}\n </div>\n ) : null;\n};\n\nexport default MultiParentBlock;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n details: {\n margin: '1px 0 8px 24px'\n },\n loadingNode: {\n paddingTop: 0\n },\n detailLine: {\n display: 'flex'\n },\n detail: {\n flexGrow: 1,\n width: 0,\n wordWrap: 'break-word',\n lineHeight: '16px',\n paddingLeft: '8px',\n textIndent: '-8px'\n },\n detailLabel: {\n color: 'rgba(0, 0, 0, 0.6)',\n whiteSpace: 'nowrap',\n lineHeight: '16px',\n letterSpacing: 0,\n marginRight: '5px'\n },\n detailValue: {\n fontSize: '0.75rem',\n letterSpacing: 0\n }\n}));\n","import {assoc, both, complement, curry, equals, findIndex, has, path, pipe, prop, when} from 'ramda';\nimport nanoid from 'nanoid';\nimport {\n getGraphType,\n generateNewRelationUri,\n mapTree,\n sortTreeChildren,\n createRelationTypesLabelsMap,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\n\nexport const prepareTree = (tree, metadata) => {\n const {sortField, sortOrder, graphTypes} = tree;\n const root = mapTree(tree.root, {\n childrenProcessing: sortTreeChildren({\n sortField,\n sortOrder,\n typesLabelsMap: createRelationTypesLabelsMap(metadata)\n }),\n nodeProcessing: pipe(formatNodeFromTreeResponse, addSelfRelatedNode, expandNode)\n });\n const entitiesMap = buildEntitiesMapFromTree(root);\n const title = (getGraphType(metadata, graphTypes) || {}).label;\n return {...tree, root, entitiesMap, title};\n};\n\nexport const buildTreeFromHops = ({json, parentUri, sortField, sortOrder, metadata, isReversed}) => {\n const entitiesMap = processHopsResponse(json, isReversed);\n const rawSubTree = entitiesMap && breakCycles(entitiesMap[parentUri]);\n return mapTree(rawSubTree, {\n nodeProcessing: pipe(formatNodeFromHopResponse, addSelfRelatedNode),\n childrenProcessing: sortTreeChildren({\n sortField,\n sortOrder,\n typesLabelsMap: createRelationTypesLabelsMap(metadata)\n })\n });\n};\n\nlet nodeCounter = 0;\nexport const generateId = () => nodeCounter++;\n\nconst convertParentProp = (parent) => (parent ? [].concat(parent) : []);\n\nconst getNodeUri = (node) => path(['entity', 'uri'], node);\n\nconst getRelationsProp = (relations) => (relations ? wrapInArrayIfNeeded(relations) : []);\n\nconst getRelationProp = (node, directParentUri) => {\n const relations = prop('relation', node);\n if (Array.isArray(relations)) {\n const parents = convertParentProp(node.parent);\n const parentIndex = findIndex(equals(directParentUri), parents);\n return path([parentIndex], relations);\n } else {\n return relations;\n }\n};\n\nexport const formatNodeFromTreeResponse = (node, directParent = {}) =>\n node.formatted\n ? node\n : {\n ...node,\n nodeId: generateId(),\n parent: convertParentProp(node.parent),\n directParentUri: getNodeUri(directParent),\n pending: !node.children && node.total > 0,\n formatted: true,\n relations: getRelationsProp(node.relation),\n relation: getRelationProp(node, getNodeUri(directParent))\n };\n\nconst formatNodeFromHopResponse = (node, directParent = {}) => {\n const {children, parent, traversedRelations, untraversedRelations, cycled, formatted, relation, ...entity} = node;\n if (formatted) {\n return node;\n }\n const total = traversedRelations + untraversedRelations - 1;\n const directParentUri = getNodeUri(directParent);\n const formattedNode = {\n nodeId: generateId(),\n cycled,\n entity,\n parent: convertParentProp(parent),\n directParentUri,\n total,\n pending: !cycled && !children && total > 0,\n formatted: true,\n relations: getRelationsProp(relation),\n relation: getRelationProp(node, directParentUri)\n };\n if (children) {\n formattedNode.children = children;\n formattedNode.pending = !cycled && total > children.length;\n }\n return formattedNode;\n};\n\nconst addSelfRelatedNode = (node) => {\n const children = node.children || [];\n const alreadyHasSelfRelatedNode = children.some(\n (child) => path(['entity', 'uri'], child) === node.entity.uri || child.uri === node.entity.uri\n );\n if (!alreadyHasSelfRelatedNode && !node.cycled && node.parent.includes(node.entity.uri)) {\n return {\n ...node,\n children: children.concat({\n ...node,\n nodeId: generateId(),\n directParentUri: node.entity.uri,\n total: 0,\n children: [],\n cycled: true\n })\n };\n }\n return node;\n};\n\nconst expandNode = when(both(has('children'), complement(prop('pending'))), assoc('expanded', true));\n\n/* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\nconst clearNodeForEntityMap = ({\n nodeId,\n relation,\n formatted,\n directParentUri,\n pending,\n children,\n total,\n ...clearedNode\n}) => clearedNode;\n/* eslint-enable */\n\nconst buildEntitiesMapFromTree = (node, result = {}) => {\n const key = getNodeUri(node);\n if (key) {\n result[key] = clearNodeForEntityMap(node);\n }\n if (node.children) {\n node.children.forEach((child) => buildEntitiesMapFromTree(child, result));\n }\n return result;\n};\n\nconst buildEntitiesMapFromHopsEntities = (entitiesMap) => {\n return Object.keys(entitiesMap).reduce((result, entityUri) => {\n const entity = formatNodeFromHopResponse(entitiesMap[entityUri]);\n result[entityUri] = clearNodeForEntityMap(entity);\n return result;\n }, {});\n};\n\nconst processHopsResponse = ({entities, relations}, isReversed) => {\n if (Array.isArray(entities)) {\n const entitiesMap = entities.reduce((result, entity) => {\n result[entity.uri] = entity;\n return result;\n }, {});\n (relations || []).forEach((relation) => {\n const parentObjectKey = isReversed ? 'endObject' : 'startObject';\n const childObjectKey = isReversed ? 'startObject' : 'endObject';\n const parent = entitiesMap[relation[parentObjectKey].objectURI];\n const child = entitiesMap[relation[childObjectKey].objectURI];\n parent.children = parent.children || [];\n if (!parent.children.includes(child)) {\n parent.children.push(child);\n }\n child.parent = child.parent || [];\n if (!child.relation) {\n child.relation = relation;\n }\n if (!child.parent.includes(parent.uri)) {\n child.parent.push(parent.uri);\n }\n });\n return entitiesMap;\n }\n};\n\nconst breakCycles = (root) => {\n /*\n Example of hierarchy with cycles:\n\n node\n |\n child\n |\n N-grand-child\n |\n [N-grand-child | child | node]\n\n Break the cycle by cloning the lowest-level node that causes cycle without its children\n */\n\n const queue = [\n {\n node: root,\n parent: null\n }\n ];\n const visitedNodes = [];\n for (const current of queue) {\n const {node, parent} = current;\n if (visitedNodes.includes(node)) {\n parent.children = parent.children.map((child) => {\n if (child === node) {\n return {\n ...node,\n cycled: true,\n children: []\n };\n } else {\n return child;\n }\n });\n } else {\n visitedNodes.push(node);\n if (node.children) {\n queue.push(...node.children.map((child) => ({node: child, parent: node})));\n }\n }\n }\n return root;\n};\n\nexport const buildEntitiesMapFromHops = curry((isReversed, json) =>\n pipe(processHopsResponse, buildEntitiesMapFromHopsEntities)(json, isReversed)\n);\n\nexport const isLoadingNode = (node) => node.loading;\nexport const isSelectedNode = (node, currentEntityUri) => getNodeUri(node) === currentEntityUri;\nexport const createLoadingNode = () => ({\n entity: {},\n loading: true,\n nodeId: nanoid()\n});\n\nexport const createNewTreeNode = () => ({\n nodeId: generateId(),\n relation: {\n uri: generateNewRelationUri(),\n attributes: {}\n }\n});\n","import {buildEntitiesMapFromHops, buildTreeFromHops, generateId} from '../../helpers/treeDataProvider';\nimport {any, path, pipe, prop} from 'ramda';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getAllEntityTypesForGraphType, getHops} from '@reltio/mdm-sdk';\n\nconst treeActions = profile.trees.actions;\n\nexport const expandNodeCommand = ({id, nodeId}) => (dispatch) => {\n dispatch(treeActions.nodeExpandedEvent({id, nodeId}));\n};\n\nexport const loadChildren = ({parentUri, parentId, graphTypes, activenessDate, id, isReversed}) => (\n dispatch,\n getState\n) => {\n const {sortField, sortOrder} = mdm.selectors.getTree(getState(), id);\n const metadata = mdm.selectors.getMetadata(getState());\n dispatch(treeActions.childrenLoading({id, parentId, nodeId: generateId()}));\n return getHops({uri: parentUri, graphTypes, activenessDate}).then((json) => {\n const {children} = buildTreeFromHops({json, parentUri, sortField, sortOrder, metadata, isReversed});\n const entitiesSubMap = buildEntitiesMapFromHops(isReversed, json);\n dispatch(treeActions.childrenLoaded({id, children, parentId}));\n dispatch(treeActions.entitiesMappingLoaded({id, entitiesSubMap}));\n });\n};\n\nexport const loadParents = ({uri, graphTypes, activenessDate, id, isReversed}) => (dispatch) => {\n const createSubTreeEntitiesLoadedEvent = (entitiesSubMap) =>\n treeActions.entitiesMappingLoaded({id, entitiesSubMap});\n const parentsProcessing = pipe(buildEntitiesMapFromHops(isReversed), createSubTreeEntitiesLoadedEvent, dispatch);\n return getHops({uri, graphTypes, activenessDate}).then(parentsProcessing);\n};\n\nexport const showCurrentEntity = ({id, uri}) => (dispatch) => {\n dispatch(treeActions.currentEntityShownInTree({id, uri}));\n setTimeout(() => {\n dispatch(treeActions.resetScrollToNode(id));\n }, 0);\n};\n\nexport const scrollToTreeTop = (id) => (dispatch, getState) => {\n const tree = mdm.selectors.getTree(getState(), id);\n const uri = path(['root', 'children', 0, 'entity', 'uri'], tree);\n if (uri) {\n dispatch(showCurrentEntity({id, uri}));\n }\n};\n\nexport const hasEntityTypesWithSecondaryLabelPattern = pipe(\n getAllEntityTypesForGraphType,\n any(prop('secondaryLabelPattern'))\n);\n","import {always, cond, equals, has} from 'ramda';\nimport {profile} from '@reltio/mdm-module';\nimport {getRelation, NODE_EDITING_MODES, getPayloadForNodeApplyEditing} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {loadChildren} from './treeHelpers';\n\nconst treeActions = profile.trees.actions;\n\nexport const isRelationLoaded = has('attributes');\nexport const isNodeChecked = ({node, checkedNodes}) => has(node.nodeId, checkedNodes);\nexport const isEditorNode = has('editingMode');\n\nexport const hasEditorNode = (node = {}) => {\n return isEditorNode(node) || (has('children', node) && node.children.some(hasEditorNode));\n};\n\nconst loadRelationDetails = ({id, node}) => (dispatch) => {\n const {nodeId, relation} = node;\n const currentRelation = Array.isArray(relation) ? relation[0] : relation;\n return isRelationLoaded(currentRelation)\n ? Promise.resolve(relation)\n : getRelation(currentRelation.uri).then((relationDetails) => {\n const detailedRelation = {...currentRelation, ...relationDetails};\n dispatch(\n treeActions.treeNodeChanged({\n id,\n node: {\n nodeId,\n relation: detailedRelation\n }\n })\n );\n return Promise.resolve(detailedRelation);\n });\n};\n\nexport const toggleRelationDetails = ({id, node}) => (dispatch) => {\n const {nodeId, showDetails, relation} = node;\n const updatedNode = {\n nodeId,\n showDetails: !showDetails\n };\n dispatch(treeActions.treeNodeChanged({id, node: updatedNode}));\n\n const needDetails = !showDetails && !isRelationLoaded(relation) && relation;\n if (needDetails) {\n dispatch(loadRelationDetails({id, node}));\n }\n};\n\nexport const nodeStartEditing = ({id, node}) => (dispatch) => {\n const {nodeId} = node;\n dispatch(treeActions.treeNodeChanged({id, node: {nodeId, loading: true}}));\n dispatch(loadRelationDetails({id, node})).then(() => {\n dispatch(treeActions.treeNodeEditingStarted({id, node}));\n });\n};\n\nexport const nodeStartAddingChild = ({id, node, newNode, isReversed}) => (dispatch, getState) => {\n dispatch(treeActions.treeNodeNewChildEditingStarted({id, node, newNode}));\n if (node.pending) {\n const store = getState();\n const {activenessDate, graphTypes} = mdm.selectors.getTree(store, id);\n dispatch(\n loadChildren({\n parentUri: node.entity.uri,\n parentId: node.nodeId,\n graphTypes,\n activenessDate,\n id,\n isReversed\n })\n );\n }\n};\n\nexport const nodeCancelEditing = ({id, node}) => (dispatch) => {\n const action = cond([\n [equals(NODE_EDITING_MODES.addingParent), always(treeActions.treeNodeNewParentEditingCanceled)],\n [equals(NODE_EDITING_MODES.addingChild), always(treeActions.treeNodeNewChildEditingCanceled)],\n [equals(NODE_EDITING_MODES.editing), always(treeActions.treeNodeEditingCanceled)]\n ])(node.editingMode);\n dispatch(action({id, node}));\n};\n\nexport const nodeApplyEditing = ({id, node, isReversed}) => (dispatch, getState) => {\n const connection = mdm.selectors.getTreeEditingConnection(getState(), id, node.relation.uri);\n let dataAction;\n\n switch (node.editingMode) {\n case NODE_EDITING_MODES.addingParent:\n case NODE_EDITING_MODES.addingChild:\n dataAction = treeActions.treeRelationCreated;\n break;\n case NODE_EDITING_MODES.editing: {\n dataAction = treeActions.treeRelationChanged;\n break;\n }\n }\n dispatch(dataAction(getPayloadForNodeApplyEditing({node, connection, isReversed})));\n\n const treeAppearanceChangeActionCreator = cond([\n [equals(NODE_EDITING_MODES.addingParent), always(treeActions.treeNodeNewParentEditingApplied)],\n [equals(NODE_EDITING_MODES.addingChild), always(treeActions.treeNodeNewChildEditingApplied)],\n [equals(NODE_EDITING_MODES.editing), always(treeActions.treeNodeEditingApplied)]\n ])(node.editingMode);\n dispatch(treeAppearanceChangeActionCreator({id, node}));\n};\n\nexport const hasLoadingNode = (node) => {\n return node.loading || (has('children', node) && node.children.some(hasLoadingNode));\n};\n\nexport const getShowSecondaryLabelValue = (showSecondaryLabel = true, enabled) => enabled && showSecondaryLabel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {pick, prop} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\nimport LoadingNode from '../../LoadingNode/LoadingNode';\nimport {ACTIVENESS_ATTR_TYPES, DataTypes, getRelationType, MetadataType, RelationType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {DataTypeValue} from '@reltio/components';\nimport {isRelationLoaded} from '../../../helpers/nodeHelpers';\n\nconst getRelationDetails = pick(['startDate', 'endDate']);\nconst attrTypes = [\n {\n uri: 'typeName',\n type: DataTypes.TYPE_STRING,\n label: i18n.text('Relationship')\n },\n ...ACTIVENESS_ATTR_TYPES\n];\n\nconst RelationDetails = ({showDetails, metadata, relation = {}}) => {\n const styles = useStyles();\n const relationshipData = getRelationDetails(relation);\n relationshipData.typeName = prop('label', getRelationType(metadata, relation.type));\n\n return showDetails && relation ? (\n <div className={styles.details}>\n {isRelationLoaded(relation) ? (\n attrTypes.map(\n (attrType) =>\n relationshipData[attrType.uri] && (\n <div key={attrType.uri} className={styles.detailLine}>\n <div className={styles.detail}>\n <Typography variant=\"caption\" gutterBottom className={styles.detailLabel}>\n {attrType.label + ': '}\n </Typography>\n <span className={styles.detailValue}>\n <DataTypeValue\n value={relationshipData[attrType.uri]}\n dataTypeDefinition={attrType}\n />\n </span>\n </div>\n </div>\n )\n )\n ) : (\n <LoadingNode key=\"loading-details\" className={styles.loadingNode} />\n )}\n </div>\n ) : null;\n};\n\nRelationDetails.propTypes = {\n showDetails: PropTypes.bool,\n relation: RelationType,\n metadata: MetadataType\n};\n\nexport default RelationDetails;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n addButton: {\n marginRight: '11px'\n },\n editButton: {\n marginRight: '13px'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {identity} from 'ramda';\nimport EditIcon from '@material-ui/icons/Edit';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\nimport InfoIconSelected from '@material-ui/icons/InfoRounded';\n\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst ActionsBlock = ({\n className,\n show,\n showDetails,\n onToggleRelationDetails,\n onMenuOpen,\n onMenuClose,\n onStartEditing,\n onAddParent,\n onAddChild,\n onDelete\n}) => {\n const styles = useStyles();\n const menuItems = [\n onAddParent && {\n text: i18n.text('Add Parent'),\n onClick: onAddParent\n },\n onAddChild && {\n text: i18n.text('Add Child'),\n onClick: onAddChild\n }\n ].filter(identity);\n\n return show && (onToggleRelationDetails || onStartEditing || onAddParent || onAddChild || onDelete) ? (\n <div className={className}>\n {onToggleRelationDetails && (\n <SmallIconButtonWithTooltip\n tooltipTitle={showDetails ? i18n.text('Hide details') : i18n.text('View details')}\n tooltipPlacement=\"bottom-end\"\n size=\"S\"\n icon={showDetails ? InfoIconSelected : InfoIcon}\n onClick={onToggleRelationDetails}\n />\n )}\n {menuItems.length > 0 && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: AddCircleIcon,\n size: 'S',\n tooltipTitle: i18n.text('Add node'),\n className: styles.addButton\n }}\n menuId={'tree-node-actions'}\n menuItems={menuItems}\n onMenuOpen={onMenuOpen}\n onMenuClose={onMenuClose}\n />\n )}\n {onStartEditing && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Edit node')}\n size=\"S\"\n icon={EditIcon}\n onClick={onStartEditing}\n className={styles.editButton}\n />\n )}\n {onDelete && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Delete node')}\n size=\"S\"\n icon={DeleteIcon}\n onClick={onDelete}\n />\n )}\n </div>\n ) : null;\n};\n\nActionsBlock.propTypes = {\n show: PropTypes.bool,\n showDetails: PropTypes.bool,\n className: PropTypes.string,\n onMenuOpen: PropTypes.func,\n onMenuClose: PropTypes.func,\n onStartEditing: PropTypes.func,\n onAddParent: PropTypes.func,\n onAddChild: PropTypes.func,\n onDelete: PropTypes.func,\n onToggleRelationDetails: PropTypes.func\n};\n\nexport default ActionsBlock;\n","import {defaultTo, includes, path, pipe, prop} from 'ramda';\nimport {getValidatedSortField, getValidatedSortOrder} from '@reltio/mdm-sdk';\n\nexport const getGraphConfig = prop('graph');\nexport const getReverseRelationsConfig = pipe(getGraphConfig, path(['options', 'reverseRelations']));\nexport const getGraphTypeConfig = pipe(getGraphConfig, prop('type'));\n\nexport const getValidatedSortOrderFromConfig = pipe(prop('sortOrder'), getValidatedSortOrder);\n\nexport const getValidatedSortFieldFromConfig = pipe(prop('sortBy'), getValidatedSortField);\n\nexport const getIsSecondaryLabelEnabledFromConfig = pipe(prop('attributes'), defaultTo([]), includes('secondaryLabel'));\n","import {__, curry, identity, isNil, path, prop, pathOr, reject} from 'ramda';\nimport {\n checkMetadataForUpdate,\n isInHierarchy,\n getEntityType,\n getGraphType,\n getRelationType,\n getRelationshipTypeUrisFromGraphType,\n isEditableMode as checkIsEditableMode,\n getEntityLink,\n getStartObjectTypeUri,\n getEndObjectTypeUri,\n checkMetadataForDelete,\n getLabel,\n getPropWithInheritance,\n getAbsoluteImageUrl\n} from '@reltio/mdm-sdk';\n\nimport {createNewTreeNode, isSelectedNode} from '../../../../helpers/treeDataProvider';\nimport {getGraphTypeConfig, getReverseRelationsConfig} from '../../../helpers/configHelpers';\nimport {profile} from '@reltio/mdm-module';\n\nconst treeActions = profile.trees.actions;\nimport {nodeStartAddingChild, nodeStartEditing, toggleRelationDetails} from '../../../helpers/nodeHelpers';\n\nconst getTypeGraphIcon = (absoluteImagePath, metadata, entityTypeUri) => {\n const entityType = getEntityType(metadata, entityTypeUri) || {};\n const entityTypeGraphIcon = getPropWithInheritance(metadata, entityType, 'typeGraphIcon');\n return entityTypeGraphIcon && getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n};\n\nconst canEditNode = ({relation}, metadata, mode) =>\n relation ? checkMetadataForUpdate(mode, getRelationType(metadata, relation.type)) : false;\n\nconst canAddRelative = curry((direction, config, metadata, node) => {\n const {entity = {}} = node;\n const isReversed = getReverseRelationsConfig(config) || false;\n const isChild = isReversed ? direction === 'parent' : direction === 'child';\n const nodeEntityTypeUri = entity.type;\n const graphTypeUri = getGraphTypeConfig(config);\n if (graphTypeUri) {\n const graphType = getGraphType(metadata, graphTypeUri);\n const relationTypeUris = getRelationshipTypeUrisFromGraphType(graphType) || [];\n const isNodeEntityInstanceOf = isInHierarchy(metadata, __, nodeEntityTypeUri);\n return relationTypeUris\n .map(getRelationType(metadata))\n .filter(identity)\n .map(isChild ? getStartObjectTypeUri : getEndObjectTypeUri)\n .some(isNodeEntityInstanceOf);\n }\n return true;\n});\n\nconst canAddParentForNode = canAddRelative('parent');\nconst canAddChildForNode = canAddRelative('child');\n\nconst canDeleteNode = ({relation}, metadata, mode) =>\n relation ? checkMetadataForDelete(mode, getRelationType(metadata, relation.type)) : false;\n\nconst simpleNodePropsMapping = ({\n node,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config = {},\n uiPath,\n showSecondaryLabel,\n onParentsRequested,\n dispatch\n}) => {\n const {entity, children, total, pending, showParents, nodeId} = node;\n const {id} = config;\n const isSelected = isSelectedNode(node, currentEntityUri);\n const isEditable = checkIsEditableMode(mode);\n const handleOnDelete = () => {\n const relationUri = path(['relation', 'uri'], node);\n relationUri && dispatch(treeActions.treeRelationRemoved({relationUri}));\n dispatch(treeActions.treeNodeRemoved({id, nodeId}));\n };\n\n const commonActionHandlers = {\n onToggleShowParents: (needLoadAdditionalParents) => {\n dispatch(treeActions.treeNodeChanged({id, node: {nodeId, showParents: !showParents}}));\n needLoadAdditionalParents && onParentsRequested(node);\n }\n };\n\n const actionHandlers = isEditable\n ? {\n onStartEditing: canEditNode(node, metadata, mode) ? () => dispatch(nodeStartEditing({id, node})) : null,\n onAddParent: canAddParentForNode(config, metadata, node)\n ? () =>\n dispatch(treeActions.treeNodeNewParentEditingStarted({id, node, newNode: createNewTreeNode()}))\n : null,\n onAddChild: canAddChildForNode(config, metadata, node)\n ? () =>\n dispatch(\n nodeStartAddingChild({\n id,\n isReversed: getReverseRelationsConfig(config),\n node,\n newNode: createNewTreeNode()\n })\n )\n : null,\n onDelete: canDeleteNode(node, metadata, mode) ? handleOnDelete : null,\n ...commonActionHandlers\n }\n : {\n onToggleRelationDetails: () => dispatch(toggleRelationDetails({id, node})),\n ...commonActionHandlers\n };\n return {\n title: getLabel(entity.label),\n subtitle: showSecondaryLabel ? entity.secondaryLabel : undefined,\n number: children && !pending ? children.length : total,\n icon: getTypeGraphIcon(absoluteImagePath, metadata, entity.type),\n isSelectedNode: isSelected,\n entityLink: getEntityLink({uiPath, uri: entity.uri}),\n entityUri: entity.uri,\n viewId: id,\n showDetails: node.showDetails && !isEditable,\n ...reject(isNil, actionHandlers)\n };\n};\nconst getAdditionalParents = ({node, entitiesMap, metadata, config, absoluteImagePath, uiPath}) => {\n const {entity, directParentUri} = node;\n return pathOr([], [entity.uri, 'parent'], entitiesMap)\n .filter((parentUri) => parentUri !== directParentUri)\n .map((parentUri) => {\n const mapEntry = prop(parentUri, entitiesMap);\n return mapEntry\n ? simpleNodePropsMapping({node: mapEntry, config, metadata, absoluteImagePath, uiPath})\n : {pending: true};\n });\n};\n\nconst nodePropsMapping = ({\n node,\n entitiesMap,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config,\n uiPath,\n showSecondaryLabel,\n onParentsRequested,\n dispatch\n}) => ({\n ...node,\n relation: Array.isArray(node.relation) ? node.relation[0] : node.relation,\n ...simpleNodePropsMapping({\n node,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config,\n uiPath,\n showSecondaryLabel,\n onParentsRequested,\n dispatch\n }),\n additionalParents: getAdditionalParents({node, config, entitiesMap, metadata, absoluteImagePath, uiPath})\n});\n\nexport {nodePropsMapping, canDeleteNode, canAddChildForNode};\n","import {createContext} from 'react';\n\nexport const NodeContext = createContext({\n config: {},\n entitiesMap: {},\n onToggleNodeCheckbox: () => {},\n onParentsRequested: () => {},\n checkedNodes: {},\n canSelect: false\n});\n\nNodeContext.displayName = 'NodeContext';\n","import {useState, useCallback, useRef, useEffect} from 'react';\nimport {getEntity} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nexport const useEntityDetails = (entityUri: string) => {\n const [entityDetails, setEntityDetails] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const timerId = useRef(null);\n const safePromise = useSafePromise();\n\n const cancelRequest = useCallback(() => safePromise(Promise.resolve()), [safePromise]);\n\n const showEntityDetails = useCallback(() => {\n timerId.current = setTimeout(() => {\n setIsLoading(true);\n safePromise(getEntity(entityUri))\n .then(setEntityDetails)\n .finally(() => setIsLoading(false));\n }, 1000);\n }, [entityUri, safePromise]);\n\n const hideEntityDetails = useCallback(() => {\n cancelRequest();\n clearTimeout(timerId.current);\n setIsLoading(false);\n setEntityDetails(null);\n }, [cancelRequest]);\n\n useEffect(() => {\n return () => clearTimeout(timerId.current);\n }, []);\n\n return {\n isLoading,\n entityDetails,\n showEntityDetails,\n hideEntityDetails\n };\n};\n","import React, {memo, useCallback, useContext, useEffect, useState, useRef} from 'react';\nimport classnames from 'classnames';\nimport {Avatar as Avatar} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdm, {ui} from '@reltio/mdm-module';\nimport {Popper, ProfileCard} from '@reltio/components';\nimport {identity} from 'ramda';\n\nimport {useStyles} from './styles';\nimport {useCommonStyles} from '../commonStyles';\nimport DEFAULT_ICON from './defaultTypeIcon.png';\nimport MultiParentIcon from './multiParentOverlap.svg';\n\nimport {HierarchyNodeType} from '../../../constants/prop-types';\nimport NodeTitle from '../components/NodeTitle/NodeTitle';\nimport MultiParentBlock from '../components/MultiParentBlock/MultiParentBlock';\nimport RelationDetails from '../components/RelationDetails/RelationDetails';\nimport ActionsBlock from '../components/ActionsBlock/ActionsBlock';\nimport {nodePropsMapping} from './helpers/nodeMappingHelpers';\nimport {NodeContext} from '../nodeContext';\nimport {isNodeChecked, isRelationLoaded} from '../../helpers/nodeHelpers';\nimport PropTypes from 'prop-types';\nimport {useEntityDetails} from './useEntityDetails';\n\nconst onImageLoadFail = (e) => {\n e.target.src = DEFAULT_ICON;\n};\n\nexport const RegularNode = ({node = {}, registerChild, measure = identity}) => {//NOSONAR\n const styles = useStyles();\n const popperAnchor = useRef();\n const commonStyles = useCommonStyles();\n const dispatch = useDispatch();\n const {config, entitiesMap, onToggleNodeCheckbox, checkedNodes, canSelect, onParentsRequested, showSecondaryLabel} =\n useContext(NodeContext);\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const {uri: currentEntityUri} = useSelector(mdm.selectors.getEntity);\n const mode = useSelector(mdm.selectors.getMode);\n const uiPath = useSelector(mdm.selectors.getUIPath);\n\n const {\n title,\n subtitle,\n number,\n icon,\n relation,\n showDetails,\n additionalParents = [],\n showParents,\n isSelectedNode,\n nodeId,\n entityLink,\n viewId,\n entityUri,\n onStartEditing,\n onAddParent,\n onAddChild,\n onToggleRelationDetails,\n onDelete,\n onToggleShowParents\n } = nodePropsMapping({\n node,\n entitiesMap,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config,\n uiPath,\n showSecondaryLabel,\n onParentsRequested,\n dispatch\n });\n\n const {isLoading, entityDetails, showEntityDetails, hideEntityDetails} = useEntityDetails(entityUri);\n const showPopper = Boolean(entityDetails) || isLoading;\n const needLoadAdditionalParents = additionalParents.some((parent) => parent.pending);\n const [showControls, setShowControls] = useState(false);\n const showActionsBlock = useCallback(() => setShowControls(true), []);\n const hideActionsBlock = useCallback(() => setShowControls(false), []);\n const [openActionsMenu, setOpenActionsMenu] = useState(false);\n const showActionsMenu = useCallback(() => setOpenActionsMenu(true), []);\n const hideActionsMenu = useCallback(() => {\n setOpenActionsMenu(false);\n setShowControls(false);\n }, []);\n const hasMultiParents = additionalParents.length > 0;\n const toggleShowParents =\n hasMultiParents && onToggleShowParents ? onToggleShowParents.bind(null, needLoadAdditionalParents) : undefined;\n const toggleNodeCheckbox = useCallback(\n (event) =>\n onToggleNodeCheckbox({\n checked: event.target.checked,\n node\n }),\n [node, onToggleNodeCheckbox]\n );\n const checked = isNodeChecked({node, checkedNodes});\n const onTitleClick = useCallback(() => {\n dispatch(ui.actions.openEntity({uri: entityUri, viewId}));\n }, [viewId, entityUri, dispatch]);\n const showCheckbox = false && canSelect && onDelete; // to move node you should have rights to delete it\n useEffect(measure, [\n showCheckbox,\n hasMultiParents,\n subtitle,\n !!onToggleRelationDetails,\n showDetails,\n number,\n showParents,\n showDetails && isRelationLoaded(relation),\n showParents && needLoadAdditionalParents,\n measure\n ]);\n return (\n <div\n className={styles.wrapper}\n data-node-id={nodeId}\n onMouseEnter={showActionsBlock}\n onMouseLeave={hideActionsBlock}\n ref={registerChild}\n >\n <div ref={popperAnchor} className={commonStyles.container}>\n {showCheckbox ? (\n <Checkbox\n className={classnames(styles.regularNodeCheckbox)}\n checked={checked}\n onChange={toggleNodeCheckbox}\n color=\"primary\"\n />\n ) : (\n <Avatar\n className={classnames(styles.avatar, {[styles.avatarWithMultiParent]: hasMultiParents})}\n src={icon || DEFAULT_ICON}\n onError={onImageLoadFail}\n onClick={toggleShowParents}\n />\n )}\n\n {hasMultiParents && !showCheckbox && (\n <MultiParentIcon className={styles.multiParentIcon} onClick={toggleShowParents} />\n )}\n <div className={commonStyles.title}>\n <NodeTitle\n title={title}\n isSelected={isSelectedNode}\n link={entityLink}\n onClick={onTitleClick}\n onMouseEnter={showEntityDetails}\n onMouseLeave={hideEntityDetails}\n />\n {!!number && <span className={styles.number}>{number}</span>}\n <ActionsBlock\n show={showControls || openActionsMenu}\n className={classnames(styles.actionsBlock, {\n [styles.actionsBlockWithOpenMenu]: openActionsMenu && !checked,\n [styles.actionsBlockForCheckedNode]: openActionsMenu && checked\n })}\n showDetails={showDetails}\n onToggleRelationDetails={relation && onToggleRelationDetails}\n onMenuOpen={showActionsMenu}\n onMenuClose={hideActionsMenu}\n onStartEditing={onStartEditing}\n onAddChild={onAddChild}\n onAddParent={onAddParent}\n onDelete={onDelete}\n />\n </div>\n </div>\n {!showCheckbox && <MultiParentBlock showParents={showParents} additionalParents={additionalParents} />}\n {subtitle && <div className={styles.subtitle}>{subtitle}</div>}\n {onToggleRelationDetails && (\n <RelationDetails showDetails={showDetails} metadata={metadata} relation={relation} />\n )}\n <Popper\n anchorEl={popperAnchor.current}\n className={styles.popper}\n open={showPopper}\n modal={false}\n placement=\"top-start\"\n >\n <ProfileCard entity={entityDetails} variant={isLoading ? 'loading' : 'normal'} />\n </Popper>\n </div>\n );\n};\n\nRegularNode.propTypes = {\n node: HierarchyNodeType,\n registerChild: PropTypes.func,\n measure: PropTypes.func\n};\n\nexport default memo(RegularNode);\n","import PropTypes from 'prop-types';\nimport React, {useMemo} from 'react';\nimport {\n MetadataType,\n RelationTypeType,\n getEntityType,\n getPropWithInheritance,\n getDirectionalLabelFromObject\n} from '@reltio/mdm-sdk';\nimport {RelationTypeSelector} from '@reltio/components';\nimport {ascend, evolve, identity, pipe, prop, propEq, propOr, tap} from 'ramda';\n\nconst getRelationTypesOptions = (relationTypes, isChild, metadata) => {\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 const getEntityTypeWithInheritedIcon = (metadata, entityTypeUri) => {\n const entityType = getEntityType(metadata, entityTypeUri);\n const typeIcon = getPropWithInheritance(metadata, entityType, 'typeIcon');\n return {...entityType, typeIcon};\n };\n return relationTypes\n .map(({uri, label, startObject, endObject}) => ({\n label: {directionalLabel: getDirectionalLabel(isChild ? endObject : startObject), typeLabel: label},\n value: uri,\n startObject: {\n ...startObject,\n objectType: getEntityTypeWithInheritedIcon(metadata, startObject.objectTypeURI)\n },\n endObject: {...endObject, objectType: getEntityTypeWithInheritedIcon(metadata, endObject.objectTypeURI)}\n }))\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\nconst fromEditorValue = (option) => option.value;\n\nconst toEditorValue = (value, relationsTypesOptions) => relationsTypesOptions.find(propEq('value', value));\n\nconst NodeRelationTypeSelector = ({\n value,\n relationTypes = [],\n isChild,\n onChange = identity,\n metadata,\n ...otherProps\n}) => {\n const relationsTypesOptions = useMemo(() => getRelationTypesOptions(relationTypes, isChild, metadata), [\n relationTypes,\n isChild,\n metadata\n ]);\n\n return (\n <RelationTypeSelector\n value={toEditorValue(value, relationsTypesOptions)}\n options={relationsTypesOptions}\n onChange={pipe(fromEditorValue, onChange)}\n {...otherProps}\n />\n );\n};\n\nNodeRelationTypeSelector.propTypes = {\n className: PropTypes.string,\n value: PropTypes.string,\n relationTypes: PropTypes.arrayOf(RelationTypeType),\n isChild: PropTypes.bool,\n metadata: MetadataType,\n onChange: PropTypes.func\n};\n\nexport default NodeRelationTypeSelector;\n","import {__, curry, defaultTo, filter, isNil, map, pipe, reject} from 'ramda';\n\nimport {\n getEndObjectTypeUri,\n getRelationshipTypeUrisFromGraphType,\n getRelationType,\n getStartObjectTypeUri,\n isInHierarchy\n} from '@reltio/mdm-sdk';\n\nexport const isAvailableRelationForRelatedEntity = curry((isChild, relatedEntity, metadata, relationType) => {\n const isRelatedEntityInstanceOf = isInHierarchy(metadata, __, relatedEntity.type);\n const getObjectUri = isChild ? getStartObjectTypeUri : getEndObjectTypeUri;\n return pipe(getObjectUri, isRelatedEntityInstanceOf)(relationType);\n});\n\nexport const getAllAvailableRelationTypes = (isChild, relatedEntity, metadata, graphType) =>\n pipe(\n getRelationshipTypeUrisFromGraphType,\n defaultTo([]),\n map(getRelationType(metadata)),\n reject(isNil),\n filter(isAvailableRelationForRelatedEntity(isChild, relatedEntity, metadata))\n )(graphType);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n editorContainer: {\n width: 'calc(100% - 34px)',\n minWidth: '185px',\n backgroundColor: 'rgba(0,0,0,0.03)',\n padding: '16px 16px 8px 16px'\n },\n dense: {\n marginBottom: 0\n },\n item: {\n marginBottom: '20px'\n },\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end'\n }\n}));\n","import React, {memo, useCallback, useContext, useEffect, useMemo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport PropTypes from 'prop-types';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {allPass, prop, propEq, equals, pipe} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {HierarchyNodeType} from '../../../constants/prop-types';\nimport {NodeContext} from '../nodeContext';\nimport {\n isAvailableRelationBetweenEntities,\n getActivenessAttributes,\n getSuitableEntityTypeUrisForRelationTypes,\n getErrorMessage,\n getGraphType,\n getHierarchyNodeEditorActiveError,\n getLabel,\n getRelationAttributesList,\n getRelationType,\n relationEditorAttributeTypesSelectionStrategy,\n validateHierarchyConnection,\n NODE_EDITING_MODES,\n isEmptyValue\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n AttributesList,\n EntitySelector,\n ErrorWrapper,\n ScrollToErrorContext,\n useDidUpdateEffect,\n useScrollToAttributeError\n} from '@reltio/components';\nimport NodeRelationTypeSelector from '../components/NodeRelationTypeSelector/NodeRelationTypeSelector';\nimport {getGraphTypeConfig, getReverseRelationsConfig} from '../../helpers/configHelpers';\nimport {getAllAvailableRelationTypes} from './helpers';\nimport {nodeApplyEditing, nodeCancelEditing} from '../../helpers/nodeHelpers';\n\nimport {useStyles} from './styles';\n\nconst treeActions = profile.trees.actions;\n\nexport const EditorNode = ({node = {}, measure, registerChild}) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const {relatedEntity, relation: {uri: relationUri} = {}, editingMode, initialConnection} = node;\n const isAddingParent = editingMode === NODE_EDITING_MODES.addingParent;\n const {config} = useContext(NodeContext);\n const viewId = config.id;\n const isReversed = getReverseRelationsConfig(config) || false;\n const isChild = isReversed ? isAddingParent : !isAddingParent;\n\n const connection = useSelector((state) => mdm.selectors.getTreeEditingConnection(state, viewId, relationUri));\n const error = useSelector((state) =>\n getHierarchyNodeEditorActiveError(connection, mdm.selectors.getProfileErrors(state))\n );\n const allErrors = useSelector(mdm.selectors.getProfileErrors);\n\n const {relation, entity} = connection;\n const {attributes, type: relationTypeUri, crosswalks = []} = relation;\n const attributeListEntity = useMemo(\n () => ({\n attributes,\n ...getActivenessAttributes(relation)\n }),\n [attributes, relation]\n );\n const globalSearchRequestOptions = useSelector((state) =>\n mdm.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n );\n const metadata = useSelector(mdm.selectors.getMetadata);\n const mode = useSelector(mdm.selectors.getMode);\n\n const graphTypeUri = getGraphTypeConfig(config);\n const graphType = getGraphType(metadata, graphTypeUri) || {};\n const allAvailableRelationTypes = useMemo(\n () => getAllAvailableRelationTypes(isChild, relatedEntity, metadata, graphType),\n [isChild, relatedEntity, metadata, graphType]\n );\n const availableRelationTypes = useMemo(\n () =>\n entity && entity.uri\n ? allAvailableRelationTypes.filter(\n isAvailableRelationBetweenEntities(isChild, entity, relatedEntity, metadata)\n )\n : allAvailableRelationTypes,\n [entity, allAvailableRelationTypes, isChild, relatedEntity, metadata]\n );\n\n const availableEntityTypeUris = useMemo(\n () =>\n getSuitableEntityTypeUrisForRelationTypes(\n isChild,\n metadata,\n relationTypeUri ? [getRelationType(metadata, relationTypeUri)] : allAvailableRelationTypes\n ),\n [isChild, metadata, relationTypeUri, allAvailableRelationTypes]\n );\n\n const onRelationTypeChange = useCallback(\n (relationTypeUri) => {\n dispatch(treeActions.treeNodeRelationTypeChanged({id: viewId, node, relationTypeUri}));\n },\n [node, viewId, dispatch]\n );\n const onChangeEntity = useCallback(\n (entity) => {\n dispatch(treeActions.treeNodeEntityChanged({id: viewId, node, entity}));\n },\n [node, viewId, dispatch]\n );\n\n useEffect(() => {\n // autoselecting relation type on mount\n if (!relationTypeUri && allAvailableRelationTypes.length === 1) {\n onRelationTypeChange(allAvailableRelationTypes[0].uri);\n }\n }, [relationTypeUri, allAvailableRelationTypes, onRelationTypeChange]);\n\n useDidUpdateEffect(() => {\n // autoselecting relation type on entity change\n if (!relationTypeUri && availableRelationTypes.length >= 1) {\n onRelationTypeChange(availableRelationTypes[0].uri);\n }\n }, [relationTypeUri, entity, availableRelationTypes, onRelationTypeChange]);\n\n useEffect(measure, [\n viewId,\n connection,\n allErrors,\n relationTypeUri,\n allAvailableRelationTypes,\n !!onRelationTypeChange,\n entity,\n availableRelationTypes,\n measure\n ]);\n const relationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relationTypeUri),\n [relationTypeUri, metadata]\n );\n const selectorCompatibleEntity = useMemo(\n () =>\n entity && {\n entityUri: entity.uri,\n entityType: entity.type,\n entityLabel: getLabel(entity.label)\n },\n [entity]\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 validate = useCallback(() => {\n const errors = validateHierarchyConnection(metadata, connection);\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [connection, metadata, dispatch]);\n\n const onCancel = useCallback(() => {\n dispatch(nodeCancelEditing({id: viewId, node}));\n }, [node, viewId, dispatch]);\n\n const onApply = useCallback(() => {\n if (validate()) {\n dispatch(nodeApplyEditing({id: viewId, isReversed, node}));\n }\n }, [node, viewId, isReversed, dispatch, validate]);\n\n const canApply = !equals(initialConnection, connection) && relationTypeUri;\n const errorMessage = getErrorMessage(error);\n const highlightedError = useContext(ScrollToErrorContext);\n const isErrorHighlighted = useMemo(\n () =>\n allPass([\n pipe(prop('uri'), isEmptyValue),\n propEq('parentUri', relationUri),\n propEq('attributeTypeUri', relationTypeUri)\n ])(highlightedError.error),\n [relationUri, relationTypeUri, highlightedError]\n );\n const {ref, errorClassName} = useScrollToAttributeError({\n highlightedError: isErrorHighlighted ? highlightedError : null,\n isSimple: true\n });\n\n return (\n <div className={styles.editorContainer} ref={registerChild}>\n <ReactResizeDetector handleHeight={true} onResize={measure} />\n {allAvailableRelationTypes.length !== 1 && (\n <NodeRelationTypeSelector\n isChild={isChild}\n relationTypes={availableRelationTypes}\n className={styles.item}\n value={relationTypeUri}\n metadata={metadata}\n onChange={onRelationTypeChange}\n />\n )}\n <div ref={ref} className={errorClassName}>\n <ErrorWrapper errorMessage={errorMessage} className={styles.item}>\n <EntitySelector\n key={relationTypeUri}\n className={classnames({[styles.dense]: errorMessage})}\n entity={selectorCompatibleEntity || {}}\n entityTypesUris={availableEntityTypeUris}\n max={config.max || 20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n mode={mode}\n onChange={onChangeEntity}\n metadata={metadata}\n attributeTypesSelectionStrategy={relationEditorAttributeTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </div>\n {relationTypeUri && (\n <AttributesList\n className={styles.item}\n attrTypes={relationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={false}\n crosswalks={crosswalks}\n mode={mode}\n parentUri={relationUri}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n )}\n <div className={styles.actionButtons}>\n <Button onClick={onCancel}>{i18n.text('Cancel')}</Button>\n <Button color=\"primary\" disabled={!canApply} onClick={onApply}>\n {i18n.text('Apply')}\n </Button>\n </div>\n </div>\n );\n};\n\nEditorNode.propTypes = {\n node: HierarchyNodeType,\n registerChild: PropTypes.func,\n measure: PropTypes.func\n};\n\nexport default memo(EditorNode);\n","import React from 'react';\nimport {always, cond, T} from 'ramda';\nimport LoadingNode from './LoadingNode/LoadingNode';\nimport RegularNode from './RegularNode/RegularNode';\nimport {isLoadingNode} from '../../helpers/treeDataProvider';\nimport EditorNode from './EditorNode/EditorNode';\nimport {isEditorNode} from '../helpers/nodeHelpers';\n\nconst NodeTypes = {\n loading: 'loading',\n regular: 'regular',\n editor: 'editor'\n};\n\nconst getNodeType = cond([\n [isEditorNode, always(NodeTypes.editor)],\n [isLoadingNode, always(NodeTypes.loading)],\n [T, always(NodeTypes.regular)]\n]);\n\nexport default class NodesFactory {\n static build(props) {\n const {node} = props;\n const type = getNodeType(node);\n switch (type) {\n case NodeTypes.loading:\n return <LoadingNode {...props} />;\n case NodeTypes.regular:\n return <RegularNode {...props} />;\n case NodeTypes.editor:\n return <EditorNode {...props} />;\n }\n }\n}\n","import PropTypes from 'prop-types';\n\nimport NodesFactory from './NodesFactory';\nimport {HierarchyNodeType} from '../../constants/prop-types';\n\nexport const Node = (props) => NodesFactory.build(props);\n\nNode.propTypes = {\n node: HierarchyNodeType,\n onToggleShowParents: PropTypes.func\n};\n\nexport default Node;\n","import React, {memo, useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {\n getRelationType,\n isEditableMode as checkIsEditableMode,\n isAvailableRelationBetweenEntities\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nimport Tree from '../Tree/Tree';\nimport {TreeType} from '../../constants/prop-types';\nimport Node from '../Node/Node';\nimport {NodeContext} from '../Node/nodeContext';\nimport {TreeThemeContext} from '../Tree/treeThemeContext';\nimport {getShowSecondaryLabelValue, hasLoadingNode, isEditorNode, isNodeChecked} from '../helpers/nodeHelpers';\nimport mdm from '@reltio/mdm-module';\nimport {canAddChildForNode, canDeleteNode} from '../Node/RegularNode/helpers/nodeMappingHelpers';\nimport {getReverseRelationsConfig, getIsSecondaryLabelEnabledFromConfig} from '../helpers/configHelpers';\n\nconst HierarchyPanel = ({\n className,\n config,\n tree = {},\n onChildrenRequested,\n onParentsRequested,\n onTreeChanged,\n onTreeScroll,\n onNodeMoved,\n onToggleNodeCheckbox,\n checkedNodes,\n mode\n}) => {\n const styles = useStyles();\n const isEditableMode = checkIsEditableMode(mode);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const nodeContextValue = useMemo(\n () => ({\n config,\n entitiesMap: tree.entitiesMap,\n onToggleNodeCheckbox,\n checkedNodes,\n canSelect: isEditableMode,\n onParentsRequested,\n showSecondaryLabel: getShowSecondaryLabelValue(\n tree.showSecondaryLabel,\n getIsSecondaryLabelEnabledFromConfig(config)\n )\n }),\n [\n checkedNodes,\n config,\n isEditableMode,\n onToggleNodeCheckbox,\n tree.entitiesMap,\n tree.showSecondaryLabel,\n onParentsRequested\n ]\n );\n\n const treeThemeContextValue = useMemo(\n () => ({\n generateTreeNodeProps: ({node}) => ({\n treeNodeClassName: classnames({\n [styles.checkedNode]: isNodeChecked({node, checkedNodes}),\n [styles.editorNode]: isEditorNode(node)\n })\n })\n }),\n [checkedNodes, styles]\n );\n\n const canDrag = useCallback(\n ({node}) =>\n isEditableMode && !isEditorNode(node) && !hasLoadingNode(node) && canDeleteNode(node, metadata, mode),\n [isEditableMode, metadata, mode]\n );\n const canDrop = useCallback(\n ({nextParent, node}) => {\n const isChild = !getReverseRelationsConfig(config);\n const relatedNode = nextParent === null ? tree.root : nextParent;\n return (\n relatedNode &&\n !relatedNode.loading &&\n canAddChildForNode(config, metadata, relatedNode) &&\n isAvailableRelationBetweenEntities(\n isChild,\n node.entity,\n relatedNode.entity,\n metadata,\n getRelationType(metadata, node.relation.type)\n )\n );\n },\n [config, metadata, tree.root]\n );\n return (\n <div className={classnames(styles.panel, className)}>\n <div className={styles.treeWrapper}>\n <TreeThemeContext.Provider value={treeThemeContextValue}>\n <NodeContext.Provider value={nodeContextValue}>\n <Tree\n NodeRenderer={Node}\n onChange={onTreeChanged}\n canDrag={canDrag}\n canDrop={canDrop}\n root={tree.root}\n scrollToNode={tree.scrollTo}\n onScroll={onTreeScroll}\n onRequestChildren={onChildrenRequested}\n onNodeMoved={onNodeMoved}\n inlineRoot={!!tree.root && isEditorNode(tree.root)}\n />\n </NodeContext.Provider>\n </TreeThemeContext.Provider>\n </div>\n </div>\n );\n};\n\nHierarchyPanel.propTypes = {\n className: PropTypes.string,\n tree: TreeType,\n onChildrenRequested: PropTypes.func,\n onParentsRequested: PropTypes.func,\n onTreeChanged: PropTypes.func,\n onTreeScroll: PropTypes.func,\n onNodeMoved: PropTypes.func,\n onToggleNodeCheckbox: PropTypes.func,\n checkedNodes: PropTypes.object,\n mode: PropTypes.string,\n config: PropTypes.object\n};\n\nexport default memo(HierarchyPanel);\n","import {useCallback, useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {useDidUpdateEffect, usePrevious, useSafePromise} from '@reltio/components';\n\nimport i18n from 'ui-i18n';\nimport {pipe, pick} from 'ramda';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {Entity, getRequestErrorMessage, getTree, hasEntityInTree, updateTreesWithNewEntity} from '@reltio/mdm-sdk';\nimport {prepareTree} from '../../helpers/treeDataProvider';\nimport {showCurrentEntity} from './treeHelpers';\nimport {hasEditorNode} from './nodeHelpers';\nimport mdmModule from '@reltio/mdm-module';\n\nconst treeActions = profile.trees.actions;\n\ntype TreeLoaderProps = {\n entityUri: string;\n id: string;\n graphTypes: string;\n activenessDate: number;\n isReversed: boolean;\n enabled: boolean;\n};\nconst useTreeLoader = ({entityUri, id, graphTypes, activenessDate, isReversed, enabled}: TreeLoaderProps) => {\n const safePromise = useSafePromise({cancelOnUnmount: false});\n const dispatch = useDispatch();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const tree = useSelector((state) => mdm.selectors.getTree(state, id)) || {};\n const {root, isReversed: isCurrentReversed, graphTypes: currentGraphTypes} = tree;\n const previousActivenessDate = usePrevious(activenessDate) || activenessDate;\n const showCurrentEntityDelayed = useCallback(\n () => setTimeout(() => dispatch(showCurrentEntity({id, uri: entityUri})), 100),\n [id, entityUri, dispatch]\n );\n const hasRoot = !!root;\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n useDidUpdateEffect(() => {\n const updatedTrees = updateTreesWithNewEntity(pick(['uri', 'label', 'secondaryLabel', 'type'], entity), {\n [id]: tree\n });\n if (updatedTrees.length) {\n dispatch(treeActions.treeChanged({id, tree: updatedTrees[0].root}));\n }\n }, [entity?.updatedTime]);\n useEffect(() => {\n if (enabled && hasRoot) {\n showCurrentEntityDelayed();\n }\n }, [enabled, showCurrentEntityDelayed, hasRoot]);\n useEffect(() => {\n if (enabled) {\n const createTreeLoadedEvent = (tree) =>\n treeActions.treeLoaded({id, tree, graphTypes, activenessDate, isReversed});\n const treeProcessing = pipe(prepareTree, createTreeLoadedEvent, dispatch);\n const shouldUpdate =\n !hasEntityInTree(root, entityUri) ||\n isCurrentReversed !== isReversed ||\n previousActivenessDate !== activenessDate ||\n currentGraphTypes !== graphTypes ||\n hasEditorNode(root);\n if (shouldUpdate) {\n dispatch(treeActions.treeLoading(id));\n safePromise(getTree({uri: entityUri, graphTypes, activenessDate, isReversed}))\n .then((tree) => treeProcessing({...tree, graphTypes}, metadata))\n .then((_) => showCurrentEntityDelayed())\n .catch((e) => {\n dispatch(\n treeActions.treeLoadedWithError({\n id,\n errorMessage: getRequestErrorMessage(e, i18n.text('Something went wrong'))\n })\n );\n console.warn(e);\n });\n }\n }\n }, [\n entityUri,\n root,\n graphTypes,\n activenessDate,\n id,\n metadata,\n isReversed,\n enabled,\n safePromise,\n dispatch,\n showCurrentEntityDelayed,\n isCurrentReversed,\n currentGraphTypes,\n previousActivenessDate\n ]);\n};\n\nexport default useTreeLoader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {GraphTypeType} from '@reltio/mdm-sdk';\nimport {SelectorWithOnlyOptionAutoSelect} from '@reltio/components';\n\nconst GraphTypeSelector = ({value, onChange, graphTypes, className}) => {\n return (\n <SelectorWithOnlyOptionAutoSelect\n classes={{\n root: className\n }}\n value={value}\n onChange={onChange}\n options={graphTypes.map(({uri, label}) => ({value: uri, label}))}\n />\n );\n};\n\nGraphTypeSelector.propTypes = {\n value: PropTypes.string,\n onChange: PropTypes.func,\n graphTypes: PropTypes.arrayOf(GraphTypeType),\n className: PropTypes.string\n};\n\nexport default GraphTypeSelector;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {pipe} from 'ramda';\nimport {ActivenessDateType} from '../../constants/prop-types';\nimport {DateEditor} from '@reltio/components';\n\nconst ActivenessDateControl = ({value, onChange, ...otherProps}) => {\n const handleChange = pipe((date) => date && date.getTime(), onChange);\n\n return (\n <DateEditor\n value={value}\n label={i18n.text('Effective date')}\n onChange={handleChange}\n margin=\"dense\"\n {...otherProps}\n />\n );\n};\n\nActivenessDateControl.propTypes = {\n value: ActivenessDateType,\n onChange: PropTypes.func\n};\n\nexport default ActivenessDateControl;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst popupHorizontalPadding = '23px';\n\nexport const useStyles = makeStyles(() => ({\n triggerButton: {\n minWidth: 0,\n color: 'rgba(0,0,0,0.54)',\n width: '36px'\n },\n popupContent: {\n paddingTop: '19px',\n paddingBottom: '23px',\n paddingLeft: popupHorizontalPadding,\n paddingRight: popupHorizontalPadding,\n minWidth: '245px',\n maxWidth: '308px',\n width: '40%'\n },\n title: {\n marginBottom: '30px'\n },\n sortControls: {\n display: 'flex',\n alignItems: 'center'\n },\n sortSelectorRoot: {\n flex: 1,\n padding: '13px 16px',\n fontSize: '0.85rem'\n },\n sortSelectorMenuItem: {\n fontSize: '0.85rem'\n },\n sortOrderButton: {\n flexShrink: 0,\n margin: '0 8px 0 7px'\n },\n checkboxControlRoot: {\n marginTop: '6px',\n marginLeft: '-12px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n },\n divider: {\n backgroundColor: 'rgba(0,0,0,0.1)',\n margin: `19px -${popupHorizontalPadding}`\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\nimport {DropDownEditor, SmallIconButtonWithTooltip, withTooltip} from '@reltio/components';\nimport {TREE_SORT_FIELD_VALUES, TREE_SORT_ORDER_VALUES} from '@reltio/mdm-sdk';\n\nexport const FormControlLabelWithTooltip = withTooltip(FormControlLabel);\n\nconst SORTING_OPTIONS = [\n {\n label: i18n.text('Relationship type label'),\n value: TREE_SORT_FIELD_VALUES.relationTypeLabel\n },\n {\n label: i18n.text('Entity label'),\n value: TREE_SORT_FIELD_VALUES.entityLabel\n }\n];\n\nconst FilterSortButton = ({\n className,\n sortField,\n sortOrder,\n onSort,\n showSecondaryLabel,\n showSecondaryLabelDisabledReason,\n onShowSecondaryLabelChange\n}) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const isAsc = sortOrder === TREE_SORT_ORDER_VALUES.asc;\n\n const togglePopup = () => setIsOpen((open) => !open);\n const toggleSortOrder = () => {\n onSort({\n sortField,\n sortOrder: isAsc ? TREE_SORT_ORDER_VALUES.desc : TREE_SORT_ORDER_VALUES.asc\n });\n };\n\n const changeSortField = (newSortField) => {\n onSort({\n sortField: newSortField,\n sortOrder\n });\n };\n\n return (\n <>\n <Button ref={buttonRef} classes={{root: classnames(styles.triggerButton, className)}} onClick={togglePopup}>\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {onShowSecondaryLabelChange && (\n <>\n <Typography className={styles.viewOptionsTitle} variant=\"h6\">\n {i18n.text('View options')}\n </Typography>\n <FormControlLabelWithTooltip\n tooltipTitle={showSecondaryLabelDisabledReason}\n showForDisabled={!!showSecondaryLabelDisabledReason}\n classes={{\n root: styles.checkboxControlRoot,\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showSecondaryLabel || false}\n onChange={(e) => onShowSecondaryLabelChange(e.target.checked)}\n />\n }\n label={i18n.text('Display secondary label')}\n disabled={!!showSecondaryLabelDisabledReason}\n />\n <Divider className={styles.divider} />\n </>\n )}\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Sort by')}\n </Typography>\n <div className={styles.sortControls}>\n <DropDownEditor\n entries={SORTING_OPTIONS}\n TextFieldProps={{variant: 'filled'}}\n classes={{\n root: styles.sortSelectorRoot,\n menuItem: styles.sortSelectorMenuItem\n }}\n fullWidth\n disableUnderline\n value={sortField}\n onChange={changeSortField}\n MenuProps={{getContentAnchorEl: null, anchorOrigin: {vertical: 'bottom', horizontal: 'left'}}}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isAsc ? i18n.text('Ascending') : i18n.text('Descending')}\n icon={isAsc ? ArrowUpwardIcon : ArrowDownwardIcon}\n onClick={toggleSortOrder}\n className={styles.sortOrderButton}\n size=\"L\"\n />\n </div>\n </Popover>\n </>\n );\n};\n\nFilterSortButton.propTypes = {\n className: PropTypes.string,\n sortField: PropTypes.string,\n sortOrder: PropTypes.string,\n onSort: PropTypes.func,\n showSecondaryLabel: PropTypes.bool,\n showSecondaryLabelDisabledReason: PropTypes.string,\n onShowSecondaryLabelChange: PropTypes.func\n};\n\nexport default FilterSortButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n text: {\n fontSize: '12px',\n lineHeight: '14px',\n letterSpacing: 0,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n textContainer: {\n maxWidth: 'calc(100% - 13px)'\n },\n separator: {\n marginLeft: '4px',\n marginRight: '4px'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\n\nimport {Breadcrumbs as MUIBreadcrumbs} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\nconst Breadcrumbs = ({items = [], ...otherProps}) => {\n const styles = useStyles();\n\n const renderItem = (item, index, items) => {\n const {label, href, onClick} = item;\n const color = index === items.length - 1 ? 'textPrimary' : 'textSecondary';\n\n return onClick || href ? (\n <Link key={index} color={color} classes={{root: styles.text}} href={href} onClick={onClick}>\n {label}\n </Link>\n ) : (\n <Typography key={index} href={href} color={color} classes={{root: styles.text}}>\n {label}\n </Typography>\n );\n };\n\n return (\n <MUIBreadcrumbs\n aria-label={i18n.text('Breadcrumb')}\n expandText={i18n.text('Show path')}\n classes={{li: styles.textContainer, separator: classnames(styles.text, styles.separator)}}\n {...otherProps}\n >\n {items.map(renderItem)}\n </MUIBreadcrumbs>\n );\n};\n\nconst BreadcrumbsType = PropTypes.shape({\n label: PropTypes.string.isRequired,\n href: PropTypes.string,\n onClick: PropTypes.func\n});\n\nBreadcrumbs.propTypes = {\n items: PropTypes.arrayOf(BreadcrumbsType)\n};\n\nexport default Breadcrumbs;\n","import {anyPass, filter, has, isEmpty, map, pick, pipe, reject} from 'ramda';\nimport mdm, {profile} from '@reltio/mdm-module';\n\nconst treeActions = profile.trees.actions;\n\nconst fieldsToSave = ['showSecondaryLabel'];\n\nconst getStateToSave = pipe(\n filter(anyPass([has('root'), ...fieldsToSave.map((field) => has(field))])),\n map(pick(fieldsToSave)),\n reject(isEmpty)\n);\n\nexport const saveTreesPreferences = (id) => (dispatch, getState) => {\n const store = getState();\n const trees = mdm.selectors.getTrees(store);\n const state = getStateToSave(trees);\n dispatch(\n treeActions.treesStateSaved({\n id,\n state\n })\n );\n};\n","import {useEffect} from 'react';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {isTempUri} from '@reltio/mdm-sdk';\nimport {prepareTree} from '../../helpers/treeDataProvider';\nimport {pipe} from 'ramda';\n\nconst treeActions = profile.trees.actions;\n\ntype NewEntityTreeProps = {\n entityUri: string;\n id: string;\n graphTypes: string;\n activenessDate: number;\n isReversed: boolean;\n};\n\nconst useNewEntityTree = ({id, entityUri, graphTypes, activenessDate, isReversed}: NewEntityTreeProps) => {\n const dispatch = useDispatch();\n const currentModifiedEntitySelector = (store) => mdm.selectors.getModifiedEntity(store, entityUri);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const modifiedEntity = useSelector(currentModifiedEntitySelector);\n const {root} = useSelector((state) => mdm.selectors.getTree(state, id)) || {};\n\n useEffect(() => {\n const needCreateTreeForNewEntity = modifiedEntity && isTempUri(entityUri) && root?.entity?.uri !== entityUri;\n if (needCreateTreeForNewEntity) {\n const createTreeLoadedEvent = (tree) =>\n treeActions.treeLoaded({id, tree, graphTypes, activenessDate, isReversed});\n const treeProcessing = pipe(prepareTree, createTreeLoadedEvent, dispatch);\n treeProcessing(\n {\n root: {\n entity: modifiedEntity,\n total: 0\n },\n graphTypes\n },\n metadata\n );\n }\n }, [activenessDate, dispatch, entityUri, graphTypes, id, isReversed, metadata, modifiedEntity, root]);\n};\n\nexport default useNewEntityTree;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n view: {\n width: '100%'\n },\n linearIndicator: {\n top: '42px'\n },\n filtersBar: {\n paddingLeft: '24px',\n display: 'flex',\n alignItems: 'center',\n marginTop: '2px',\n marginBottom: '12px',\n height: '46px'\n },\n errorMessage: {\n fontSize: '13px',\n marginLeft: '24px',\n marginRight: '16px',\n lineHeight: '1.4',\n color: theme.palette.text.secondary\n },\n activenessDate: {\n flex: 1,\n margin: 0\n },\n filterSortButton: {\n flexShrink: 0,\n margin: '0 6px 0 12px'\n },\n breadcrumbs: {\n padding: '8px 24px',\n backgroundColor: 'rgba(0,0,0,0.03)'\n },\n graphTypeSelector: {\n margin: '0 10px 15px 24px',\n overflow: 'hidden'\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport {omit, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport HierarchyViewHeader from './HierarchyViewHeader/HierarchyViewHeader';\nimport HierarchyPanel from './HierarchyPanel/HierarchyPanel';\nimport {BasicView, LinearLoadIndicator} from '@reltio/components';\nimport {useDispatch} from 'react-redux';\nimport {profile, ui} from '@reltio/mdm-module';\nimport {\n hasEntityTypesWithSecondaryLabelPattern,\n loadChildren,\n loadParents,\n scrollToTreeTop,\n showCurrentEntity\n} from './helpers/treeHelpers';\nimport useTreeLoader from './helpers/useTreeLoader';\nimport GraphTypeSelector from './GraphTypeSelector/GraphTypeSelector';\nimport ActivenessDateControl from './ActivenessDateControl/ActivenessDateControl';\nimport {\n createRelationTypesLabelsMap,\n debounce,\n Entity,\n getGraphTypesForEntityType,\n getLabel,\n getPathByEntityUri,\n HierarchyTreeViewConfig,\n isTempUri,\n isViewMode,\n Metadata,\n Mode,\n Tree\n} from '@reltio/mdm-sdk';\nimport FilterSortButton from './FilterSortButton/FilterSortButton';\nimport {\n getReverseRelationsConfig,\n getIsSecondaryLabelEnabledFromConfig,\n getValidatedSortFieldFromConfig,\n getValidatedSortOrderFromConfig\n} from './helpers/configHelpers';\nimport Breadcrumbs from './Breadcrumbs/Breadcrumbs';\nimport {saveTreesPreferences} from './helpers/saveStateHelpers';\nimport {getShowSecondaryLabelValue} from './helpers/nodeHelpers';\nimport useNewEntityTree from './helpers/useNewEntityTree';\n\nimport {useStyles} from './styles';\n\nconst treeActions = profile.trees.actions;\nconst PREFERENCES_UPDATE_DEBOUNCE_INTERVAL = 500;\n\ntype Props = {\n config: HierarchyTreeViewConfig;\n tree: Tree;\n metadata: Metadata;\n entity: Entity;\n mode: Mode;\n className?: string;\n};\nconst HierarchyView = ({config, tree, metadata, entity = {} as Entity, mode, className}: Props) => {\n const {id, caption: title, graph: graphConfig, showPath} = config;\n const {uri: entityUri, type: entityTypeUri} = entity;\n const initialActivenessDate = useRef(Date.now());\n const {\n activenessDate = initialActivenessDate.current,\n sortField,\n sortOrder,\n loading,\n errorMessage,\n showSecondaryLabel\n } = tree || {};\n const isReversed = getReverseRelationsConfig(config);\n const isSecondaryLabelEnabled = getIsSecondaryLabelEnabledFromConfig(config);\n const showSecondaryLabelValue = getShowSecondaryLabelValue(showSecondaryLabel, isSecondaryLabelEnabled);\n\n const [currentGraphType, setCurrentGraphType] = useState(graphConfig.type);\n const graphTypes = useMemo(() => {\n getGraphTypesForEntityType(metadata, entityTypeUri);\n //remove me\n return [];\n }, [metadata, entityTypeUri]);\n const hasSecondaryLabelPattern = hasEntityTypesWithSecondaryLabelPattern(metadata, currentGraphType);\n\n const dispatch = useDispatch();\n\n const onTreeSort = useCallback(\n ({sortField, sortOrder}) => {\n dispatch(\n treeActions.treeSorted({\n id,\n typesLabelsMap: createRelationTypesLabelsMap(metadata),\n sortField,\n sortOrder\n })\n );\n dispatch(scrollToTreeTop(id));\n },\n [id, metadata, dispatch]\n );\n\n const savePreferences = useCallback(\n debounce(() => dispatch(saveTreesPreferences(id)), PREFERENCES_UPDATE_DEBOUNCE_INTERVAL),\n [id, dispatch]\n );\n\n const onShowSecondaryLabelChange = useCallback(\n (show) => {\n dispatch(treeActions.treeSecondaryLabelShown({id, show}));\n savePreferences();\n },\n [id, dispatch, savePreferences]\n );\n\n useEffect(() => {\n if (!sortField || !sortOrder) {\n onTreeSort({\n sortField: getValidatedSortFieldFromConfig(config),\n sortOrder: getValidatedSortOrderFromConfig(config)\n });\n }\n }, [onTreeSort, sortField, sortOrder, config]);\n\n useTreeLoader({\n id,\n entityUri,\n graphTypes: currentGraphType,\n activenessDate,\n isReversed,\n enabled: entityUri && isViewMode(mode) && !isTempUri(entityUri)\n });\n useNewEntityTree({\n id,\n entityUri,\n graphTypes: currentGraphType,\n activenessDate,\n isReversed\n });\n const onChildrenRequested = useCallback(\n (parent) =>\n dispatch(\n loadChildren({\n parentUri: parent.entity.uri,\n parentId: parent.nodeId,\n graphTypes: currentGraphType,\n activenessDate,\n id,\n isReversed\n })\n ),\n [currentGraphType, activenessDate, id, dispatch, isReversed]\n );\n const onParentsRequested = useCallback(\n (node) =>\n dispatch(loadParents({uri: node.entity.uri, graphTypes: currentGraphType, activenessDate, id, isReversed})),\n [currentGraphType, activenessDate, id, isReversed, dispatch]\n );\n const onTreeChanged = useCallback(\n (tree) => {\n dispatch(treeActions.treeChanged({id, tree}));\n },\n [dispatch, id]\n );\n const onTreeActivenessDateChange = useCallback(\n (activenessDate) => {\n dispatch(treeActions.activenessDateChanged({id, activenessDate}));\n },\n [dispatch, id]\n );\n const onScrollToCurrentEntity = useCallback(\n (_) => {\n dispatch(showCurrentEntity({id, uri: entityUri}));\n },\n [dispatch, id, entityUri]\n );\n\n const onNodeMoved = useCallback(\n (movedNodeInfo) => {\n const {node, nextParentNode} = movedNodeInfo;\n const {entity: newParent} = nextParentNode || {};\n const {relation, entity} = node;\n if (relation) {\n dispatch(treeActions.treeRelationRepointed({entity, relation, newParent, isReversed}));\n } else {\n console.error('relation not found:' + JSON.stringify(movedNodeInfo));\n }\n },\n [dispatch, isReversed]\n );\n\n const [checkedNodes, setCheckedNodes] = useState({});\n const onToggleNodeCheckbox = useCallback(({checked, node}) => {\n if (checked) {\n setCheckedNodes((checkedNodes) => ({...checkedNodes, [node.nodeId]: node}));\n } else {\n setCheckedNodes(omit([node.nodeId]));\n }\n }, []);\n const openGraph = useCallback(() => {\n dispatch(ui.actions.openGraph({viewId: id, graphType: currentGraphType, entityUri}));\n }, [dispatch, id, currentGraphType, entityUri]);\n\n const clearCheckedNodes = useCallback(() => setCheckedNodes({}), []);\n useEffect(clearCheckedNodes, [mode]);\n\n const styles = useStyles();\n const nodePath = useMemo(\n () =>\n getPathByEntityUri((tree || {}).root, entityUri).map((node) => ({\n label: getLabel(path(['entity', 'label'], node))\n })),\n [tree, entityUri]\n );\n\n return (\n <BasicView className={classnames(styles.view, className)}>\n <HierarchyViewHeader\n title={title}\n onScrollToCurrentEntity={onScrollToCurrentEntity}\n entityLabel={getLabel(entity.label)}\n onGraphOpen={openGraph}\n disabled={loading}\n />\n {loading && <LinearLoadIndicator className={styles.linearIndicator} />}\n {graphTypes.length > 0 && (\n <GraphTypeSelector\n className={styles.graphTypeSelector}\n value={currentGraphType}\n onChange={setCurrentGraphType}\n graphTypes={graphTypes}\n />\n )}\n <div className={styles.filtersBar}>\n <ActivenessDateControl\n className={styles.activenessDate}\n value={activenessDate}\n onChange={onTreeActivenessDateChange}\n fullWidth\n />\n <FilterSortButton\n sortField={sortField}\n sortOrder={sortOrder}\n className={styles.filterSortButton}\n onSort={onTreeSort}\n showSecondaryLabel={showSecondaryLabelValue}\n onShowSecondaryLabelChange={isSecondaryLabelEnabled ? onShowSecondaryLabelChange : undefined}\n showSecondaryLabelDisabledReason={\n !hasSecondaryLabelPattern\n ? i18n.text(\n \"Entity types in this hierarchy don't have any secondary label pattern defined.\"\n )\n : ''\n }\n />\n </div>\n {showPath && nodePath.length > 0 && <Breadcrumbs items={nodePath} className={styles.breadcrumbs} />}\n {!errorMessage ? (\n <HierarchyPanel\n config={config}\n tree={tree}\n onTreeChanged={onTreeChanged}\n mode={mode}\n onNodeMoved={onNodeMoved}\n onParentsRequested={onParentsRequested}\n onChildrenRequested={onChildrenRequested}\n onToggleNodeCheckbox={onToggleNodeCheckbox}\n checkedNodes={checkedNodes}\n />\n ) : (\n <Typography className={styles.errorMessage}>{errorMessage}</Typography>\n )}\n </BasicView>\n );\n};\n\nexport default HierarchyView;\n","import HierarchyView from './HierarchyView';\nimport mdm from '@reltio/mdm-module';\nimport {connect} from 'react-redux';\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n tree: mdm.selectors.getTree(state, ownProps.config.id),\n total: mdm.selectors.getTreeTotal(state, ownProps.config.id),\n entity: mdm.selectors.getEntity(state),\n metadata: mdm.selectors.getMetadata(state),\n mode: mdm.selectors.getMode(state)\n };\n};\nexport default connect(mapStateToProps, undefined)(HierarchyView);\n","import MomentUtils from '@date-io/moment';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport HierarchyView from './HierarchyView';\n\nimport {StylesProvider, createGenerateClassName} from '@material-ui/core/styles';\n\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {Provider} from 'react-redux';\nimport {HierarchyTreeViewConfig} from '@reltio/mdm-sdk';\nimport {identity} from 'ramda';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {Store} from 'redux';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'hierarchyTree',\n disableGlobal: true\n});\n\ntype Props = {\n config: HierarchyTreeViewConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n className: string;\n};\n\nconst HierarchyTreeView = ({config, store, onResize = identity, className}: Props) => (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <HierarchyView config={config} className={className} />}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n);\n\nexport default HierarchyTreeView;\n","import React from 'react';\nimport {AttributesView} from '@reltio/components';\nimport {AttributeViewConfig} from '@reltio/mdm-sdk';\n\ntype ProfileAttributesViewProps = {\n config: AttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileAttributesView = ({className, config}: ProfileAttributesViewProps) => {\n return (\n <AttributesView\n className={className}\n caption={config.caption}\n excludeUris={config.excludeUris}\n includeUris={config.includeUris}\n attributesCount={config.attributesCount}\n pinnedAttributes={config.pinnedAttributes}\n />\n );\n};\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\n\nexport const SingleAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n showInactive?: boolean;\n toggleShowInactive?: (checked: boolean) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n attributeType: AttributeType;\n totalNonVisibleValues: number;\n nonVisibleValues: AttributeValue[];\n }>(null);\n\nSingleAttributeContext.displayName = 'SingleAttributeContext';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n triggerButton: {\n minWidth: 0,\n color: 'rgba(0,0,0,0.54)',\n width: '36px'\n },\n popupContent: {\n paddingTop: '19px',\n paddingBottom: '23px',\n paddingLeft: '23px',\n paddingRight: '23px',\n maxWidth: '180px',\n width: '40%'\n },\n checkboxControlRoot: {\n marginTop: '6px',\n marginLeft: '-12px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\n\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const {showInactive, toggleShowInactive} = useContext(SingleAttributeContext);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n return (\n <>\n <Button ref={buttonRef} classes={{root: classnames(styles.triggerButton, className)}} onClick={togglePopup}>\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n root: styles.checkboxControlRoot,\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive}\n onChange={(e) => toggleShowInactive(e.target.checked)}\n />\n }\n label={i18n.text('Show inactive values')}\n />\n </Popover>\n </>\n );\n};\n\nexport default FilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 4px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n },\n ovIcon: {\n marginTop: '2px',\n marginLeft: '5px'\n }\n}));\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {FacetViewHeader, HideOnShrink, ExpandableSearchInput, VerticalDivider, OvIcon} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport FilterButton from '../FilterButton/FilterButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n caption: string;\n totalVisibleValues: number;\n showInactiveValuesMenu: boolean;\n};\n\nexport const SingleAttributeHeader = ({caption, totalVisibleValues, showInactiveValuesMenu}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, setSearchQuery, setPage, totalNonVisibleValues, nonVisibleValues, attributeType} = useContext(\n SingleAttributeContext\n );\n\n const handleChangeSearchQuery = (query: string) => {\n setSearchQuery(query);\n setPage(0);\n };\n\n return (\n <FacetViewHeader title={caption} className={styles.root}>\n <HideOnShrink widthToHide={500}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {i18n.number(totalVisibleValues)}{' '}\n {totalVisibleValues === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n </HideOnShrink>\n {\n <OvIcon\n nonOvTotal={totalNonVisibleValues}\n className={styles.ovIcon}\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n />\n }\n <ExpandableSearchInput query={searchQuery} onChange={handleChangeSearchQuery} />\n {showInactiveValuesMenu && <FilterButton />}\n </FacetViewHeader>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 -16px 8px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n ovFalse: theme.inactive,\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px 8px 0'\n }\n}));\n","import {equals, filter, identity, is, lensPath, omit, over, pipe, unless} from 'ramda';\nimport {\n AttributeValue,\n cleanAttributesWith,\n Entity,\n findAttributeValuesByTypeUri,\n getAttributeSource,\n getLastUriPart,\n isOv,\n Metadata,\n utils\n} from '@reltio/mdm-sdk';\n\nexport const getAttributeNameFromAttributeUri = getLastUriPart;\n\nexport const search = (value: AttributeValue['value'], searchQuery: string) => {\n switch (typeof value) {\n case 'object':\n return Object.values(value).some((value: AttributeValue[]) => {\n return value.some(({value}) => {\n return search(value, searchQuery);\n });\n });\n default:\n return utils.strings.search(String(value), searchQuery);\n }\n};\n\ntype Config = {\n metadata: Metadata;\n entity: Entity;\n attributeTypeUri: string;\n defaultMaxValues?: number;\n offset?: number;\n searchQuery?: string;\n};\n\nexport const getPagedLocalEntity = async ({\n metadata,\n entity,\n attributeTypeUri,\n defaultMaxValues = Infinity,\n offset = 0,\n searchQuery = ''\n}: Config) => {\n const values = pipe(\n findAttributeValuesByTypeUri,\n filter(({value}) => search(value, searchQuery))\n )(metadata, entity, attributeTypeUri);\n const ovValues = filter(isOv, values);\n\n return {\n [getAttributeSource(attributeTypeUri)]: {\n [getAttributeNameFromAttributeUri(attributeTypeUri)]: ovValues.slice(offset, offset + defaultMaxValues),\n paging: {\n [attributeTypeUri]: {\n totalOvValues: ovValues.length,\n totalValues: values.length\n }\n }\n }\n };\n};\n\nexport const areValuesEqual = (value1: AttributeValue, value2: AttributeValue): boolean => {\n const cleanser =\n is(Object, value1.value) || is(Object, value2.value)\n ? over(\n lensPath(['value']),\n cleanAttributesWith({\n valueTransformer: unless(isOv, omit(['value'])),\n deleteEmptyComplex: true\n })\n )\n : identity;\n return equals(cleanser(value1), cleanser(value2));\n};\n","import React, {useCallback, useContext, useRef} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, cond, map, pathOr, pipe, prop, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {CardinalityMessage, EditableAttribute, ErrorMessage, ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n AttributeValue,\n checkCanCreateAttribute,\n createNewAttribute,\n Entity,\n getAttributeOwnError,\n getAttributePagerActiveTypeErrorMessage,\n getAttributeSource,\n isComplexAttribute,\n isEmptyValue,\n isOv,\n isTempUri,\n AttributeItem\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport {areValuesEqual} from '../../../hooks/helpers';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n parentUri: string;\n showInactive: boolean;\n noDataText: string;\n};\n\nconst emptyArray = [];\n\nexport const SingleAttributeEditableContent = ({values, attributeType, parentUri, showInactive, noDataText}: Props) => {\n const styles = useStyles();\n\n const {uri: attributeTypeUri, required: isRequired, cardinality, name} = attributeType;\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType)\n );\n const errorMessage = useSelector((state) =>\n getAttributePagerActiveTypeErrorMessage(parentUri, attributeType, mdmModule.selectors.getProfileErrors(state))\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n const attributeSource = getAttributeSource(attributeType);\n const entityValuesUris: string[] = pipe(pathOr(emptyArray, [attributeSource, name]), map(prop('uri')))(entity);\n const modifiedEntityValues: AttributeValue[] = pathOr(emptyArray, [attributeSource, name], modifiedEntity);\n const modifiedEntityValuesUris: string[] = modifiedEntityValues.map(prop('uri'));\n const showEmptyEditors = isTempUri(entity.uri);\n\n const emptyEditorValue = useRef<AttributeValue>(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const isModifiedEntityValuesEmpty = isEmptyValue(modifiedEntityValues);\n const showEmpty = isRequired && isModifiedEntityValuesEmpty;\n\n const newValues = showEmpty\n ? [emptyEditorValue.current]\n : modifiedEntityValues.filter(pipe(prop('uri'), isTempUri));\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n const onAdd = useCallback(() => {\n const attribute: AttributeItem = {\n parentUri,\n attributeType\n };\n\n return onAddAttributes(\n showEmpty && !isComplexAttribute(attributeType.type) ? [attribute, attribute] : [attribute]\n );\n }, [onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n\n const commonProps = {\n attributeType: attributeType,\n errors,\n crosswalks: modifiedEntity.crosswalks,\n mode,\n onAddAttributes,\n onChangeAttribute,\n onDeactivateError,\n showNonOv: showInactive\n };\n const isEmptyAttributeList = newValues.length === 0 && values.length === 0;\n return (\n <div>\n <CardinalityMessage cardinality={cardinality} />\n <ErrorMessage message={errorMessage} />\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {newValues.map((value, idx) => (\n <EditableAttribute\n key={value.uri}\n {...commonProps}\n attributeValue={value}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n ownError={getAttributeOwnError(value, idx, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n />\n ))}\n {newValues.length > 0 && values.length > 0 && <Divider className={styles.divider} />}\n {values.map((originalValue) => {\n const modifiedEntityValue = modifiedEntityValues.find(propEq('uri', originalValue.uri));\n const value = modifiedEntityValue || originalValue;\n const deleted = entityValuesUris.includes(value.uri) && !modifiedEntityValuesUris.includes(value.uri);\n const edited = !deleted && modifiedEntityValue && !areValuesEqual(modifiedEntityValue, originalValue);\n const state = cond([\n [always(deleted), always('deleted')],\n [always(edited), always('edited')]\n ])();\n return (\n <div key={value.uri} className={classnames({[styles.ovFalse]: !isOv(value)})}>\n <EditableAttribute\n {...commonProps}\n attributeValue={value}\n ownError={getAttributeOwnError(value, null, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n state={state}\n />\n </div>\n );\n })}\n {isEmptyAttributeList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n","import React from 'react';\nimport {ReadOnlyAttribute} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n showInactive: boolean;\n};\n\nexport const SingleAttributeReadableContent = ({values, attributeType, showInactive}: Props) => {\n return (\n <>\n {values.map((value) => {\n return (\n <ReadOnlyAttribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showInactive}\n />\n );\n })}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n },\n pagination: {\n flexGrow: 0,\n flexShrink: 0\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {PivotingAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {BasicView, BasicTablePagination, LinearLoadIndicator, PivotingAttributeContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SingleAttributeHeader} from '../SingleAttributeHeader/SingleAttributeHeader';\nimport {SingleAttributeEditableContent} from '../SingleAttributeEditableContent/SingleAttributeEditableContent';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {SingleAttributeReadableContent} from '../SingleAttributeReadableContent/SingleAttributeReadableContent';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const SingleAttributeView = ({config, className}: Props) => {\n const {caption, max, showInactiveValuesMenu} = config;\n\n const styles = useStyles();\n\n const {values, totalVisibleValues, page, setPage, isLoading, hasPaging, attributeType, showInactive} = useContext(\n SingleAttributeContext\n );\n\n const entityUri = useSelector(mdm.selectors.getEntityUri);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n const pivotingAttributes: PivotingAttribute[] = useSelector(mdm.selectors.getPivotingAttributes);\n\n const hasValues = values.length !== 0;\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const renderContent = () => {\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (attributeType) {\n if (isViewMode && hasValues) {\n const props = {\n values,\n attributeType,\n showInactive\n };\n return <SingleAttributeReadableContent {...props} />;\n } else if (isEditableMode) {\n const props = {\n values,\n attributeType,\n parentUri: entityUri,\n showInactive,\n noDataText\n };\n return <SingleAttributeEditableContent {...props} />;\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n\n return (\n <PivotingAttributeContext.Provider value={pivotingAttributes}>\n <BasicView className={classnames(styles.root, className)}>\n <SingleAttributeHeader\n totalVisibleValues={totalVisibleValues}\n caption={caption}\n showInactiveValuesMenu={showInactiveValuesMenu}\n />\n <Box className={styles.content}>{renderContent()}</Box>\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n page={page}\n rowsPerPage={max}\n rowsPerPageOptions={[]}\n onChangePage={setPage}\n classes={{root: styles.pagination}}\n />\n )}\n </BasicView>\n </PivotingAttributeContext.Provider>\n );\n};\n","import {useCallback, useState, useEffect, useMemo, useRef} from 'react';\nimport {ifElse, prop, always, has, pathOr, path, partition, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n isDataTenantEntity,\n getPagedEntity,\n getAttributeSource,\n AttributeValue,\n SearchFilter,\n findAttributeTypeByUri,\n isReadableAttribute,\n isTempUri,\n isOv,\n findAttributeValues,\n isFirstLevelAttributeUri,\n SingleAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useSafePromise, useDidUpdateEffect} from '@reltio/components';\nimport {getPagedLocalEntity, getAttributeNameFromAttributeUri} from './helpers';\n\ntype Params = {\n filters?: SearchFilter[];\n searchQuery?: string;\n sorting?: {\n field: string;\n order: string;\n };\n page: number;\n showInactive: boolean;\n};\n\nexport const useSingleAttributeLoader = (\n config: SingleAttributeViewConfig,\n params: Params,\n canShowHistoryDiff: boolean\n) => {\n const {attributeUri, max = 15} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const [values, setValues] = useState([]);\n const [paging, setPaging] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n const attributeValuesRef = useRef<AttributeValue[]>(null);\n\n const dispatch = useDispatch();\n const apiPath = useSelector(mdm.selectors.getApiPath);\n const tenant = useSelector(mdm.selectors.getTenant);\n const entitySelector = canShowHistoryDiff ? mdm.selectors.getEntityWithDiff : mdm.selectors.getEntityWithoutDiff;\n const entity = useSelector(entitySelector);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const diff = useSelector(mdm.selectors.getHistoryDiff);\n\n const parentUri = entity.uri;\n const attributeTypeName = getAttributeNameFromAttributeUri(attributeUri);\n const attributeTypeSource = getAttributeSource(attributeUri);\n attributeValuesRef.current = findAttributeValues(entity, parentUri, attributeTypeName);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const {globalFilter} = useSelector(mdm.selectors.getGlobalSearchRequestOptions);\n const {showInactive} = params;\n const loadAttributes = useCallback(() => {\n if (\n attributeType &&\n isReadableAttribute(attributeType) &&\n !isTempUri(parentUri) &&\n isFirstLevelAttributeUri(attributeUri)\n ) {\n setIsLoading(true);\n const {page, showInactive, ...rest} = params;\n const request = isDataTenantEntity(entity) || isHistoryModeEnabled ? getPagedLocalEntity : getPagedEntity;\n safePromise(\n request({\n metadata,\n entity,\n apiPath,\n tenant,\n parentUri,\n defaultMaxValues: max,\n attributeTypeUri: attributeUri,\n offset: max * page,\n globalFilter,\n options: showInactive ? '' : undefined,\n ...rest\n })\n )\n .then((response) => {\n const attributes = path([attributeTypeSource], response);\n const values: AttributeValue[] = pathOr([], [attributeTypeName], attributes);\n if (!isHistoryModeEnabled) {\n dispatch(\n profile.actions.processNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeUri,\n attributeTypeName,\n values\n })\n );\n }\n setValues(\n values.map((loadedValue) => {\n const valueFromEntity = attributeValuesRef.current?.find(propEq('uri', loadedValue.uri));\n return valueFromEntity || loadedValue;\n })\n );\n setPaging(path(['paging', attributeUri], attributes));\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n setValues([]);\n setPaging(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiPath,\n parentUri,\n tenant,\n attributeUri,\n max,\n metadata,\n params,\n globalFilter,\n attributeType,\n isHistoryModeEnabled,\n diff\n ]);\n\n useEffect(() => {\n loadAttributes();\n }, [loadAttributes]);\n\n useDidUpdateEffect(() => {\n if (isViewMode) {\n loadAttributes();\n }\n }, [isViewMode]);\n const partitionByOv = partition(isOv);\n const [, nonOvValues] = partitionByOv(attributeValuesRef.current || []);\n const nonVisibleValues = showInactive ? [] : nonOvValues;\n const totalProp = showInactive ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(values.length))(paging);\n const hasPaging = max < totalVisibleValues;\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n return {\n values,\n isLoading,\n hasPaging,\n totalVisibleValues,\n attributeType,\n totalNonVisibleValues,\n nonVisibleValues\n };\n};\n","import React from 'react';\nimport {RelationsViewState} from '../hooks/useRelationsState';\n\nexport const RelationsViewStateContext = React.createContext<RelationsViewState>(null);\n\nRelationsViewStateContext.displayName = 'RelationsViewStateContext';\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nconst popupHorizontalPadding = '23px';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n button: {\n color: theme.palette.text.secondary,\n width: '36px',\n minWidth: '36px'\n },\n popupContent: {\n padding: `19px ${popupHorizontalPadding}`\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n },\n divider: {\n backgroundColor: 'rgba(0,0,0,0.1)',\n margin: `19px -${popupHorizontalPadding}`\n },\n title: {\n marginBottom: '30px'\n },\n sortControls: {\n display: 'flex',\n alignItems: 'center'\n },\n sortSelectorRoot: {\n flex: 1,\n padding: '13px 16px',\n fontSize: '0.85rem'\n },\n sortSelectorMenuItem: {\n fontSize: '0.85rem'\n },\n sortOrderButton: {\n flexShrink: 0,\n margin: '0 8px 0 7px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {DropDownEditor, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {Popover as Popover} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport {Button as Button} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\nimport {RelationsViewStateContext} from '../../../contexts/RelationsViewStateContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const {\n showInactive,\n toggleShowInactive,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions\n } = useContext(RelationsViewStateContext);\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n const hasSortOptions = !isEmptyValue(sortOptions);\n\n const isAsc = sortOrder === 'asc';\n\n return (\n <>\n <Button\n ref={buttonRef}\n classes={{\n root: classnames(styles.button, className)\n }}\n onClick={togglePopup}\n >\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={toggleShowInactive}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n {hasSortOptions && (\n <>\n <Divider className={styles.divider} />\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Sort by')}\n </Typography>\n <div className={styles.sortControls}>\n <DropDownEditor\n entries={sortOptions}\n TextFieldProps={{variant: 'filled'}}\n classes={{\n root: styles.sortSelectorRoot,\n menuItem: styles.sortSelectorMenuItem\n }}\n fullWidth\n disableUnderline\n value={sortOption}\n onChange={changeSortOption}\n MenuProps={{\n getContentAnchorEl: null,\n anchorOrigin: {vertical: 'bottom', horizontal: 'left'}\n }}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isAsc ? i18n.text('Ascending') : i18n.text('Descending')}\n icon={isAsc ? ArrowUpwardIcon : ArrowDownwardIcon}\n onClick={toggleSortOrder}\n className={styles.sortOrderButton}\n size=\"L\"\n />\n </div>\n </>\n )}\n </Popover>\n </>\n );\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport default FilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 6px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n }\n});\n","import React from 'react';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\nexport const ImportDTContext = React.createContext<{\n reloadRelations: () => void;\n config: Pick<RelationsViewConfig, 'content' | 'importFromDT' | 'maxDtssImport'>;\n }>(null);\n","import {useSelector, useDispatch} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {useCallback, useContext, useEffect, useState} from 'react';\nimport {getRequestErrorMessage, hasNonImportedRelations, importDTConnections, isTempUri} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {ImportDTContext} from '../../../../contexts/ImportDTContext';\nimport i18n from 'ui-i18n';\n\nconst MAX = Math.pow(2, 31) - 1;\ntype Tenant = {id: string; label: string};\n\nexport const useImportFromDTLoader = () => {\n const dataTenants: Array<Tenant> = useSelector(mdmModule.selectors.getDataTenants);\n const dispatch = useDispatch();\n const {config, reloadRelations} = useContext(ImportDTContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const [tenants, setTenants] = useState<Array<Tenant>>([]);\n const [selectedTenant, setSelectedTenant] = useState<Tenant>(null);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const customerTenant = useSelector(mdmModule.selectors.getTenant);\n const content = [{...config.content, offset: 0, max: config.maxDtssImport ?? MAX}];\n\n const checkHasNonImportedConnections = useCallback(() => {\n setTenants([]);\n if (config.importFromDT && !isTempUri(entityUri)) {\n Promise.all(\n (dataTenants || []).map((tenant) =>\n hasNonImportedRelations({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: tenant.id\n }).then(({hasNonImportedConnections}) => ({\n ...tenant,\n hasNonImportedConnections\n }))\n )\n )\n .then((modifiedTenants) => modifiedTenants.filter((tenant) => tenant.hasNonImportedConnections))\n .then(setTenants);\n }\n }, [entityUri, dtssPath, customerTenant, config, dataTenants]);\n\n const onConfirmImport = useCallback(() => {\n importDTConnections({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: selectedTenant.id\n })\n .then(() => {\n reloadRelations();\n checkHasNonImportedConnections();\n })\n .catch((error) =>\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))))\n );\n setSelectedTenant(null);\n }, [\n entityUri,\n dtssPath,\n customerTenant,\n config,\n checkHasNonImportedConnections,\n reloadRelations,\n selectedTenant,\n setSelectedTenant\n ]);\n\n useEffect(() => {\n checkHasNonImportedConnections();\n }, [checkHasNonImportedConnections]);\n const onCancelConfirmation = useCallback(() => setSelectedTenant(null), []);\n const onImportClick = useCallback((tenant: Tenant) => setSelectedTenant(tenant), []);\n return {\n tenants,\n selectedTenant,\n onConfirmImport,\n onCancelConfirmation,\n onImportClick\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n tenant: {\n backgroundColor: '#0000EE',\n cursor: 'pointer',\n position: 'absolute',\n top: '8px',\n left: '22px',\n width: '10px',\n height: '10px',\n color: 'white',\n fontSize: '10px',\n fontWeight: 'bold',\n userSelect: 'text',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n button: {\n position: 'relative'\n },\n badge: {\n fontSize: '10px',\n height: '14px',\n minWidth: '14px',\n width: '14px',\n fontWeight: 'bold',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px',\n top: '4px'\n }\n}));\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {Badge as Badge} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ninterface Props {\n label: number | string;\n}\n\nexport const MultipleImportIcon = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Badge\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n badgeContent={label}\n >\n <CloudDownloadIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {useImportFromDTLoader} from './hooks/useImportFromDTLoader';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {ConfirmationDialog} from '@reltio/components';\nimport {MultipleImportIcon} from './MultipleImportIcon';\n\nexport const ImportFromDT = () => {\n const {tenants, selectedTenant, onConfirmImport, onCancelConfirmation, onImportClick} = useImportFromDTLoader();\n const styles = useStyles();\n const oneTenant = tenants.length === 1;\n const labelOnButton = oneTenant\n ? tenants[0].label.indexOf('DT:') === 0\n ? tenants[0].label[3]\n : tenants[0].label[0]\n : tenants.length;\n return (\n <>\n {!!tenants.length && (\n <>\n {oneTenant ? (\n <div className={styles.button}>\n <SmallIconButtonWithTooltip\n size={'L'}\n icon={CloudDownloadIcon}\n tooltipTitle={i18n.text('Import connections from ${label}', {label: tenants[0].label})}\n onClick={() => onImportClick(tenants[0])}\n />\n <div className={classnames(styles.tenant)}>{labelOnButton}</div>\n </div>\n ) : (\n <DropDownMenuButton\n menuId={'importDT-table-actions'}\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n tooltipTitle: i18n.text('Import connections'),\n size: 'L',\n // eslint-disable-next-line react/display-name\n icon: () => <MultipleImportIcon label={labelOnButton} />\n }}\n menuItems={tenants.map((tenant) => ({\n onClick: () => {\n onImportClick(tenant);\n },\n text: tenant.label\n }))}\n />\n )}\n <ConfirmationDialog\n open={!!selectedTenant}\n title={i18n.text('Confirmation')}\n content={i18n.text('Import connections from ${label}?', {label: selectedTenant?.label})}\n discardCaption={i18n.text('Cancel')}\n saveCaption={i18n.text('Import')}\n onDiscard={onCancelConfirmation}\n onSave={onConfirmImport}\n />\n </>\n )}\n </>\n );\n};\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {ExpandableSearchInput, FacetViewHeader, HideOnShrink, VerticalDivider} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport FilterButton from './FilterButton/FilterButton';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {useStyles} from './styles';\nimport {ImportFromDT} from './ImportFromDT/ImportFromDT';\n\ntype Props = {\n title?: string;\n total?: number;\n};\n\nconst RelationsHeader = ({title, total}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, changeSearchQuery} = useContext(RelationsViewStateContext);\n\n return (\n <FacetViewHeader title={title || ''} className={styles.header}>\n {total > 0 && (\n <HideOnShrink widthToHide={400}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} items', {count: total})\n : i18n.text('${count} item', {count: total})}\n </Typography>\n </HideOnShrink>\n )}\n <ExpandableSearchInput query={searchQuery} onChange={changeSearchQuery} />\n <ImportFromDT />\n <FilterButton />\n </FacetViewHeader>\n );\n};\n\nexport default RelationsHeader;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n tooltip: theme.tooltip,\n tooltipContent: {\n minWidth: '165px',\n padding: '4px 2px 2px'\n },\n label: {\n fontSize: '11px',\n lineHeight: '13px',\n fontWeight: 500,\n margin: 0,\n color: 'white'\n },\n secondaryLabel: {\n color: 'rgba(255, 255, 255, 0.7)',\n fontSize: '10px',\n marginTop: '4px',\n fontWeight: 500,\n lineHeight: '11px'\n },\n progress: {\n marginTop: '4px',\n color: '#FFFFFF'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {isNil, ifElse} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n ConnectionEntity,\n getDataTenantEntitySecondaryLabel,\n getEntitySecondaryLabel,\n isDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useSafePromise} from '@reltio/components';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nconst PROGRESS_ICON_SIZE = 16;\n\ntype Props = {\n label: string;\n entity?: ConnectionEntity;\n children: React.ReactElement;\n};\n\nconst RelationTooltip = ({label, entity, children, ...tooltipProps}: Props) => {\n const styles = useStyles();\n const safePromise = useSafePromise();\n const tenant = useSelector(mdm.selectors.getTenant);\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const [isLoading, setIsLoading] = useState(false);\n const [secondaryLabel, setSecondaryLabel] = useState<string>(null);\n\n useEffect(() => {\n setSecondaryLabel(null);\n }, [entity]);\n\n const onOpen = useCallback(() => {\n if (entity?.entityUri && isNil(secondaryLabel)) {\n const request = ifElse(\n isDataTenantEntity,\n (entity: ConnectionEntity) =>\n getDataTenantEntitySecondaryLabel({\n entityUri: entity.entityUri,\n dataTenant: entity.dataTenant,\n customerTenant: tenant,\n dtssPath\n }),\n (entity: ConnectionEntity) => getEntitySecondaryLabel(entity.entityUri)\n );\n\n setIsLoading(true);\n safePromise(request(entity))\n .then(({secondaryLabel}) => {\n setSecondaryLabel(secondaryLabel);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [dtssPath, entity, tenant, safePromise, secondaryLabel]);\n\n const tooltipContent = (\n <div className={styles.tooltipContent}>\n <div className={styles.label}>{label}</div>\n {isLoading && <CircularProgress size={PROGRESS_ICON_SIZE} classes={{colorPrimary: styles.progress}} />}\n {secondaryLabel && <div className={styles.secondaryLabel}>{secondaryLabel}</div>}\n </div>\n );\n\n return (\n <Tooltip\n onOpen={onOpen}\n title={tooltipContent}\n disableFocusListener\n classes={{tooltip: styles.tooltip}}\n {...tooltipProps}\n >\n {children}\n </Tooltip>\n );\n};\n\nexport default RelationTooltip;\n","import {\n Connection,\n Metadata,\n getEntityType,\n getLabel,\n getEntityUriForLink,\n getRelationTypeLabelFromMetadata\n} from '@reltio/mdm-sdk';\n\nexport const useRelationInfo = (connection: Connection, metadata: Metadata) => {\n const {entity, relation} = connection;\n const entityType = getEntityType(metadata, entity?.entityType) as string;\n const entityLabel = getLabel(entity?.entityLabel) as string;\n const preparedUri = getEntityUriForLink({uri: entity?.entityUri, dataTenant: entity?.dataTenant}) as string;\n const relationLabel =\n relation?.relationLabel || (getRelationTypeLabelFromMetadata(metadata, relation?.relationType) as string);\n\n return {\n entityType,\n entityLabel,\n preparedUri,\n relationLabel\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button, {ButtonProps} from '@material-ui/core/Button';\nimport {useStyles} from './styles';\n\ntype Props = {\n acceptRelation: () => void;\n ignoreRelation: () => void;\n};\n\nexport const SuggestedButtons = ({acceptRelation, ignoreRelation, ...props}: Props & ButtonProps) => {\n const styles = useStyles();\n return (\n <div className={styles.container}>\n <Button onClick={acceptRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Accept')}\n </Button>\n <Button onClick={ignoreRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Ignore')}\n </Button>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n\n marginBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '24px',\n padding: '0 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n editButtonsContent: {\n marginLeft: 'auto',\n flex: '0 0 40px'\n },\n editButtons: {\n padding: 0\n },\n removed: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary,\n margin: '0 5px'\n }\n}));\n","import React, {memo, useCallback} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Connection, Metadata, isActiveObject, Mode, checkRemoved, checkEdited, checkIgnored} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, EntityUriLink, SmallIconButtonWithTooltip} from '@reltio/components';\nimport RelationTooltip from '../RelationTooltip/RelationTooltip';\nimport {useRelationInfo} from '../../hooks/useRelationInfo';\nimport {checkRelationPermission} from '../../helpers/permissions';\nimport {SuggestedButtons} from '../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n onRemoveRelation: (relationUri: string) => void;\n onEditRelation: (connection: Connection) => void;\n onAcceptRelation?: (connection: Connection) => void;\n onIgnoreRelation?: (connection: Connection) => void;\n metadata: Metadata;\n showControls: boolean;\n renderRelationArrowButton?: () => React.ReactNode;\n};\n\nconst EditableRelationItem = memo(\n ({\n connection,\n metadata,\n showControls,\n onRemoveRelation,\n onEditRelation,\n onAcceptRelation,\n onIgnoreRelation,\n renderRelationArrowButton\n }: Props) => {\n const styles = useStyles();\n\n const {entity, relation} = connection;\n const removed = checkRemoved(connection);\n const edited = checkEdited(connection);\n const ignored = checkIgnored(connection);\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode: Mode.Editing,\n onRemoveRelation,\n onEditRelation,\n metadata,\n connection\n });\n\n const handleRemoveRelation = useCallback(() => onRemoveRelation(connection.relation.relationUri), [\n onRemoveRelation,\n connection\n ]);\n\n const handleEditRelation = useCallback(() => onEditRelation(connection), [onEditRelation, connection]);\n\n const handleAcceptRelation = useCallback(() => {\n onAcceptRelation(connection);\n }, [onAcceptRelation, connection]);\n\n const handleIgnoreRelation = useCallback(() => onIgnoreRelation(connection), [onIgnoreRelation, connection]);\n\n const editButtonsContent =\n (canRemove || canUpdate) && showControls && !connection.suggested ? (\n <>\n {canUpdate && (\n <SmallIconButtonWithTooltip\n icon={EditIcon}\n size=\"XS\"\n onClick={handleEditRelation}\n tooltipTitle={i18n.text('Edit')}\n />\n )}\n {canRemove && (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n size=\"XS\"\n onClick={handleRemoveRelation}\n tooltipTitle={i18n.text('Remove')}\n />\n )}\n </>\n ) : undefined;\n\n const suggustedButtonsContent = connection.suggested ? (\n <SuggestedButtons\n acceptRelation={handleAcceptRelation}\n ignoreRelation={handleIgnoreRelation}\n size=\"small\"\n disabled={ignored}\n />\n ) : undefined;\n const captionText = ignored ? i18n.text('ignored') : i18n.text('edited');\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.removed]: removed || ignored}\n )}\n >\n <div className={styles.row}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {(edited || ignored) && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({captionText})\n </Typography>\n )}\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n\n <div className={styles.editButtonsContent}>{editButtonsContent}</div>\n {suggustedButtonsContent}\n </div>\n </div>\n );\n }\n);\n\nEditableRelationItem.displayName = 'EditableRelationItem';\n\nexport default EditableRelationItem;\n","import {checkMetadataForDelete, checkMetadataForUpdate, checkRemoved, getRelationType, Mode} from '@reltio/mdm-sdk';\n\nexport const checkRelationPermission = ({metadata, mode, connection, onRemoveRelation, onEditRelation}) => {\n const isEditableMode = mode === Mode.Editing || mode === Mode.Suggesting;\n if (isEditableMode && connection) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n","import {Directions, wrapInArrayIfNeeded, InOutRelation} from '@reltio/mdm-sdk';\n\nexport const getFirstRelationTypeObject = (inRelations: InOutRelation, outRelations: InOutRelation) => {\n const prepareRelation = (direction, relations) => {\n const relationsArr = relations ? wrapInArrayIfNeeded(relations) : [];\n return relationsArr.map((relation) => ({\n type: relation,\n direction: direction === Directions.IN ? Directions.IN : Directions.OUT\n }));\n };\n return prepareRelation(Directions.IN, inRelations).concat(prepareRelation(Directions.OUT, outRelations))[0];\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n arrowIcon: {\n fontSize: '16px',\n marginRight: '6px'\n }\n});\n","import React from 'react';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {checkNew, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n connection: Connection;\n config: RelationsViewConfig;\n showSecondLevel: boolean;\n};\n\nexport const RelationArrowButton = ({onClick, connection, config, showSecondLevel}: Props) => {\n const styles = useStyles();\n const {parentEntityUri} = connection;\n const {contentSecondLevel} = config;\n\n const props = {\n onClick,\n className: styles.arrowIcon\n };\n\n if (parentEntityUri || !contentSecondLevel || checkNew(connection)) {\n return null;\n }\n\n return showSecondLevel ? <ArrowDropDownIcon {...props} /> : <ArrowRightIcon {...props} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n row: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n secondLevelContent: {\n paddingLeft: '24px'\n }\n});\n","import React, {useContext, useMemo} from 'react';\nimport {Connection, ActivityFilter, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useSecondLevelConnections} from '../../hooks/useSecondLevelConnections';\nimport {RelationArrowButton} from '../RelationArrowButton/RelationArrowButton';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {useStyles} from './styles';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {EntitiesMapContext} from '@reltio/components';\n\ntype Props = {\n config: RelationsViewConfig;\n connection: Connection;\n children: (render: () => React.ReactNode) => React.ReactNode;\n};\n\nexport const SecondLevelWrapper = ({config, connection, children}: Props) => {\n const styles = useStyles();\n\n const {showInactive} = useContext(RelationsViewStateContext);\n\n const {\n connections,\n showSecondLevel,\n toggleShowSecondLevel,\n loadRelations,\n loading,\n total\n } = useSecondLevelConnections({\n config,\n connection,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const renderRelationArrowButton = () => {\n return (\n <RelationArrowButton\n onClick={toggleShowSecondLevel}\n connection={connection}\n config={config}\n showSecondLevel={showSecondLevel}\n />\n );\n };\n\n return (\n <>\n {children(renderRelationArrowButton)}\n {showSecondLevel && (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.secondLevelContent}>\n <RelationsContent\n isLoading={loading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n parentEntityUri={connection.entity.entityUri}\n />\n </div>\n </EntitiesMapContext.Provider>\n )}\n </>\n );\n};\n","import {useState, useCallback} from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {\n Connection,\n getRelationsForEntity,\n ActivityFilter,\n GlobalSearchRequestOptions,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\ntype Params = {\n config: RelationsViewConfig;\n connection: Connection;\n relationActivityFilter: ActivityFilter;\n};\n\nexport const useSecondLevelConnections = ({config, connection, relationActivityFilter}: Params) => {\n const dispatch = useDispatch();\n\n const [showSecondLevel, setShowSecondLevel] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const {contentSecondLevel} = config;\n const {entity} = connection;\n\n const connections =\n (useSelector((state) =>\n mdmModule.selectors.getConnectionsWithDraftsByViewId(state, config.id, entity.entityUri)\n ) as Connection[]) || [];\n\n const total = useSelector((state) => mdmModule.selectors.getTotalByViewId(state, config.id, entity.entityUri));\n const {activityFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n\n const loadRelations = useCallback(() => {\n const requestConfig = {\n ...contentSecondLevel,\n returnObjects: true,\n returnDates: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n }\n };\n\n setLoading(true);\n\n getRelationsForEntity(entity.entityUri, [requestConfig]).then((response) => {\n const {connections, total} = response[0];\n\n if (connections) {\n dispatch(\n profile.relations.actions.secondLevelRelationsLoaded({\n connections,\n parentEntityUri: entity.entityUri,\n id: config.id,\n total\n })\n );\n }\n\n setLoading(false);\n });\n }, [config.id, contentSecondLevel, dispatch, entity.entityUri, activityFilter, relationActivityFilter]);\n\n const toggleShowSecondLevel = useCallback(() => {\n if (!showSecondLevel && !connection.connections) {\n loadRelations();\n }\n\n setShowSecondLevel((show) => !show);\n }, [loadRelations, connection.connections, showSecondLevel]);\n\n return {connections, showSecondLevel, toggleShowSecondLevel, loadRelations, loading, total};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px',\n marginLeft: '16px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 0 8px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, partition, evolve, always, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n Connection,\n isTempUri,\n Mode,\n createNewConnectionWithDefaultRelationType,\n checkNew,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {RelationEditor} from '@reltio/components';\nimport EditableRelationItem from '../EditableRelationItem/EditableRelationItem';\nimport {getFirstRelationTypeObject} from '../../helpers/relation';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n noDataText: string;\n connections: Array<Connection>;\n config: RelationsViewConfig;\n mode: Mode;\n parentEntityUri?: string;\n};\n\nconst RelationsEditableContent = ({className, connections = [], config, mode, noDataText, parentEntityUri}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationToAdd = useSelector((state) => mdmModule.selectors.getRelationToAddByViewId(state, config.id));\n const relationsToEdit = useSelector((state) => mdmModule.selectors.getRelationsToEditByViewId(state, config.id));\n const entity = useSelector(mdmModule.selectors.getEntity);\n const checkIfCanAddRelations = useSelector((state) =>\n mdmModule.selectors.getCheckIfCanAddRelations(state, config.content)\n );\n\n const dispatch = useDispatch();\n const styles = useStyles();\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({config, mode, metadata, parentEntityUri});\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n }, [config, mode, metadata, dispatch, parentEntityUri]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n dispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n dispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => profile.relations.selectors.getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = profile.relations.selectors.getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n dispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, dispatch]\n );\n const content = config.content;\n const defaultRelationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const onAcceptRelation = useCallback(\n (connection) => {\n const connectionWithDefaultRelationType = pipe(\n omit(['suggested']),\n evolve({\n relation: {\n relationType: always(defaultRelationTypeObject.type),\n object: evolve({type: always(defaultRelationTypeObject.type), attributes: always(null)})\n }\n })\n )(connection);\n dispatch(profile.relations.actions.addRelation(config.id, connectionWithDefaultRelationType));\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const onIgnoreRelation = useCallback(\n (connection) => {\n dispatch(\n profile.relations.actions.ignoreRelation(config.id, {\n relationType: defaultRelationTypeObject.type,\n relationDirection: defaultRelationTypeObject.direction,\n entityUri: connection.entity.entityUri,\n relationUri: connection.relation.relationUri\n })\n );\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const [newConnections, currentConnections] = partition(checkNew, connections);\n const canAddRelations = entity && checkIfCanAddRelations;\n\n const isEmptyRelationList = newConnections.length === 0 && currentConnections.length === 0;\n\n const getRelationEditableContent = (connection: Connection) => {\n const openedRelation = relationsToEdit.find(\n (openedRelation) => openedRelation?.relation?.relationUri === connection?.relation?.relationUri\n );\n const showControls = !config.allowOnlyCreateNew || checkNew(connection);\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n return openedRelation ? (\n <RelationEditor connection={openedRelation} config={config} mode={mode} metadata={metadata} />\n ) : (\n <EditableRelationItem\n renderRelationArrowButton={renderRelationArrowButton}\n connection={connection}\n metadata={metadata}\n showControls={showControls}\n onRemoveRelation={onRemoveRelation}\n onEditRelation={pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)}\n onAcceptRelation={onAcceptRelation}\n onIgnoreRelation={onIgnoreRelation}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n };\n\n const shouldShowAddRelationButton =\n canAddRelations && (!relationToAdd || (relationToAdd && relationToAdd.parentEntityUri === parentEntityUri));\n\n const shouldShowRelationEditorToAdd = relationToAdd && relationToAdd.parentEntityUri === parentEntityUri;\n\n return (\n <div className={className}>\n {shouldShowAddRelationButton && (\n <Button color=\"primary\" onClick={onAddRelation} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {shouldShowRelationEditorToAdd && (\n <RelationEditor connection={relationToAdd} config={config} mode={mode} metadata={metadata} />\n )}\n {newConnections.map(getRelationEditableContent)}\n {newConnections.length > 0 && currentConnections.length > 0 && <Divider className={styles.divider} />}\n {currentConnections.map(getRelationEditableContent)}\n {isEmptyRelationList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n\nexport default RelationsEditableContent;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n attributesList: {\n paddingLeft: '46px',\n paddingRight: '16px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n }\n}));\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n CollaborationObjectTypes,\n Connection,\n createRelatedObjectUris,\n Entity,\n getActivenessAttributes,\n getAttributesListForReadMode,\n getAttributeValuesUris,\n getRelationAttributesList,\n isEmptyValue,\n Metadata\n} from '@reltio/mdm-sdk';\nimport {CollaborationContext, ReadOnlyAttributesList, RelatedObjectUrisContext} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {isEmpty} from 'ramda';\n\ntype Props = {\n connection: Connection;\n className?: string;\n};\n\nexport const RelationAttributes = ({connection, className}: Props) => {\n const styles = useStyles();\n\n const {relation} = connection;\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n\n const firstLevelRelationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relation?.relationType) as AttributeType[],\n [relation?.relationType, metadata]\n );\n\n const attributeListEntity = useMemo(\n () => ({\n attributes: {\n ...profile.relations.selectors.getRelationAttributesFromConnection(connection)\n },\n ...getActivenessAttributes(connection?.relation || {})\n }),\n [connection]\n );\n\n const attributesList = useMemo(\n () => getAttributesListForReadMode(firstLevelRelationAttrTypes, attributeListEntity as Entity),\n [firstLevelRelationAttrTypes, attributeListEntity]\n );\n\n const showAttributesList = attributesList.filter(({values}) => !isEmptyValue(values)).length > 0;\n\n const objectIds = useMemo(() => getAttributeValuesUris(attributeListEntity.attributes), [attributeListEntity]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n !isEmpty(objectIds) && getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const additionalRelatedObjectUris = useMemo(\n () => createRelatedObjectUris(CollaborationObjectTypes.RELATION, {entityUri: currentEntityUri, connection}),\n [connection, currentEntityUri]\n );\n\n return showAttributesList ? (\n <RelatedObjectUrisContext.Provider value={additionalRelatedObjectUris}>\n <ReadOnlyAttributesList\n className={classnames(styles.attributesList, className)}\n entity={attributeListEntity}\n attrTypes={firstLevelRelationAttrTypes}\n />\n </RelatedObjectUrisContext.Provider>\n ) : (\n <div className={classnames(styles.attributesList, className)}>{i18n.text('No attributes')}</div>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport InfoIconSelected from '@material-ui/icons/InfoRounded';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\n\ntype Props = {\n show: boolean;\n onToggle: () => void;\n className?: string;\n};\n\nexport const ShowDetailsButton = ({show, onToggle, className}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n className={className}\n tooltipTitle={\n show\n ? i18n.text('Hide attributes of the relationship')\n : i18n.text('Show attributes of the relationship')\n }\n tooltipPlacement=\"bottom-end\"\n size=\"XXS\"\n icon={show ? InfoIconSelected : InfoIcon}\n onClick={onToggle}\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string; suggested: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '16px',\n padding: '3px 11px 3px 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n wordBreak: 'break-all',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n showDetails: {\n marginLeft: 'auto',\n paddingRight: '5px'\n },\n attributesList: {\n paddingLeft: '46px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n },\n suggestedWrapper: {\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n marginLeft: 'auto',\n alignItems: 'center',\n '& + $showDetails': {\n marginLeft: '4px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n },\n labelWrapper: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {\n Connection,\n Metadata,\n isActiveObject,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {useStyles} from './styles';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\n\ntype Props = {\n connection: Connection;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nconst RelationItem = memo(({connection, renderRelationArrowButton, acceptRelation, ignoreRelation}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n const {entity, relation} = connection;\n const [showDetails, setShowDetails] = useState(false);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.suggestedWrapper]: isSuggested}\n )}\n >\n <div className={classnames(styles.row, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <div className={styles.labelWrapper}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n </div>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n size=\"small\"\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetails}\n />\n )}\n </div>\n </div>\n {showDetails && <RelationAttributes connection={connection} />}\n </div>\n );\n});\n\nRelationItem.displayName = 'RelationItem';\n\nexport default RelationItem;\n","import {pluck, mean, pipe, defaultTo} from 'ramda';\nimport {Rating} from '@reltio/mdm-sdk';\n\nexport const calcAverageRating = (ratings: Rating[]) => {\n return pipe(pluck('value'), mean, defaultTo(0))(ratings);\n};\n\nexport const getCountOfLikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 5).length;\n};\n\nexport const getCountOfDislikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 1).length;\n};\n\nexport const calcWidthOfLikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfLikes(ratings) / ratings.length) * 100 + '%';\n};\n\nexport const calcWidthOfDislikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfDislikes(ratings) / ratings.length) * 100 + '%';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end'\n },\n averageRating: {\n marginBottom: '7px',\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px',\n color: theme.palette.text.primary\n },\n scale: {\n display: 'flex',\n marginBottom: '6px',\n width: '128px',\n height: '4px'\n },\n likesScale: {\n height: '100%',\n backgroundColor: '#8CC152'\n },\n dislikesScale: {\n height: '100%',\n backgroundColor: 'rgb(255, 112, 112)'\n },\n counts: {\n display: 'flex'\n },\n likesCount: {\n marginRight: '32px'\n },\n count: {\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n icon: {\n marginRight: '4px',\n width: '14px',\n height: '14px',\n color: 'rgba(0,0,0,0.38)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport ThumbUpIcon from '@material-ui/icons/ThumbUp';\nimport ThumbDownIcon from '@material-ui/icons/ThumbDown';\nimport {\n calcAverageRating,\n calcWidthOfDislikesScale,\n calcWidthOfLikesScale,\n getCountOfDislikes,\n getCountOfLikes\n} from '../../../helpers/ratings';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n className?: string;\n};\n\nexport const Ratings = ({ratings, className}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, className)}>\n <Typography className={styles.averageRating}>{calcAverageRating(ratings).toFixed(1)}</Typography>\n <div className={styles.scale}>\n <div className={styles.likesScale} style={{width: calcWidthOfLikesScale(ratings)}} />\n <div className={styles.dislikesScale} style={{width: calcWidthOfDislikesScale(ratings)}} />\n </div>\n <div className={styles.counts}>\n <div className={classnames(styles.likesCount, styles.count)}>\n <ThumbUpIcon className={styles.icon} />\n {getCountOfLikes(ratings)}\n </div>\n <div className={styles.count}>\n <ThumbDownIcon className={styles.icon} />\n {getCountOfDislikes(ratings)}\n </div>\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex'\n },\n button: {\n fontSize: '14px',\n textTransform: 'none',\n color: theme.palette.text.secondary\n },\n likeButton: {\n marginLeft: '-12px',\n marginRight: '8px'\n },\n isActive: {\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {DropDownMenuButton} from '@reltio/components';\nimport {Button as Button} from '@material-ui/core';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n onAgree: () => void;\n onDisagree: (comment: string) => void;\n};\n\nexport const RatingsButtons = ({ratings, onAgree, onDisagree}: Props) => {\n const styles = useStyles();\n\n const username = useSelector(mdmModule.selectors.getUserName) as string;\n const ratingOfCurrentUser = ratings.find(({user}) => user === username);\n\n const menuItems = [\n {\n text: i18n.text('Has left the practice'),\n onClick: () => onDisagree(i18n.text('Has left the practice'))\n },\n {\n text: i18n.text('Has moved away'),\n onClick: () => onDisagree(i18n.text('Has moved away'))\n },\n {\n text: i18n.text('Has passed away'),\n onClick: () => onDisagree(i18n.text('Has passed away'))\n },\n {\n text: i18n.text('Has retired'),\n onClick: () => onDisagree(i18n.text('Has retired'))\n },\n {\n text: i18n.text('Other'),\n onClick: () => onDisagree(i18n.text('Other'))\n }\n ];\n\n return (\n <div className={styles.wrapper}>\n <Button\n onClick={onAgree}\n variant=\"text\"\n size=\"small\"\n className={classnames(styles.button, styles.likeButton, {\n [styles.isActive]: ratingOfCurrentUser?.value === 5\n })}\n >\n Agree\n </Button>\n <DropDownMenuButton\n buttonProps={{\n endIcon: <ArrowDropDownIcon />,\n variant: 'text',\n size: 'small',\n className: classnames(styles.button, {\n [styles.isActive]: ratingOfCurrentUser?.value === 1\n })\n }}\n buttonContent={ratingOfCurrentUser?.value === 1 ? ratingOfCurrentUser.comment : 'Disagree'}\n menuItems={menuItems}\n menuId=\"disagree-dropdown-menu-button\"\n />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {suggested: string}) => ({\n wrapper: {\n padding: '6px 16px 6px'\n },\n entityTypeIcon: {\n marginRight: '16px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '14px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n entityLabelContainer: {\n wordBreak: 'break-all',\n textDecoration: 'none'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n ratings: {\n marginLeft: 'auto'\n },\n showDetailsButton: {\n marginLeft: '16px',\n marginTop: '18px'\n },\n relationAttributes: {\n paddingLeft: '60px'\n },\n suggestedWrapper: {\n padding: '6px 8px 6px 16px',\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n alignSelf: 'center',\n '& + $ratings': {\n marginLeft: '16px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n }\n}));\n","import React, {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n Metadata,\n Connection,\n rateRelation,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {Ratings} from '../Ratings/Ratings';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {RatingsButtons} from '../RatingsButtons/RatingsButtons';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n loadRelations: () => void;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nexport const RelationComplexItem = ({\n connection,\n loadRelations,\n renderRelationArrowButton,\n acceptRelation,\n ignoreRelation\n}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n\n const [showDetails, setShowDetails] = useState(false);\n\n const {entity, relation} = connection;\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityLabel, entityType, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const ratings = relation?.ratings || [];\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n\n const handleAgree = () => {\n rateRelation(relation?.relationUri, {\n comment: '',\n value: 5\n }).then(loadRelations);\n };\n\n const handleDisagree = (comment: string) => {\n rateRelation(relation?.relationUri, {\n comment,\n value: 1\n }).then(loadRelations);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n\n return (\n <div className={classnames(styles.wrapper, {[styles.suggestedWrapper]: isSuggested})}>\n <Box display=\"flex\" minHeight=\"44px\" className={COMMENTS_CONTAINER_VISIBILITY_AREA}>\n <Box display=\"flex\" alignItems=\"center\">\n <Box display=\"flex\" alignItems=\"center\">\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon entityType={entityType} className={styles.entityTypeIcon} />\n </Box>\n <Box display=\"flex\" flexDirection=\"column\">\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n </EntityUriLink>\n {relationLabel && <span className={styles.relationLabel}>{relationLabel}</span>}\n {!isSuggested && (\n <RatingsButtons ratings={ratings} onAgree={handleAgree} onDisagree={handleDisagree} />\n )}\n </Box>\n </Box>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <>\n <Ratings ratings={ratings} className={styles.ratings} />\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetailsButton}\n />\n </>\n )}\n </div>\n </Box>\n {showDetails && <RelationAttributes connection={connection} className={styles.relationAttributes} />}\n </div>\n );\n};\n","import React, {useMemo, useContext, useEffect} from 'react';\nimport {Connection, getRelationshipsObjectIdsForCollaboration, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {CollaborationContext} from '@reltio/components';\nimport RelationItem from './RelationItem/RelationItem';\nimport {RelationComplexItem} from './RelationCompexItem/RelationComplexItem';\nimport {useSuggestedRelations} from '../../hooks/useSuggestedRelations';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\n\ntype Props = {\n className?: string;\n connections: Array<Connection>;\n loadRelations: () => void;\n config?: RelationsViewConfig;\n mainEnityUri?: string;\n};\n\nconst RelationsList = ({className, connections = [], loadRelations, config, mainEnityUri}: Props) => {\n const {isComplex, content} = config;\n const {ignoreRelation, acceptRelation} = useSuggestedRelations(content, loadRelations, mainEnityUri);\n\n const objectIds = useMemo(() => {\n return getRelationshipsObjectIdsForCollaboration(connections);\n }, [connections]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n return (\n <div className={className}>\n {connections.map((connection) => {\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n if (isComplex) {\n return (\n <RelationComplexItem\n loadRelations={loadRelations}\n connection={connection}\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }\n\n return (\n <RelationItem\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n connection={connection}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n })}\n </div>\n );\n};\n\nRelationsList.displayName = 'RelationsList';\n\nexport default RelationsList;\n","import {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n Connection,\n ignoreSuggestedRelation,\n createRelation,\n getRequestErrorMessage,\n Directions,\n RelationsContent\n} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {getFirstRelationTypeObject} from '../helpers/relation';\n\nexport const useSuggestedRelations = (content: RelationsContent, loadRelations: () => void, mainEnityUri: string) => {\n const relationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const dispatch = useDispatch();\n const ignoreRelation = (connection: Connection) => () => {\n const {entity} = connection;\n ignoreSuggestedRelation(mainEnityUri, {\n relatedEntityUri: entity.entityUri,\n relationType: relationTypeObject.type,\n relationDirection: relationTypeObject.direction\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n const acceptRelation = (connection: Connection) => () => {\n const {entity, relation} = connection;\n const {startDate, endDate} = relation;\n const isInDirection = relationTypeObject.direction === Directions.IN;\n const startEntityUri = isInDirection ? entity.entityUri : mainEnityUri;\n const endEntityUri = isInDirection ? mainEnityUri : entity.entityUri;\n createRelation({\n startEntityUri,\n endEntityUri,\n relationType: relationTypeObject.type,\n attributes: null,\n startDate,\n endDate\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n return {\n ignoreRelation,\n acceptRelation\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n list: {\n paddingTop: '8px',\n paddingBottom: '10px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {isEditableMode, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport RelationsEditableContent from '../RelationsEditableContent/RelationsEditableContent';\nimport RelationsList from '../RelationsList/RelationsList';\nimport {useStyles} from './styles';\n\ntype Props = {\n isLoading: boolean;\n config: RelationsViewConfig;\n loadRelations: () => void;\n connections: Connection[];\n total: number;\n parentEntityUri?: string;\n};\n\nexport const RelationsContent = ({isLoading, config, loadRelations, connections, total, parentEntityUri}: Props) => {\n const styles = useStyles();\n\n const {selectors} = mdmModule;\n const entity = useSelector(selectors.getEntity);\n const mode = useSelector(selectors.getMode);\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (isEditableMode(mode)) {\n return (\n <RelationsEditableContent\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n config={config}\n mode={mode}\n noDataText={noDataText}\n parentEntityUri={parentEntityUri}\n />\n );\n }\n\n if (total > 0) {\n return (\n <RelationsList\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n mainEnityUri={entity.uri}\n />\n );\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0\n },\n content: {\n position: 'relative',\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: 0\n },\n pagination: {\n height: '52px',\n flexGrow: 0,\n flexShrink: 0\n }\n});\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {ActivityFilter, Connection, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, EntitiesMapContext, useRelationsLoader} from '@reltio/components';\nimport RelationsHeader from '../RelationsHeader/RelationsHeader';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {ImportDTContext} from '../../contexts/ImportDTContext';\nimport {buildRelationsFilter} from '../../helpers/filters';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {pick} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationsViewConfig;\n className?: string;\n};\n\nconst RelationsView = ({config, className}: Props) => {\n const styles = useStyles();\n\n const {\n page,\n setPage,\n rowsPerPage,\n sortOrder,\n sortOption,\n showInactive,\n searchQuery,\n changeSearchQuery\n } = useContext(RelationsViewStateContext);\n const {selectors} = mdmModule;\n const connections = useSelector((state) =>\n selectors.getConnectionsWithDraftsByViewId(state, config.id)\n ) as Connection[];\n const entity = useSelector(selectors.getEntity);\n const total = useSelector((state) => selectors.getTotalByViewId(state, config.id));\n const mode = useSelector(selectors.getMode);\n const sorting = useMemo(\n () => ({\n order: sortOrder,\n field: sortOption\n }),\n [sortOrder, sortOption]\n );\n\n useEffect(() => {\n changeSearchQuery('');\n }, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const filter = useMemo(() => buildRelationsFilter(searchQuery), [searchQuery]);\n\n const {isLoading, reload: loadRelations} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const importDTContextValue = useMemo(\n () => ({\n reloadRelations: loadRelations,\n config: pick(['content', 'importFromDT', 'maxDtssImport'], config)\n }),\n [loadRelations, config]\n );\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={className}>\n <div className={styles.container}>\n <ImportDTContext.Provider value={importDTContextValue}>\n <RelationsHeader title={config.caption} total={total} />\n </ImportDTContext.Provider>\n <div className={styles.content}>\n <RelationsContent\n isLoading={isLoading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n />\n {total > rowsPerPage && (\n <BasicTablePagination\n classes={{root: styles.pagination}}\n count={total}\n rowsPerPageOptions={[]}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n />\n )}\n </div>\n </div>\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n\nRelationsView.displayName = 'RelationsView';\n\nexport {RelationsView};\n","import {FilterBuilder, Maybe, filterValueToQueryStringWithQuotes} from '@reltio/mdm-sdk';\n\nconst buildRelationsFilter = (searchQuery) => {\n const queryClause = Maybe.fromFalsy(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n return new FilterBuilder().addClause(queryClause).build();\n};\n\nexport {buildRelationsFilter};\n","import {useCallback, useMemo, useState} from 'react';\nimport {RelationsViewConfig, SortOrder} from '@reltio/mdm-sdk';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Option = {\n value: string;\n label: string;\n};\n\nexport type RelationsViewState = {\n searchQuery: string;\n changeSearchQuery: (value: string) => void;\n sortOrder: SortOrder;\n toggleSortOrder: () => void;\n sortOption?: string;\n changeSortOption: (option: string) => void;\n sortOptions: Option[];\n page: number;\n setPage: (page: number) => void;\n rowsPerPage: number;\n showInactive: boolean;\n toggleShowInactive: () => void;\n};\n\nconst useRelationsState = (config: RelationsViewConfig): RelationsViewState => {\n const sortOptions = useMemo(\n () =>\n Object.entries(config.sortOptions || {}).map(([key, value]) => ({\n value: key,\n label: value\n })),\n [config.sortOptions]\n );\n\n const rowsPerPage = Number(config.max) || DEFAULT_ROWS_PER_PAGE;\n const [page, setPage] = useState(0);\n const [sortOrder, setSortOrder] = useState(config.sortOrder || DEFAULT_SORT_ORDER);\n const [sortOption, setSortOption] = useState(sortOptions[0]?.value);\n const [searchQuery, setSearchQuery] = useState('');\n const [showInactive, setShowInactive] = useState(DEFAULT_SHOW_INACTIVE);\n\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n const toggleSortOrder = useCallback(() => {\n setPage(0);\n setSortOrder((order) => {\n return order === 'asc' ? 'desc' : 'asc';\n });\n }, []);\n\n const changeSortOption = useCallback((option: string) => {\n setPage(0);\n setSortOption(option);\n }, []);\n\n const changeSearchQuery = useCallback((value: string) => {\n setPage(0);\n setSearchQuery(value);\n }, []);\n\n return {\n searchQuery,\n changeSearchQuery,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions,\n page,\n setPage,\n rowsPerPage,\n showInactive,\n toggleShowInactive\n };\n};\n\nexport default useRelationsState;\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../components/types';\n\nexport const TableAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n visibleColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n onToggleFilters: () => void;\n onSort: (payload) => void;\n onFilter: (payload) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n showTable: boolean;\n filters: {\n [key: string]: {\n filter: string;\n values: [string];\n };\n };\n sorting: {\n order: 'desc' | 'asc';\n field: string;\n };\n attributeType: AttributeType;\n allColumnsData: ColumnsDataType;\n }>(null);\n\nTableAttributeContext.displayName = 'TableAttributeContext';\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles(() => ({\n tableContainer: {\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)',\n marginBottom: '15px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > div': removedStyle\n }\n}));\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import {assoc, chain, isNil, map, path, pipe, prop, reduce, reject, slice, split, uniqBy} from 'ramda';\nimport {\n AttributeNode,\n AttributeType,\n attributeUriToSearchUri,\n flatAttributeTreeNode,\n getAttrDataTypeDefinition,\n getAttributeTypesTree,\n getOvAttributeValuesByPath,\n isAttributeSearchUri,\n Metadata,\n SearchParent\n} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from '../components/AttributeTable/HeadCellRenderer';\nimport {DefaultCellValueRenderer} from '@reltio/components';\n\nexport const getColumnsDataFromAttributeNode = (attrNode: AttributeNode, parents: SearchParent[]) => {\n const {uri, label, children, name} = attrNode;\n return reject(isNil, {\n id: attributeUriToSearchUri(uri, parents),\n label,\n dataTypeDefinition: getAttrDataTypeDefinition(attrNode),\n children: children?.map((childNode) => getColumnsDataFromAttributeNode(childNode, parents.concat({name})))\n });\n};\n\nexport const getColumnsData = (metadata: Metadata, attributeType: AttributeType) =>\n pipe(\n (metadata: Metadata, attributeType: AttributeType) => getAttributeTypesTree(metadata, attributeType),\n map((attrNode: AttributeNode) => getColumnsDataFromAttributeNode(attrNode, [attributeType])),\n chain(flatAttributeTreeNode),\n uniqBy(prop('id'))\n )(metadata, attributeType);\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getAttributeValues = (attrPath, value) => pipe(path(['value']), getOvAttributeValuesByPath(attrPath))(value);\n\nconst getRowValueByColumnId = (columnId, value) => {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getAttributeValues(attrPath, value);\n};\n\nexport const getBasicTableRowsData = (values, columnsData) =>\n values.map((value) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, value), acc), {}),\n assoc('value', value)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (isAttributeSearchUri(columnId)) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: DefaultCellValueRenderer\n});\n\nexport const getBasicTableColumnsData = map(getColumnDataByColumnId);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n header: {\n padding: '0 4px 0 16px'\n }\n}));\n","import React from 'react';\nimport {\n FacetViewHeader,\n ColumnsSettings,\n FilterButton,\n VerticalDivider,\n ExpandableSearchInput\n} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {ColumnsDataType} from '../types';\n\ntype Props = {\n title: string;\n total: number;\n columnsData: ColumnsDataType;\n selectedColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n searchQuery: string;\n onChangeSearchQuery: (val: string) => void;\n filtersEnabled: boolean;\n onToggleFilters: () => void;\n};\nconst AttributeTableHeader = ({\n title,\n searchQuery,\n onChangeSearchQuery,\n filtersEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n onChangeColumns\n}: Props) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <ExpandableSearchInput query={searchQuery} onChange={onChangeSearchQuery} />\n <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </FacetViewHeader>\n );\n};\n\nexport default AttributeTableHeader;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport {withTableContext} from '@reltio/components';\n\ntype Props = {\n cell: {values: string[]};\n isSorted: boolean;\n CellValueRenderer: React.ElementType;\n isRemoved: boolean;\n};\nconst RowCellRenderer = ({cell, CellValueRenderer, isRemoved, isSorted, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({deletedUris}, {rowValue: {value}}) => ({\n isRemoved: Boolean(deletedUris.find((uri) => value.uri === uri))\n}))(RowCellRenderer);\n","import React from 'react';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\ntype Props = {\n onEdit?: () => void;\n onRemove?: () => void;\n};\n\nexport const EditButtons = ({onEdit, onRemove}: Props) => (\n <>\n {onEdit && (\n <SmallIconButtonWithTooltip tooltipTitle={i18n.text('Edit')} icon={EditIcon} size=\"L\" onClick={onEdit} />\n )}\n {onRemove && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Remove')}\n icon={DeleteIcon}\n size=\"L\"\n onClick={onRemove}\n />\n )}\n </>\n);\n\nexport default EditButtons;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport RowCellRenderer from './RowCellRenderer';\nimport {BasicTable, useConfigPermissions} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from '../../helpers/tableAttributeHelpers';\nimport {useStyles} from './styles';\nimport {\n AttributeValue,\n checkCanEditAttribute,\n checkCanDeleteAttribute,\n SearchFilter,\n isReltioCrosswalk,\n Entity,\n isEditableMode as checkIsEditableMode,\n AttributeItem,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../types';\nimport EditButtons from './EditButtons';\nimport {useSelector} from 'react-redux';\nimport {path, prop, pipe} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport mdmModule from '@reltio/mdm-module';\n\nconst MAX_HEIGHT = 477;\n\ntype Props = {\n columnsData: ColumnsDataType;\n values: AttributeValue[];\n filters?: {\n [key: string]: SearchFilter;\n };\n onFilter?: (payload) => void;\n sorting?:\n | {\n field: string;\n order: string;\n }\n | undefined;\n onSort?: (payload) => void;\n config: TableAttributeViewConfig;\n onEdit: React.Dispatch<AttributeValue>;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n deletedUris: string[];\n};\n\nconst AttributeTable = ({\n columnsData,\n values,\n sorting,\n onSort,\n filters,\n onFilter,\n config,\n onEdit,\n onDeleteAttribute,\n deletedUris\n}: Props) => {\n const tableRowsData = useMemo(() => getBasicTableRowsData(values, columnsData), [values, columnsData]);\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const {attributeType} = useContext(TableAttributeContext);\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n\n const {canUpdate, canDelete} = useConfigPermissions();\n\n const checkCanEdit = (attributeValue: AttributeValue) =>\n canUpdate(config) &&\n checkCanEditAttribute({\n attributeType,\n mode,\n attributeValue,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n const checkCanRemove = (attributeValue: AttributeValue) =>\n canDelete(config) &&\n checkCanDeleteAttribute({\n attributeType,\n mode,\n attributeValue,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n\n const hideRightContent = useMemo(\n () =>\n typeof hoverRowIndex === 'number' && isEditableMode\n ? deletedUris.includes(pipe(path([hoverRowIndex]), prop('uri'))(values))\n : true,\n [hoverRowIndex, deletedUris, values, isEditableMode]\n );\n const canRemove = typeof hoverRowIndex === 'number' && checkCanRemove(path([hoverRowIndex], values));\n const canEdit = typeof hoverRowIndex === 'number' && checkCanEdit(path([hoverRowIndex], values));\n\n const handleEditAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canEdit) return;\n onEdit(attributeValue);\n }, [onEdit, hoverRowIndex, values, canEdit]);\n\n const handleRemoveAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canRemove) return;\n const attribute: AttributeItem = {\n parentUri: entityUri,\n attributeType,\n uri: attributeValue.uri,\n value: attributeValue\n };\n onDeleteAttribute(attribute);\n setHoverRowIndex(null);\n }, [hoverRowIndex, values, onDeleteAttribute, canRemove, attributeType, entityUri]);\n\n const hoveredRowRightContent =\n !hideRightContent && (canRemove || canEdit) ? (\n <EditButtons\n onEdit={canEdit ? handleEditAttribute : undefined}\n onRemove={canRemove ? handleRemoveAttribute : undefined}\n />\n ) : undefined;\n const context = useMemo(() => ({deletedUris}), [deletedUris]);\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n autosizing\n maxHeight={MAX_HEIGHT}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n resizeDebounceDelay={150}\n renderRowCell={renderRowCell}\n onRowHover={setHoverRowIndex}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n context={context}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n />\n </div>\n );\n};\n\nexport default AttributeTable;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: '0 8px 10px',\n\n '& > button': {\n fontSize: '14px',\n lineHeight: '16px',\n marginLeft: '8px',\n padding: '10px 8px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n }\n }\n}));\n","import {Button as Button} from '@material-ui/core';\nimport React, {useCallback, useContext} from 'react';\nimport {useStyles} from './styles';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {AttributeValue, Entity, isTempUri, getAttributeOwnError, AttributeItem} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {EditableAttribute, ViewIdContext} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n hasChanges: boolean;\n onChangeAttribute: (attribute: AttributeItem) => void;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n onCancel: (attributeValue: AttributeValue) => void;\n onApply: (attributeValue: AttributeValue) => void;\n attributeValue: AttributeValue;\n};\n\nexport const AttributeEditing = ({\n onChangeAttribute,\n onCancel,\n onApply,\n onDeleteAttribute,\n hasChanges,\n attributeValue\n}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const {attributeType} = useContext(TableAttributeContext);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const showEmptyEditors = isTempUri(entityUri);\n\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, entityUri, attributeType)\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n return (\n <>\n <EditableAttribute\n expanded\n attributeValue={attributeValue}\n showEmptyEditors={showEmptyEditors}\n onDeleteAttribute={onDeleteAttribute}\n onDeactivateError={onDeactivateError}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n mode={mode}\n crosswalks={modifiedEntity.crosswalks}\n errors={errors}\n attributeType={attributeType}\n ownError={getAttributeOwnError(attributeValue, null, attributeType.uri, errors)}\n />\n <div className={styles.actionButtons}>\n <Button\n onClick={() => {\n onCancel(attributeValue);\n }}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n color=\"primary\"\n disabled={!hasChanges}\n onClick={() => {\n onApply(attributeValue);\n }}\n >\n {i18n.text('Apply')}\n </Button>\n </div>\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n flex: 1,\n overflow: 'auto'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n color: 'rgba(0,0,0,0.54)'\n },\n\n tableContainer: {\n height: '477px',\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n\n header: {\n padding: '0 4px 0 16px'\n },\n\n addButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n padding: '4px 16px'\n }\n}));\n","import {useCallback, useContext, useState, useMemo, useEffect} from 'react';\nimport {\n AttributeValue,\n createNewAttribute,\n Entity,\n getAttributeSource,\n isEditableMode as checkIsEditableMode,\n NestedAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, pathOr, pipe, map, prop, equals, both, not, without, filter} from 'ramda';\nimport {TableAttributeContext} from '../../../contexts/TableAttributeContext';\nimport {isTempUri, createDefaultValues} from '@reltio/mdm-sdk';\n\nconst emptyArray = [];\n\nexport const useEditableAttribute = () => {\n const [newAttributeUri, setNewAttributeUri] = useState<string>();\n const [originalValues, setOriginalValues] = useState<AttributeValue[]>([]);\n const mode = useSelector(mdmModule.selectors.getMode);\n\n useEffect(() => {\n setOriginalValues([]);\n setNewAttributeUri(null);\n }, [mode]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const {attributeType, values} = useContext(TableAttributeContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => {\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n },\n [viewId, dispatch]\n );\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onAdd = useCallback(() => {\n const newAttribute = createNewAttribute({\n parentUri: entityUri,\n attributeType\n });\n setNewAttributeUri(newAttribute.uri);\n onChangeAttribute({\n ...newAttribute,\n value: createDefaultValues({\n attributeTypes: attributeType.attributes,\n parentUri: newAttribute.uri,\n mode,\n metadata\n }),\n attributeType\n });\n }, [entityUri, attributeType]);\n\n const onStartEditing = useCallback(\n (attributeValue: AttributeValue) => {\n setOriginalValues((prev) => {\n if (!prev.find(propEq('uri', attributeValue.uri))) {\n return [...prev, attributeValue];\n }\n return prev;\n });\n },\n [setOriginalValues]\n );\n\n const onCancel = useCallback(\n (attributeValue: AttributeValue) => {\n const editingValueOriginal = originalValues.find(propEq('uri', attributeValue.uri));\n if (editingValueOriginal) {\n const attributeItem = {\n ...attributeValue,\n value: editingValueOriginal,\n attributeType,\n uri: attributeValue.uri\n };\n setOriginalValues((prev) => without([editingValueOriginal], prev));\n onChangeAttribute(attributeItem);\n } else {\n const attributeItem = {\n value: attributeValue,\n attributeType,\n uri: attributeValue.uri\n };\n setNewAttributeUri(null);\n onDeleteAttribute(attributeItem);\n }\n },\n [onDeleteAttribute, onChangeAttribute, setOriginalValues, originalValues]\n );\n\n const onApply = useCallback(\n (attributeValue: AttributeValue) => {\n setNewAttributeUri(null);\n setOriginalValues((prev) => {\n const original = prev.find(propEq('uri', attributeValue.uri));\n return original ? without([original], prev) : prev;\n });\n },\n [setOriginalValues, setNewAttributeUri]\n );\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const isEditableMode = checkIsEditableMode(mode);\n const attributeSource = getAttributeSource(attributeType);\n\n const modifiedEntityValues: NestedAttributeValue[] = pathOr(\n emptyArray,\n [attributeSource, attributeType?.name],\n modifiedEntity\n );\n\n const modifiedValues = useMemo(() => {\n const newValues = modifiedEntityValues.filter(\n pipe(prop('uri'), both(isTempUri, pipe(equals(newAttributeUri), not)))\n );\n\n const oldValues = map(\n (originalValue) => modifiedEntityValues.find(propEq('uri', originalValue.uri)) || originalValue\n )(values);\n return [...newValues, ...oldValues].map((value) => originalValues.find(propEq('uri', value.uri)) ?? value);\n }, [modifiedEntityValues, originalValues, newAttributeUri, values]);\n\n const deletedUris = useMemo(\n () =>\n isEditableMode\n ? pipe(\n map(prop('uri')),\n filter((uri) => !modifiedEntityValues.find(propEq('uri', uri)))\n )(values)\n : [],\n [modifiedEntityValues, values]\n );\n\n const editingValues = modifiedEntityValues.filter(\n ({uri}) => uri === newAttributeUri || originalValues.find(propEq('uri', uri))\n );\n\n const checkHasChanges = (value) => originalValues.find(propEq('uri', value.uri)) !== value;\n\n return {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n };\n};\n","import React, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n BasicView,\n BasicTablePagination,\n LinearLoadIndicator,\n FacetViewHeader,\n useConfigPermissions\n} from '@reltio/components';\nimport {propEq} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport AttributeTableHeader from '../AttributeTableHeader/AttributeTableHeader';\nimport AttributeTable from '../AttributeTable/AttributeTable';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {AttributeEditing} from '../AttributeEditing/AttributeEditing';\n\nimport {useStyles} from './styles';\nimport {\n checkCanCreateAttribute,\n isEditableMode as checkIsEditableMode,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useEditableAttribute} from './hooks/useEditableAttribute';\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const TableAttributeView = ({config, className}: Props) => {\n const {caption, max} = config;\n const styles = useStyles();\n\n const {\n values,\n page,\n setPage,\n isLoading,\n searchQuery,\n setSearchQuery,\n visibleColumns,\n onFilter,\n onSort,\n onToggleFilters,\n onChangeColumns,\n filters,\n sorting,\n totalVisibleValues,\n hasPaging,\n attributeType,\n showTable,\n allColumnsData\n } = useContext(TableAttributeContext);\n\n const {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n } = useEditableAttribute();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n\n const preparedValues = isEditableMode ? modifiedValues : values;\n\n const {canCreate: hasConfigToCreate} = useConfigPermissions();\n\n const canCreate =\n hasConfigToCreate(config) &&\n attributeType &&\n checkCanCreateAttribute({attributeType, mode}) &&\n !editingValues.length;\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))),\n [visibleColumns, allColumnsData]\n );\n\n return (\n <BasicView className={classnames(styles.root, className)}>\n {showTable ? (\n <>\n <AttributeTableHeader\n title={caption}\n total={totalVisibleValues}\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n searchQuery={searchQuery}\n onChangeSearchQuery={setSearchQuery}\n filtersEnabled={!!filters}\n onToggleFilters={onToggleFilters}\n />\n <div style={{position: 'relative'}}>\n {isEditableMode && (\n <div className={styles.editor}>\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.addButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {editingValues.map((value) => (\n <AttributeEditing\n key={value.uri}\n attributeValue={value}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n onCancel={onCancel}\n onApply={onApply}\n hasChanges={checkHasChanges(value)}\n />\n ))}\n </div>\n )}\n {visibleColumnsData.length > 0 && (\n <AttributeTable\n columnsData={visibleColumnsData}\n config={config}\n values={preparedValues}\n filters={filters}\n onFilter={onFilter}\n sorting={sorting}\n onSort={onSort}\n onEdit={onStartEditing}\n onDeleteAttribute={onDeleteAttribute}\n deletedUris={deletedUris}\n />\n )}\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n rowsPerPageOptions={[]}\n rowsPerPage={max}\n page={page}\n onChangePage={setPage}\n />\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </>\n ) : (\n <>\n <FacetViewHeader title={caption} className={styles.header} />\n <Typography className={styles.noData}>{i18n.text('No data')}</Typography>\n </>\n )}\n </BasicView>\n );\n};\n","import {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {pick, prop} from 'ramda';\nimport {Entity, getPathsTree, isTempUri, updateTreesWithNewEntity} from '@reltio/mdm-sdk';\nimport {useDidUpdateEffect, useSafePromise} from '@reltio/components';\nimport {Response, Node} from '../types';\n\nlet nodeCounter = 0;\nexport const generateId = () => nodeCounter++;\n\nconst processResponse = (response: Response) => {\n const fakeRoot = {\n children: [] as Node[],\n nodeId: generateId()\n };\n if (response.parentPaths) {\n for (let i = 0; i < response.parentPaths.length; i++) {\n const path = response.parentPaths[i];\n let nextRoot = fakeRoot;\n for (let j = path.length - 1; j >= 0; j--) {\n const nextParent = path[j];\n const entity = response.entities[nextParent.entityUri];\n const isRoot = j === path.length - 1;\n const node: Node = {\n entity,\n children: [],\n nodeId: generateId(),\n expanded: true,\n rootIndex: isRoot ? i + 1 : undefined\n };\n if (isRoot) {\n node.root = isRoot;\n }\n nextRoot.children.push(node);\n nextRoot = node;\n }\n }\n }\n return fakeRoot.children;\n};\nexport const useLoadPaths = (entityUri: string, graphUri: string) => {\n const safePromise = useSafePromise();\n const [treeData, setTreeData] = useState<Node[]>([]);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n useDidUpdateEffect(() => {\n const forest = treeData\n .map((tree, index) => ({tree, index}))\n .reduce((acc, tree) => ({...acc, [tree.index]: {root: tree.tree}}), {});\n const newTrees = updateTreesWithNewEntity(pick(['uri', 'label', 'secondaryLabel', 'type'], entity), forest);\n setTreeData(newTrees.map(prop('root')));\n }, [entity?.updatedTime]);\n useEffect(() => {\n if (!isTempUri(entityUri)) {\n safePromise(getPathsTree({uri: entityUri, graphUri}))\n .then(processResponse)\n .then(setTreeData)\n .catch((e) => {\n console.warn(e);\n });\n }\n return () => {\n setTreeData([]);\n };\n }, [entityUri, graphUri, safePromise]);\n return {treeData, setTreeData};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n fontSize: '13px',\n display: 'flex',\n paddingTop: '6px',\n position: 'relative'\n },\n title: {\n flexGrow: 1,\n minHeight: '15px',\n color: theme.palette.primary.main,\n lineHeight: '15px'\n },\n link: {\n cursor: 'pointer',\n color: theme.palette.primary.main,\n lineHeight: '15px'\n },\n selected: {\n fontWeight: 'bold'\n },\n wrapper: {\n width: '100%'\n },\n avatar: {\n height: '16px',\n width: '16px',\n marginRight: '8px',\n marginLeft: '8px'\n },\n header: {\n padding: '0 4px 0 16px'\n },\n treeContainer: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n minHeight: '372px',\n maxHeight: '507px',\n overflow: 'auto'\n },\n tree: {\n flexGrow: 1,\n height: 0\n },\n buttonsContainer: {\n flexShrink: 0,\n marginLeft: 'auto',\n '& > * + *': {\n marginLeft: '-4px'\n }\n },\n button: {\n padding: '8px'\n }\n}));\n","import React from 'react';\nimport {HierarchyPathsViewConfig} from '@reltio/mdm-sdk';\n\nexport const ConfigContext = React.createContext<HierarchyPathsViewConfig>(null);\n","import React, {memo, useCallback, useContext} from 'react';\nimport classnames from 'classnames';\nimport {Avatar as Avatar} from '@material-ui/core';\nimport {useStyles} from './styles';\nimport DEFAULT_ICON from './defaultTypeIcon.png';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdm, {ui} from '@reltio/mdm-module';\nimport {ConfigContext} from './ConfigContext';\nimport {getAbsoluteImageUrl, getEntityType, getPropWithInheritance, getEntityLink} from '@reltio/mdm-sdk';\nimport {Link} from '@reltio/components';\nimport {Node as NodeType} from './types';\n\nconst onImageLoadFail = (e) => {\n e.target.src = DEFAULT_ICON;\n};\n\ntype Props = {\n node?: NodeType;\n};\n\nexport const Node = ({node}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const uri = node.entity.uri;\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const config = useContext(ConfigContext);\n const uiPath = useSelector(mdm.selectors.getUIPath);\n const {uri: currentEntityUri} = useSelector(mdm.selectors.getEntity);\n const entityLink = getEntityLink({uiPath, uri});\n const isSelected = uri === currentEntityUri;\n const onTitleClick = useCallback(() => {\n dispatch(ui.actions.openEntity({uri, viewId: config.id}));\n }, [dispatch, config, uri]);\n const {\n entity: {label: title},\n nodeId\n } = node;\n const entityType = getEntityType(metadata, node.entity.type) || {};\n const entityTypeGraphIcon = getPropWithInheritance(metadata, entityType, 'typeGraphIcon');\n const icon = entityTypeGraphIcon && getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n return (\n <div className={styles.wrapper} data-node-id={nodeId}>\n <div className={styles.container}>\n <Avatar className={classnames(styles.avatar)} src={icon || DEFAULT_ICON} onError={onImageLoadFail} />\n <span className={classnames(styles.link, {[styles.selected]: isSelected})}>\n <Link to={entityLink} onClick={onTitleClick}>\n {title}\n </Link>\n </span>\n </div>\n </div>\n );\n};\n\nexport default memo(Node);\n","export const getNodeKey = ({node}) => node.nodeId;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n lineBlock: {\n height: '100%',\n position: 'relative',\n display: 'inline-block'\n },\n lineChildren: {\n height: '100%',\n position: 'absolute',\n display: 'inline-block'\n },\n rootIndex: {\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.54)',\n height: '100%'\n },\n verticalLine: {\n width: '1px',\n left: '50%',\n top: 0,\n height: '50%',\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)'\n },\n horizontalLineRight: {\n height: '1px',\n top: '14px',\n left: '50%',\n width: '24%',\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)'\n },\n node: {\n minWidth: '100%',\n position: 'relative',\n textAlign: 'left',\n padding: '0 24px 0 18px',\n boxSizing: 'border-box',\n whiteSpace: 'normal',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.06)'\n }\n },\n nodeContent: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n paddingLeft: '18px',\n boxSizing: 'border-box'\n },\n row: {\n display: 'flex'\n },\n rowContents: {\n position: 'relative',\n borderLeft: 'none',\n paddingLeft: '4px',\n flex: '1 1 auto',\n width: 0,\n display: 'flex',\n verticalAlign: 'middle',\n boxSizing: 'border-box'\n },\n buttonWrapper: {\n display: 'flex',\n paddingTop: '13px',\n width: '12px',\n cursor: 'pointer'\n },\n collapsedButton: {\n transform: 'rotate(-90deg)'\n },\n expandedButton: {\n transform: 'rotate(0deg)'\n },\n button: {\n transition: 'transform .15s ease',\n width: 0,\n height: 0,\n borderLeft: '4px solid transparent',\n borderRight: '4px solid transparent',\n borderTop: '4px solid rgba(0, 0, 0, 0.54)'\n },\n rowTitle: {\n flex: '1 1 auto',\n width: 0,\n paddingRight: '11px'\n }\n}));\n","import React from 'react';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\nimport {omit} from 'ramda';\nimport {Node} from '../types';\n\ntype Props = {\n treeIndex: number;\n scaffoldBlockPxWidth: number;\n node: Node;\n path: Array<string | number>;\n style?: Record<string, unknown>;\n title: React.ReactElement;\n toggleChildrenVisibility: (props) => void;\n};\n\nconst NodeRendererDefault = (props: Props) => {\n const {scaffoldBlockPxWidth, toggleChildrenVisibility, node, title, path, treeIndex, style, ...otherProps} = omit(\n [\n 'connectDragPreview',\n 'connectDragSource',\n 'isDragging',\n 'canDrop',\n 'canDrag',\n 'draggedNode',\n 'isSearchMatch',\n 'isSearchFocus',\n 'buttons',\n 'didDrop',\n 'children',\n 'treeId',\n 'isOver',\n 'parentNode',\n 'rowDirection'\n ],\n props\n );\n const nodeTitle = title;\n\n const showToggleChildrenButton =\n toggleChildrenVisibility && !node.root && node.children && node.children.length > 0;\n\n const onToggle = () => {\n toggleChildrenVisibility({\n node,\n path,\n treeIndex\n });\n };\n const styles = useStyles();\n return (\n <div style={{height: '100%'}} {...otherProps} key={node.nodeId}>\n {showToggleChildrenButton && node.expanded && (\n <div style={{width: scaffoldBlockPxWidth - 2}} className={styles.lineChildren} />\n )}\n <div className={styles.row} style={style}>\n <div className={styles.rowContents}>\n {showToggleChildrenButton && (\n <div className={styles.buttonWrapper} onClick={onToggle}>\n <div\n aria-label={node.expanded ? 'Collapse' : 'Expand'}\n className={classnames(\n styles.button,\n node.expanded ? styles.expandedButton : styles.collapsedButton\n )}\n />\n </div>\n )}\n <div className={styles.rowTitle}>\n {typeof nodeTitle === 'function'\n ? nodeTitle({\n node,\n path,\n treeIndex\n })\n : nodeTitle}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default NodeRendererDefault;\n","import treeNodeRenderer from './tree-node-data-renderer';\nimport nodeContentRenderer from './node-content-renderer';\n\nconst scaffoldBlockPxWidth = 16;\nconst rowHeight = 28;\nconst slideRegionSize = 50;\n\nexport const theme = {nodeContentRenderer, treeNodeRenderer, scaffoldBlockPxWidth, rowHeight, slideRegionSize};\n","import React from 'react';\nimport {useStyles} from './styles';\nimport {omit} from 'ramda';\nimport {Node} from '../types';\n\nconst MIN_NODE_CONTENT_WIDTH = 250;\n\ntype Props = {\n scaffoldBlockPxWidth: number;\n lowerSiblingCounts: number[];\n\n node: Node;\n children: React.ReactElement;\n style?: Record<string, unknown>;\n};\n\nconst TreeNode = (props: Props) => {\n const {children, scaffoldBlockPxWidth, lowerSiblingCounts, node, ...otherProps} = omit(\n [\n 'listIndex',\n 'swapFrom',\n 'swapLength',\n 'swapDepth',\n 'draggedNode',\n 'getPrevRow',\n 'connectDropTarget',\n 'isOver',\n 'canDrop',\n 'treeIndex',\n 'treeId',\n 'path',\n 'rowDirection'\n ],\n props\n );\n const styles = useStyles();\n // Construct the scaffold representing the structure of the tree\n const scaffoldBlockCount = lowerSiblingCounts.length;\n const scaffold = [];\n lowerSiblingCounts.forEach((lowerSiblingCount, i) => {\n scaffold.push(\n <div key={`pre_${1 + i}`} style={{width: scaffoldBlockPxWidth}} className={styles.lineBlock}>\n {node.root && <div className={styles.rootIndex}>{node.rootIndex}.</div>}\n {i === scaffoldBlockCount - 1 && i !== 0 && (\n <>\n <div className={styles.verticalLine} />\n <div className={styles.horizontalLineRight} />\n </>\n )}\n </div>\n );\n });\n\n const shift = node.root ? scaffoldBlockPxWidth - 4 : 0; //4px - shifting for rootIndex\n const scaffoldWidth = scaffoldBlockPxWidth * scaffoldBlockCount - shift;\n const style = {left: scaffoldWidth, width: `calc(100% - ${scaffoldWidth}px`};\n const width = `${scaffoldWidth + MIN_NODE_CONTENT_WIDTH}px`;\n const nodeStyle = {...otherProps.style, width};\n return (\n <div {...otherProps} className={styles.node} style={nodeStyle}>\n {scaffold}\n\n <div className={styles.nodeContent} style={style}>\n {children}\n </div>\n </div>\n );\n};\n\nexport default TreeNode;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\",\n fillOpacity: \".54\"\n}, React.createElement(\"path\", {\n d: \"M14.5 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm4 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm-17 1a1.5 1.5 0 110-3 1.5 1.5 0 010 3zM4 4a2 2 0 110-4 2 2 0 010 4zm1 16a2 2 0 110-4 2 2 0 010 4zm4.5-6a4.5 4.5 0 110-9 4.5 4.5 0 010 9zm0-2a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm6 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3z\",\n fill: \"#000\"\n}))));","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {FacetViewHeader, SmallIconButtonWithTooltip} from '@reltio/components';\nimport ShowGraphIcon from './icons/ShowGraph.svg';\nimport {useStyles} from './styles';\n\ntype Props = {\n title?: string;\n onGraphOpen: () => void;\n};\n\nconst HierarchyPathsHeader = ({title, onGraphOpen}: Props) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <div className={styles.buttonsContainer}>\n <SmallIconButtonWithTooltip\n className={styles.button}\n tooltipTitle={i18n.text('Show Graph')}\n icon={ShowGraphIcon}\n onClick={onGraphOpen}\n size=\"L\"\n />\n </div>\n </FacetViewHeader>\n );\n};\n\nexport default HierarchyPathsHeader;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative'\n },\n bodyWrapper: {\n paddingTop: '21px'\n }\n}));\n","import React, {useRef, useEffect, useState} from 'react';\nimport {useAPI} from '@reltio/components';\nimport {CustomActionViewConfig} from '@reltio/mdm-sdk';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {isNil, reject} from 'ramda';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: CustomActionViewConfig;\n className?: string;\n};\n\nexport const CustomView = ({config, className}: Props) => {\n const basicViewRef = useRef<HTMLDivElement>();\n const dialogRef = useRef<HTMLDivElement>();\n const [showModal, setShowModal] = useState<boolean>(false);\n const {height, width, tooltip: defaultTooltip} = config;\n const {html, visible, tooltip: updatedTooltip, customStyles, popup} = useAPI(config);\n const styles = useStyles();\n const tooltip = updatedTooltip || defaultTooltip;\n useEffect(() => {\n if (basicViewRef.current && html) {\n basicViewRef.current.innerHTML = '';\n Array.from(html.childNodes).forEach((child) => {\n basicViewRef.current.appendChild(child);\n });\n }\n }, [html]);\n useEffect(() => {\n setShowModal(!!popup);\n }, [popup]);\n\n useEffect(() => {\n if (showModal && dialogRef.current) {\n dialogRef.current.innerHTML = '';\n if (popup) {\n Array.from(popup.childNodes).forEach((child) => {\n dialogRef.current.appendChild(child);\n });\n }\n }\n }, [showModal, popup]);\n\n const style: {width?: number; height?: number} = reject(isNil, {width, height});\n return visible ? (\n <div className={styles.bodyWrapper}>\n <Dialog ref={dialogRef} open={!!popup} />\n <Tooltip title={tooltip || ''}>\n <div\n ref={basicViewRef}\n style={{...style, ...customStyles}}\n className={classnames(styles.root, className)}\n />\n </Tooltip>\n </div>\n ) : null;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n dragHandleContainer: {\n position: 'relative',\n width: '100%',\n height: 'inherit'\n },\n dragHandleVisibilityArea: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '24px',\n zIndex: 11,\n '&:hover $dragHandle': {\n visibility: 'visible'\n },\n '.react-grid-item.static &:hover $dragHandle': {\n visibility: 'hidden'\n }\n },\n dragHandle: {\n position: 'absolute',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n top: '-3px',\n zIndex: 11,\n cursor: 'move',\n visibility: 'hidden'\n },\n dragIcon: {\n transform: 'translateX(-50%) rotate(90deg)',\n color: 'rgba(0, 0, 0, 0.3)'\n }\n});\n","import React, {ComponentType} from 'react';\nimport classnames from 'classnames';\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\n\nimport {useStyles} from './styles';\n\nconst withDragHandle = <P extends Record<string, unknown>>(Component: ComponentType<P>) => {\n const WithDragHandle = (props: P) => {\n const styles = useStyles();\n return (\n <div className={styles.dragHandleContainer}>\n <div className={styles.dragHandleVisibilityArea}>\n <div className={classnames('viewDraggableHandle', styles.dragHandle)}>\n <DragIndicatorIcon className={styles.dragIcon} />\n </div>\n </div>\n <Component {...props} />\n </div>\n );\n };\n\n WithDragHandle.displayName = 'WithDragHandle';\n return WithDragHandle;\n};\n\nexport default withDragHandle;\n","import React, {ComponentType} from 'react';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, ErrorBoundary} from '@reltio/components';\n\nconst withErrorBoundary = <P extends Record<string, unknown>>(Component: ComponentType<P>) => {\n const WithErrorBoundary = (props: P) => {\n return (\n <ErrorBoundary\n error={\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.ERROR}\n text=\"\"\n secondaryText={i18n.text('Something went wrong')}\n variant={EMPTY_STATE_VARIANTS.small}\n />\n }\n >\n <Component {...props} />\n </ErrorBoundary>\n );\n };\n\n WithErrorBoundary.displayName = 'WithErrorBoundary';\n return WithErrorBoundary;\n};\n\nexport default withErrorBoundary;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n stubView: {\n padding: '20px'\n },\n fullHeight: {\n height: '100%'\n },\n component: {\n boxSizing: 'border-box',\n overflow: 'auto',\n boxShadow: 'none',\n borderRadius: 'unset'\n }\n});\n","import {useEffect, useState} from 'react';\nimport {both, gt, lt, path, pipe} from 'ramda';\nimport {resolve} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nconst filterWrongLat = pipe(path(['point', 'lat']), both(gt(90), lt(-90)));\n\nexport const useMarkers = (entity, metadata, mapKey) => {\n const [markers, setMarkers] = useState([]);\n const [loading, setLoading] = useState(true);\n const safePromise = useSafePromise();\n useEffect(() => {\n setLoading(true);\n safePromise(resolve(metadata, [entity], mapKey))\n .then((markers) => {\n setMarkers(markers.filter(filterWrongLat));\n })\n .catch(() => {\n setMarkers([]);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [entity, metadata, mapKey, safePromise]);\n\n return {markers, loading};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n fullHeight: {\n height: '100%'\n },\n fullscreenBtn: {\n position: 'absolute',\n right: '5px',\n top: '5px',\n zIndex: 100\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n caption: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport useStyles from './styles';\n\ntype ImageLineCaptionProps = {\n totalImages: number;\n};\n\nexport const ImageLineCaption = ({totalImages}: ImageLineCaptionProps) => {\n const styles = useStyles();\n const photoWord = totalImages > 1 ? i18n.text('photos') : i18n.text('photo');\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {`${totalImages} ${photoWord}`}\n </Typography>\n );\n};\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, pathOr} from 'ramda';\nimport {EditableImageAttributesLine} from '@reltio/components';\nimport {AttributeType, Entity, Paging, AttributeItem, ImageAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {IMAGE_SIZE} from '../ImageAttributeView';\nimport {ImageLineCaption} from '../ImageLineCaption/ImageLineCaption';\n\ntype ImageAttributeViewEditableContentProps = {\n config: ImageAttributeViewConfig;\n attributeType: AttributeType;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nexport const ImageAttributeViewEditableContent = ({\n config,\n attributeType,\n paging,\n requestNextPageOfAttributeValues\n}: ImageAttributeViewEditableContentProps) => {\n const dispatch = useDispatch();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const modifiedEntityValues = pathOr([], ['attributes', attributeType.name], modifiedEntity);\n const viewId = config.id;\n\n const onChangeAttribute = (params: AttributeItem) =>\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n\n const onDeleteAttribute = (params: AttributeItem) =>\n pipe(profile.actions.removeAttribute, dispatch)({...params, viewId});\n\n return (\n <>\n <EditableImageAttributesLine\n attributeValues={modifiedEntityValues}\n attributeType={attributeType}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={modifiedEntity.uri}\n onChangeAttribute={onChangeAttribute}\n imageSize={IMAGE_SIZE}\n paging={paging}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n />\n <ImageLineCaption totalImages={modifiedEntityValues.length} />\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: '8px 16px'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pathOr, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {BasicView, FacetViewHeader, ImageAttributesLine} from '@reltio/components';\nimport {findAttributeTypeByUri, isEditableMode, ImageAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {ImageAttributeViewEditableContent} from './ImageAttributeViewEditableContent/ImageAttributeViewEditableContent';\nimport {ImageLineCaption} from './ImageLineCaption/ImageLineCaption';\nimport useStyles from './styles';\n\ntype ImageAttributeViewProps = {\n config: ImageAttributeViewConfig;\n className?: string;\n};\n\nexport const IMAGE_SIZE = {\n imageMargin: 4,\n imageWidth: 162,\n imageHeight: 162\n};\n\nexport const ImageAttributeView = ({config, className}: ImageAttributeViewProps) => {\n const {attributeUri} = config;\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const entity = useSelector(mdmModule.selectors.getEntityWithDiff);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const attributeType = findAttributeTypeByUri(metadata, attributeUri);\n const entityValues = pathOr([], ['attributes', attributeType?.name], entity);\n const paging = path(['attributes', 'paging', attributeUri], entity);\n const totalValues = entityValues.length;\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const requestNextPageOfAttributeValues = useCallback(\n (payload: RequestNextPageOfAttributeValuesPayload) =>\n dispatch(profile.actions.requestNextPageOfAttributeValues(payload)),\n [dispatch]\n );\n\n const renderContent = () => {\n if (attributeType) {\n if (isEditableMode(mode)) {\n const props = {\n attributeType,\n config,\n paging,\n requestNextPageOfAttributeValues\n };\n return <ImageAttributeViewEditableContent {...props} />;\n }\n if (totalValues > 0) {\n const props = {\n attributeValues: entityValues,\n attributeType,\n imageSize: IMAGE_SIZE,\n paging,\n parentUri: entity.uri,\n requestNextPageOfAttributeValues\n };\n return (\n <>\n <ImageAttributesLine {...props} />\n <ImageLineCaption totalImages={totalValues} />\n </>\n );\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n return (\n <BasicView className={className}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.container}>{renderContent()}</div>\n </BasicView>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n matchesContainer: {\n position: 'relative'\n },\n footer: {\n display: 'flex',\n alignItems: 'end',\n flexGrow: 1,\n justifyContent: 'flex-start',\n borderTop: '1px solid rgba(0,0,0, 0.12)',\n padding: '8px 16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n noData: {\n paddingLeft: '16px',\n paddingBottom: '16px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n }\n}));\n","import {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {getActionPermissionForMatch, Match, ProfilePotentialMatchesViewConfig} from '@reltio/mdm-sdk';\nimport React, {useCallback, useContext, useMemo} from 'react';\nimport {ActionButtonMode, MergeButton, NotMatchButton, ViewIdContext} from '@reltio/components';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onStartRequest: () => void;\n onFinishRequest: () => void;\n};\nexport const ActionButtons = ({config, match, onStartRequest, onFinishRequest}: Props) => {\n const dispatch = useDispatch();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const {canMerge, canMark} = getActionPermissionForMatch(metadata, config, match.object, entity, match.matchRules);\n const entities = useMemo(() => {\n return [match.object];\n }, [match.object]);\n\n const actionButtonProps = {\n entity,\n entities,\n mode: ActionButtonMode.iconButton,\n onStartRequest\n };\n const viewId = useContext(ViewIdContext);\n const onMergeFinish = useCallback(() => {\n onFinishRequest();\n dispatch(profile.entity.actions.loadEntity({viewId, uri: entity.uri}));\n }, [dispatch, entity.uri, onFinishRequest, viewId]);\n return (\n <>\n {canMerge && <MergeButton {...actionButtonProps} onFinishRequest={onMergeFinish} />}\n {canMark && <NotMatchButton {...actionButtonProps} onFinishRequest={onFinishRequest} />}\n </>\n );\n};\n","import {\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n CommentsContainer,\n ProfileMatchCard,\n useMatchesLoader\n} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n Match,\n ProfilePotentialMatchesViewConfig\n} from '@reltio/mdm-sdk';\nimport {ActionButtons} from './ActionButtons';\nimport React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = Pick<ReturnType<typeof useMatchesLoader>, 'entitiesMap'> & {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onFinishRequest: () => void;\n onStartRequest: () => void;\n};\n\nexport const MatchCard = ({config, entitiesMap, match, onFinishRequest, onStartRequest}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n return (\n <ProfileMatchCard\n match={match}\n entity={entity}\n entitiesMap={entitiesMap}\n metadata={metadata}\n className={COMMENTS_CONTAINER_VISIBILITY_AREA}\n >\n <CommentsContainer\n uri={createObjectIdForPM(entity.uri, match.object.uri)}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: match.object.uri\n })}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n />\n <ActionButtons\n match={match}\n config={config}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n />\n </ProfileMatchCard>\n );\n};\n","import React, {useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {isEmpty, map} from 'ramda';\nimport {Link as Link} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n BasicView,\n CollaborationContext,\n EntitiesMapContext,\n FacetViewHeader,\n LinearLoadIndicator,\n useMatchesLoader,\n ViewIdContext\n} from '@reltio/components';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n getEntityUriForLink,\n getEntityUriFromMatchObject,\n getPotentialMatchesObjectIdsForCollaboration,\n Order,\n ProfilePotentialMatchesViewConfig\n} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\nimport {MatchCard} from './MatchCard';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n className?: string;\n};\n\nexport const DEFAULT_MATCHES_LIMIT = 3;\nexport const DEFAULT_OPTIONS = {\n showTransitiveMatches: true,\n showInactiveEntities: false\n};\nexport const DEFAULT_SORTING = {order: Order.asc, field: 'score'};\nenum ComponentStates {\n Loading,\n NoData,\n Loaded\n}\nexport const ProfilePotentialMatchesView = ({config, className}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = getEntityUriForLink(entity);\n\n const [isLoading, setIsLoading] = useState(false);\n const turnOnDisableSpinner = useCallback(() => {\n setIsLoading(true);\n }, []);\n const turnOffDisableSpinner = useCallback(() => {\n setIsLoading(false);\n }, []);\n\n const {matches, entitiesMap, loadMatches, total} = useMatchesLoader({\n enabled: !!entityUri,\n entity,\n options: DEFAULT_OPTIONS,\n filter: '',\n page: 0,\n sorting: DEFAULT_SORTING,\n rowsPerPage: DEFAULT_MATCHES_LIMIT,\n onStartLoading: turnOnDisableSpinner,\n onFinishLoading: turnOffDisableSpinner\n });\n const onFinishMatchAction = useCallback(() => {\n loadMatches();\n }, [loadMatches]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const openPotentialMatchPerspective = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'potentialMatches', viewId}));\n }, [dispatch, viewId]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, map(getEntityUriFromMatchObject, matches)),\n [entityUri, matches]\n );\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const showSeeAll = total > DEFAULT_MATCHES_LIMIT && !isEmpty(matches);\n const getComponentState = () => {\n if (isLoading) {\n return ComponentStates.Loading;\n }\n if (isEmpty(matches)) {\n return ComponentStates.NoData;\n }\n return ComponentStates.Loaded;\n };\n const state = getComponentState();\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={classnames(styles.root, className)}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.matchesContainer}>\n {state === ComponentStates.Loading && <LinearLoadIndicator />}\n {state === ComponentStates.NoData && (\n <Typography className={styles.noData}>{i18n.text('No matches found')}</Typography>\n )}\n {state === ComponentStates.Loaded &&\n matches.map((match) => (\n <MatchCard\n config={config}\n entitiesMap={entitiesMap}\n match={match}\n onFinishRequest={onFinishMatchAction}\n onStartRequest={turnOnDisableSpinner}\n key={match.object.uri}\n />\n ))}\n </div>\n {showSeeAll && (\n <>\n <div className={styles.footer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n onClick={openPotentialMatchPerspective}\n underline=\"none\"\n >\n {i18n.text('See all')}\n </Link>\n </div>\n </>\n )}\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n","import React, {lazy} from 'react';\nimport {Store} from 'redux';\nimport {\n ProfileViewConfig,\n ProfileViewTypes,\n AttributeViewConfig,\n EntityMapViewConfig,\n ProfilePotentialMatchesViewConfig,\n RelationsViewConfig,\n ImageAttributeViewConfig,\n SingleAttributeViewConfig,\n HierarchyPathsViewConfig,\n HierarchyTreeViewConfig,\n CustomActionViewConfig\n} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {ProfileAttributesView} from '../ProfileAttributesView/ProfileAttributesView';\nimport {ProfileSingleAttributeView} from '../ProfileSingleAttributeView/ProfileSingleAttributeView';\nimport {ProfileRelationsView} from '../ProfileRelationsView/ProfileRelationsView';\nimport {ProfileTableAttributeView} from '../ProfileTableAttributeView/ProfileTableAttributeView';\nimport {HierarchyPathsView} from '../HierarchyPathsView';\nimport {CustomView} from '../Sandbox/CustomView';\nimport withDragHandle from './HOCs/withDragHandle';\nimport withErrorBoundary from './HOCs/withErrorBoundary';\nimport {StubView} from './StubView';\nimport EntityMapView from '../EntityMapView/EntityMapView';\nimport {ImageAttributeView} from '../ImageAttributeView/ImageAttributeView';\nimport {ProfilePotentialMatchesView} from '../ProfilePotentialMatchesView/ProfilePotentialMatchesView';\n\nconst wrapView = <P extends unknown>(component: P): P => pipe(withErrorBoundary, withDragHandle)(component);\n\nconst WrappedStubView = wrapView(StubView);\nexport const WrappedProfileAttributesView = wrapView(ProfileAttributesView);\nexport const WrappedProfileSingleAttributeView = wrapView(ProfileSingleAttributeView);\nexport const WrappedProfileTableAttributeView = wrapView(ProfileTableAttributeView);\nexport const WrappedProfileRelationsView = wrapView(ProfileRelationsView);\nexport const WrappedCustomView = wrapView(CustomView);\nexport const WrappedHierarchyPathView = wrapView(HierarchyPathsView);\nexport const WrappedProfilePotentialMatchesView = wrapView(ProfilePotentialMatchesView);\n\nexport const WrappedHierarchyTreeView = lazy(() =>\n import(/* webpackMode: \"eager\" */ '@reltio/hierarchy-tree').then((importedModule) => ({\n default: wrapView(importedModule.HierarchyTreeView)\n }))\n);\n\nexport const WrappedRelationshipsTableView = lazy(() =>\n import(/* webpackMode: \"eager\" */ '@reltio/relations-table').then((importedModule) => ({\n default: wrapView(importedModule.RelationshipsTableView)\n }))\n);\nexport const WrappedEntityMapView = wrapView(EntityMapView);\nexport const WrappedImageAttributeView = wrapView(ImageAttributeView);\n\nexport type ViewComponentProps = {\n store: Store<unknown>;\n config:\n | ProfileViewConfig\n | AttributeViewConfig\n | SingleAttributeViewConfig\n | RelationsViewConfig\n | EntityMapViewConfig\n | ImageAttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n isAutosize?: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nclass ViewsFactory {\n static ViewTypes = ProfileViewTypes;\n static getComponentBy = (\n propName: string,\n {store, config, className, isFullscreen, onToggleFullscreen}: ViewComponentProps\n ) => {\n switch (config[propName]) {\n case ViewsFactory.ViewTypes.HierarchyTree:\n return (\n <WrappedHierarchyTreeView\n config={config as HierarchyTreeViewConfig}\n store={store}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.HierarchyPaths:\n return <WrappedHierarchyPathView config={config as HierarchyPathsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.RelationsTable:\n return (\n <WrappedRelationshipsTableView\n config={config as RelationsViewConfig}\n store={store}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Relations:\n return <WrappedProfileRelationsView config={config as RelationsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.Attributes:\n return <WrappedProfileAttributesView className={className} config={config as AttributeViewConfig} />;\n case ViewsFactory.ViewTypes.SingleAttribute:\n return (\n <WrappedProfileSingleAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.AttributeTable:\n return (\n <WrappedProfileTableAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Map:\n return (\n <WrappedEntityMapView\n config={config as EntityMapViewConfig}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Custom:\n return <WrappedCustomView config={config as CustomActionViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.ImageAttribute:\n return <WrappedImageAttributeView config={config as ImageAttributeViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.PotentialMatches:\n return (\n <WrappedProfilePotentialMatchesView\n config={config as ProfilePotentialMatchesViewConfig}\n className={className}\n />\n );\n }\n };\n static getComponent = (props: ViewComponentProps) => {\n return (\n ViewsFactory.getComponentBy('class', props) ||\n ViewsFactory.getComponentBy('react-class', props) || <WrappedStubView className={props.className} />\n );\n };\n}\n\nexport default ViewsFactory;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {BasicView} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst StubView = ({className}: Props) => {\n const styles = useStyles();\n return (\n <BasicView className={classnames(styles.stubView, 'viewDraggableHandle', className)}>NOT IMPLEMENTED</BasicView>\n );\n};\n\nexport {StubView};\n","import React from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {SingleAttributeContext} from './contexts/SingleAttributeContext';\nimport {SingleAttributeView} from './components/SingleAttributeView/SingleAttributeView';\nimport {useSingleAttribute} from './hooks/useSingleAttribute';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileSingleAttributeView = ({className, config}: Props) => {\n const singleAttribute = useSingleAttribute(config);\n\n return (\n <SingleAttributeContext.Provider value={singleAttribute}>\n <SingleAttributeView config={config} className={className} />\n </SingleAttributeContext.Provider>\n );\n};\n","import {useState, useMemo, useCallback} from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\n\nexport const useSingleAttribute = (config: SingleAttributeViewConfig) => {\n const [searchQuery, setSearchQuery] = useState('');\n const [page, setPage] = useState(0);\n const [showInactive, setShowInactive] = useState(false);\n const params = useMemo(() => ({page, searchQuery, showInactive}), [page, searchQuery, showInactive]);\n const attribute = useSingleAttributeLoader(config, params, true);\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n return {\n setSearchQuery,\n searchQuery,\n setPage,\n page,\n toggleShowInactive,\n showInactive,\n ...attribute\n };\n};\n","import React from 'react';\nimport {TableAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {TableAttributeContext} from './contexts/TableAttributeContext';\nimport {useTableAttribute} from './hooks/useTableAttribute';\nimport {TableAttributeView} from './components/TableAttributeView/TableAttributeView';\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileTableAttributeView = ({config, className}: Props) => {\n const tableAttribute = useTableAttribute(config);\n\n return (\n <TableAttributeContext.Provider value={tableAttribute}>\n {config && <TableAttributeView config={config} className={className} />}\n </TableAttributeContext.Provider>\n );\n};\n","import {useMemo, useReducer} from 'react';\nimport {reject, isNil, pipe, not, prop} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {findAttributeTypeByUri, isComplexAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useActions} from '@reltio/components';\nimport reducer, {actions} from './reducer';\nimport {getColumnsData} from '../helpers/tableAttributeHelpers';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\nimport {buildMDMFilters} from './helpers';\n\nconst DEFAULT_COUNT_COLUMN = 5;\n\nexport const useTableAttribute = (config: SingleAttributeViewConfig) => {\n const {attributeUri} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const allColumnsData = useMemo(\n () => (attributeType ? getColumnsData(metadata, attributeType) : []),\n [metadata, attributeType]\n );\n const initialState = useMemo(\n () => ({\n searchQuery: '',\n filters: null,\n sorting: undefined,\n visibleColumns: allColumnsData\n .filter(pipe(prop('dataTypeDefinition'), isComplexAttribute, not))\n .map(({id}) => id)\n .slice(0, DEFAULT_COUNT_COLUMN),\n page: 0\n }),\n [allColumnsData]\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const {searchQuery, filters, sorting, page} = state;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n const requestFilters = useMemo(() => {\n const mdmFilters = buildMDMFilters(allColumnsData, filters);\n return mdmFilters.length ? mdmFilters : null;\n }, [filters, allColumnsData]);\n\n const params = useMemo(\n () => reject(isNil, {filters: requestFilters, page, sorting, searchQuery}),\n [requestFilters, page, sorting, searchQuery]\n );\n const {changeSearchQuery, changePage, toggleSort, changeFilter, toggleFilters, changeColumns} = useActions({\n actions,\n dispatch\n });\n const attribute = useSingleAttributeLoader(config, params, false);\n const showTable = Boolean(\n (attribute?.values?.length || requestFilters || searchQuery || isEditableMode) &&\n attributeType &&\n !attributeType.hidden\n );\n return {\n ...state,\n setSearchQuery: changeSearchQuery,\n setPage: changePage,\n onSort: toggleSort,\n onFilter: changeFilter,\n onToggleFilters: toggleFilters,\n onChangeColumns: changeColumns,\n showTable,\n allColumnsData,\n ...attribute\n };\n};\n","import {propEq} from 'ramda';\nimport {Maybe} from '@reltio/mdm-sdk';\nimport {ColumnData, ColumnFilter, columnFilterToMdmFilter} from '@reltio/components';\n\nexport const buildMDMFilters = (columnsData: ColumnData[], filters: {[key: string]: ColumnFilter}) =>\n Maybe.fromNull(filters)\n .map((filters) =>\n Object.entries(filters).map(([columnId, columnFilter]) => {\n const columnData = columnsData.find(propEq('id', columnId));\n return columnFilterToMdmFilter(columnData, columnFilter);\n })\n )\n .orSome([]);\n","import React from 'react';\nimport RelationsView from './components/RelationsView';\nimport {RelationsViewStateContext} from './contexts/RelationsViewStateContext';\nimport useRelationsState from './hooks/useRelationsState';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\ntype Props = {\n config: RelationsViewConfig;\n onResize?: (width: number, height: number) => void;\n className?: string;\n};\n\nexport const ProfileRelationsView = ({config, className}: Props) => {\n const relationsState = useRelationsState(config);\n return (\n <RelationsViewStateContext.Provider value={relationsState}>\n <RelationsView config={config} className={className} />\n </RelationsViewStateContext.Provider>\n );\n};\n","import React, {useCallback} from 'react';\nimport {BasicView, ReactSortableTree} from '@reltio/components';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {useLoadPaths} from './hooks/useLoadPaths';\nimport {Node} from './Node';\nimport {useStyles} from './styles';\nimport {ConfigContext} from './ConfigContext';\nimport {HierarchyPathsViewConfig} from '@reltio/mdm-sdk';\nimport {getNodeKey} from './helpers';\nimport {theme} from './theme';\nimport HierarchyPathsHeader from './HierarchyPathsHeader';\n\ntype Props = {\n className?: string;\n config: HierarchyPathsViewConfig;\n};\n\nexport const HierarchyPathsView = ({config, className}: Props) => {\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const {treeData, setTreeData} = useLoadPaths(entityUri, config.graph.type);\n const styles = useStyles();\n const dispatch = useDispatch();\n const {id, graph} = config;\n const openGraph = useCallback(() => {\n dispatch(ui.actions.openGraph({viewId: id, graphType: graph.type, entityUri}));\n }, [dispatch, id, graph, entityUri]);\n const generateNodeProps = useCallback(\n (rowInfo) => ({\n title: <Node node={rowInfo.node} />\n }),\n []\n );\n return (\n <BasicView className={className}>\n <HierarchyPathsHeader onGraphOpen={openGraph} title={config.caption} />\n <ConfigContext.Provider value={config}>\n <div className={styles.treeContainer}>\n <div className={styles.tree}>\n <ReactSortableTree\n isVirtualized={false}\n treeData={treeData}\n canDrag={false}\n theme={theme}\n generateNodeProps={generateNodeProps}\n onChange={setTreeData}\n getNodeKey={getNodeKey}\n />\n </div>\n </div>\n </ConfigContext.Provider>\n </BasicView>\n );\n};\n","import React, {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdm from '@reltio/mdm-module';\nimport FullscreenIcon from '@material-ui/icons/Fullscreen';\nimport FullscreenExitIcon from '@material-ui/icons/FullscreenExit';\nimport {BasicView, LinearLoadIndicator, ReltioMap} from '@reltio/components';\nimport {SmallIconButton} from '@reltio/components';\n\nimport {AttributeViewConfig} from '@reltio/mdm-sdk';\nimport {useMarkers} from './useMarkers';\nimport useStyles from './styles';\n\ntype EntityMapViewProps = {\n config: AttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nexport const EntityMapView = ({config, isFullscreen, onToggleFullscreen, className}: EntityMapViewProps) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const entity = useSelector(mdm.selectors.getEntity);\n const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\n const {markers, loading} = useMarkers(entity, metadata, mapKey);\n const loadingElement = useMemo(\n () => (\n <div className={styles.fullHeight}>\n <LinearLoadIndicator />\n </div>\n ),\n [styles]\n );\n\n const defaultCenter = useMemo(() => ({lat: 0, lng: 0}), []);\n const mapOptions = useMemo(() => ({mapTypeControl: true}), []);\n\n return (\n mapKey && (\n <BasicView className={classnames(styles.root, className)}>\n {loading && <LinearLoadIndicator />}\n <SmallIconButton\n size=\"S\"\n icon={isFullscreen ? FullscreenExitIcon : FullscreenIcon}\n onClick={() => onToggleFullscreen(config.id)}\n className={styles.fullscreenBtn}\n />\n\n <ReltioMap\n loadingElement={loadingElement}\n defaultZoom={1}\n defaultCenter={defaultCenter}\n markers={markers}\n mapContainerClassName={styles.fullHeight}\n mapKey={mapKey}\n mapOptions={mapOptions}\n />\n </BasicView>\n )\n );\n};\n\nexport default EntityMapView;\n","import React, {memo, Suspense} from 'react';\nimport classnames from 'classnames';\nimport ViewsFactory, {ViewComponentProps} from './ViewsFactory';\nimport {useStyles} from './styles';\n\nconst Fallback = () => null;\n\nconst ViewComponent = memo(({config, store, isFullscreen, isAutosize, onToggleFullscreen}: ViewComponentProps) => {\n const styles = useStyles();\n return (\n <Suspense fallback={<Fallback />}>\n {ViewsFactory.getComponent({\n config,\n store,\n className: classnames(styles.component, {[styles.fullHeight]: !isAutosize}),\n isFullscreen,\n onToggleFullscreen\n })}\n </Suspense>\n );\n});\n\nViewComponent.displayName = 'ViewComponent';\n\nexport {ViewComponent};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {basicView: Record<string, string | number>}) => ({\n item: theme.basicView,\n fixedSizeContainer: {\n height: '100%'\n }\n}));\n","import React, {ReactChildren, ReactNode, useContext} from 'react';\nimport {omit} from 'ramda';\nimport {ReactReduxContext, useSelector} from 'react-redux';\nimport {ReactGridLayoutItem} from '@reltio/components';\nimport {CustomScript, CustomScriptPlatform, ProfileViewConfig, ProfileViewTypes} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {ViewComponent} from '../views/ViewComponent';\nimport ViewsFactory from '../views/ViewsFactory';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n layoutItemConfig: ReactGridLayoutItem;\n views: ProfileViewConfig[];\n className?: string;\n children?: ReactChildren;\n style?: Record<string, unknown>;\n isFullscreen: boolean;\n onToggleFullscreen: (id: string) => void;\n AutosizeComponent?: ReactNode;\n};\n\nconst omittingProps = ['onConfigChanged', 'onRemove'];\n\nconst getViewTypeByClass = (className: string) =>\n Object.entries(ProfileViewTypes).find(([_, value]) => className === value)?.[0];\n\nconst ProfileLayoutItem = ({\n layoutItemConfig,\n views,\n className,\n children: ResizeComponent,\n style,\n isFullscreen,\n onToggleFullscreen,\n AutosizeComponent,\n ...props\n}: Props) => {\n const config = views.find(({id}) => layoutItemConfig.i === id);\n const styles = useStyles();\n const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\n\n const {store} = useContext(ReactReduxContext);\n if (!config) {\n return null;\n }\n const isCustomView = config.class === ViewsFactory.ViewTypes.Custom;\n if (isCustomView && (config?.action as CustomScript)?.platform === CustomScriptPlatform.CLASSIC) {\n return null;\n }\n\n const isMapView = config.class === ViewsFactory.ViewTypes.Map;\n if (isMapView && !mapKey) {\n return null;\n }\n\n const reltioClass = getViewTypeByClass(config.class);\n return (\n <div\n {...omit(omittingProps, props)}\n data-reltio-id={config.id}\n data-reltio-class={reltioClass || ''}\n style={style}\n className={classnames(className, {[styles.item]: !isCustomView})}\n >\n <div className={classnames({[styles.fixedSizeContainer]: !AutosizeComponent})}>\n {AutosizeComponent}\n <ViewComponent\n store={store}\n config={config}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n isAutosize={Boolean(AutosizeComponent)}\n />\n </div>\n {ResizeComponent}\n </div>\n );\n};\n\nexport {ProfileLayoutItem};\n","import React from 'react';\nimport {ReltioGridLayout} from '@reltio/components';\nimport {ProfileViewConfig} from '@reltio/mdm-sdk';\n\nimport {Layout} from '../../types';\nimport {ProfileLayoutItem} from '../ProfileLayoutItem';\n\ntype Props = {\n views: ProfileViewConfig[];\n layout?: Layout;\n layoutOptions?: Record<string, unknown>;\n onLayoutChanged: (layout: Layout) => void;\n};\n\nconst ProfileLayout = ({views, layout, layoutOptions, onLayoutChanged}: Props) => {\n return (\n <ReltioGridLayout\n LayoutItem={ProfileLayoutItem}\n views={views}\n layout={layout}\n layoutOptions={layoutOptions}\n onLayoutChanged={onLayoutChanged}\n draggableHandle=\".viewDraggableHandle\"\n />\n );\n};\n\nexport {ProfileLayout};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n closeIcon: {\n paddingRight: '12px',\n boxSizing: 'content-box',\n '& path': {\n fill: '#fff'\n }\n },\n snackbar: {\n '& > div': {\n flexWrap: 'nowrap',\n alignItems: 'baseline'\n }\n }\n}));\n","import {Snackbar as Snackbar} from '@material-ui/core';\nimport {Portal as Portal} from '@material-ui/core';\nimport React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {ConfirmationDialog, SmallIconButton} from '@reltio/components';\nimport {NotificationItem, Action} from './types';\nimport {useStyles} from './styles';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\n\ntype Props = {\n notification: NotificationItem;\n};\n\nconst AUTO_HIDE_DURATION = 5000;\n\nexport const Notification = ({notification}: Props) => {\n const styles = useStyles({});\n const dispatch = useDispatch();\n const autoCloseInterval: number = useSelector(mdmModule.selectors.getAutoCloseInterval);\n const autoHideDuration =\n notification.autoHideDuration || (autoCloseInterval && autoCloseInterval * 1000) || AUTO_HIDE_DURATION;\n const [action, setAction] = useState<Action>();\n const [show, setShow] = useState(true);\n const closeSnackbar = useCallback(\n (_e?: unknown, reason?: string) => {\n if (reason !== 'clickaway') {\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n setShow(false);\n }\n },\n [notification]\n );\n const onDiscard = useCallback(() => {\n action.cancelAction && dispatch(action.cancelAction);\n setAction(undefined);\n }, [action]);\n const onConfirm = useCallback(() => {\n dispatch(action.applyAction);\n setAction(undefined);\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n }, [action, notification]);\n\n const actions = (\n <>\n {notification.actions.map((action) => (\n <Button\n key={action.label}\n color=\"primary\"\n size=\"small\"\n onClick={() => {\n if (action.needConfirmation) {\n setAction(action);\n } else {\n dispatch(action.applyAction);\n }\n setShow(false);\n }}\n >\n {action.label}\n </Button>\n ))}\n </>\n );\n const message = (\n <>\n <SmallIconButton className={styles.closeIcon} size=\"S\" icon={CloseIcon} onClick={closeSnackbar} />\n {notification.text}\n </>\n );\n\n return (\n <>\n <Portal container={document.body}>\n <Snackbar\n autoHideDuration={autoHideDuration}\n open={show}\n classes={{root: styles.snackbar}}\n action={actions}\n onClose={closeSnackbar}\n anchorOrigin={{vertical: 'bottom', horizontal: 'center'}}\n message={message}\n />\n </Portal>\n <ConfirmationDialog\n open={!!action}\n title={action?.confirmationText}\n content={action?.confirmationDescription}\n onSave={onConfirm}\n onDiscard={onDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n </>\n );\n};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {NotificationItem} from './types';\nimport {Notification} from './Notification';\n\nexport const Notifications = () => {\n const notifications: NotificationItem[] = useSelector(mdm.selectors.getNotifications);\n if (!notifications) return null;\n return (\n <>\n {notifications.slice(-1).map((n) => (\n <Notification key={n.id} notification={n} />\n ))}\n </>\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: \"19\",\n height: \"17\",\n viewBox: \"0 0 19 17\",\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: \"M14 17v2H4v-2h10zm6-4v2H4v-2l12.884.001H17l.116-.002L20 13zm-8.457-2H4V9h5.82a8.465 8.465 0 001.723 2zM9.139 6.178l-.289.733.035.088L4 7V5l5.713-.002c-.22.375-.412.768-.574 1.18zM17 2.82a6.451 6.451 0 00-6 4.09 6.451 6.451 0 006 4.092 6.451 6.451 0 006-4.091 6.451 6.451 0 00-6-4.091zm0 6.815a2.728 2.728 0 010-5.455 2.728 2.728 0 010 5.455zm0-4.365c-.905 0-1.636.73-1.636 1.636 0 .906.73 1.637 1.636 1.637.905 0 1.636-.731 1.636-1.637 0-.905-.73-1.636-1.636-1.636z\",\n id: \"svg1467685497a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", {\n transform: \"translate(-4 -2.5)\"\n}, React.createElement(\"mask\", {\n id: \"svg1467685497b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1467685497a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg1467685497b)\",\n d: \"M0 0h24v24H0z\"\n})))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M20.222 6C21.21 6 22 6.8 22 7.778v12.444C22 21.2 21.209 22 20.222 22H7.778C6.79 22 6 21.2 6 20.222V7.778C6 6.8 6.791 6 7.778 6h12.444zM20 8H8v12h12V8zM4 18H2V4c0-1.1.9-2 2-2h14v2H4v14z\",\n id: \"svg2383396984a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2383396984b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2383396984a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2383396984b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n editingButtons: {\n display: 'flex',\n '& button + button': {\n width: '88px',\n marginLeft: '8px'\n }\n },\n searchResults: {\n width: '150px',\n height: '25px',\n backgroundColor: '#ccc'\n },\n comments: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '10px'\n }\n});\n","import {useCallback, useMemo} from 'react';\nimport {\n includes,\n pipe,\n isNil,\n propOr,\n filter,\n map,\n prop,\n cond,\n identity,\n omit,\n find,\n complement,\n when,\n either,\n pick,\n always,\n T\n} from 'ramda';\nimport {\n BaseCloneAction,\n CloneAction,\n Entity,\n getEntityType,\n isReference,\n isRelationWithEntityType,\n getRelationTypeUriFromAttrType\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\n\ntype Props = {\n cloneAction?: CloneAction[];\n onCloneDiscard: () => void;\n};\n\nexport const useCloneAction = ({cloneAction: cloneActionProp, onCloneDiscard}: Props) => {\n const entity: Entity = useSelector(mdm.selectors.getEntityWithoutDiff);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const dispatch = useDispatch();\n const entityTypeUri = entity?.type;\n const relationTypes = metadata.relationTypes;\n const isRelationSuitableForEntityType = useCallback(isRelationWithEntityType(metadata, entityTypeUri), [\n metadata,\n entityTypeUri\n ]);\n const entityType = getEntityType(metadata, entityTypeUri);\n const cloneAction = useMemo<BaseCloneAction>(\n () =>\n when(\n complement(isNil),\n pipe(\n find(pipe(propOr([], 'entityTypeUris'), either(includes(entityTypeUri), includes('*')))),\n when(complement(isNil), omit(['entityTypeUris']))\n )\n )(cloneActionProp),\n [cloneActionProp, entityTypeUri]\n );\n const onClone = useCallback(() => {\n if (cloneAction) {\n const modifiedRelationTypes: string[] = pipe(\n prop('relationshipTypesToCopy'),\n cond([\n [\n isNil,\n pipe(\n always(entityType),\n propOr([], 'attributes'),\n filter(isReference),\n map(getRelationTypeUriFromAttrType)\n )\n ],\n [\n includes('*'),\n pipe(always(relationTypes || []), map(prop('uri')), filter(isRelationSuitableForEntityType))\n ],\n [T, identity]\n ])\n )(cloneAction);\n dispatch(\n profile.entity.actions.entityCloneRequested({\n data: {\n ...pick(['attributeReplacementMapping'], cloneAction),\n relationshipTypesToCopy: modifiedRelationTypes\n },\n entityUri: entity.uri\n })\n );\n }\n onCloneDiscard();\n }, [cloneAction, onCloneDiscard, entityType, relationTypes, entity.uri, isRelationSuitableForEntityType]);\n return cloneAction ? onClone : undefined;\n};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {Box as Box} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {SvgIcon as SvgIcon} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport CreateIcon from '@material-ui/icons/Create';\n\nimport {\n getEntityType,\n Entity,\n checkMetadataPermission,\n isDataTenantEntity,\n isTempUri,\n MetadataPermissions,\n ModeTypes,\n Mode,\n isSuggestMode,\n isEditableMode,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Operation,\n ProfileBandConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n ProfileBand,\n ModeSwitcherSelect,\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ProfileBandNavigation,\n ProfileBandHistory,\n ConfirmationDialog\n} from '@reltio/components';\n\nimport SuggestSvg from './suggest.svg';\nimport CopySvg from './copy.svg';\n\nimport {useStyles} from './styles';\nimport {useCloneAction} from './hooks/useCloneAction';\n\ntype Props = {\n className?: string;\n profileBandConfig?: ProfileBandConfig;\n};\n\nconst SuggestIcon = (props) => (\n <SvgIcon {...props}>\n <SuggestSvg />\n </SvgIcon>\n);\n\nconst CopyIcon = (props) => (\n <SvgIcon {...props}>\n <CopySvg />\n </SvgIcon>\n);\n\ntype Group = {\n label: string;\n value: string;\n description: string;\n icon: React.ElementType;\n permission: string;\n onClick?: (value: string) => void;\n};\n\nconst filterGroupByPermissions = <T extends Group>(\n group: T[],\n entityType,\n isTempEntity: boolean,\n isWorkflowEnabled?: boolean,\n canStartProcessInstanceSearchQuery?: boolean\n): T[] =>\n group.filter(({value, permission}) => {\n if (isTempEntity && !isEditableMode(value)) return false;\n if ((!isWorkflowEnabled || !canStartProcessInstanceSearchQuery) && isSuggestMode(value)) return false;\n return checkMetadataPermission(permission, entityType);\n });\n\nconst hasOnlyReadPermission = (entityType) => {\n return (\n checkMetadataPermission(MetadataPermissions.READ, entityType) &&\n !checkMetadataPermission(MetadataPermissions.UPDATE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.DELETE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.INITIATE_CHANGE_REQUEST, entityType)\n );\n};\n\nexport const PerspectiveProfileBand = ({className, profileBandConfig}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const canStartProcessInstanceSearchQuery = useSelector(mdm.selectors.getCanUserStartProcessFromQuery);\n const entity = useSelector(mdm.selectors.getEntityWithoutDiff) as Entity;\n const modifiedEntity = useSelector((state) => mdm.selectors.getModifiedEntity(state, entity.uri));\n const metadata = useSelector(mdm.selectors.getMetadata);\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const mode = useSelector(mdm.selectors.getMode) as Mode;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode) as boolean;\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const profileOperation = useSelector(mdm.selectors.getProfileOperation);\n const entityTypeUri = entity?.type;\n const entityType = useMemo(() => getEntityType(metadata, entityTypeUri), [entityTypeUri, metadata]);\n const isOperationSaving = profileOperation === Operation.Saving;\n const isOperationCloning = profileOperation === Operation.Cloning;\n const isDisabledButtons = isOperationCloning || isOperationSaving;\n const [openCloneConfirmationDialog, setOpenCloneConfirmationDialog] = useState(false);\n const onCloneDiscard = useCallback(() => {\n setOpenCloneConfirmationDialog(false);\n }, []);\n const onClone = useCloneAction({cloneAction: profileBandConfig?.cloneAction, onCloneDiscard});\n const OPTIONS_GROUP = useMemo(\n () => [\n {\n label: i18n.text('Editing'),\n value: ModeTypes.EDITING,\n description: i18n.text('Edit profile directly'),\n icon: CreateIcon,\n permission: 'UPDATE'\n },\n {\n label: i18n.text('Suggesting'),\n value: ModeTypes.SUGGESTING,\n description: i18n.text('Suggest changes and initiate a workflow review'),\n icon: SuggestIcon,\n permission: 'INITIATE_CHANGE_REQUEST'\n },\n {\n label: i18n.text('Viewing'),\n value: ModeTypes.VIEWING,\n description: i18n.text('Read or print profile'),\n icon: VisibilityIcon,\n permission: 'READ'\n }\n ],\n []\n );\n\n const BUTTONS_GROUP = useMemo(\n () => [\n ...(onClone\n ? [\n {\n label: i18n.text('Clone'),\n value: 'Clone',\n description: i18n.text('Create a copy of the profile'),\n icon: CopyIcon,\n onClick: () => setOpenCloneConfirmationDialog(true),\n permission: 'CREATE'\n }\n ]\n : []),\n {\n label: i18n.text('Delete'),\n value: 'Delete',\n description: i18n.text('Permanently delete profile'),\n icon: DeleteIcon,\n onClick: () => {\n const conf = window.confirm(i18n.text('Are you sure you want to delete this?'));\n if (conf) {\n dispatch(profile.entity.actions.entityRemoveRequested({entityUri: entity.uri}));\n }\n },\n permission: 'DELETE'\n }\n ],\n [dispatch, entity.uri, onClone]\n );\n\n const shouldShowSelect = !isHistoryModeEnabled && !isDataTenantEntity(entity) && !hasOnlyReadPermission(entityType);\n\n const isTempEntity = isTempUri(entity?.uri);\n\n const accessibleOptionsGroup = useMemo(() => {\n return filterGroupByPermissions(\n OPTIONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [OPTIONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n const accessibleButtonsGroup = useMemo(() => {\n return filterGroupByPermissions(\n BUTTONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [BUTTONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n\n const handleChange = useCallback(\n (value: Mode) => {\n dispatch(profile.mode.actions.modeUpdated(value));\n },\n [dispatch]\n );\n\n const onCancel = useCallback(() => {\n dispatch(profile.mode.actions.modeCancelEditing());\n }, [dispatch]);\n\n const handleSave = useCallback(() => {\n dispatch(profile.actions.saveProfile());\n }, [dispatch]);\n\n return (\n <>\n <ProfileBand\n className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)}\n entity={isEditableMode && modifiedEntity ? modifiedEntity : entity}\n >\n <Box display=\"flex\" alignItems=\"center\">\n <Box mr={3}>\n {isEditableMode && (\n <Box className={styles.editingButtons}>\n <Button\n variant=\"outlined\"\n onClick={onCancel}\n data-reltio-id=\"reltio-profile-cancel-editing\"\n disabled={isDisabledButtons}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n data-reltio-id=\"reltio-profile-save-profile\"\n onClick={handleSave}\n disabled={isDisabledButtons}\n >\n {isSuggestMode(mode) ? i18n.text('Suggest') : i18n.text('Save')}\n </Button>\n </Box>\n )}\n {isHistoryModeEnabled && isViewMode ? (\n <ProfileBandHistory />\n ) : (\n isViewMode && <ProfileBandNavigation />\n )}\n </Box>\n {shouldShowSelect && (\n <ModeSwitcherSelect\n optionsGroup={accessibleOptionsGroup}\n buttonsGroup={accessibleButtonsGroup}\n value={mode}\n onChange={handleChange}\n disabled={isDisabledButtons}\n />\n )}\n </Box>\n <Box className={styles.comments}>\n <CommentsContainer\n uri={entity.uri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri: entity.uri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </Box>\n </ProfileBand>\n {!!onClone && (\n <ConfirmationDialog\n open={openCloneConfirmationDialog}\n title={i18n.text('Do you want to create a clone of the profile?')}\n content={i18n.text(\n 'Cloning will create a copy of the current profile. You can modify the cloned profile in the next step. Are you sure you want to proceed?'\n )}\n onSave={onClone}\n onDiscard={onCloneDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n )}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n },\n badge: {\n fontSize: '12px',\n height: '18px',\n minWidth: '18px',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px'\n }\n});\n","import React, {useContext, VFC} from 'react';\nimport {Badge as Badge} from '@material-ui/core';\nimport {WorkflowTasksContext} from '@reltio/components';\nimport InboxIcon from '@material-ui/icons/Inbox';\nimport {useStyles} from '../../styles';\n\nexport const WorkflowButton: VFC = () => {\n const {total} = useContext(WorkflowTasksContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={total}\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <InboxIcon />\n </Badge>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n paddingRight: '12px'\n },\n showMoreLink: {\n display: 'flex',\n margin: '16px'\n },\n showMoreIcon: {\n fontSize: '1rem'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {CollaborationContext, CollaborationItem, EntitiesMapContext, useCommentsEntitiesMap} from '@reltio/components';\nimport {Box as Box} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport {useStyles} from './styles';\n\nexport const CollaborationList = () => {\n const styles = useStyles();\n const {getComments, comments, pageToken} = useContext(CollaborationContext);\n const entityUri = useSelector(mdm.selectors.getEntityUriWithDataTenant);\n\n useEffect(() => {\n getComments(entityUri);\n }, [getComments, entityUri]);\n\n const handleShowMoreComments = () => {\n getComments(entityUri, pageToken);\n };\n\n const entitiesMap = useCommentsEntitiesMap(comments);\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <Box className={styles.wrapper}>\n {comments.map((comment) => {\n const {objectId, relatedObjectUris, objectType, commentId} = comment;\n return (\n <CollaborationItem\n key={commentId}\n uri={objectId}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n })}\n {pageToken && (\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.showMoreLink}\n onClick={handleShowMoreComments}\n underline=\"none\"\n >\n <KeyboardArrowDownIcon className={styles.showMoreIcon} />\n {i18n.text('Show more')}\n </Link>\n )}\n </Box>\n </EntitiesMapContext.Provider>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n position: 'relative',\n height: '100%'\n }\n});\n","import React, {useContext} from 'react';\nimport {LinearLoadIndicator, WorkflowTaskCard, WorkflowTasksContext} from '@reltio/components';\nimport {useStyles} from './styles';\n\nexport const WorkflowList = () => {\n const styles = useStyles();\n const {tasks, loading} = useContext(WorkflowTasksContext);\n\n return (\n <div className={styles.wrapper}>\n {loading && <LinearLoadIndicator />}\n {tasks &&\n tasks.map((task) => {\n return <WorkflowTaskCard key={task.taskId} task={task} />;\n })}\n </div>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M4 17.17L5.17 16H20V4H4v13.17zM20 2c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H6l-4 4V4c0-1.1.9-2 2-2h16zm-3 9H7v2h10v-2zm0-4H7v2h10V7z\",\n id: \"svg2697213709a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", null, React.createElement(\"g\", {\n transform: \"translate(-2 -2)\"\n}, React.createElement(\"mask\", {\n id: \"svg2697213709b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2697213709a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2697213709b)\",\n d: \"M0 0h24v24H0z\"\n}))))));","import React, {useContext, VFC} from 'react';\nimport {Badge as Badge} from '@material-ui/core';\nimport CollaborationIcon from '../../icons/CollaborationIcon.svg';\nimport {CollaborationContext} from '@reltio/components';\nimport {calcTotalCommentItems} from '@reltio/mdm-sdk';\nimport {useStyles} from '../../styles';\n\nexport const CollaborationButton: VFC = () => {\n const {commentsMap} = useContext(CollaborationContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={calcTotalCommentItems(commentsMap)}\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <CollaborationIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst WorkflowPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Ready to go with the flow?')}\n secondaryText={i18n.text(\n 'Suggest a change or submit a match review, and we’ll kick off a workflow task to get things going.'\n )}\n />\n);\n\nexport default WorkflowPanelEmptyState;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst CollaborationPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Care to join the conversation?')}\n secondaryText={i18n.text(\n 'Leave comments for team members anywhere in the Profile page, and we’ll record it here.'\n )}\n />\n);\n\nexport default CollaborationPanelEmptyState;\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 d: \"M14.101 16A5.003 5.003 0 0016 18.987V20H2v-4h12.101zM22 18.987V20v-1.013zM4 17v2h2v-2H4zM16 4v1.013A5.004 5.004 0 0014.101 8H2V4h14zm6 0v1.013V4zM6 7V5H4v2h2zm8 3v4H2v-4h12zM4 11v2h2v-2H4zm12 4v-2h6v2c0 1.3-.84 2.4-2 2.82V22h-2v-4.18c-1.16-.42-2-1.52-2-2.82zm0-6c0-1.3.84-2.4 2-2.82V2h2v4.18c1.16.42 2 1.52 2 2.82v2h-6V9z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexDirection: 'column'\n },\n itemWrapper: {\n paddingLeft: '19px',\n paddingRight: '19px'\n }\n});\n","import React from 'react';\nimport {CustomActionViewConfig} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {CustomView} from '../../../Sandbox/CustomView';\nimport {useStyles} from './styles';\n\nexport const DBConnectorsList = () => {\n const styles = useStyles();\n const dBConnectorSideViews = useSelector(mdm.selectors.getDBConnectorSideViews) as CustomActionViewConfig[];\n\n return (\n <div className={styles.wrapper}>\n {dBConnectorSideViews.map((sideView) => (\n <CustomView key={sideView.id} config={sideView} className={styles.itemWrapper} />\n ))}\n </div>\n );\n};\n","import React, {useCallback, useContext, useEffect, useState, VFC} from 'react';\nimport {pipe, propEq, reject, pluck} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {\n CollaborationContext,\n SideButtonsPanel,\n SidePanelContentHeader,\n SidePanel,\n WorkflowTasksContext,\n AddWorkflowButton,\n HistoryView,\n HistoryHeader,\n HistoryPanelEmptyState,\n useHistory,\n useHistoryEnabled\n} from '@reltio/components';\nimport {calcTotalCommentItems, Entity, getEntityType, isTempUri, Metadata} from '@reltio/mdm-sdk';\nimport mdm, {HistoryEvent} from '@reltio/mdm-module';\nimport HistoryIcon from '@material-ui/icons/History';\nimport {WorkflowButton} from './components/WorkflowButton/WorkflowButton';\nimport {CollaborationList} from './components/CollaborationList/CollaborationList';\nimport {WorkflowList} from './components/WorkflowList/WorkflowList';\nimport {CollaborationButton} from './components/CollaborationButton/CollaborationButton';\nimport WorkflowPanelEmptyState from './components/WorkflowPanelEmptyState/WorkflowPanelEmptyState';\nimport CollaborationPanelEmptyState from './components/CollaborationPanelEmptyState/CollaborationPanelEmptyState';\nimport ConnectorsIcon from './icons/ConnectorsIcon.svg';\nimport {DBConnectorsList} from './components/DBConnectorsList/DBConnectorsList';\n\nimport {useStyles} from './styles';\n\nconst DEFAULT_PANEL_WIDTH = 480;\nexport enum ActivePanel {\n Workflow,\n Collaboration,\n History,\n DBConnector\n}\nconst getSecondTitle = (total: number): string => {\n if (total) {\n return total === 1 ? i18n.text('${total} item', {total}) : i18n.text('${total} items', {total});\n }\n};\n\nexport const RightSidePanel: VFC = () => {\n const styles = useStyles();\n const isWorkflowSideViewEnabled = useSelector(mdm.selectors.isWorkflowSideViewEnabled) as boolean;\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const isCollaborationSideViewEnabled = useSelector(mdm.selectors.isCollaborationSideViewEnabled) as boolean;\n const isDBConnectorSideViewEnabled = useSelector(mdm.selectors.isDBConnectorSideViewEnabled) as boolean;\n const isCollaborationEnabled = useSelector(mdm.selectors.isCollaborationEnabled) as boolean;\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n\n const workflowTasksContext = useContext(WorkflowTasksContext);\n const collaborationContext = useContext(CollaborationContext);\n\n const [active, setActive] = useState<ActivePanel>(null);\n const toggleActive = useCallback((newId: ActivePanel): void => {\n setActive((active) => (active === newId ? null : newId));\n }, []);\n const resetActive = useCallback((): void => {\n setActive(null);\n }, []);\n const isOpen = active !== null;\n const isHistoryTabActive = active === ActivePanel.History;\n const {isHistoryEnabled, isProfilePersisted} = useHistoryEnabled({isHistoryTabActive, entity});\n\n const {historyFilter, onApplyFilter, isLoading, historicUris, historyWithTotal, canLoadMore, onLoadMore} =\n useHistory({entity, enabled: isHistoryEnabled});\n\n const enabledWorkflowButton = isWorkflowSideViewEnabled && isWorkflowEnabled && !isTempUri(entity?.uri);\n const enabledCollaborationButton = isCollaborationSideViewEnabled && isCollaborationEnabled;\n const collaborationTotal = calcTotalCommentItems(collaborationContext?.commentsMap);\n\n const elements = [\n {\n buttonProps: {\n id: ActivePanel.Workflow,\n icon: WorkflowButton,\n tooltipTitle: i18n.text('Workflow')\n },\n content: workflowTasksContext?.total ? <WorkflowList /> : <WorkflowPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Workflow'),\n secondTitle: getSecondTitle(workflowTasksContext?.total),\n rightContent: <AddWorkflowButton />\n },\n hidden: !enabledWorkflowButton\n },\n {\n buttonProps: {\n id: ActivePanel.Collaboration,\n icon: CollaborationButton,\n tooltipTitle: i18n.text('Collaboration')\n },\n content: collaborationTotal ? <CollaborationList /> : <CollaborationPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Collaboration'),\n secondTitle: getSecondTitle(collaborationTotal)\n },\n hidden: !enabledCollaborationButton\n },\n {\n buttonProps: {\n id: ActivePanel.History,\n icon: HistoryIcon,\n tooltipTitle: i18n.text('History')\n },\n content: isProfilePersisted ? (\n <HistoryView\n isLoading={isLoading}\n historyWithTotal={historyWithTotal}\n contributorsUris={historicUris}\n entityUri={entity?.uri}\n historyEvent={historyEvent}\n onLoadMore={onLoadMore}\n canLoadMore={canLoadMore}\n />\n ) : (\n <HistoryPanelEmptyState />\n ),\n headerProps: {\n content: (\n <HistoryHeader\n total={isProfilePersisted ? (historicUris?.length || 0) + 1 : undefined}\n entityType={getEntityType(metadata, entity?.type)}\n filter={historyFilter}\n onApplyFilter={onApplyFilter}\n />\n )\n }\n },\n {\n buttonProps: {\n id: ActivePanel.DBConnector,\n icon: ConnectorsIcon,\n tooltipTitle: i18n.text('D&B Connector')\n },\n content: <DBConnectorsList />,\n headerProps: {\n mainTitle: i18n.text('D&B Connector')\n },\n hidden: !isDBConnectorSideViewEnabled\n }\n ];\n\n const visibleElements = reject(propEq('hidden', true))(elements);\n\n useEffect(() => {\n if (elements[active]?.hidden) {\n resetActive();\n }\n }, [active, elements, resetActive, visibleElements]);\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen} width={DEFAULT_PANEL_WIDTH}>\n {!elements[active]?.hidden && (\n <>\n <SidePanelContentHeader {...elements[active]?.headerProps} onClose={resetActive} />\n {elements[active]?.content}\n </>\n )}\n </SidePanel>\n <SideButtonsPanel\n buttonsProps={pipe(reject(propEq('hidden', true)), pluck('buttonProps'))(elements)}\n onButtonClick={toggleActive}\n activeIndexId={active}\n />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst accordionSummaryHeight = '48px';\nconst defaultBorderStyle = '1px solid rgba(0, 0, 0, .125)';\n\nconst useStyles = makeStyles((theme) => ({\n accordion: {\n borderTop: defaultBorderStyle,\n borderBottom: defaultBorderStyle,\n fontSize: '13px',\n boxShadow: 'none',\n '&:not(:first-child)': {\n borderTop: 0\n },\n '&:before': {\n display: 'none'\n },\n '&$accordionExpanded': {\n margin: 'auto'\n }\n },\n accordionExpanded: {},\n accordionSummary: {\n display: 'flex',\n alignItems: 'center',\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight,\n '&$accordionSummaryExpanded': {\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight\n }\n },\n accordionSummaryHeading: {\n flex: 1,\n fontSize: theme.typography.pxToRem(13),\n fontWeight: theme.typography.fontWeightRegular\n },\n accordionSummaryExpanded: {},\n accordionSummaryContent: {\n display: 'flex',\n alignItems: 'center'\n },\n accordionDetails: {\n maxHeight: '21vh',\n overflow: 'auto',\n paddingTop: 0,\n paddingBottom: 0,\n '& ul': {\n paddingLeft: '23px',\n marginTop: '3px'\n },\n '& li': {\n paddingLeft: '9px',\n paddingBottom: '8px'\n }\n },\n parents: {\n color: theme.palette.text.primary\n },\n errorWrapper: {\n lineHeight: '18px',\n display: 'flex',\n flexDirection: 'column'\n },\n errorTitle: {\n display: 'flex',\n alignItems: 'center'\n },\n goToIcon: {\n marginLeft: '4px'\n },\n errorsAccordion: {\n backgroundColor: '#FFF4F6',\n borderColor: '#FFB8B3'\n },\n errorsAccordionDetails: {\n color: '#DD2C00'\n },\n warningsAccordion: {\n backgroundColor: '#FFF9ED',\n borderColor: '#FFDD91'\n },\n warningsAccordionDetails: {\n color: '#CC7500'\n },\n icon: {\n marginRight: '8px'\n },\n errorIcon: {\n fill: '#FF1744'\n },\n warningIcon: {\n fill: '#F9A825'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, ReactNode, ElementType} from 'react';\nimport classnames from 'classnames';\nimport {Accordion as Accordion} from '@material-ui/core';\nimport {AccordionSummary as AccordionSummary} from '@material-ui/core';\nimport {AccordionDetails as AccordionDetails} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport useStyles from '../styles';\n\nimport {AttributeError} from '@reltio/mdm-sdk';\n\ntype Props = {\n panels: {\n id: string;\n title: string;\n icon: ReactNode;\n items: AttributeError[];\n accordionClassName: string;\n accordionDetailsClassName: string;\n }[];\n expandedPanelId: string;\n onToggle: (id: string) => (e, isExpanded: boolean) => void;\n ErrorComponent: ElementType;\n};\n\nexport const ErrorsPanel = memo(({panels, expandedPanelId, onToggle, ErrorComponent}: Props) => {\n const styles = useStyles();\n\n return panels.length > 0 ? (\n <div>\n {panels.map(({id, icon, title, items, accordionClassName, accordionDetailsClassName}) => (\n <Accordion\n key={id}\n square\n expanded={expandedPanelId === id}\n onChange={onToggle(id)}\n className={accordionClassName}\n classes={{root: styles.accordion, expanded: styles.accordionExpanded}}\n >\n <AccordionSummary\n classes={{\n root: styles.accordionSummary,\n expanded: styles.accordionSummaryExpanded,\n content: styles.accordionSummaryContent\n }}\n expandIcon={<ExpandMoreIcon />}\n >\n {icon}\n <Typography className={styles.accordionSummaryHeading}>{title}</Typography>\n </AccordionSummary>\n <AccordionDetails className={classnames(styles.accordionDetails, accordionDetailsClassName)}>\n <ul>\n {items.map((error, i) => (\n <ErrorComponent key={i} error={error} />\n ))}\n </ul>\n </AccordionDetails>\n </Accordion>\n ))}\n </div>\n ) : null;\n});\n\nErrorsPanel.displayName = 'ErrorsPanel';\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.245 12.75c0 .825-.467 1.5-1.045 1.5H4.8c-.583 0-1.05-.675-1.05-1.5v-7.5c0-.832.467-1.5 1.05-1.5h8.4c.578 0 1.05.668 1.05 1.5l-.005 7.5zM9.75 9.96v1.642l3-2.805L9.75 6v1.598c-2.918.404-4.08 2.4-4.5 4.402 1.043-1.402 2.415-2.04 4.5-2.04z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","import {equals, identity, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n AttributeError,\n AttributeType,\n AttributeValuePathItemType,\n ErrorSource,\n ErrorType,\n findAttributeTypeByUri,\n Metadata\n} from '@reltio/mdm-sdk';\n\nconst clearError = omit(['deactivated', 'path']);\nexport const areErrorsEqual = (errors1: AttributeError[] = [], errors2: AttributeError[] = []) =>\n errors1.length === errors2.length && equals(errors1.map(clearError), errors2.map(clearError));\n\nexport const getDisplayedErrorMessage = (\n metadata: Metadata,\n {type, source, message, attributeTypeUri = '', attributeType}: AttributeError\n) => {\n if (type === ErrorType.missed && source === ErrorSource.local) {\n const attrType: AttributeType = attributeType || findAttributeTypeByUri(metadata, attributeTypeUri);\n return attrType ? i18n.text('${attribute} is required', {attribute: attrType.label}) : message;\n }\n return message;\n};\n\nexport const getDisplayedErrorPath = ({path: errorPath, uri}: AttributeError) => {\n return errorPath\n ?.slice(0, uri ? errorPath.length - 1 : errorPath.length)\n .filter(({type}) =>\n [AttributeValuePathItemType.attributeValue, AttributeValuePathItemType.relationConnection].includes(type)\n )\n .map(({label}) => label)\n .filter(identity)\n .join(' / ');\n};\n","import React, {memo, useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeError, Metadata} from '@reltio/mdm-sdk';\nimport HyperlinkIcon from '../icons/hyperlink.svg';\nimport {SmallIconButtonWithTooltip, ScrollToErrorContext} from '@reltio/components';\nimport {getDisplayedErrorMessage, getDisplayedErrorPath} from '../helpers';\n\nimport useStyles from '../styles';\n\ntype Props = {\n error: AttributeError;\n};\n\nexport const Error = memo(({error}: Props) => {\n const styles = useStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const isEditableMode: boolean = useSelector(mdmModule.selectors.getIsEditableMode);\n const displayedMessage = getDisplayedErrorMessage(metadata, error);\n const displayedErrorPath = getDisplayedErrorPath(error);\n const {highlightError} = useContext(ScrollToErrorContext);\n const showLink = error.uri || (error.parentUri && error.attributeTypeUri);\n\n return (\n <li>\n <div className={styles.errorWrapper}>\n <span className={styles.errorTitle}>\n {displayedMessage}\n {showLink && isEditableMode && (\n <SmallIconButtonWithTooltip\n icon={HyperlinkIcon}\n size=\"XXS\"\n onClick={() => highlightError(error)}\n tooltipTitle={i18n.text('Go to error')}\n className={styles.goToIcon}\n />\n )}\n </span>\n {displayedErrorPath && <span className={styles.parents}>{displayedErrorPath}</span>}\n </div>\n </li>\n );\n});\n\nError.displayName = 'Error';\n","import {useRef} from 'react';\nimport {areErrorsEqual} from './helpers';\n\nexport const useCachedErrors = (allErrors) => {\n const cacheForAllErrors = useRef(allErrors);\n const areEqualErrors = areErrorsEqual(allErrors, cacheForAllErrors.current);\n if (!areEqualErrors) {\n cacheForAllErrors.current = allErrors;\n }\n return cacheForAllErrors.current;\n};\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {partition} from 'ramda';\nimport ErrorIcon from '@material-ui/icons/Warning';\nimport WarningIcon from '@material-ui/icons/Error';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeError, isCriticalError} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\n\nimport {ErrorsPanel} from './components/ErrorsPanel';\nimport {Error} from './components/Error';\nimport {useCachedErrors} from './useCachedErrors';\n\nexport const ProfileErrorsPanel = () => {\n const styles = useStyles();\n const allErrors = useSelector(mdmModule.selectors.getProfileErrors);\n const cachedAllErrors = useCachedErrors(allErrors);\n\n const [errors, warnings]: [AttributeError[], AttributeError[]] = useMemo(\n () => partition(isCriticalError, cachedAllErrors),\n [cachedAllErrors]\n );\n const [expandedPanelId, setExpandedPanelId] = useState(null);\n const panels = useMemo(\n () =>\n [\n {\n id: 'errors',\n title: i18n.text('${number} ${errors}', {\n number: errors.length,\n errors: errors.length === 1 ? i18n.text('error') : i18n.text('errors')\n }),\n icon: <ErrorIcon className={classnames(styles.icon, styles.errorIcon)} />,\n items: errors,\n accordionClassName: styles.errorsAccordion,\n accordionDetailsClassName: styles.errorsAccordionDetails\n },\n {\n id: 'warnings',\n title: i18n.text('${number} ${warnings}', {\n number: warnings.length,\n warnings: warnings.length === 1 ? i18n.text('warning') : i18n.text('warnings')\n }),\n icon: <WarningIcon className={classnames(styles.icon, styles.warningIcon)} />,\n items: warnings,\n accordionClassName: styles.warningsAccordion,\n accordionDetailsClassName: styles.warningsAccordionDetails\n }\n ].filter(({items}) => items.length > 0),\n [errors, warnings, styles]\n );\n\n useEffect(() => {\n setExpandedPanelId('errors');\n }, [errors]);\n\n const handleChange = useCallback(\n (panelId: string) => (event, isExpanded: boolean) => {\n setExpandedPanelId(isExpanded ? panelId : null);\n },\n []\n );\n\n return panels.length > 0 ? (\n <ErrorsPanel panels={panels} expandedPanelId={expandedPanelId} onToggle={handleChange} ErrorComponent={Error} />\n ) : null;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Props = {\n maxWidth?: number;\n};\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 scrollWrapper: {\n flexGrow: 1,\n overflowY: 'auto'\n },\n emptyState: {\n backgroundColor: '#FAFAFA',\n height: '100%'\n },\n profileWrapper: ({maxWidth}: Props) => ({\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n maxWidth: maxWidth ? `${maxWidth}px` : '100%'\n }),\n profileContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import React, {memo, useCallback, useContext, useEffect, useMemo, useState, useRef} from 'react';\nimport i18n from 'ui-i18n';\nimport {useDispatch, useSelector} from 'react-redux';\nimport hash from 'object-hash';\nimport {\n debounce,\n Entity,\n fixNonUniqViewsIds,\n getProfileObjectIdsForCollaboration,\n ProfilePerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {HistoryEvent, profile} from '@reltio/mdm-module';\nimport {\n CollaborationContext,\n WorkflowTasksContext,\n UsersContext,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n EmptyState,\n LinearLoadIndicator,\n ProfilePerspectiveViewContext,\n PopupBoundariesContext,\n SearchValueContext,\n useSavedStateForEntityType,\n useCollaboration,\n useUsers,\n useWorkflowTasks,\n HistoryDiffContext,\n useHistoryDiff,\n useHistorySlice,\n ScrollToErrorProvider\n} from '@reltio/components';\n\nimport {ProfileSavedState, Layout} from '../../types';\n\nimport {ProfileLayout} from '../ProfileLayout';\nimport {Notifications} from '../Notifications';\nimport {PerspectiveProfileBand} from '../PerspectiveProfileBand';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\nimport {ProfileErrorsPanel} from '../ProfileErrorsPanel';\nimport {useProfileValidation} from '../hooks/useProfileValidation';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: () => Promise<Record<string, ProfileSavedState>>;\n};\n\nconst SAVE_STATE_DEBOUNCE_DELAY = 1000;\nconst emptyState = {} as ProfileSavedState;\nconst ProfilePerspectiveView = memo(({config, saveState, getSavedState}: Props) => {\n const styles = useStyles({maxWidth: config?.maxWidth});\n const dispatch = useDispatch();\n const getSavedStateAndFix = useCallback(() => {\n return getSavedState().then((state) => (state.layout ? {} : state));\n }, [getSavedState]);\n const scrollWrapperRef = useRef<HTMLDivElement>();\n const debouncedSaveState = useCallback(debounce(saveState, SAVE_STATE_DEBOUNCE_DELAY), [saveState]) as (\n state: Record<string, ProfileSavedState>\n ) => void;\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const nestedRoute = config?.nestedRoute ? `/${config.nestedRoute}` : '';\n const entityTypeUri = entity ? entity.type : null;\n const savedStateKey = entityTypeUri && config ? entityTypeUri + nestedRoute : null;\n\n const {\n isLoaded,\n savedState = emptyState,\n updateSavedState\n } = useSavedStateForEntityType<ProfileSavedState>({\n getSavedState: getSavedStateAndFix,\n saveState: debouncedSaveState,\n entityTypeUri: savedStateKey\n });\n const [layout, setLayout] = useState<Layout>([]);\n const [views, setViews] = useState<ProfilePerspectiveConfig['views']>([]);\n\n const configHash = useMemo(() => hash(config), [config]);\n\n const isHistoryActive = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const objectIds = useMemo(() => getProfileObjectIdsForCollaboration(entity), [entity]);\n const collaboration = useCollaboration({objectIds});\n const emptyCollaboration = useContext(CollaborationContext);\n const users = useUsers();\n const workflowTasks = useWorkflowTasks(config?.workflow);\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n useHistorySlice({entity, historyEvent});\n const historyDiff = useHistoryDiff();\n\n const keywordValue = useSelector(mdm.selectors.getSearchKeyword)?.value || '';\n\n useEffect(() => {\n if (isLoaded) {\n const isConfigChanged = configHash !== savedState.configHash;\n const {views: fixedViews, layout: fixedLayout} = fixNonUniqViewsIds({\n views: isConfigChanged || !savedState.views ? config.views : savedState.views,\n layout: isConfigChanged ? config.layout : savedState.layout\n });\n setViews(fixedViews);\n setLayout(fixedLayout);\n }\n }, [isLoaded, savedState, savedStateKey]); // eslint-disable-line\n\n useEffect(() => {\n dispatch(profile.views.actions.profileViewsSet(views));\n }, [dispatch, views]);\n\n useEffect(() => {\n if (config.sidePanelViews) {\n dispatch(profile.sidePanelViews.actions.sidePanelViewsLoaded(config.sidePanelViews));\n }\n }, [config]); // eslint-disable-line\n\n useEffect(() => {\n if (scrollWrapperRef.current) {\n scrollWrapperRef.current.scrollTop = 0;\n }\n }, [entity?.uri]);\n\n useProfileValidation();\n\n const handleLayoutChange = useCallback(\n (layout: Layout) => {\n updateSavedState({layout, views, configHash});\n setLayout(layout);\n },\n [updateSavedState, configHash, views]\n );\n const boundariesElement = scrollWrapperRef.current;\n\n const popupBoundariesValue = useMemo(\n () => ({\n element: boundariesElement,\n priority: ['top', 'bottom']\n }),\n [boundariesElement]\n );\n return (\n <ProfilePerspectiveViewContext.Provider value={true}>\n <UsersContext.Provider value={users}>\n <CollaborationContext.Provider value={isHistoryActive ? emptyCollaboration : collaboration}>\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <HistoryDiffContext.Provider value={historyDiff}>\n <SearchValueContext.Provider value={keywordValue}>\n <ScrollToErrorProvider>\n <div className={styles.perspectiveView}>\n {(!isLoaded || !entity?.uri) && <LinearLoadIndicator />}\n {isLoaded && entity?.uri ? (\n <div className={styles.profileContainer}>\n <div className={styles.profileWrapper}>\n <PerspectiveProfileBand profileBandConfig={config.profileBand} />\n {!isHistoryActive && <ProfileErrorsPanel />}\n <div ref={scrollWrapperRef} className={styles.scrollWrapper}>\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ProfileLayout\n layout={layout}\n onLayoutChanged={handleLayoutChange}\n views={views}\n />\n </PopupBoundariesContext.Provider>\n </div>\n </div>\n <RightSidePanel />\n </div>\n ) : (\n <div className={styles.emptyState}>\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.NO_DATA}\n text={i18n.text('No data to display.')}\n variant={EMPTY_STATE_VARIANTS.embedded}\n />\n </div>\n )}\n <Notifications />\n </div>\n </ScrollToErrorProvider>\n </SearchValueContext.Provider>\n </HistoryDiffContext.Provider>\n </WorkflowTasksContext.Provider>\n </CollaborationContext.Provider>\n </UsersContext.Provider>\n </ProfilePerspectiveViewContext.Provider>\n );\n});\n\nProfilePerspectiveView.displayName = 'ProfilePerspectiveView';\n\nexport {ProfilePerspectiveView};\n","import {useCallback, useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {debounce, Entity, isDataTenantEntity, isTempUri, Mode} from '@reltio/mdm-sdk';\n\nexport const useProfileValidation = () => {\n const dispatch = useDispatch();\n const isValidateReadMode: boolean = useSelector(mdmModule.selectors.getValidateReadMode);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const {uri, updatedTime} = entity;\n const isDTEntity = isDataTenantEntity(entity);\n const mode: Mode = useSelector(mdmModule.selectors.getMode);\n const profileViews = useSelector(mdmModule.selectors.getProfileViews);\n const hasProfileViews = profileViews && profileViews.length > 0;\n\n const validate = useCallback(\n debounce((needDispatch: boolean) => {\n if (needDispatch) {\n dispatch(profile.actions.validateProfile());\n }\n }, 500),\n [dispatch]\n );\n\n useEffect(() => {\n const needDispatch =\n isValidateReadMode && !isDTEntity && uri && !isTempUri(uri) && mode === Mode.Viewing && hasProfileViews;\n validate(needDispatch);\n }, [validate, isDTEntity, isValidateReadMode, updatedTime, uri, mode, hasProfileViews]);\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\nimport MomentUtils from '@date-io/moment';\nimport {identity} from 'ramda';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {ErrorPopup, SandboxAPIContext, SnackbarContext, useSnackbar, ViewIdContext} from '@reltio/components';\nimport {convertOldProfileConfig, ProfilePerspectiveConfig, promisifyCallback, QxSandboxApi} from '@reltio/mdm-sdk';\nimport {ProfileSavedState} from '../types';\nimport ProfilePerspectiveView from '../components/ProfilePerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'profilePerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: (clb: (state: Record<string, ProfileSavedState>) => void) => void;\n qxSandboxApi?: QxSandboxApi;\n};\n\nconst ProfilePerspective = ({config, store, onResize = identity, saveState, getSavedState, qxSandboxApi}: Props) => {\n const getSavedStatePromisified: () => Promise<Record<string, ProfileSavedState>> = useCallback(\n promisifyCallback(getSavedState),\n [getSavedState]\n );\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar();\n\n const processedConfig = useMemo(() => config && convertOldProfileConfig(config), [config]);\n\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={processedConfig?.id}>\n <SnackbarContext.Provider value={showSnackbarMessage}>\n <SandboxAPIContext.Provider value={qxSandboxApi}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {processedConfig && (\n <ProfilePerspectiveView\n config={processedConfig}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n )}\n <ErrorPopup showErrorFromStore={true} />\n <SnackbarRenderer />\n </>\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </SandboxAPIContext.Provider>\n </SnackbarContext.Provider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default ProfilePerspective;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n titleContainer: {\n overflow: 'hidden',\n fontSize: '16px',\n fontWeight: 'normal',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n alignItems: 'center',\n display: 'flex',\n minHeight: '48px',\n color: theme.palette.text.secondary\n },\n link: {\n fontSize: '16px',\n fontWeight: 'normal'\n },\n icon: {\n height: '18px',\n color: theme.palette.text.secondary\n },\n totalCaption: {\n lineHeight: 'inherit',\n fontSize: '14px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px'\n },\n totalNumber: {\n fontSize: '16px',\n color: 'rgba(0,0,0,0.87)',\n marginRight: '5px',\n fontWeight: 500\n }\n}));\n","import React, {useCallback, useContext} from 'react';\nimport {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {FacetViewHeader, Spacer, ViewIdContext} from '@reltio/components';\nimport {Link as Link} from '@material-ui/core';\nimport ArrowForwardIosRoundedIcon from '@material-ui/icons/ArrowForwardIosRounded';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total?: number;\n};\n\nexport const TagListHeader = ({total = 0}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const viewId = useContext(ViewIdContext);\n\n const switchToProfile = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'profile', viewId}));\n }, [dispatch, viewId]);\n\n return (\n <FacetViewHeader title=\"\">\n <div className={styles.titleContainer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.link}\n onClick={switchToProfile}\n underline=\"none\"\n >\n {i18n.text('Profile')}\n </Link>\n <ArrowForwardIosRoundedIcon className={styles.icon} />\n {i18n.text('Tags')}\n </div>\n <Spacer />\n <Typography className={styles.totalCaption} variant=\"caption\">\n <span className={styles.totalNumber}>{i18n.number(total, '0,0')}</span>\n {i18n.text('total profiles')}\n </Typography>\n </FacetViewHeader>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n toolbar: {\n display: 'flex',\n flexShrink: 0,\n background: 'white',\n borderBottom: '1px solid rgba(0,0,0,0.1)',\n boxSizing: 'border-box',\n paddingLeft: '16px'\n },\n avatar: {\n color: 'rgba(0, 0, 0, 0.38)',\n marginRight: '12px'\n },\n label: {\n fontSize: '20px',\n letterSpacing: '0.25px',\n lineHeight: '1.2',\n fontWeight: 500,\n color: theme.palette.text.primary,\n wordBreak: 'break-word'\n }\n}));\n","import React from 'react';\nimport TagIcon from '@material-ui/icons/LocalOffer';\nimport {Toolbar as Toolbar} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n};\n\nexport const TagProfileBand = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={styles.toolbar}>\n <TagIcon className={styles.avatar} />\n <Typography variant=\"h6\" className={styles.label}>\n {label}\n </Typography>\n </Toolbar>\n );\n};\n","import {useCallback, useMemo} from 'react';\nimport {map} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n Entity,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotals,\n getTotalFromDataTenant,\n TotalResponse,\n SearchFilter,\n GlobalSearchRequestOptions,\n getDataTenantFromEntityUri,\n enrichEntityWithDataTenant\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entityUri: string;\n tag: string;\n};\n\nexport const useTagsProvider = ({entityUri, tag}: Props) => {\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const dtssPath: string = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenant = useMemo(() => getDataTenantFromEntityUri(entityUri), [entityUri]);\n const filters: SearchFilter[] = useMemo(() => {\n return [\n {\n filter: 'equals',\n fieldName: 'tags',\n values: [tag]\n }\n ];\n }, [tag]);\n\n const isDT = !!dataTenant;\n\n const getEntities = useCallback(\n (filters: SearchFilter[] = [], options = {}): Promise<Entity[]> => {\n const requestOptions = {\n select: 'uri,label,type,secondaryLabel,defaultProfilePicValue,startDate,endDate',\n ...options\n };\n return isDT\n ? getFilteredEntitiesFromDataTenant({\n filters,\n options: requestOptions,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n }).then(map(enrichEntityWithDataTenant(dataTenant)))\n : getFilteredEntities(filters, requestOptions);\n },\n [isDT, dataTenant, tenant, dtssPath]\n );\n\n const requestEntities = useCallback(\n (max, offset): Promise<Entity[]> => {\n return getEntities(filters, {offset, max, ...globalSearchRequestOptions});\n },\n [filters, globalSearchRequestOptions, getEntities]\n );\n\n const requestTotal = useCallback((): Promise<number> => {\n const options = globalSearchRequestOptions;\n return (isDT\n ? getTotalFromDataTenant({\n filters,\n options,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n })\n : getTotals(filters, options)\n ).then((json) => (json as TotalResponse).total);\n }, [filters, globalSearchRequestOptions, isDT, dataTenant, tenant, dtssPath]);\n\n return {requestEntities, requestTotal};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n tagsContainer: {\n display: 'flex'\n },\n fullHeight: {\n flexGrow: 1,\n height: 0\n },\n tagsView: {\n margin: '16px',\n width: '100%',\n paddingTop: '4px'\n },\n listContainer: {\n flex: 1,\n display: 'flex',\n overflow: 'hidden',\n position: 'relative',\n flexDirection: 'column',\n minHeight: '4px'\n },\n entitiesList: {\n overflowY: 'auto',\n flexGrow: 1\n },\n pagination: {\n flexGrow: 0\n }\n}));\n","import React, {memo, useEffect, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdmModule from '@reltio/mdm-module';\nimport {GlobalSearchRequestOptions} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, LinearLoadIndicator, ProfilesList} from '@reltio/components';\nimport {TagListHeader} from './components/TagListHeader';\nimport {TagProfileBand} from './components/TagProfileBand';\nimport {useTag} from './hooks/useTag';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [25, 50, 100];\n\ntype Props = {\n tag?: string;\n entityUri?: string;\n};\n\nconst TagPerspectiveView = memo(({tag, entityUri}: Props) => {\n const styles = useStyles();\n\n const [rowsPerPage, setRowsPerPage] = useState(ROWS_PER_PAGE_OPTIONS[0]);\n const [page, setPage] = useState(0);\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n\n useEffect(() => {\n setPage(0);\n }, [tag, entityUri, globalSearchRequestOptions]);\n\n const {isLoading, total, entities} = useTag({tag, entityUri, page, rowsPerPage});\n const refScrollBlock = useRef(null);\n\n useEffect(() => {\n if (refScrollBlock.current) {\n refScrollBlock.current.scrollTop = 0;\n }\n }, [entities]);\n\n const hasPagination = total > ROWS_PER_PAGE_OPTIONS[0];\n\n return (\n <div className={styles.perspectiveView}>\n <TagProfileBand label={tag} />\n <div className={classnames(styles.tagsContainer, {[styles.fullHeight]: hasPagination})}>\n <BasicView className={styles.tagsView}>\n <TagListHeader total={total} />\n <div className={styles.listContainer}>\n {isLoading && <LinearLoadIndicator />}\n {total > 0 && (\n <div className={styles.entitiesList} ref={refScrollBlock}>\n <ProfilesList entities={entities} />\n </div>\n )}\n {hasPagination && (\n <div className={styles.pagination}>\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n onChangeRowsPerPage={setRowsPerPage}\n />\n </div>\n )}\n </div>\n </BasicView>\n </div>\n </div>\n );\n});\n\nTagPerspectiveView.displayName = 'TagPerspectiveView';\n\nexport {TagPerspectiveView};\n","import {useCallback, useEffect, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useDispatch} from 'react-redux';\nimport {useSafePromise} from '@reltio/components';\nimport {ui} from '@reltio/mdm-module';\nimport {Entity, getRequestErrorMessage} from '@reltio/mdm-sdk';\nimport {useTagsProvider} from './useTagsProvider';\n\ntype Props = {\n tag: string;\n entityUri: string;\n page: number;\n rowsPerPage: number;\n};\n\nexport const useTag = ({tag, entityUri, page = 0, rowsPerPage = 50}: Props) => {\n const dispatch = useDispatch();\n\n const safeRequestTotalPromise = useSafePromise();\n const safeRequestEntitiesPromise = useSafePromise();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [total, setTotal] = useState<number>(0);\n const [entities, setEntities] = useState<Entity[]>([]);\n\n const {requestEntities, requestTotal} = useTagsProvider({entityUri, tag});\n\n const onError = useCallback(\n (e) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(e, i18n.text('Something went wrong'))));\n setTotal(0);\n },\n [dispatch]\n );\n\n useEffect(() => {\n safeRequestTotalPromise(requestTotal()).then(setTotal).catch(onError);\n }, [requestTotal, safeRequestTotalPromise, onError]);\n\n useEffect(() => {\n setIsLoading(true);\n safeRequestEntitiesPromise(requestEntities(rowsPerPage, page * rowsPerPage))\n .then(setEntities)\n .catch(onError)\n .finally(() => setIsLoading(false));\n }, [page, rowsPerPage, requestEntities, safeRequestEntitiesPromise, onError]);\n\n return {isLoading, total, entities};\n};\n","import React from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\nimport {identity} from 'ramda';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {TagPerspectiveConfig} from '@reltio/mdm-sdk';\nimport TagPerspectiveView from '../components/TagPerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'tagPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: TagPerspectiveConfig;\n tag?: string;\n entityUri?: string;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n};\n\nconst TagPerspective = ({config, tag, entityUri, store, onResize = identity}: Props) => {\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <TagPerspectiveView tag={tag} entityUri={entityUri} />}\n <ErrorPopup showErrorFromStore={true} />\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default TagPerspective;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n addButton: {\n marginLeft: '12px',\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n },\n label: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n }\n});\n","import AddIcon from '@material-ui/icons/Add';\nimport {Button as Button} from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst AddRelationButton = ({onClick}) => {\n const styles = useStyles();\n return (\n <Button color=\"primary\" className={styles.addButton} onClick={onClick}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.label}>{i18n.text('Add')}</div>\n </Button>\n );\n};\n\nAddRelationButton.propTypes = {\n onClick: PropTypes.func\n};\n\nexport default AddRelationButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nconst inactiveStyle = {\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles((theme) => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n entityCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%'\n },\n entityLabel: {\n fontSize: '15px',\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n '$row-cell--removed &': removedStyle,\n '$row-cell--inactive &': inactiveStyle\n },\n entityAvatar: {\n transform: 'scale(0.7)',\n margin: '0 10px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > :not($entityCell)': removedStyle\n },\n 'row-cell--inactive': inactiveStyle\n}));\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classnames from 'classnames';\nimport {checkRemoved, isActiveObject} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst RowCellRenderer = ({cell, CellValueRenderer, rowValue: {connection}, isSorted, ...otherProps}) => {\n const styles = useStyles();\n const isRemoved = checkRemoved(connection);\n const isActive = isActiveObject(connection.relation) && isActiveObject(connection.entity);\n\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved,\n [styles['row-cell--inactive']]: !isActive\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nRowCellRenderer.propTypes = {\n rowValue: PropTypes.object,\n cell: PropTypes.object,\n CellValueRenderer: PropTypes.elementType,\n isSorted: PropTypes.bool\n};\n\nexport default RowCellRenderer;\n","import PropTypes from 'prop-types';\nimport React, {useContext} from 'react';\nimport {ui} from '@reltio/mdm-module';\nimport {always, pipe} from 'ramda';\nimport {useDispatch} from 'react-redux';\nimport {useStyles} from './styles';\nimport {EntityTypeType, getEntityUriForLink, getLabel} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, ExpandedValueTooltip, ViewIdContext} from '@reltio/components';\n\nconst EntityProfileRenderer = ({value: {entityType, entity}}) => {\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const styles = useStyles();\n const entityLabel = getLabel(entity.entityLabel);\n const preparedUri = getEntityUriForLink({uri: entity.entityUri, dataTenant: entity.dataTenant});\n return (\n <div className={styles.entityCell}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <ExpandedValueTooltip value={entityLabel}>\n <span\n className={styles.entityLabel}\n onClick={pipe(always({uri: preparedUri, viewId}), ui.actions.openEntity, dispatch)}\n >\n {entityLabel}\n </span>\n </ExpandedValueTooltip>\n </div>\n );\n};\n\nEntityProfileRenderer.propTypes = {\n value: PropTypes.shape({\n entity: PropTypes.shape({\n entityUri: PropTypes.string,\n entityLabel: PropTypes.string\n }),\n entityType: EntityTypeType\n })\n};\n\nexport default EntityProfileRenderer;\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import {getOvAttributeValuesByPath, getReadableAttributesList} from '@reltio/mdm-sdk';\nimport {chain, find, map, path, pipe, propEq, uniq} from 'ramda';\n\nconst getRelationTypes = pipe(\n map((rel) => rel.uri || rel),\n uniq\n);\n\nconst getRelationsAttributesFromMetadata = ({content: {inRelations = [], outRelations = []}}, {relationTypes}) =>\n pipe(\n getRelationTypes,\n chain((relationType) => pipe(find(propEq('uri', relationType)), getReadableAttributesList)(relationTypes))\n )([...inRelations, ...outRelations]);\n\nconst getRelationAttributeValues = (attrPath, relation) =>\n pipe(path(['object', 'attributes']), getOvAttributeValuesByPath(attrPath))(relation);\n\nexport {getRelationsAttributesFromMetadata, getRelationAttributeValues};\n","import EntityProfileRenderer from '../cell-renderers/EntityProfileRenderer';\nimport HeadCellRenderer from '../cell-renderers/HeadCellRenderer';\nimport {DefaultCellValueRenderer} from '@reltio/components';\nimport {assoc, map, pipe, reduce, slice, split} from 'ramda';\nimport {getEntityType, getRelationTypeLabelFromMetadata} from '@reltio/mdm-sdk';\nimport {getRelationAttributeValues} from '../../../core/relations';\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getRowValueByColumnId = (columnId, {entity, relation}, metadata) => {\n switch (columnId) {\n case 'entity.label':\n return {entity, entityType: getEntityType(metadata, entity.entityType)};\n case 'relation.label':\n return relation.relationLabel || getRelationTypeLabelFromMetadata(metadata, relation.relationType);\n case 'relation.activeness.startDate':\n return relation.startDate;\n case 'relation.activeness.endDate':\n return relation.endDate;\n default: {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getRelationAttributeValues(attrPath, relation);\n }\n }\n};\n\nconst getBasicTableRowsData = (connections, columnsData, metadata) =>\n connections.map((connection) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, connection, metadata), acc), {}),\n assoc('connection', connection)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (columnId.startsWith('relation.attributes')) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRenderer = (columnId) => {\n switch (columnId) {\n case 'entity.label':\n return EntityProfileRenderer;\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(columnData.id)\n});\n\nconst getBasicTableColumnsData = map(getColumnDataByColumnId);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n tableContainer: {\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n\n emptyData: {\n marginBottom: '30px'\n },\n\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {IconButton as IconButton} from '@material-ui/core';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport i18n from 'ui-i18n';\n\nexport const EditButtons = ({canUpdate, canRemove, handleEditRelation, handleRemoveRelation}) => (\n <>\n {canUpdate && (\n <Tooltip title={i18n.text('Edit')}>\n <IconButton onClick={handleEditRelation}>\n <EditIcon />\n </IconButton>\n </Tooltip>\n )}\n {canRemove && (\n <Tooltip title={i18n.text('Remove')}>\n <IconButton onClick={handleRemoveRelation}>\n <DeleteIcon />\n </IconButton>\n </Tooltip>\n )}\n </>\n);\nEditButtons.propTypes = {\n canUpdate: PropTypes.bool,\n canRemove: PropTypes.bool,\n handleEditRelation: PropTypes.func,\n handleRemoveRelation: PropTypes.func\n};\n\nexport default EditButtons;\n","import PropTypes from 'prop-types';\nimport React, {useCallback, useMemo, useState} from 'react';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {BasicTable, ColumnFilterType, ColumnsDataType, SortingType} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './helpers/dataHelpers';\nimport {useStyles} from './styles';\nimport {ConnectionType, MetadataType} from '@reltio/mdm-sdk';\nimport {path} from 'ramda';\nimport {checkRelationPermission} from './helpers/buttonsHelper';\nimport EditButtons from './EditButtons';\n\nconst MAX_HEIGHT = 477;\n\nconst RelationsTable = ({\n mode,\n columnsData,\n connections,\n metadata,\n sorting,\n onSort,\n filters,\n onFilter,\n onEditRelation,\n onRemoveRelation,\n basicTableRef,\n allowOnlyCreateNew\n}) => {\n const tableRowsData = useMemo(() => getBasicTableRowsData(connections, columnsData, metadata), [\n connections,\n columnsData,\n metadata\n ]);\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode,\n onRemoveRelation,\n onEditRelation,\n metadata,\n allowOnlyCreateNew,\n connection: path([hoverRowIndex, 'connection'], tableRowsData)\n });\n\n const handleOnRowHover = useCallback((rowIndex) => setHoverRowIndex(rowIndex), []);\n const handleEditRelation = useCallback(() => onEditRelation(path([hoverRowIndex, 'connection'], tableRowsData)), [\n hoverRowIndex,\n onEditRelation,\n tableRowsData\n ]);\n const handleRemoveRelation = useCallback(\n () => onRemoveRelation(path([hoverRowIndex, 'connection', 'relation', 'relationUri'], tableRowsData)),\n [hoverRowIndex, onRemoveRelation, tableRowsData]\n );\n\n const hoveredRowRightContent =\n canRemove || canUpdate ? (\n <EditButtons\n handleEditRelation={handleEditRelation}\n handleRemoveRelation={handleRemoveRelation}\n canRemove={canRemove}\n canUpdate={canUpdate}\n />\n ) : undefined;\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n autosizing\n maxHeight={MAX_HEIGHT}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n renderRowCell={renderRowCell}\n onRowHover={handleOnRowHover}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n ref={basicTableRef}\n resizeDebounceDelay={150}\n />\n </div>\n );\n};\n\nRelationsTable.propTypes = {\n mode: PropTypes.string,\n columnsData: ColumnsDataType,\n connections: PropTypes.arrayOf(ConnectionType),\n metadata: MetadataType,\n filters: PropTypes.objectOf(ColumnFilterType),\n onFilter: PropTypes.func,\n sorting: SortingType,\n onSort: PropTypes.func,\n onEditRelation: PropTypes.func,\n onRemoveRelation: PropTypes.func,\n basicTableRef: PropTypes.shape({current: PropTypes.object}),\n allowOnlyCreateNew: PropTypes.bool\n};\n\nexport default RelationsTable;\n","import {profile} from '@reltio/mdm-module';\nimport {checkMetadataForDelete, checkMetadataForUpdate, checkNew, checkRemoved, getRelationType} from '@reltio/mdm-sdk';\n\nconst checkRelationPermission = ({\n metadata,\n mode,\n connection,\n onRemoveRelation,\n onEditRelation,\n allowOnlyCreateNew\n}) => {\n const isNew = checkNew(connection);\n const isEditableMode = profile.mode.selectors.getIsEditableMode(mode);\n if (isEditableMode && connection && (!allowOnlyCreateNew || isNew)) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n\nexport {checkRelationPermission};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n popupContent: {\n padding: '19px 23px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Popover as Popover} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n showInactive: boolean;\n onShowInactiveChange: (value: boolean) => void;\n};\n\nconst MoreButton = ({className, showInactive, onShowInactiveChange}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n return (\n <>\n <SmallIconButtonWithTooltip\n className={className}\n ref={buttonRef}\n tooltipTitle={i18n.text('More')}\n icon={MoreVertIcon}\n onClick={togglePopup}\n size=\"L\"\n />\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={(e) => onShowInactiveChange(e.target.checked)}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n </Popover>\n </>\n );\n};\n\nexport default MoreButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 4px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n },\n moreButton: {\n marginLeft: '-6px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n FacetViewHeader,\n ColumnsDataType,\n ColumnsSettings,\n FilterButton,\n HideOnShrink,\n VerticalDivider,\n ExpandableSearchInput\n} from '@reltio/components';\nimport MoreButton from './MoreButton/MoreButton';\nimport {useStyles} from './styles';\n\nconst RelationsTableHeader = ({\n title,\n total,\n searchQuery,\n onChangeSearchQuery,\n filtersEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n onChangeColumns,\n showInactive,\n onChangeShowInactive\n}) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <HideOnShrink widthToHide={500}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} entities', {count: total})\n : i18n.text('${count} entity', {count: total})}\n </Typography>\n </HideOnShrink>\n <ExpandableSearchInput query={searchQuery} onChange={onChangeSearchQuery} />\n <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n <MoreButton\n className={styles.moreButton}\n showInactive={showInactive}\n onShowInactiveChange={onChangeShowInactive}\n />\n </FacetViewHeader>\n );\n};\n\nRelationsTableHeader.propTypes = {\n title: PropTypes.string,\n total: PropTypes.number,\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func,\n searchQuery: PropTypes.string,\n onChangeSearchQuery: PropTypes.func,\n filtersEnabled: PropTypes.bool,\n onToggleFilters: PropTypes.func,\n showInactive: PropTypes.bool,\n onChangeShowInactive: PropTypes.func\n};\n\nexport default RelationsTableHeader;\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\nconst CHANGE_SHOW_INACTIVE = 'CHANGE_SHOW_INACTIVE';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY),\n changeShowInactive: createStandardAction(CHANGE_SHOW_INACTIVE)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n case CHANGE_SHOW_INACTIVE:\n return {...state, showInactive: action.payload};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {ActivenessAttrTypes, attributeUriToSearchUri, DataTypes, getAttrDataTypeDefinition} from '@reltio/mdm-sdk';\nimport {concat, map, pipe, prop, subtract, uniqBy} from 'ramda';\nimport {getRelationsAttributesFromMetadata} from '../../core/relations';\nimport i18n from 'ui-i18n';\n\nconst ROWS_PER_PAGE_OPTIONS = [10, 25, 50, 100];\nconst getRowsPerPageOptions = (defaultRowsPerPage) =>\n ROWS_PER_PAGE_OPTIONS.filter((option) => option !== defaultRowsPerPage)\n .concat(defaultRowsPerPage)\n .sort(subtract);\n\nconst DEFAULT_COLUMNS_DATA = [\n {\n id: 'entity.label',\n get label() {\n return i18n.text('Entity label');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false\n },\n {\n id: 'relation.label',\n get label() {\n return i18n.text('Directional label');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n }\n },\n {\n id: 'relation.activeness.startDate',\n get label() {\n return i18n.text('Start date');\n },\n dataTypeDefinition: ActivenessAttrTypes.startDate\n },\n {\n id: 'relation.activeness.endDate',\n get label() {\n return i18n.text('End date');\n },\n dataTypeDefinition: ActivenessAttrTypes.endDate\n }\n];\n\nconst getColumnIdFromAttrUri = pipe(attributeUriToSearchUri, concat('relation.'));\n\nconst getColumnsDataFromRelationAttributes = pipe(\n map((attr) => ({\n id: getColumnIdFromAttrUri(attr.uri),\n label: attr.label,\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n })),\n uniqBy(prop('id'))\n);\n\nconst getColumnsData = pipe(\n getRelationsAttributesFromMetadata,\n getColumnsDataFromRelationAttributes,\n concat(DEFAULT_COLUMNS_DATA)\n);\n\nexport {getRowsPerPageOptions, DEFAULT_COLUMNS_DATA, getColumnsData};\n","import {buildColumnsFilter} from '@reltio/components';\nimport {\n checkMetadataPermission,\n FilterBuilder,\n filterValueToQueryStringWithQuotes,\n Maybe,\n MetadataPermissions\n} from '@reltio/mdm-sdk';\nimport {curry, either, evolve, indexBy, keys, path, pipe, prop, unless} from 'ramda';\n\nconst getUri = (item) => item.uri || item;\nconst containsUri = (uri) => (item) => getUri(item) === uri;\n\nexport const parseUris = curry((metadata, data) => {\n const parseUri = (acc, item) => {\n let uri = getUri(item),\n shouldSkipDescendantUris = false;\n if (uri.startsWith('!')) {\n uri = uri.slice(1);\n shouldSkipDescendantUris = true;\n }\n const hasValidMetadata = metadata[uri] && checkMetadataPermission(MetadataPermissions.READ, metadata[uri]);\n const nextAcc =\n acc.find(containsUri(uri)) || !hasValidMetadata ? acc : acc.concat(item.uri ? {...item, uri} : uri);\n // prettier-ignore\n return shouldSkipDescendantUris\n ? nextAcc\n : keys(metadata).reduce(\n (acc, descUri) =>\n metadata[descUri].extendsTypeURI === uri && !acc.find(containsUri(descUri))\n ? parseUri(acc, descUri)\n : acc,\n nextAcc\n );\n };\n\n return data.reduce(parseUri, []);\n});\n\nexport const deriveEntityTypesFromRelations = curry((relationTypes, content) => {\n const deriveEntitiesFromRelationsMetadata = (objectType, relations = []) =>\n relations.reduce((acc, relation) => {\n const relationTypeUri = getUri(relation);\n const entityTypeUri = path([relationTypeUri, objectType, 'objectTypeUri'], relationTypes);\n return !entityTypeUri || acc.find(containsUri(entityTypeUri)) ? acc : acc.concat(entityTypeUri);\n }, []);\n\n return {\n ...content,\n entityTypes: [\n ...deriveEntitiesFromRelationsMetadata('startObject', content.inRelations),\n ...deriveEntitiesFromRelationsMetadata('endObject', content.outRelations)\n ]\n };\n});\n\nconst indexByUri = indexBy(prop('uri'));\n\nexport const parseRelationsConfigContent = curry((metadata, content) => {\n const relationTypes = indexByUri(metadata.relationTypes);\n const entityTypes = indexByUri(metadata.entityTypes);\n\n const parseEntryUris = (entry) =>\n evolve(\n {\n inRelations: parseUris(relationTypes),\n outRelations: parseUris(relationTypes),\n entityTypes: parseUris(entityTypes),\n nextEntry: parseEntryUris\n },\n entry\n );\n\n return pipe(\n unless(either(prop('nextEntry'), prop('entityTypes')), deriveEntityTypesFromRelations(relationTypes)),\n parseEntryUris\n )(content);\n});\n\nexport const parseRelationsConfig = (metadata, config) =>\n evolve({content: parseRelationsConfigContent(metadata)}, config);\n\nexport const buildRelationsFilter = (searchQuery, filters, columnsData) => {\n const queryClause = Maybe.fromFalsy(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n const filtersClause = buildColumnsFilter(columnsData, filters);\n\n return new FilterBuilder().addClause(queryClause).addClause(filtersClause).build();\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n addArea: {\n display: 'flex',\n alignItems: 'center',\n height: '48px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n marginBottom: '20px',\n marginTop: '10px',\n color: 'rgba(0,0,0,0.54)'\n }\n});\n","import React, {useCallback, useContext, useEffect, useMemo, useReducer, useRef} from 'react';\nimport AddRelationButton from './AddRelationButton/AddRelationButton';\nimport RelationsTable from './RelationsTable/RelationsTable';\nimport RelationsTableHeader from './RelationsTableHeader/RelationsTableHeader';\nimport reducer, {actions} from './stateReducer';\nimport {\n BasicTablePagination,\n BasicView,\n LinearLoadIndicator,\n ProfilePerspectiveViewContext,\n useConfigPermissions,\n useRelationsLoader,\n RelationEditor\n} from '@reltio/components';\nimport {DEFAULT_COLUMNS_DATA, getColumnsData, getRowsPerPageOptions} from './helpers/tableHelpers';\nimport {pipe, pluck, propEq} from 'ramda';\nimport {buildRelationsFilter} from './helpers/relationsHelpers';\nimport {profile} from '@reltio/mdm-module';\nimport {\n isTempUri,\n ModeTypes,\n createNewConnectionWithDefaultRelationType,\n RelationsViewConfig,\n Entity,\n Metadata,\n Connection,\n Mode,\n ActivityFilter\n} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {Dispatch} from 'redux';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_COLUMNS_TO_SHOW = pluck('id', DEFAULT_COLUMNS_DATA);\nconst [DEFAULT_SORT_FIELD] = DEFAULT_COLUMNS_TO_SHOW;\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Props = {\n config: RelationsViewConfig;\n entity: Entity;\n metadata: Metadata;\n connections: Connection[];\n total: number;\n mode: Mode;\n className?: string;\n relationToAdd: Connection;\n relationsToEdit: Connection[];\n checkIfCanAddRelations: boolean;\n dispatch: Dispatch;\n readOnlyMode?: boolean;\n};\nconst RelationsTableView = ({\n className,\n config,\n entity,\n metadata,\n connections = [],\n total = 0,\n mode: modeProp,\n relationToAdd,\n relationsToEdit = [],\n checkIfCanAddRelations,\n dispatch: reduxDispatch,\n readOnlyMode\n}: Props) => {\n const initialState = {\n searchQuery: '',\n filters: null,\n visibleColumns: DEFAULT_COLUMNS_TO_SHOW,\n sorting: {\n order: config.sortOrder || DEFAULT_SORT_ORDER,\n field: config.sortColumn || DEFAULT_SORT_FIELD\n },\n page: 0,\n rowsPerPage: config.max || DEFAULT_ROWS_PER_PAGE,\n showInactive: DEFAULT_SHOW_INACTIVE\n };\n\n const styles = useStyles();\n const isProfilePerspectiveView = useContext(ProfilePerspectiveViewContext);\n const mode = isProfilePerspectiveView ? modeProp : ModeTypes.VIEWING;\n\n const [state, dispatch] = useReducer(reducer, initialState);\n const changeSearchQuery = pipe(actions.changeSearchQuery, dispatch);\n const changeShowInactive = pipe(actions.changeShowInactive, dispatch);\n const clearSearchQuery = () => {\n changeSearchQuery('');\n };\n useEffect(clearSearchQuery, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const {visibleColumns, searchQuery, filters, sorting, page, rowsPerPage, showInactive} = state;\n\n const allColumnsData = useMemo(() => getColumnsData(config, metadata), [config, metadata]);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))),\n [visibleColumns, allColumnsData]\n );\n\n const filter = useMemo(\n () => buildRelationsFilter(searchQuery, filters, visibleColumnsData),\n [filters, searchQuery] // eslint-disable-line\n );\n\n const {isLoading} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode: modeProp\n });\n\n const rowsPerPageOptions = useMemo(() => getRowsPerPageOptions(initialState.rowsPerPage), []); // eslint-disable-line\n const {handleRowsPerPageChange, handlePageChange} = useMemo(\n () => ({\n handleRowsPerPageChange: pipe(actions.changeRowsPerPage, dispatch),\n handlePageChange: pipe(actions.changePage, dispatch)\n }),\n []\n );\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({\n config,\n mode,\n metadata,\n parentEntityUri: undefined\n });\n pipe(profile.relations.actions.openRelationEditor(config.id), reduxDispatch)(newConnection);\n }, [config, mode, metadata, reduxDispatch]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n reduxDispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n reduxDispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => profile.relations.selectors.getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = profile.relations.selectors.getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n reduxDispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, reduxDispatch]\n );\n\n const canAddRelations = entity && checkIfCanAddRelations && !readOnlyMode;\n const openedRelations = relationToAdd ? [relationToAdd, ...relationsToEdit] : relationsToEdit;\n const {canUpdate, canDelete} = useConfigPermissions();\n const canEditRelations = canUpdate(config) && !readOnlyMode;\n const canRemoveRelations = canDelete(config) && !readOnlyMode;\n const basicTableRef = useRef(null);\n\n return (\n <BasicView className={className}>\n <RelationsTableHeader\n title={config.caption}\n total={total}\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={pipe(actions.changeColumns, dispatch)}\n searchQuery={searchQuery}\n onChangeSearchQuery={changeSearchQuery}\n filtersEnabled={!!filters}\n onToggleFilters={pipe(actions.toggleFilters, dispatch)}\n showInactive={showInactive}\n onChangeShowInactive={changeShowInactive}\n />\n {canAddRelations && (\n <div className={styles.addArea}>\n <AddRelationButton onClick={onAddRelation} />\n </div>\n )}\n {openedRelations.map((relation) => (\n <RelationEditor\n key={profile.relations.selectors.getRelationUriFromConnection(relation)}\n connection={relation}\n config={config}\n mode={mode}\n metadata={metadata}\n />\n ))}\n <div style={{position: 'relative'}}>\n <RelationsTable\n mode={mode}\n columnsData={visibleColumnsData}\n connections={connections}\n metadata={metadata}\n filters={filters}\n onFilter={pipe(actions.changeFilter, dispatch)}\n sorting={sorting}\n onSort={pipe(actions.toggleSort, dispatch)}\n onEditRelation={\n canEditRelations\n ? pipe(profile.relations.actions.openRelationEditor(config.id), reduxDispatch)\n : null\n }\n onRemoveRelation={canRemoveRelations ? onRemoveRelation : null}\n basicTableRef={basicTableRef}\n allowOnlyCreateNew={config.allowOnlyCreateNew}\n />\n {connections.length ? (\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={rowsPerPageOptions}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={handleRowsPerPageChange}\n page={page}\n onChangePage={handlePageChange}\n basicTableRef={basicTableRef}\n />\n ) : (\n <Typography className={styles.noData}>{i18n.text('No data found')}</Typography>\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </BasicView>\n );\n};\n\nexport default RelationsTableView;\n","import {memoizeWith} from 'ramda';\nimport {connect} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport RelationsTableView from './RelationsTableView';\nimport {parseRelationsConfig} from './helpers/relationsHelpers';\n\nconst mapStateToProps = (state, ownProps) => {\n const {config} = ownProps;\n\n return {\n connections: mdm.selectors.getConnectionsWithDraftsByViewId(state, config.id),\n total: mdm.selectors.getTotalByViewId(state, config.id),\n entity: mdm.selectors.getEntity(state),\n metadata: mdm.selectors.getMetadata(state),\n mode: mdm.selectors.getMode(state),\n relationToAdd: mdm.selectors.getRelationToAddByViewId(state, config.id),\n relationsToEdit: mdm.selectors.getRelationsToEditByViewId(state, config.id),\n checkIfCanAddRelations: mdm.selectors.getCheckIfCanAddRelations(state, config.content)\n };\n};\n\nconst memoizedParseRelationsConfig = memoizeWith((metadata, config) => config.id, parseRelationsConfig);\n\nconst mergeProps = (stateProps, dispatchProps, ownProps) => ({\n ...stateProps,\n ...dispatchProps,\n ...ownProps,\n config: memoizedParseRelationsConfig(stateProps.metadata, ownProps.config)\n});\n\nexport default connect(mapStateToProps, undefined, mergeProps)(RelationsTableView);\n","import MomentUtils from '@date-io/moment';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport RelationsTableView from './RelationsTableView';\nimport {StylesProvider, createGenerateClassName} from '@material-ui/core/styles';\n\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {Provider} from 'react-redux';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {identity} from 'ramda';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {Store} from 'redux';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'relTable',\n disableGlobal: true\n});\n\ntype Props = {\n config: RelationsViewConfig;\n store: Store;\n onResize?: (width: number, height: number) => void;\n className?: string;\n readOnlyMode?: boolean;\n};\n\nconst StandaloneRelationsTableView = ({config, store, onResize = identity, className, readOnlyMode}: Props) => (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <RelationsTableView config={config} className={className} readOnlyMode={readOnlyMode} />}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n);\n\nexport default StandaloneRelationsTableView;\n"],"names":["customStyles","input","currentStyles","fontSize","menuPortal","zIndex","useStyles","makeStyles","root","flex","title","paddingBottom","paddingLeft","dropDownInput","width","justifyContent","backgroundColor","borderTop","option","height","noOptionsMessage","entityType","selectedAttributes","className","onChange","disableUnderline","menuPlacement","metadata","useSelector","mdmModule","styles","prepareItems","useCallback","data","level","prevLabel","reduce","acc","item","hidden","chipLabel","label","push","value","uri","attrType","subAttributes","getAttributeTypeSubAttributes","concat","options","useMemo","attributes","classnames","Typography","variant","i18n","MultiSelect","TextFieldProps","InputProps","classes","components","DropdownIndicator","DropdownIndicatorWithIconButton","MultiValue","props","Option","isFocused","isSelected","innerProps","AttributeListItem","checked","labelInText","pipe","defaultTo","menuPortalTarget","document","body","theme","display","flexDirection","basicView","BasicView","forwardRef","ref","children","otherProps","Paper","displayName","propTypes","PropTypes","paddingRight","inputNumber","minWidth","marginRight","inputUnit","periods","interval","unit","onFocus","onNumberChange","getValue","parseInt","newValue","onUnitChange","newUnit","TextField","type","inputProps","min","SimpleDropDownSelector","placeholder","capitalize","map","ErrorBoundary","React","constructor","super","this","state","error","componentDidCatch","setState","console","render","loadingMessage","selectedUsers","valueToOption","prepareValues","values","tenant","servicesPath","cachedRequest","useRef","pluck","defaultOptions","getOptions","inputValue","current","getAllUsersForTenant","then","prop","users","filter","username","utils","filterUsers","ActivityTypes","getItemDataType","path","getActivityType","activity","items","firstItem","removeIgnoredItems","isImplementedItem","isValidActivityType","includes","filteredItems","length","reject","itemsTotal","splitActivityByType","propOr","groupBy","ifElse","stringifyDeltaValue","deltaValue","attributeTypeUri","attributePresentations","attributeType","findAttributeTypeByUri","dataTypeDefinition","getAttrDataTypeDefinition","formatValue","formatDataTypeValue","isNil","Object","entries","flatMap","attributeTypeName","deltaValues","makeAttrTypeUri","join","getActivityLabel","dropdownIndicator","transition","inputRoot","padding","dateOptionLabel","paper","localeFormat","moment","longDateFormat","inputRef","open","setOpen","useState","handleToggle","onCancel","fullWidth","DataTypes","onClick","endAdornment","selectProps","menuIsOpen","readOnly","InputLabelProps","shrink","Menu","autoFocus","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","style","DateRangePicker","onApply","DateRangeTypes","RequestStates","_extends","assign","target","i","arguments","source","key","prototype","hasOwnProperty","call","apply","viewBox","version","xmlns","xmlnsXlink","d","id","stroke","strokeWidth","fill","fillRule","xlinkHref","fillOpacity","mask","header","buttonsContainer","flexShrink","marginLeft","button","icon","disabledIcon","opacity","IconButtonWithTooltip","withTooltip","IconButton","HierarchyViewHeader","entityLabel","onScrollToCurrentEntity","onGraphOpen","disabled","iconClassName","FacetViewHeader","tooltipTitle","showForDisabled","ShowGraph","node","tooltipPlacement","SelectNode","total","textField","spacing","panel","flexGrow","minHeight","maxHeight","treeWrapper","marginTop","checkedNode","editorNode","overflow","visibility","container","wordBreak","tree","Boolean","NodeRendererDefault","Component","scaffoldBlockPxWidth","toggleChildrenVisibility","connectDragPreview","connectDragSource","isDragging","canDrop","canDrag","subtitle","draggedNode","treeIndex","isSearchMatch","isSearchFocus","buttons","didDrop","treeId","isOver","parentNode","rowDirection","nodeTitle","nodeSubtitle","rowDirectionClass","handle","expanded","Array","_","index","Tooltip","DragIndicator","dropEffect","isDraggedDescendant","ReactSortableTreeUtils","isLandingPadActive","showToggleChildrenButton","cycled","pending","nodeId","btn","offsetX","offsetY","defaultProps","isRequired","TreeThemeContext","createContext","generateTreeNodeProps","undefined","TreeNode","listIndex","swapFrom","swapLength","swapDepth","lowerSiblingCounts","connectDropTarget","getPrevRow","scaffoldBlockCount","scaffold","forEach","lowerSiblingCount","lineClass","highlightLineClass","right","left","scaffoldWidth","MIN_NODE_CONTENT_WIDTH","nodeStyle","treeNodeProps","context","treeNodeClassName","Children","child","cloneElement","contextType","rowHeight","slideRegionSize","GenericNodeType","showParents","HierarchyNodeType","entity","EntityType","relation","RelationType","relations","parent","directParentUri","loading","ActivenessDateType","TreeType","graphTypes","entitiesMap","activenessDate","scrollTo","MeasuredNode","measure","registerChild","NodeRenderer","useEffect","scrollToElementByNodeId","element","querySelector","getElementByNodeId","scrollIntoView","block","inline","setTimeout","getNodeKey","DefaultNodeRenderer","pick","hierarchyTheme","Tree","scrollToNode","onRequestChildren","onScroll","identity","onNodeMoved","inlineRoot","treeData","rootChildren","omit","assoc","virtualizedListRef","treeDataRef","measurerCache","keyMapper","rawIndex","nodeInfo","CellMeasurerCache","fixedWidth","defaultHeight","onWindowResize","clearAll","window","addEventListener","removeEventListener","useRefreshableMeasurerCache","useRunOnceAfterValueInitialization","vList","getVirtualizedListInstance","forceUpdateGrid","results","searchFocusOffset","searchQuery","searchMethod","scrollToRow","onSortableTreeChange","slice","nodeRenderWithMeasure","cache","columnIndex","rowIndex","getMeasuredNode","generateNodeProps","rowInfo","previousTreeData","usePrevious","onMoveNode","movedNodeInfo","prevPath","nextParentNode","prevParentNode","parentPath","result","handleOnLazyLoadChildren","handleResize","skipOnMount","handleWidth","onResize","ReactSortableTree","isVirtualized","reactVirtualizedListProps","scrollToAlignment","onLazyLoadChildren","useCommonStyles","paddingTop","position","loadingSpinner","alignSelf","LoadingNode","commonStyles","LoadingSpinner","wrapper","avatar","avatarWithMultiParent","cursor","number","color","multiParentIcon","top","actionsBlock","content","background","pointerEvents","actionsBlockWithOpenMenu","actionsBlockForCheckedNode","regularNodeCheckbox","letterSpacing","lineHeight","popper","maxWidth","boxShadow","borderRadius","strokeOpacity","cx","cy","r","link","palette","primary","main","selected","fontWeight","Link","to","multiParent","border","bottom","borderColor","borderBottomColor","borderWidth","parentContainer","marginBottom","alignItems","loadingNode","additionalParents","dispatch","useDispatch","entityLink","ui","entityUri","viewId","details","margin","detailLine","detail","wordWrap","textIndent","detailLabel","whiteSpace","detailValue","prepareTree","sortField","sortOrder","mapTree","childrenProcessing","sortTreeChildren","typesLabelsMap","createRelationTypesLabelsMap","nodeProcessing","formatNodeFromTreeResponse","addSelfRelatedNode","expandNode","buildEntitiesMapFromTree","getGraphType","nodeCounter","generateId","convertParentProp","getNodeUri","getRelationsProp","wrapInArrayIfNeeded","getRelationProp","isArray","parents","parentIndex","findIndex","equals","directParent","formatted","formatNodeFromHopResponse","traversedRelations","untraversedRelations","formattedNode","some","when","both","has","complement","clearNodeForEntityMap","buildEntitiesMapFromHopsEntities","keys","processHopsResponse","isReversed","entities","childObjectKey","objectURI","buildEntitiesMapFromHops","curry","json","createNewTreeNode","generateNewRelationUri","treeActions","profile","loadChildren","parentUri","parentId","getState","mdm","childrenLoading","getHops","rawSubTree","queue","visitedNodes","breakCycles","buildTreeFromHops","entitiesSubMap","childrenLoaded","entitiesMappingLoaded","showCurrentEntity","currentEntityShownInTree","resetScrollToNode","hasEntityTypesWithSecondaryLabelPattern","getAllEntityTypesForGraphType","any","isRelationLoaded","isNodeChecked","checkedNodes","isEditorNode","hasEditorNode","loadRelationDetails","currentRelation","Promise","resolve","getRelation","relationDetails","detailedRelation","treeNodeChanged","hasLoadingNode","getShowSecondaryLabelValue","showSecondaryLabel","enabled","getRelationDetails","attrTypes","ACTIVENESS_ATTR_TYPES","RelationDetails","showDetails","relationshipData","typeName","getRelationType","gutterBottom","DataTypeValue","MetadataType","addButton","editButton","ActionsBlock","show","onToggleRelationDetails","onMenuOpen","onMenuClose","onStartEditing","onAddParent","onAddChild","onDelete","menuItems","text","SmallIconButton","size","InfoIconSelected","InfoIcon","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","AddCircleIcon","menuId","EditIcon","DeleteIcon","getGraphConfig","getReverseRelationsConfig","getGraphTypeConfig","getValidatedSortOrderFromConfig","getValidatedSortOrder","getValidatedSortFieldFromConfig","getValidatedSortField","getIsSecondaryLabelEnabledFromConfig","getTypeGraphIcon","absoluteImagePath","entityTypeUri","getEntityType","entityTypeGraphIcon","getPropWithInheritance","getAbsoluteImageUrl","canEditNode","mode","checkMetadataForUpdate","canAddRelative","direction","config","isChild","nodeEntityTypeUri","graphTypeUri","graphType","relationTypeUris","getRelationshipTypeUrisFromGraphType","isNodeEntityInstanceOf","isInHierarchy","__","getStartObjectTypeUri","getEndObjectTypeUri","canAddParentForNode","canAddChildForNode","canDeleteNode","checkMetadataForDelete","simpleNodePropsMapping","currentEntityUri","uiPath","onParentsRequested","isSelectedNode","isEditable","checkIsEditableMode","commonActionHandlers","onToggleShowParents","needLoadAdditionalParents","actionHandlers","treeNodeEditingStarted","nodeStartEditing","treeNodeNewParentEditingStarted","newNode","treeNodeNewChildEditingStarted","store","nodeStartAddingChild","relationUri","treeRelationRemoved","treeNodeRemoved","updatedNode","toggleRelationDetails","getLabel","secondaryLabel","getEntityLink","getAdditionalParents","pathOr","mapEntry","NodeContext","onToggleNodeCheckbox","canSelect","onImageLoadFail","e","src","DEFAULT_ICON","RegularNode","popperAnchor","useContext","nodePropsMapping","isLoading","entityDetails","showEntityDetails","hideEntityDetails","setEntityDetails","setIsLoading","timerId","safePromise","useSafePromise","cancelRequest","getEntity","finally","clearTimeout","useEntityDetails","showPopper","showControls","setShowControls","showActionsBlock","hideActionsBlock","openActionsMenu","setOpenActionsMenu","showActionsMenu","hideActionsMenu","hasMultiParents","toggleShowParents","bind","event","onTitleClick","onMouseEnter","onMouseLeave","Avatar","onError","Popper","modal","placement","ProfileCard","memo","fromEditorValue","toEditorValue","relationsTypesOptions","find","propEq","NodeRelationTypeSelector","relationTypes","labelsMap","getDirectionalLabel","getDirectionalLabelFromObject","tap","byLabel","ascend","getEntityTypeWithInheritedIcon","typeIcon","startObject","endObject","directionalLabel","typeLabel","objectType","objectTypeURI","evolve","sort","getRelationTypesOptions","RelationTypeSelector","RelationTypeType","isAvailableRelationForRelatedEntity","relatedEntity","relationType","isRelatedEntityInstanceOf","getObjectUri","editorContainer","dense","actionButtons","EditorNode","editingMode","initialConnection","isAddingParent","NODE_EDITING_MODES","connection","getHierarchyNodeEditorActiveError","allErrors","relationTypeUri","crosswalks","attributeListEntity","getActivenessAttributes","globalSearchRequestOptions","allAvailableRelationTypes","getAllAvailableRelationTypes","availableRelationTypes","isAvailableRelationBetweenEntities","availableEntityTypeUris","getSuitableEntityTypeUrisForRelationTypes","onRelationTypeChange","treeNodeRelationTypeChanged","onChangeEntity","treeNodeEntityChanged","useDidUpdateEffect","relationAttrTypes","getRelationAttributesList","selectorCompatibleEntity","onAddAttributes","params","param","onChangeAttribute","onDeleteAttribute","validate","errors","validateHierarchyConnection","cond","always","treeNodeNewParentEditingCanceled","treeNodeNewChildEditingCanceled","treeNodeEditingCanceled","action","nodeCancelEditing","dataAction","treeRelationCreated","treeRelationChanged","getPayloadForNodeApplyEditing","treeNodeNewParentEditingApplied","treeNodeNewChildEditingApplied","treeNodeEditingApplied","treeAppearanceChangeActionCreator","nodeApplyEditing","canApply","errorMessage","getErrorMessage","highlightedError","ScrollToErrorContext","isErrorHighlighted","allPass","isEmptyValue","errorClassName","useScrollToAttributeError","isSimple","handleHeight","ErrorWrapper","EntitySelector","entityTypesUris","max","attributeTypesSelectionStrategy","relationEditorAttributeTypesSelectionStrategy","AttributesList","showEmptyEditors","Button","NodeTypes","getNodeType","T","Node","build","HierarchyPanel","onChildrenRequested","onTreeChanged","onTreeScroll","isEditableMode","nodeContextValue","treeThemeContextValue","nextParent","relatedNode","Provider","GraphTypeSelector","SelectorWithOnlyOptionAutoSelect","GraphTypeType","ActivenessDateControl","handleChange","date","getTime","DateEditor","popupHorizontalPadding","triggerButton","popupContent","sortControls","sortSelectorRoot","sortSelectorMenuItem","sortOrderButton","checkboxControlRoot","checkboxControlLabel","checkboxControlCheckbox","divider","FormControlLabelWithTooltip","FormControlLabel","SORTING_OPTIONS","TREE_SORT_FIELD_VALUES","FilterSortButton","onSort","showSecondaryLabelDisabledReason","onShowSecondaryLabelChange","buttonRef","isOpen","setIsOpen","isAsc","TREE_SORT_ORDER_VALUES","togglePopup","Popover","viewOptionsTitle","control","Checkbox","Divider","DropDownEditor","menuItem","newSortField","MenuProps","ArrowUpwardIcon","ArrowDownwardIcon","textOverflow","textContainer","separator","Breadcrumbs","expandText","li","href","BreadcrumbsType","fieldsToSave","getStateToSave","anyPass","field","isEmpty","view","linearIndicator","filtersBar","secondary","filterSortButton","breadcrumbs","graphTypeSelector","fontFamily","connect","ownProps","caption","graph","graphConfig","showPath","initialActivenessDate","Date","now","isSecondaryLabelEnabled","showSecondaryLabelValue","currentGraphType","setCurrentGraphType","getGraphTypesForEntityType","hasSecondaryLabelPattern","onTreeSort","treeSorted","scrollToTreeTop","savePreferences","debounce","trees","treesStateSaved","saveTreesPreferences","treeSecondaryLabelShown","cancelOnUnmount","isCurrentReversed","currentGraphTypes","previousActivenessDate","showCurrentEntityDelayed","hasRoot","updatedTrees","updateTreesWithNewEntity","treeChanged","updatedTime","createTreeLoadedEvent","treeLoaded","treeProcessing","hasEntityInTree","treeLoading","getTree","catch","treeLoadedWithError","getRequestErrorMessage","warn","useTreeLoader","isViewMode","isTempUri","modifiedEntity","useNewEntityTree","parentsProcessing","loadParents","onTreeActivenessDateChange","activenessDateChanged","newParent","treeRelationRepointed","JSON","stringify","setCheckedNodes","openGraph","clearCheckedNodes","nodePath","getPathByEntityUri","LinearLoadIndicator","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","ViewIdContext","StylesProvider","MuiPickersUtilsProvider","MomentUtils","Math","floor","ErrorPopup","SingleAttributeContext","showInactive","toggleShowInactive","totalCaption","ovIcon","SingleAttributeHeader","totalVisibleValues","showInactiveValuesMenu","setSearchQuery","setPage","totalNonVisibleValues","nonVisibleValues","HideOnShrink","widthToHide","VerticalDivider","OvIcon","nonOvTotal","nonOvValues","ExpandableSearchInput","query","moreButton","buttonLabel","ovFalse","inactive","noData","getAttributeNameFromAttributeUri","getLastUriPart","search","String","getPagedLocalEntity","async","defaultMaxValues","Infinity","offset","findAttributeValuesByTypeUri","ovValues","isOv","getAttributeSource","paging","totalOvValues","totalValues","emptyArray","SingleAttributeEditableContent","noDataText","required","cardinality","name","getAttributePagerActiveTypeErrorMessage","attributeSource","entityValuesUris","modifiedEntityValues","modifiedEntityValuesUris","emptyEditorValue","createNewAttribute","isModifiedEntityValuesEmpty","showEmpty","newValues","onDeactivateError","onAdd","attribute","isComplexAttribute","canCreate","checkCanCreateAttribute","commonProps","showNonOv","isEmptyAttributeList","CardinalityMessage","ErrorMessage","message","Add","idx","attributeValue","lazy","ownError","getAttributeOwnError","originalValue","modifiedEntityValue","deleted","edited","value1","value2","cleanser","is","over","lensPath","cleanAttributesWith","valueTransformer","unless","deleteEmptyComplex","areValuesEqual","SingleAttributeReadableContent","pagination","SingleAttributeView","page","hasPaging","pivotingAttributes","hasValues","PivotingAttributeContext","Box","renderContent","BasicTablePagination","count","rowsPerPage","rowsPerPageOptions","onChangePage","useSingleAttributeLoader","canShowHistoryDiff","attributeUri","setValues","setPaging","attributeValuesRef","apiPath","entitySelector","isHistoryModeEnabled","diff","attributeTypeSource","findAttributeValues","globalFilter","loadAttributes","isReadableAttribute","isFirstLevelAttributeUri","rest","request","isDataTenantEntity","getPagedEntity","response","loadedValue","partitionByOv","partition","totalProp","RelationsViewStateContext","FilterButton","toggleSortOrder","sortOption","changeSortOption","sortOptions","hasSortOptions","ImportDTContext","MAX","pow","userSelect","badge","badgePosition","MultipleImportIcon","Badge","anchorOriginTopRightRectangle","badgeContent","CloudDownload","ImportFromDT","tenants","selectedTenant","onConfirmImport","onCancelConfirmation","onImportClick","dataTenants","reloadRelations","setTenants","setSelectedTenant","dtssPath","customerTenant","maxDtssImport","checkHasNonImportedConnections","importFromDT","all","hasNonImportedRelations","dataTenant","hasNonImportedConnections","modifiedTenants","importDTConnections","useImportFromDTLoader","oneTenant","labelOnButton","indexOf","CloudDownloadIcon","ConfirmationDialog","discardCaption","saveCaption","onDiscard","onSave","changeSearchQuery","tooltip","tooltipContent","progress","tooltipProps","setSecondaryLabel","onOpen","getDataTenantEntitySecondaryLabel","getEntitySecondaryLabel","CircularProgress","colorPrimary","disableFocusListener","useRelationInfo","preparedUri","getEntityUriForLink","relationLabel","getRelationTypeLabelFromMetadata","SuggestedButtons","acceptRelation","ignoreRelation","row","rowInactive","inactiveBackground","entityAvatar","entityLabelContainer","textDecoration","editButtonsContent","editButtons","removed","editedLabel","fontStyle","EditableRelationItem","onRemoveRelation","onEditRelation","onAcceptRelation","onIgnoreRelation","renderRelationArrowButton","checkRemoved","checkEdited","ignored","checkIgnored","isActive","isActiveObject","canRemove","canUpdate","Mode","isRemoved","relationTypeMetadata","checkRelationPermission","handleRemoveRelation","handleEditRelation","handleAcceptRelation","handleIgnoreRelation","suggested","suggustedButtonsContent","captionText","EntityTypeIcon","EntityUriLink","getFirstRelationTypeObject","inRelations","outRelations","prepareRelation","Directions","arrowIcon","RelationArrowButton","showSecondLevel","parentEntityUri","contentSecondLevel","checkNew","ArrowDropDown","ArrowRight","secondLevelContent","SecondLevelWrapper","connections","toggleShowSecondLevel","loadRelations","relationActivityFilter","setShowSecondLevel","setLoading","activityFilter","requestConfig","returnObjects","returnDates","activeness","ActivityFilter","getRelationsForEntity","useSecondLevelConnections","getEntitiesMapForConnections","EntitiesMapContext","RelationsContent","relationToAdd","relationsToEdit","checkIfCanAddRelations","onAddRelation","newConnection","createNewConnectionWithDefaultRelationType","connectionToRemove","defaultRelationTypeObject","connectionWithDefaultRelationType","object","relationDirection","newConnections","currentConnections","canAddRelations","isEmptyRelationList","getRelationEditableContent","openedRelation","allowOnlyCreateNew","itemKey","RelationEditor","shouldShowAddRelationButton","shouldShowRelationEditorToAdd","attributesList","RelationAttributes","firstLevelRelationAttrTypes","showAttributesList","getAttributesListForReadMode","objectIds","getAttributeValuesUris","getCommentsCount","CollaborationContext","additionalRelatedObjectUris","createRelatedObjectUris","CollaborationObjectTypes","RelatedObjectUrisContext","ShowDetailsButton","onToggle","suggestedWrapper","commentsContainer","additionalButtonsWrapper","labelWrapper","RelationItem","isSuggested","setShowDetails","relatedObjectUris","COMMENTS_CONTAINER_VISIBILITY_AREA","CommentsContainer","getConnectionRelationUriForLink","allowOnlyOneComment","getCountOfLikes","ratings","rating","getCountOfDislikes","calcWidthOfLikesScale","calcWidthOfDislikesScale","averageRating","scale","likesScale","dislikesScale","counts","likesCount","Ratings","mean","calcAverageRating","toFixed","ThumbUp","ThumbDown","textTransform","likeButton","RatingsButtons","onAgree","onDisagree","ratingOfCurrentUser","user","endIcon","buttonContent","comment","entityTypeIcon","showDetailsButton","relationAttributes","RelationComplexItem","rateRelation","RelationsList","mainEnityUri","isComplex","relationTypeObject","ignoreSuggestedRelation","relatedEntityUri","startDate","endDate","isInDirection","startEntityUri","endEntityUri","createRelation","useSuggestedRelations","getRelationshipsObjectIdsForCollaboration","list","selectors","getMode","RelationsView","getConnectionsWithDraftsByViewId","getTotalByViewId","sorting","order","queryClause","Maybe","filterValueToQueryStringWithQuotes","queryString","orSome","FilterBuilder","addClause","buildRelationsFilter","reload","useRelationsLoader","importDTContextValue","TableAttributeContext","CHANGE_SEARCH_QUERY","actions","basicTableViewState","createStandardAction","reducer","payload","removedStyle","tableContainer","rowCell","transform","headCell","withFilterAtBottom","DefaultHeadCellRenderer","getColumnsDataFromAttributeNode","attrNode","attributeUriToSearchUri","childNode","getAttrPathFromColumnId","split","getNestedPathByColumnId","columnId","isAttributeSearchUri","attrPath","getBasicTableColumnsData","columnData","sortable","resizable","nestedPath","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","DefaultCellValueRenderer","onChangeSearchQuery","filtersEnabled","onToggleFilters","columnsData","selectedColumns","onChangeColumns","ColumnsSettings","withTableContext","deletedUris","rowValue","cell","CellValueRenderer","isSorted","onEdit","onRemove","filters","onFilter","tableRowsData","getOvAttributeValuesByPath","getAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","renderRowCell","hoverRowIndex","setHoverRowIndex","canDelete","useConfigPermissions","hideRightContent","checkCanDeleteAttribute","isReltioCrosswalk","canEdit","checkCanEditAttribute","checkCanEdit","handleEditAttribute","handleRemoveAttribute","hoveredRowRightContent","BasicTable","autosizing","rowsData","hoverStateEnabled","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","resizeDebounceDelay","onRowHover","hoveredRowRightContentWrapper","hoveredRowRightContentContainer","AttributeEditing","hasChanges","editor","TableAttributeView","visibleColumns","showTable","allColumnsData","checkHasChanges","modifiedValues","editingValues","newAttributeUri","setNewAttributeUri","originalValues","setOriginalValues","newAttribute","createDefaultValues","attributeTypes","prev","editingValueOriginal","attributeItem","without","original","not","useEditableAttribute","preparedValues","hasConfigToCreate","visibleColumnsData","processResponse","fakeRoot","parentPaths","nextRoot","j","isRoot","rootIndex","treeContainer","ConfigContext","lineBlock","lineChildren","verticalLine","horizontalLineRight","textAlign","boxSizing","nodeContent","rowContents","borderLeft","verticalAlign","buttonWrapper","collapsedButton","expandedButton","borderRight","rowTitle","nodeContentRenderer","treeNodeRenderer","shift","ShowGraphIcon","bodyWrapper","CustomView","basicViewRef","dialogRef","showModal","setShowModal","defaultTooltip","html","visible","updatedTooltip","popup","useAPI","innerHTML","from","childNodes","appendChild","Dialog","dragHandleContainer","dragHandleVisibilityArea","dragHandle","dragIcon","WithDragHandle","WithErrorBoundary","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","secondaryText","EMPTY_STATE_VARIANTS","stubView","fullHeight","component","filterWrongLat","gt","lt","fullscreenBtn","ImageLineCaption","totalImages","photoWord","ImageAttributeViewEditableContent","requestNextPageOfAttributeValues","attributeValues","imageSize","IMAGE_SIZE","imageMargin","imageWidth","imageHeight","matchesContainer","footer","ActionButtons","match","onStartRequest","onFinishRequest","canMerge","canMark","getActionPermissionForMatch","matchRules","actionButtonProps","ActionButtonMode","onMergeFinish","MergeButton","NotMatchButton","MatchCard","ProfileMatchCard","createObjectIdForPM","matchEntityUri","DEFAULT_OPTIONS","showTransitiveMatches","showInactiveEntities","DEFAULT_SORTING","Order","ComponentStates","wrapView","withErrorBoundary","withDragHandle","WrappedStubView","WrappedProfileAttributesView","AttributesView","excludeUris","includeUris","attributesCount","pinnedAttributes","WrappedProfileSingleAttributeView","singleAttribute","setShowInactive","useSingleAttribute","WrappedProfileTableAttributeView","tableAttribute","getAttributeTypesTree","chain","flatAttributeTreeNode","uniqBy","getColumnsData","initialState","useReducer","requestFilters","mdmFilters","columnFilter","columnFilterToMdmFilter","buildMDMFilters","changePage","toggleSort","changeFilter","toggleFilters","changeColumns","useActions","useTableAttribute","WrappedProfileRelationsView","relationsState","Number","setSortOrder","setSortOption","useRelationsState","WrappedCustomView","WrappedHierarchyPathView","setTreeData","graphUri","forest","newTrees","getPathsTree","useLoadPaths","WrappedProfilePotentialMatchesView","turnOnDisableSpinner","turnOffDisableSpinner","matches","loadMatches","useMatchesLoader","onStartLoading","onFinishLoading","onFinishMatchAction","openPotentialMatchPerspective","mdmModuleUi","perspectiveId","getPotentialMatchesObjectIdsForCollaboration","getEntityUriFromMatchObject","showSeeAll","Loading","NoData","Loaded","underline","WrappedHierarchyTreeView","importedModule","default","HierarchyTreeView","WrappedRelationshipsTableView","RelationshipsTableView","WrappedEntityMapView","isFullscreen","onToggleFullscreen","mapKey","markers","setMarkers","useMarkers","loadingElement","defaultCenter","lat","lng","mapOptions","mapTypeControl","FullscreenExitIcon","FullscreenIcon","ReltioMap","defaultZoom","mapContainerClassName","WrappedImageAttributeView","entityValues","ImageAttributesLine","ViewsFactory","ViewTypes","ProfileViewTypes","getComponentBy","propName","HierarchyTree","HierarchyPaths","RelationsTable","Relations","Attributes","SingleAttribute","AttributeTable","Map","Custom","ImageAttribute","PotentialMatches","getComponent","Fallback","ViewComponent","isAutosize","Suspense","fallback","fixedSizeContainer","omittingProps","ProfileLayoutItem","layoutItemConfig","views","ResizeComponent","AutosizeComponent","ReactReduxContext","isCustomView","class","platform","CustomScriptPlatform","reltioClass","getViewTypeByClass","ProfileLayout","layout","layoutOptions","onLayoutChanged","ReltioGridLayout","LayoutItem","draggableHandle","closeIcon","snackbar","flexWrap","Notification","notification","autoCloseInterval","autoHideDuration","setAction","setShow","closeSnackbar","_e","reason","cancelAction","onConfirm","applyAction","needConfirmation","CloseIcon","Portal","Snackbar","confirmationText","confirmationDescription","Notifications","notifications","n","editingButtons","searchResults","comments","SuggestIcon","SvgIcon","CopyIcon","filterGroupByPermissions","group","isTempEntity","isWorkflowEnabled","canStartProcessInstanceSearchQuery","permission","isSuggestMode","checkMetadataPermission","PerspectiveProfileBand","profileBandConfig","profileOperation","isOperationSaving","Operation","isDisabledButtons","openCloneConfirmationDialog","setOpenCloneConfirmationDialog","onCloneDiscard","onClone","cloneAction","cloneActionProp","isRelationSuitableForEntityType","isRelationWithEntityType","either","modifiedRelationTypes","isReference","getRelationTypeUriFromAttrType","relationshipTypesToCopy","useCloneAction","OPTIONS_GROUP","ModeTypes","description","CreateIcon","VisibilityIcon","BUTTONS_GROUP","confirm","shouldShowSelect","MetadataPermissions","hasOnlyReadPermission","accessibleOptionsGroup","accessibleButtonsGroup","handleSave","ProfileBand","mr","ProfileBandHistory","ProfileBandNavigation","ModeSwitcherSelect","optionsGroup","buttonsGroup","WorkflowButton","WorkflowTasksContext","Inbox","showMoreLink","showMoreIcon","CollaborationList","getComments","pageToken","useCommentsEntitiesMap","objectId","commentId","CollaborationItem","KeyboardArrowDown","WorkflowList","tasks","task","WorkflowTaskCard","taskId","CollaborationButton","commentsMap","calcTotalCommentItems","CollaborationIcon","SidePanelEmptyState","itemWrapper","DBConnectorsList","dBConnectorSideViews","sideView","ActivePanel","getSecondTitle","RightSidePanel","isWorkflowSideViewEnabled","isCollaborationSideViewEnabled","isDBConnectorSideViewEnabled","isCollaborationEnabled","historyEvent","workflowTasksContext","collaborationContext","active","setActive","toggleActive","newId","resetActive","isHistoryTabActive","History","isHistoryEnabled","isProfilePersisted","useHistoryEnabled","historyFilter","onApplyFilter","historicUris","historyWithTotal","canLoadMore","onLoadMore","useHistory","enabledWorkflowButton","enabledCollaborationButton","collaborationTotal","elements","Workflow","headerProps","mainTitle","secondTitle","rightContent","AddWorkflowButton","Collaboration","HistoryIcon","HistoryView","contributorsUris","HistoryPanelEmptyState","HistoryHeader","DBConnector","ConnectorsIcon","visibleElements","SidePanel","SidePanelContentHeader","SideButtonsPanel","buttonsProps","onButtonClick","activeIndexId","accordionSummaryHeight","defaultBorderStyle","accordion","borderBottom","accordionExpanded","accordionSummary","accordionSummaryHeading","typography","pxToRem","fontWeightRegular","accordionSummaryExpanded","accordionSummaryContent","accordionDetails","errorWrapper","errorTitle","goToIcon","errorsAccordion","errorsAccordionDetails","warningsAccordion","warningsAccordionDetails","errorIcon","warningIcon","ErrorsPanel","panels","expandedPanelId","ErrorComponent","accordionClassName","accordionDetailsClassName","Accordion","square","AccordionSummary","expandIcon","ExpandMore","AccordionDetails","clipRule","clearError","Error","displayedMessage","ErrorType","ErrorSource","getDisplayedErrorMessage","displayedErrorPath","errorPath","AttributeValuePathItemType","getDisplayedErrorPath","highlightError","showLink","HyperlinkIcon","ProfileErrorsPanel","cachedAllErrors","cacheForAllErrors","errors1","errors2","areErrorsEqual","useCachedErrors","warnings","isCriticalError","setExpandedPanelId","panelId","isExpanded","perspectiveView","overflowX","overflowY","scrollWrapper","emptyState","profileWrapper","profileContainer","ProfilePerspectiveView","saveState","getSavedState","getSavedStateAndFix","scrollWrapperRef","debouncedSaveState","nestedRoute","savedStateKey","isLoaded","savedState","updateSavedState","useSavedStateForEntityType","setLayout","setViews","configHash","hash","isHistoryActive","getProfileObjectIdsForCollaboration","collaboration","useCollaboration","emptyCollaboration","useUsers","workflowTasks","useWorkflowTasks","workflow","useHistorySlice","historyDiff","useHistoryDiff","keywordValue","isConfigChanged","fixedViews","fixedLayout","fixNonUniqViewsIds","sidePanelViews","scrollTop","isValidateReadMode","isDTEntity","profileViews","hasProfileViews","needDispatch","useProfileValidation","handleLayoutChange","boundariesElement","popupBoundariesValue","priority","ProfilePerspectiveViewContext","UsersContext","SearchValueContext","profileBand","PopupBoundariesContext","qxSandboxApi","getSavedStatePromisified","promisifyCallback","SnackbarRenderer","showSnackbarMessage","useSnackbar","processedConfig","convertOldProfileConfig","SnackbarContext","S","SandboxAPIContext","showErrorFromStore","titleContainer","totalNumber","TagListHeader","switchToProfile","ArrowForwardIosRounded","Spacer","toolbar","TagProfileBand","Toolbar","tagsContainer","tagsView","listContainer","entitiesList","ROWS_PER_PAGE_OPTIONS","TagPerspectiveView","tag","setRowsPerPage","safeRequestTotalPromise","safeRequestEntitiesPromise","setTotal","setEntities","requestEntities","requestTotal","getDataTenantFromEntityUri","fieldName","isDT","getEntities","requestOptions","select","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","getTotalFromDataTenant","getTotals","useTagsProvider","useTag","refScrollBlock","hasPagination","ProfilesList","onChangeRowsPerPage","AddRelationButton","inactiveStyle","entityCell","RowCellRenderer","EntityProfileRenderer","ExpandedValueTooltip","EntityTypeType","getRelationTypes","rel","uniq","startsWith","emptyData","EditButtons","Edit","Delete","basicTableRef","getRelationAttributeValues","isNew","handleOnRowHover","ColumnsDataType","ConnectionType","ColumnFilterType","SortingType","onShowInactiveChange","MoreVertIcon","RelationsTableHeader","onChangeShowInactive","CHANGE_SHOW_INACTIVE","changeShowInactive","DEFAULT_COLUMNS_DATA","hideable","ActivenessAttrTypes","getColumnIdFromAttrUri","getColumnsDataFromRelationAttributes","attr","getReadableAttributesList","getUri","containsUri","parseUris","parseUri","shouldSkipDescendantUris","hasValidMetadata","nextAcc","descUri","extendsTypeURI","deriveEntityTypesFromRelations","deriveEntitiesFromRelationsMetadata","entityTypes","indexByUri","indexBy","parseRelationsConfigContent","parseEntryUris","entry","nextEntry","addArea","DEFAULT_COLUMNS_TO_SHOW","DEFAULT_SORT_FIELD","memoizedParseRelationsConfig","memoizeWith","stateProps","dispatchProps","modeProp","reduxDispatch","readOnlyMode","sortColumn","filtersClause","buildColumnsFilter","getRowsPerPageOptions","defaultRowsPerPage","subtract","handleRowsPerPageChange","handlePageChange","changeRowsPerPage","openedRelations","canEditRelations","canRemoveRelations"],"sourceRoot":""}