@reltio/remotes 1.4.1395 → 1.4.1397

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/1219.js +1 -1
  2. package/1219.js.map +1 -1
  3. package/1268.js +1 -1
  4. package/1268.js.map +1 -1
  5. package/1375.js +1 -1
  6. package/1375.js.map +1 -1
  7. package/1689.js +1 -1
  8. package/1689.js.map +1 -1
  9. package/2114.js +1 -1
  10. package/2114.js.map +1 -1
  11. package/2890.js +1 -1
  12. package/2890.js.map +1 -1
  13. package/3149.js +1 -1
  14. package/3149.js.map +1 -1
  15. package/3273.js +1 -1
  16. package/3273.js.map +1 -1
  17. package/3540.js +1 -1
  18. package/3540.js.map +1 -1
  19. package/3602.js +1 -1
  20. package/3602.js.map +1 -1
  21. package/4015.js +1 -1
  22. package/4015.js.map +1 -1
  23. package/447.js +1 -1
  24. package/447.js.map +1 -1
  25. package/461.js +1 -1
  26. package/461.js.map +1 -1
  27. package/4843.js +1 -1
  28. package/4881.js +1 -1
  29. package/4881.js.map +1 -1
  30. package/4889.js +1 -1
  31. package/4889.js.map +1 -1
  32. package/5400.js +1 -1
  33. package/5400.js.map +1 -1
  34. package/5601.js +1 -1
  35. package/5601.js.map +1 -1
  36. package/5709.js +1 -1
  37. package/5709.js.map +1 -1
  38. package/5720.js +1 -1
  39. package/5720.js.map +1 -1
  40. package/5937.js +1 -1
  41. package/5937.js.map +1 -1
  42. package/6103.js +1 -1
  43. package/6103.js.map +1 -1
  44. package/6210.js +2 -0
  45. package/6210.js.map +1 -0
  46. package/6312.js +1 -1
  47. package/6312.js.map +1 -1
  48. package/6617.js +1 -1
  49. package/6617.js.map +1 -1
  50. package/6669.js +1 -1
  51. package/6669.js.map +1 -1
  52. package/6710.js +1 -1
  53. package/6710.js.map +1 -1
  54. package/6913.js +1 -1
  55. package/6913.js.map +1 -1
  56. package/7937.js +1 -1
  57. package/7937.js.map +1 -1
  58. package/8051.js +1 -1
  59. package/8051.js.map +1 -1
  60. package/810.js +2 -0
  61. package/810.js.map +1 -0
  62. package/8183.js +1 -1
  63. package/8183.js.map +1 -1
  64. package/8443.js +1 -1
  65. package/8443.js.map +1 -1
  66. package/8684.js +1 -1
  67. package/8684.js.map +1 -1
  68. package/8847.js +1 -1
  69. package/8847.js.map +1 -1
  70. package/9043.js +1 -1
  71. package/9043.js.map +1 -1
  72. package/9630.js +1 -1
  73. package/9630.js.map +1 -1
  74. package/99.js +1 -1
  75. package/99.js.map +1 -1
  76. package/package.json +1 -1
  77. package/remoteEntry.js +1 -1
  78. package/remoteEntry.js.map +1 -1
  79. package/4678.js +0 -2
  80. package/4678.js.map +0 -1
  81. package/9211.js +0 -2
  82. package/9211.js.map +0 -1
