@reltio/remotes 1.4.1409 → 1.4.1410

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 (76) hide show
  1. package/1268.js +1 -1
  2. package/1268.js.map +1 -1
  3. package/1375.js +1 -1
  4. package/2114.js +1 -1
  5. package/2491.js +2 -0
  6. package/2491.js.map +1 -0
  7. package/2890.js +1 -1
  8. package/3273.js +1 -1
  9. package/3540.js +1 -1
  10. package/3575.js +2 -0
  11. package/3575.js.map +1 -0
  12. package/4015.js +1 -1
  13. package/4407.js +1 -1
  14. package/447.js +1 -1
  15. package/4571.css +635 -0
  16. package/4571.css.map +1 -0
  17. package/4571.js +2 -0
  18. package/4571.js.map +1 -0
  19. package/461.js +1 -1
  20. package/4843.js +1 -1
  21. package/4881.js +1 -1
  22. package/4889.js +1 -1
  23. package/5400.js +1 -1
  24. package/5706.js +2 -0
  25. package/5706.js.map +1 -0
  26. package/5709.js +1 -1
  27. package/5720.js +1 -1
  28. package/5937.js +1 -1
  29. package/5937.js.map +1 -1
  30. package/6103.js +1 -1
  31. package/6119.js +2 -0
  32. package/6119.js.map +1 -0
  33. package/6138.js +2 -0
  34. package/6138.js.map +1 -0
  35. package/6233.js +2 -0
  36. package/6233.js.map +1 -0
  37. package/6312.js +1 -1
  38. package/6617.js +1 -1
  39. package/6669.js +1 -1
  40. package/8051.js +1 -1
  41. package/8183.js +1 -1
  42. package/8225.js +2 -0
  43. package/8225.js.map +1 -0
  44. package/84.js +1 -1
  45. package/84.js.map +1 -1
  46. package/8443.js +1 -1
  47. package/8448.js +2 -0
  48. package/8448.js.map +1 -0
  49. package/8684.js +1 -1
  50. package/8684.js.map +1 -1
  51. package/8847.js +1 -1
  52. package/9043.js +1 -1
  53. package/9258.js +2 -0
  54. package/9258.js.map +1 -0
  55. package/9630.js +1 -1
  56. package/package.json +1 -1
  57. package/remoteEntry.js +1 -1
  58. package/remoteEntry.js.map +1 -1
  59. package/1219.js +0 -2
  60. package/1219.js.map +0 -1
  61. package/3149.js +0 -2
  62. package/3149.js.map +0 -1
  63. package/3602.js +0 -2
  64. package/3602.js.map +0 -1
  65. package/6495.js +0 -2
  66. package/6495.js.map +0 -1
  67. package/6710.js +0 -2
  68. package/6710.js.map +0 -1
  69. package/6913.js +0 -2
  70. package/6913.js.map +0 -1
  71. package/7937.js +0 -2
  72. package/7937.js.map +0 -1
  73. package/8420.js +0 -2
  74. package/8420.js.map +0 -1
  75. package/99.js +0 -2
  76. package/99.js.map +0 -1