package/9211.js.map DELETED
@@ -1 +0,0 @@
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/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/ReactSelect/CreatableSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/Option.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/index.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/MultiSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/index.js","webpack://@reltio/remotes/../components/src/components/Spacer/Spacer.js","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/../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({\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 CreatableSelect from 'react-select/creatable';\nimport withMuiSkin from './withMuiSkin';\n\nexport default withMuiSkin(CreatableSelect);\n","import {MenuItem as MenuItem} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport ExpandedValueTooltip from '../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nexport default function Option(props) {\n const {\n innerProps,\n innerRef,\n children,\n isFocused,\n isSelected,\n selectProps: {classes},\n label\n } = props;\n\n return (\n <MenuItem\n className={classNames(classes.option, {[classes['option--selected']]: isSelected})}\n ref={innerRef}\n selected={isFocused}\n component=\"div\"\n {...innerProps}\n >\n <Checkbox color=\"primary\" checked={isSelected} />\n <ExpandedValueTooltip value={label}>\n <div className={classes['option--item']}>{children}</div>\n </ExpandedValueTooltip>\n </MenuItem>\n );\n}\n\nOption.propTypes = {\n children: PropTypes.node,\n innerProps: PropTypes.shape({\n id: PropTypes.string.isRequired,\n key: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onMouseMove: PropTypes.func.isRequired,\n onMouseOver: PropTypes.func.isRequired,\n tabIndex: PropTypes.number.isRequired\n }).isRequired,\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n isFocused: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n label: PropTypes.string,\n selectProps: PropTypes.shape({\n classes: PropTypes.shape({\n option: PropTypes.string\n })\n })\n};\n","import Option from './Option';\n\nconst components = {\n Option\n};\n\nexport default components;\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {omit} from 'ramda';\nimport CreatableSelect from '../CreatableSelect';\nimport Select from '../Select';\nimport AsyncSelect from '../AsyncSelect';\nimport multiSelectComponents from './components';\nimport {makeStyles} from '@material-ui/core/styles';\nimport {mergeClasses} from '../../../core/utils';\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n top: 6,\n left: 16\n },\n placeholder: (props) => ({\n display: !props.placeholder || props.label ? 'none' : undefined\n }),\n 'option--selected': {\n fontWeight: 400\n },\n clearIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n },\n dropdownIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n }\n}));\n\nlet id = 0;\nconst getInputId = () => `custom-select-${id++}`;\n\nfunction MultiSelect(props) {\n const {\n label,\n creatable,\n getOptions,\n loadingIndicator,\n components: componentsProp,\n classes: classesProp,\n styles: stylesProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n menuPlacement = 'auto',\n ...reactSelectProps\n } = props;\n\n const SelectComponent = creatable ? CreatableSelect : getOptions ? AsyncSelect : Select;\n\n const [inputValue, setInputValue] = useState('');\n const multiSelectClasses = useStyles(omit(['classes'], props));\n const inputId = getInputId();\n\n const components = {\n ...multiSelectComponents,\n ...componentsProp\n };\n\n const classes = mergeClasses(multiSelectClasses, classesProp);\n\n function handleInputChange(value, {action}) {\n onInputChangeProp(value, {action});\n if (action !== 'set-value') {\n setInputValue(value);\n }\n }\n\n function handleChange(value, actionMeta) {\n onChangeProp(value, actionMeta);\n if (actionMeta.action === 'create-option') {\n setInputValue('');\n onInputChangeProp('', {action: 'input-change'});\n }\n }\n\n const styles = {\n indicatorSeparator: (base) => ({\n ...base,\n margin: '10px 0'\n }),\n loadingIndicator: (base) => ({\n ...base,\n display: loadingIndicator ? base.display : 'none'\n }),\n loadingMessage: (base) => ({\n ...base,\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif'\n }),\n ...stylesProp\n };\n\n const labelProps = label\n ? {\n inputId,\n TextFieldProps: {\n label,\n InputLabelProps: {\n htmlFor: inputId,\n shrink: props.value && props.value.length ? true : undefined,\n className: classes.label\n },\n ...props.TextFieldProps\n }\n }\n : {};\n\n return (\n <SelectComponent\n isMulti\n inputId={inputId}\n inputValue={inputValue}\n onChange={handleChange}\n onInputChange={handleInputChange}\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n classes={classes}\n components={components}\n styles={styles}\n menuPlacement={menuPlacement}\n loadOptions={getOptions}\n {...labelProps}\n {...reactSelectProps}\n />\n );\n}\n\nMultiSelect.defaultProps = {\n creatable: false,\n cacheOptions: true,\n components: {},\n classes: {},\n placeholder: '',\n loadingIndicator: false,\n onInputChange: () => {},\n onChange: () => {}\n};\n\nMultiSelect.propTypes = {\n /**\n * Async creatable multi select with optional placeholder, shrink-label, non-closing menu and options with checkboxes.\n * Based on react-select/creatable and react-select/async.\n * See react-select docs: https://react-select.com\n *\n * Below are listed only props used in the MultiSelect component. Check https://react-select.com/props first.\n * */\n\n /** Ability to create values. React-select/async-creatable is used internally */\n creatable: PropTypes.bool,\n /** True for enabling cache. Recommended. */\n cacheOptions: PropTypes.bool,\n defaultOptions: PropTypes.bool,\n /** Array of selected options. */\n value: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n /** Way to receive updated values */\n onChange: PropTypes.func,\n /** Way to receive updated inputValue */\n onInputChange: PropTypes.func,\n /** Input placeholder. Will not be shown if the label prop is specified */\n placeholder: PropTypes.string,\n /** Floating label from @material-ui/core/TextField component */\n label: PropTypes.string,\n /** Enable to show default react-select's indicator */\n loadingIndicator: PropTypes.bool,\n /** You could redefine any of these components */\n components: PropTypes.shape({\n ClearIndicator: PropTypes.func,\n Control: PropTypes.func,\n DropdownIndicator: PropTypes.func,\n DownChevron: PropTypes.func,\n CrossIcon: PropTypes.func,\n Group: PropTypes.func,\n GroupHeading: PropTypes.func,\n IndicatorsContainer: PropTypes.func,\n IndicatorSeparator: PropTypes.func,\n Input: PropTypes.func,\n LoadingIndicator: PropTypes.func,\n Menu: PropTypes.func,\n MenuList: PropTypes.func,\n MenuPortal: PropTypes.func,\n LoadingMessage: PropTypes.func,\n NoOptionsMessage: PropTypes.func,\n MultiValue: PropTypes.func,\n MultiValueContainer: PropTypes.func,\n MultiValueLabel: PropTypes.func,\n MultiValueRemove: PropTypes.func,\n Option: PropTypes.func,\n Placeholder: PropTypes.func,\n SelectContainer: PropTypes.func,\n SingleValue: PropTypes.func,\n ValueContainer: PropTypes.func\n }),\n /** Classes are passed to mui skin components. Provided classes will be merged with existing ones. */\n classes: PropTypes.shape({\n control: PropTypes.string,\n valueContainer: PropTypes.string,\n multiValue: PropTypes.string,\n noOptionsMessage: PropTypes.string,\n singleValue: PropTypes.string,\n placeholder: PropTypes.string,\n menu: PropTypes.string,\n clearIndicator: PropTypes.string,\n dropdownIndicator: PropTypes.string,\n option: PropTypes.string,\n 'option--selected': PropTypes.string,\n label: PropTypes.string\n }),\n /**\n * React-select's way to customise style. Could be used to style default react-select components.\n * In other cases better to use classes and components props\n * */\n styles: PropTypes.shape({\n clearIndicator: PropTypes.func,\n container: PropTypes.func,\n control: PropTypes.func,\n dropdownIndicator: PropTypes.func,\n group: PropTypes.func,\n groupHeading: PropTypes.func,\n indicatorsContainer: PropTypes.func,\n indicatorSeparator: PropTypes.func,\n input: PropTypes.func,\n loadingIndicator: PropTypes.func,\n loadingMessage: PropTypes.func,\n menu: PropTypes.func,\n menuList: PropTypes.func,\n menuPortal: PropTypes.func,\n multiValue: PropTypes.func,\n multiValueLabel: PropTypes.func,\n multiValueRemove: PropTypes.func,\n noOptionsMessage: PropTypes.func,\n option: PropTypes.func,\n placeholder: PropTypes.func,\n singleValue: PropTypes.func,\n valueContainer: PropTypes.func\n }),\n /** Props from https://material-ui.com/api/text-field/ */\n TextFieldProps: PropTypes.object /* eslint-disable-line react/forbid-prop-types */,\n getOptions: PropTypes.func,\n menuPlacement: PropTypes.string,\n menuPortalTarget: PropTypes.object,\n getOptionValue: PropTypes.func,\n isSearchable: PropTypes.bool,\n inputRef: PropTypes.shape({current: PropTypes.object})\n};\n\nexport default MultiSelect;\n","import MultiSelect from './MultiSelect';\n\nexport default MultiSelect;\n","import React from 'react';\n\nconst Spacer = () => <div style={{flex: 1}} />;\n\nexport default Spacer;\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} 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, UserInfo, 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<UserInfo[]>>();\n const getOptions = (inputValue) => {\n if (!cachedRequest.current) {\n cachedRequest.current = getAllUsersForTenant({tenant, servicesPath});\n }\n return cachedRequest.current.then(pipe(pluck('username'), filterUsers(inputValue), prepareValues));\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","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 isTempUri\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 && !isTempUri(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 {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\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, 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 mode = useSelector(mdm.selectors.getMode);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode,\n onRemoveRelation,\n onEditRelation,\n metadata,\n connection\n });\n\n const handleRemoveRelation = useCallback(\n () => onRemoveRelation(connection.relation.relationUri),\n [onRemoveRelation, 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","display","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","children","withMuiSkin","CreatableSelect","innerRef","selectProps","MenuItem","classNames","ref","selected","component","Checkbox","color","ExpandedValueTooltip","propTypes","PropTypes","id","key","onClick","onMouseMove","onMouseOver","tabIndex","isRequired","current","theme","top","left","undefined","fontWeight","clearIndicator","padding","spacing","margin","dropdownIndicator","creatable","getOptions","loadingIndicator","componentsProp","classesProp","stylesProp","onChangeProp","onInputChange","onInputChangeProp","reactSelectProps","SelectComponent","AsyncSelect","Select","inputValue","setInputValue","useState","multiSelectClasses","omit","inputId","multiSelectComponents","mergeClasses","indicatorSeparator","base","loadingMessage","fontFamily","labelProps","InputLabelProps","htmlFor","shrink","length","isMulti","actionMeta","action","closeMenuOnSelect","hideSelectedOptions","loadOptions","defaultProps","cacheOptions","defaultOptions","ClearIndicator","Control","DownChevron","CrossIcon","Group","GroupHeading","IndicatorsContainer","IndicatorSeparator","Input","LoadingIndicator","Menu","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","MultiValueContainer","MultiValueLabel","MultiValueRemove","Placeholder","SelectContainer","SingleValue","ValueContainer","control","valueContainer","multiValue","singleValue","menu","container","group","groupHeading","indicatorsContainer","menuList","multiValueLabel","multiValueRemove","getOptionValue","isSearchable","inputRef","style","selectedUsers","valueToOption","prepareValues","values","tenant","servicesPath","cachedRequest","useRef","pluck","getAllUsersForTenant","then","users","filter","username","utils","filterUsers","ActivityTypes","getItemDataType","path","getActivityType","activity","items","firstItem","removeIgnoredItems","isImplementedItem","isValidActivityType","includes","filteredItems","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","transition","inputRoot","dateOptionLabel","paper","localeFormat","moment","longDateFormat","open","setOpen","handleToggle","onCancel","fullWidth","DataTypes","endAdornment","menuIsOpen","readOnly","autoFocus","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","DateRangePicker","onApply","DateRangeTypes","RequestStates","SingleAttributeContext","displayName","triggerButton","popupContent","paddingTop","maxWidth","checkboxControlRoot","marginTop","marginLeft","checkboxControlLabel","checkboxControlCheckbox","buttonRef","isOpen","setIsOpen","showInactive","toggleShowInactive","useContext","togglePopup","Button","Popover","FormControlLabel","e","target","totalCaption","lineHeight","letterSpacing","flexShrink","ovIcon","SingleAttributeHeader","caption","totalVisibleValues","showInactiveValuesMenu","searchQuery","setSearchQuery","setPage","totalNonVisibleValues","nonVisibleValues","FacetViewHeader","HideOnShrink","widthToHide","VerticalDivider","OvIcon","nonOvTotal","nonOvValues","ExpandableSearchInput","query","moreButton","marginBottom","buttonLabel","icon","divider","ovFalse","inactive","noData","palette","text","secondary","getAttributeNameFromAttributeUri","getLastUriPart","search","some","String","getPagedLocalEntity","async","entity","defaultMaxValues","Infinity","offset","findAttributeValuesByTypeUri","ovValues","isOv","getAttributeSource","slice","paging","totalOvValues","totalValues","emptyArray","SingleAttributeEditableContent","parentUri","noDataText","required","cardinality","name","dispatch","useDispatch","viewId","ViewIdContext","modifiedEntity","errors","errorMessage","getAttributePagerActiveTypeErrorMessage","mode","attributeSource","entityValuesUris","pathOr","prop","modifiedEntityValues","modifiedEntityValuesUris","showEmptyEditors","isTempUri","emptyEditorValue","createNewAttribute","isModifiedEntityValuesEmpty","isEmptyValue","showEmpty","newValues","onAddAttributes","params","profile","param","onChangeAttribute","onDeleteAttribute","onDeactivateError","onAdd","attribute","isComplexAttribute","canCreate","checkCanCreateAttribute","commonProps","crosswalks","showNonOv","isEmptyAttributeList","CardinalityMessage","ErrorMessage","message","Add","idx","attributeValue","lazy","ownError","getAttributeOwnError","Divider","originalValue","modifiedEntityValue","find","propEq","deleted","edited","value1","value2","cleanser","is","over","lensPath","cleanAttributesWith","valueTransformer","unless","deleteEmptyComplex","identity","equals","areValuesEqual","cond","always","SingleAttributeReadableContent","flexDirection","content","position","overflow","flexGrow","pagination","SingleAttributeView","config","max","page","isLoading","hasPaging","entityUri","mdm","isViewMode","isEditableMode","pivotingAttributes","hasValues","PivotingAttributeContext","BasicView","Box","LinearLoadIndicator","renderContent","BasicTablePagination","count","rowsPerPage","rowsPerPageOptions","onChangePage","useSingleAttributeLoader","canShowHistoryDiff","attributeUri","setValues","setPaging","setIsLoading","safePromise","useSafePromise","attributeValuesRef","apiPath","entitySelector","isHistoryModeEnabled","diff","attributeTypeSource","findAttributeValues","globalFilter","loadAttributes","isReadableAttribute","isFirstLevelAttributeUri","rest","request","isDataTenantEntity","getPagedEntity","response","loadedValue","finally","useEffect","useDidUpdateEffect","partitionByOv","partition","totalProp","has","RelationsViewStateContext","button","sortControls","alignItems","sortSelectorRoot","sortSelectorMenuItem","sortOrderButton","FilterButton","sortOrder","toggleSortOrder","sortOption","changeSortOption","sortOptions","hasSortOptions","isAsc","DropDownEditor","menuItem","MenuProps","SmallIconButton","tooltipTitle","ArrowUpwardIcon","ArrowDownwardIcon","size","header","ImportDTContext","MAX","Math","pow","cursor","userSelect","badge","badgePosition","right","MultipleImportIcon","Badge","anchorOriginTopRightRectangle","badgeContent","CloudDownload","ImportFromDT","tenants","selectedTenant","onConfirmImport","onCancelConfirmation","onImportClick","dataTenants","reloadRelations","setTenants","setSelectedTenant","dtssPath","customerTenant","maxDtssImport","checkHasNonImportedConnections","importFromDT","Promise","all","hasNonImportedRelations","dataTenant","hasNonImportedConnections","modifiedTenants","importDTConnections","catch","ui","getRequestErrorMessage","useImportFromDTLoader","oneTenant","labelOnButton","indexOf","CloudDownloadIcon","DropDownMenuButton","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","menuItems","ConfirmationDialog","discardCaption","saveCaption","onDiscard","onSave","total","changeSearchQuery","tooltip","tooltipContent","secondaryLabel","progress","tooltipProps","setSecondaryLabel","onOpen","getDataTenantEntitySecondaryLabel","getEntitySecondaryLabel","CircularProgress","colorPrimary","Tooltip","disableFocusListener","useRelationInfo","connection","relation","getEntityType","entityLabel","getLabel","preparedUri","getEntityUriForLink","relationLabel","getRelationTypeLabelFromMetadata","relationType","SuggestedButtons","acceptRelation","ignoreRelation","alignSelf","row","minHeight","rowInactive","background","inactiveBackground","entityAvatar","entityLabelContainer","textDecoration","primary","main","editButtonsContent","editButtons","removed","editedLabel","fontStyle","EditableRelationItem","memo","showControls","onRemoveRelation","onEditRelation","onAcceptRelation","onIgnoreRelation","renderRelationArrowButton","checkRemoved","checkEdited","ignored","checkIgnored","isActive","isActiveObject","canRemove","canUpdate","Mode","isRemoved","relationTypeMetadata","getRelationType","checkMetadataForDelete","checkMetadataForUpdate","checkRelationPermission","handleRemoveRelation","relationUri","handleEditRelation","handleAcceptRelation","handleIgnoreRelation","suggested","EditIcon","DeleteIcon","suggustedButtonsContent","disabled","captionText","EntityTypeIcon","EntityUriLink","getFirstRelationTypeObject","inRelations","outRelations","prepareRelation","direction","relations","wrapInArrayIfNeeded","Directions","arrowIcon","RelationArrowButton","showSecondLevel","parentEntityUri","contentSecondLevel","checkNew","ArrowDropDown","ArrowRight","secondLevelContent","SecondLevelWrapper","connections","toggleShowSecondLevel","loadRelations","loading","relationActivityFilter","setShowSecondLevel","setLoading","activityFilter","requestConfig","returnObjects","returnDates","activeness","ActivityFilter","getRelationsForEntity","show","useSecondLevelConnections","entitiesMap","getEntitiesMapForConnections","EntitiesMapContext","RelationsContent","relationToAdd","relationsToEdit","checkIfCanAddRelations","onAddRelation","newConnection","createNewConnectionWithDefaultRelationType","connectionToRemove","defaultRelationTypeObject","connectionWithDefaultRelationType","evolve","object","relationDirection","newConnections","currentConnections","canAddRelations","isEmptyRelationList","getRelationEditableContent","openedRelation","allowOnlyCreateNew","itemKey","RelationEditor","shouldShowAddRelationButton","shouldShowRelationEditorToAdd","attributesList","RelationAttributes","currentEntityUri","firstLevelRelationAttrTypes","getRelationAttributesList","attributeListEntity","getActivenessAttributes","showAttributesList","getAttributesListForReadMode","objectIds","getAttributeValuesUris","getCommentsCount","CollaborationContext","isEmpty","additionalRelatedObjectUris","createRelatedObjectUris","CollaborationObjectTypes","RelatedObjectUrisContext","attrTypes","ShowDetailsButton","onToggle","tooltipPlacement","InfoIconSelected","InfoIcon","wordBreak","showDetails","suggestedWrapper","commentsContainer","additionalButtonsWrapper","labelWrapper","RelationItem","isSuggested","setShowDetails","relatedObjectUris","COMMENTS_CONTAINER_VISIBILITY_AREA","CommentsContainer","getConnectionRelationUriForLink","objectType","allowOnlyOneComment","getCountOfLikes","ratings","rating","getCountOfDislikes","calcWidthOfLikesScale","calcWidthOfDislikesScale","wrapper","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","getEntity","getMode","RelationsView","getConnectionsWithDraftsByViewId","getTotalByViewId","sorting","order","field","queryClause","Maybe","filterValueToQueryStringWithQuotes","queryString","orSome","FilterBuilder","addClause","build","buildRelationsFilter","reload","useRelationsLoader","importDTContextValue","pick","Provider","TableAttributeContext","CHANGE_SEARCH_QUERY","actions","basicTableViewState","createStandardAction","reducer","payload","removedStyle","tableContainer","rowCell","transform","headCell","pointerEvents","withFilterAtBottom","DefaultHeadCellRenderer","getColumnsDataFromAttributeNode","attrNode","parents","attributeUriToSearchUri","childNode","getAttrPathFromColumnId","split","getNestedPathByColumnId","columnId","isAttributeSearchUri","attrPath","getBasicTableColumnsData","columnData","sortable","resizable","nestedPath","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","DefaultCellValueRenderer","onChangeSearchQuery","filtersEnabled","onToggleFilters","columnsData","selectedColumns","onChangeColumns","enabled","ColumnsSettings","withTableContext","deletedUris","rowValue","Boolean","cell","CellValueRenderer","isSorted","otherProps","index","onEdit","onRemove","onSort","filters","onFilter","tableRowsData","assoc","getOvAttributeValuesByPath","getAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","checkIsEditableMode","renderRowCell","hoverRowIndex","setHoverRowIndex","canDelete","useConfigPermissions","hideRightContent","checkCanDeleteAttribute","isReltioCrosswalk","canEdit","checkCanEditAttribute","checkCanEdit","handleEditAttribute","handleRemoveAttribute","hoveredRowRightContent","context","BasicTable","autosizing","maxHeight","rowsData","hoverStateEnabled","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","resizeDebounceDelay","onRowHover","hoveredRowRightContentWrapper","hoveredRowRightContentContainer","actionButtons","AttributeEditing","hasChanges","expanded","addButton","editor","TableAttributeView","visibleColumns","showTable","allColumnsData","checkHasChanges","onStartEditing","modifiedValues","editingValues","newAttributeUri","setNewAttributeUri","originalValues","setOriginalValues","newAttribute","createDefaultValues","attributeTypes","prev","editingValueOriginal","attributeItem","without","original","both","not","useEditableAttribute","preparedValues","hasConfigToCreate","visibleColumnsData","nodeCounter","generateId","processResponse","fakeRoot","nodeId","parentPaths","i","nextRoot","j","nextParent","entities","isRoot","node","rootIndex","link","avatar","treeContainer","tree","buttonsContainer","ConfigContext","onImageLoadFail","src","DEFAULT_ICON","Node","absoluteImagePath","uiPath","entityLink","getEntityLink","onTitleClick","entityTypeGraphIcon","getPropWithInheritance","getAbsoluteImageUrl","Avatar","onError","Link","to","getNodeKey","lineBlock","lineChildren","verticalLine","horizontalLineRight","textAlign","boxSizing","whiteSpace","nodeContent","bottom","rowContents","borderLeft","verticalAlign","buttonWrapper","collapsedButton","expandedButton","borderRight","rowTitle","nodeContentRenderer","scaffoldBlockPxWidth","toggleChildrenVisibility","treeIndex","nodeTitle","showToggleChildrenButton","treeNodeRenderer","lowerSiblingCounts","scaffoldBlockCount","scaffold","forEach","lowerSiblingCount","shift","scaffoldWidth","nodeStyle","rowHeight","slideRegionSize","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","viewBox","version","xmlns","stroke","strokeWidth","fill","fillRule","fillOpacity","d","onGraphOpen","ShowGraphIcon","bodyWrapper","CustomView","basicViewRef","dialogRef","showModal","setShowModal","defaultTooltip","html","visible","updatedTooltip","popup","useAPI","innerHTML","Array","from","childNodes","child","appendChild","Dialog","dragHandleContainer","dragHandleVisibilityArea","visibility","dragHandle","dragIcon","Component","WithDragHandle","DragIndicator","WithErrorBoundary","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","secondaryText","EMPTY_STATE_VARIANTS","stubView","fullHeight","boxShadow","borderRadius","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","treeData","setTreeData","graphUri","forest","newTrees","updateTreesWithNewEntity","updatedTime","getPathsTree","warn","useLoadPaths","graph","openGraph","graphType","generateNodeProps","rowInfo","ReactSortableTree","isVirtualized","canDrag","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","resolve","useMarkers","loadingElement","defaultCenter","lat","lng","mapOptions","mapTypeControl","FullscreenExitIcon","FullscreenIcon","ReltioMap","defaultZoom","mapContainerClassName","WrappedImageAttributeView","entityValues","ImageAttributesLine","ViewsFactory","ViewTypes","ProfileViewTypes","getComponentBy","propName","store","HierarchyTree","HierarchyPaths","RelationsTable","Relations","Attributes","SingleAttribute","AttributeTable","Map","Custom","ImageAttribute","PotentialMatches","getComponent","Fallback","ViewComponent","isAutosize","Suspense","fallback","basicView","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","xmlnsXlink","xlinkHref","mask","editingButtons","searchResults","comments","SuggestIcon","SvgIcon","CopyIcon","filterGroupByPermissions","isTempEntity","isWorkflowEnabled","canStartProcessInstanceSearchQuery","permission","isSuggestMode","checkMetadataPermission","PerspectiveProfileBand","profileBandConfig","profileOperation","entityTypeUri","isOperationSaving","Operation","isDisabledButtons","openCloneConfirmationDialog","setOpenCloneConfirmationDialog","onCloneDiscard","onClone","cloneAction","cloneActionProp","relationTypes","isRelationSuitableForEntityType","isRelationWithEntityType","when","complement","either","modifiedRelationTypes","isReference","getRelationTypeUriFromAttrType","T","relationshipTypesToCopy","useCloneAction","OPTIONS_GROUP","ModeTypes","description","CreateIcon","VisibilityIcon","BUTTONS_GROUP","window","confirm","shouldShowSelect","MetadataPermissions","hasOnlyReadPermission","accessibleOptionsGroup","accessibleButtonsGroup","handleChange","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","borderColor","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","ScrollToErrorContext","showLink","HyperlinkIcon","ProfileErrorsPanel","cachedAllErrors","allErrors","cacheForAllErrors","errors1","errors2","areErrorsEqual","useCachedErrors","warnings","isCriticalError","setExpandedPanelId","number","panelId","event","isExpanded","perspectiveView","overflowX","overflowY","scrollWrapper","emptyState","profileWrapper","profileContainer","ProfilePerspectiveView","saveState","getSavedState","getSavedStateAndFix","scrollWrapperRef","debouncedSaveState","debounce","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","validate","needDispatch","useProfileValidation","handleLayoutChange","boundariesElement","popupBoundariesValue","element","priority","ProfilePerspectiveViewContext","UsersContext","SearchValueContext","profileBand","PopupBoundariesContext","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","onResize","qxSandboxApi","getSavedStatePromisified","promisifyCallback","SnackbarRenderer","showSnackbarMessage","useSnackbar","processedConfig","convertOldProfileConfig","SnackbarContext","S","SandboxAPIContext","StylesProvider","MuiPickersUtilsProvider","MomentUtils","handleHeight","floor","ErrorPopup","showErrorFromStore","titleContainer","textOverflow","totalNumber","TagListHeader","switchToProfile","ArrowForwardIosRounded","Spacer","toolbar","TagProfileBand","Toolbar","tagsContainer","tagsView","listContainer","entitiesList","ROWS_PER_PAGE_OPTIONS","TagPerspectiveView","tag","setRowsPerPage","globalSearchRequestOptions","safeRequestTotalPromise","safeRequestEntitiesPromise","setTotal","setEntities","requestEntities","requestTotal","getDataTenantFromEntityUri","fieldName","isDT","getEntities","requestOptions","select","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","getTotalFromDataTenant","getTotals","json","useTagsProvider","useTag","refScrollBlock","hasPagination","ProfilesList","onChangeRowsPerPage","AddRelationButton","inactiveStyle","entityCell","RowCellRenderer","EntityProfileRenderer","EntityTypeType","getRelationTypes","rel","uniq","startsWith","emptyData","EditButtons","IconButton","Edit","Delete","basicTableRef","getRelationAttributeValues","isNew","handleOnRowHover","rowIndex","ColumnsDataType","ConnectionType","MetadataType","ColumnFilterType","SortingType","onShowInactiveChange","MoreVertIcon","RelationsTableHeader","onChangeShowInactive","CHANGE_SHOW_INACTIVE","changeShowInactive","DEFAULT_COLUMNS_DATA","hideable","ActivenessAttrTypes","getColumnIdFromAttrUri","getColumnsDataFromRelationAttributes","attr","getReadableAttributesList","getUri","containsUri","parseUris","curry","parseUri","shouldSkipDescendantUris","hasValidMetadata","nextAcc","keys","descUri","extendsTypeURI","deriveEntityTypesFromRelations","deriveEntitiesFromRelationsMetadata","relationTypeUri","entityTypes","indexByUri","indexBy","parseRelationsConfigContent","parseEntryUris","entry","nextEntry","addArea","DEFAULT_COLUMNS_TO_SHOW","DEFAULT_SORT_FIELD","memoizedParseRelationsConfig","memoizeWith","connect","ownProps","stateProps","dispatchProps","modeProp","reduxDispatch","readOnlyMode","sortColumn","filtersClause","buildColumnsFilter","getRowsPerPageOptions","defaultRowsPerPage","sort","subtract","handleRowsPerPageChange","handlePageChange","changeRowsPerPage","openedRelations","canEditRelations","canRemoveRelations"],"sourceRoot":""}