package/8420.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"8420.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/cell-renderers/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/BlobRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/DefaultCellValueRenderer.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/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/styles.ts","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.ts","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\nconst DEFAULT_ROWS_PER_PAGE = 15;\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const SingleAttributeView = ({config, className}: Props) => {\n const {caption, max = DEFAULT_ROWS_PER_PAGE, showInactiveValuesMenu} = config;\n\n const styles = useStyles();\n\n const {values, totalVisibleValues, page, setPage, isLoading, hasPaging, attributeType, showInactive} =\n useContext(SingleAttributeContext);\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 = (config: SingleAttributeViewConfig, params: Params) => {\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 entity = useSelector(mdm.selectors.getEntityWithDiff);\n\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';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nconst BLOB_HEIGHT = 100;\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles(() => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n blobWrapper: {\n position: 'relative',\n overflowY: 'auto',\n overflowX: 'hidden',\n whiteSpace: 'pre',\n maxHeight: `${BLOB_HEIGHT}px`,\n boxSizing: 'border-box',\n padding: '15px 25px 0 25px'\n },\n defaultWrapper: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n padding: '15px 25px 0 25px'\n },\n updateAttribute: {\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n padding: '0 4px',\n marginLeft: '-4px',\n textDecoration: 'line-through',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\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 React from 'react';\nimport {stopPropagation} from '@reltio/components';\nimport {PrimitiveValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: PrimitiveValue;\n historyClassName?: string;\n};\n\nconst BlobRenderer = ({value, historyClassName}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.blobWrapper} onScroll={stopPropagation}>\n <span className={styles[historyClassName]}>{value}</span>\n </div>\n );\n};\n\nexport default BlobRenderer;\n","import React, {useContext} from 'react';\nimport {pipe} from 'ramda';\nimport {DataTypes, getHistoryAppearanceByUri, getHistoryAttributeClassName, PrimitiveValue} from '@reltio/mdm-sdk';\nimport {DataTypeValue, ExpandedValueTooltip, HistoryDiffContext} from '@reltio/components';\nimport BlobRenderer from './BlobRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n value: PrimitiveValue;\n uri: string;\n };\n columnData: {\n dataTypeDefinition: {\n type: DataTypes;\n };\n };\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const styles = useStyles();\n\n const {value: simpleValue, uri} = value;\n const {appearance} = useContext(HistoryDiffContext);\n const historyClassName = pipe(getHistoryAppearanceByUri, getHistoryAttributeClassName)(uri, appearance);\n\n switch (dataTypeDefinition.type) {\n case DataTypes.TYPE_BLOB:\n return <BlobRenderer value={simpleValue} historyClassName={historyClassName} />;\n default: {\n const dataTypeValue = <DataTypeValue value={simpleValue} dataTypeDefinition={dataTypeDefinition} />;\n return (\n <ExpandedValueTooltip value={dataTypeValue}>\n <div className={styles.defaultWrapper}>\n <span className={styles[historyClassName]}>{dataTypeValue}</span>\n </div>\n </ExpandedValueTooltip>\n );\n }\n }\n};\n\nexport default DefaultCellValueRenderer;\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 getOvAttributeValuesByPathWithUri,\n isAttributeSearchUri,\n Metadata,\n SearchParent\n} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from '../components/AttributeTable/cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from '../components/AttributeTable/cell-renderers/DefaultCellValueRenderer';\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) =>\n pipe(path(['value']), getOvAttributeValuesByPathWithUri(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 {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 marginBottom: '15px'\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 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 './cell-renderers/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\nconst DEFAULT_ROWS_PER_PAGE = 15;\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const TableAttributeView = ({config, className}: Props) => {\n const {caption, max = DEFAULT_ROWS_PER_PAGE} = 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 {Entity, GeoPoint, Metadata, 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: Entity, metadata: Metadata, mapKey: string) => {\n const [markers, setMarkers] = useState<GeoPoint[]>([]);\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);\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);\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","DEFAULT_ROWS_PER_PAGE","SingleAttributeView","config","max","page","isLoading","hasPaging","entityUri","mdm","isViewMode","isEditableMode","pivotingAttributes","hasValues","PivotingAttributeContext","BasicView","Box","LinearLoadIndicator","renderContent","BasicTablePagination","count","rowsPerPage","rowsPerPageOptions","onChangePage","useSingleAttributeLoader","attributeUri","setValues","setPaging","setIsLoading","safePromise","useSafePromise","attributeValuesRef","apiPath","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","headCell","rowCell","blobWrapper","overflowY","overflowX","whiteSpace","maxHeight","boxSizing","defaultWrapper","textOverflow","updateAttribute","historyPalettes","HistoryOperations","insertAttribute","deleteAttribute","pointerEvents","withFilterAtBottom","DefaultHeadCellRenderer","historyClassName","onScroll","stopPropagation","columnData","simpleValue","appearance","HistoryDiffContext","getHistoryAppearanceByUri","getHistoryAttributeClassName","dataTypeValue","DataTypeValue","getColumnsDataFromAttributeNode","attrNode","parents","attributeUriToSearchUri","childNode","getAttrPathFromColumnId","split","getNestedPathByColumnId","columnId","isAttributeSearchUri","attrPath","getBasicTableColumnsData","sortable","resizable","nestedPath","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","DefaultCellValueRenderer","onChangeSearchQuery","filtersEnabled","onToggleFilters","columnsData","selectedColumns","onChangeColumns","enabled","ColumnsSettings","withTableContext","deletedUris","rowValue","Boolean","cell","CellValueRenderer","isSorted","otherProps","index","tableContainer","transform","onEdit","onRemove","onSort","filters","onFilter","tableRowsData","assoc","getOvAttributeValuesByPathWithUri","getAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","checkIsEditableMode","renderRowCell","hoverRowIndex","setHoverRowIndex","canDelete","useConfigPermissions","hideRightContent","checkCanDeleteAttribute","isReltioCrosswalk","canEdit","checkCanEditAttribute","checkCanEdit","handleEditAttribute","handleRemoveAttribute","hoveredRowRightContent","context","BasicTable","autosizing","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","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","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","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","getOvAttributeValuesByPath","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":""}