@reltio/remotes 1.4.1348 → 1.4.1349

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 (94) hide show
  1. package/1635.js +2 -0
  2. package/{807.js.map → 1635.js.map} +1 -1
  3. package/1667.js +2 -0
  4. package/1667.js.map +1 -0
  5. package/1920.js +1 -1
  6. package/2114.js +1 -1
  7. package/2378.js +1 -2
  8. package/2378.js.map +1 -1
  9. package/2493.js +1 -1
  10. package/2890.js +1 -1
  11. package/2986.js +3 -0
  12. package/{3537.js.LICENSE.txt → 2986.js.LICENSE.txt} +0 -0
  13. package/2986.js.map +1 -0
  14. package/3307.js +1 -1
  15. package/350.js +1 -1
  16. package/3509.js +1 -1
  17. package/3509.js.map +1 -1
  18. package/3540.js +1 -1
  19. package/3540.js.map +1 -1
  20. package/3640.js +1 -1
  21. package/3786.js +1 -1
  22. package/4007.js +1 -1
  23. package/4038.js +1 -1
  24. package/4038.js.map +1 -1
  25. package/4115.js +1 -1
  26. package/4143.js +2 -0
  27. package/4143.js.map +1 -0
  28. package/447.js +1 -1
  29. package/4689.js +1 -1
  30. package/4843.js +1 -1
  31. package/4889.js +1 -1
  32. package/4897.js +2 -0
  33. package/4897.js.map +1 -0
  34. package/{4171.js → 5295.js} +2 -2
  35. package/5295.js.map +1 -0
  36. package/5400.js +1 -1
  37. package/5501.js +2 -0
  38. package/5501.js.map +1 -0
  39. package/5709.js +1 -1
  40. package/5709.js.map +1 -1
  41. package/5720.js +1 -1
  42. package/5937.js +1 -1
  43. package/6103.js +1 -1
  44. package/612.js +1 -1
  45. package/6401.js +3 -0
  46. package/{2378.js.LICENSE.txt → 6401.js.LICENSE.txt} +0 -0
  47. package/6401.js.map +1 -0
  48. package/6403.js +2 -0
  49. package/6403.js.map +1 -0
  50. package/6619.js +2 -0
  51. package/6619.js.map +1 -0
  52. package/{2605.js → 7601.js} +2 -2
  53. package/7601.js.map +1 -0
  54. package/{7741.js → 7776.js} +2 -2
  55. package/7776.js.map +1 -0
  56. package/7937.js +1 -1
  57. package/8051.js +1 -1
  58. package/8532.js +1 -1
  59. package/8532.js.map +1 -1
  60. package/8969.js +1 -1
  61. package/8969.js.map +1 -1
  62. package/9043.js +1 -1
  63. package/9417.js +1 -1
  64. package/9431.js +1 -1
  65. package/9606.js +1 -1
  66. package/9630.js +1 -1
  67. package/98.js +1 -1
  68. package/main.js +1 -1
  69. package/main.js.map +1 -1
  70. package/package.json +1 -1
  71. package/remoteEntry.js +1 -1
  72. package/remoteEntry.js.map +1 -1
  73. package/2605.js.map +0 -1
  74. package/3537.js +0 -3
  75. package/3537.js.map +0 -1
  76. package/3698.js +0 -2
  77. package/3698.js.map +0 -1
  78. package/4171.js.map +0 -1
  79. package/4277.js +0 -2
  80. package/4277.js.map +0 -1
  81. package/4730.js +0 -2
  82. package/4730.js.map +0 -1
  83. package/5058.js +0 -2
  84. package/5058.js.map +0 -1
  85. package/6523.js +0 -2
  86. package/6523.js.map +0 -1
  87. package/7004.js +0 -2
  88. package/7004.js.map +0 -1
  89. package/7741.js.map +0 -1
  90. package/8047.js +0 -2
  91. package/8047.js.map +0 -1
  92. package/807.js +0 -2
  93. package/8903.js +0 -2
  94. package/8903.js.map +0 -1
package/8532.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"8532.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeSelector/AttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/BasicView/styles.js","webpack://@reltio/remotes/../components/src/components/BasicView/BasicView.tsx","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/DateIntervalSelector.tsx","webpack://@reltio/remotes/../components/src/components/ErrorBoundary/ErrorBoundary.tsx","webpack://@reltio/remotes/../components/src/components/Spacer/Spacer.js","webpack://@reltio/remotes/../components/src/components/UserSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/UserSelector/UserSelector.tsx","webpack://@reltio/remotes/../components/src/components/activityLog/types/ActivityTypes.ts","webpack://@reltio/remotes/../components/src/components/activityLog/utils/activities.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/CustomDateRangeEditor.tsx","webpack://@reltio/remotes/../components/src/types/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileAttributesView/ProfileAttributesView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/contexts/SingleAttributeContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/SingleAttributeHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/hooks/helpers/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/SingleAttributeEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/SingleAttributeReadableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/SingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useSingleAttributeLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/RelationsViewStateContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/ImportDTContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/hooks/useImportFromDTLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/MultipleImportIcon.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/ImportFromDT.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/RelationsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/RelationTooltip.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationInfo.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/SuggestedButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/EditableRelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/permissions.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/relation.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/RelationArrowButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/SecondLevelWrapper.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSecondLevelConnections.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/RelationsEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/RelationAttributes.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/ShowDetailsButton/ShowDetailsButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/RelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/ratings.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/Ratings.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/RatingsButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/RelationComplexItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationsList.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSuggestedRelations.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/RelationsContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/RelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/filters.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationsState.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/contexts/TableAttributeContext.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/reducer.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/HeadCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/helpers/tableAttributeHelpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/AttributeTableHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/RowCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/EditButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/AttributeTable.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/AttributeEditing.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/hooks/useEditableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/TableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useLoadPaths.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/ConfigContext.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/Node.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/helpers.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/node-content-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/index.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/tree-node-data-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/icons/ShowGraph.svg","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/Sandbox/styles.ts","webpack://@reltio/remotes/../profile/src/components/views/HOCs/styles.ts","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withDragHandle.tsx","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withErrorBoundary.tsx","webpack://@reltio/remotes/../profile/src/components/views/styles.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/useMarkers.js","webpack://@reltio/remotes/../profile/src/components/EntityMapView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/ImageLineCaption.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeViewEditableContent/ImageAttributeViewEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ActionButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/MatchCard.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ProfilePotentialMatchesView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewsFactory.tsx","webpack://@reltio/remotes/../profile/src/components/views/StubView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/ProfileSingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/hooks/useSingleAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/ProfileTableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/useTableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/ProfileRelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/Sandbox/CustomView.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/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/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/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/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/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"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n },\n noOptionsMessage: {\n fontSize: '14px'\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe, defaultTo} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {AttributeOption} from '../../types';\nimport mdmModule from '@reltio/mdm-module';\nimport {MultiValueProps, OptionProps} from 'react-select';\nimport {AttributeType, getAttributeTypeSubAttributes, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport MultiValue from '../ReactSelect/commonComponents/MultiValue';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n entityType: TEntityType;\n selectedAttributes: AttributeOption[];\n className?: string;\n onChange?: (attributes: AttributeOption[]) => void;\n title?: string;\n disableUnderline?: boolean;\n menuPlacement?: string;\n};\n\nconst AttributeSelector = ({\n entityType,\n selectedAttributes,\n className,\n onChange,\n title,\n disableUnderline,\n menuPlacement = 'bottom'\n}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const styles = useStyles();\n\n const prepareItems = useCallback(\n (data: AttributeType[], level = 0, prevLabel = ''): AttributeOption[] => {\n return data.reduce((acc, item) => {\n if (item.hidden) return acc;\n const chipLabel = `${prevLabel && prevLabel + ' / '}${item.label}`;\n acc.push({\n label: item.label,\n value: item.uri,\n attrType: item,\n chipLabel,\n level\n });\n const subAttributes = getAttributeTypeSubAttributes(metadata, item);\n return acc.concat(subAttributes ? prepareItems(subAttributes, level + 1, chipLabel) : []);\n }, []);\n },\n [metadata]\n );\n\n const options = useMemo(() => prepareItems(entityType?.attributes || []), [entityType, prepareItems]);\n\n const CustomOption = ({isFocused, isSelected, data, label, innerProps}: OptionProps<AttributeOption, true>) => (\n <div {...innerProps}>\n <AttributeListItem\n checked={isSelected}\n level={data.level}\n data={data}\n label={label}\n labelInText={label}\n isFocused={isFocused}\n />\n </div>\n );\n\n const CustomMultiValue = ({data, ...props}: MultiValueProps<AttributeOption>) => (\n <MultiValue {...props}>{data.chipLabel}</MultiValue>\n );\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {title || i18n.text('Attribute')}\n </Typography>\n <MultiSelect\n value={selectedAttributes}\n options={options}\n TextFieldProps={{\n InputProps: {disableUnderline},\n classes: {root: styles.dropDownInput}\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton,\n MultiValue: CustomMultiValue,\n Option: CustomOption\n }}\n onChange={pipe(defaultTo([]), onChange)}\n styles={customStyles}\n classes={styles}\n menuPlacement={menuPlacement}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default AttributeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n 'basic-view__paper': {\n display: 'flex',\n flexDirection: 'column',\n ...theme.basicView\n }\n}));\n","import Paper, {PaperProps} from '@material-ui/core/Paper';\nimport PropTypes from 'prop-types';\nimport React, {forwardRef, Ref} from 'react';\nimport {useStyles} from './styles';\n\nconst BasicView = forwardRef<Ref<typeof Paper>, PaperProps>(({children, className, ...otherProps}, ref) => {\n const styles = useStyles();\n return (\n <Paper ref={ref} className={className} classes={{root: styles['basic-view__paper']}} {...otherProps}>\n {children}\n </Paper>\n );\n});\n\nBasicView.displayName = 'BasicView';\n\nBasicView.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n};\n\nexport default BasicView;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flex: 1\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px',\n fontSize: '14px'\n },\n inputNumber: {\n minWidth: '60px',\n marginRight: 10,\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n inputUnit: {\n width: '100%'\n }\n});\n","import React from 'react';\nimport {pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport capitalize from '@material-ui/core/utils/capitalize';\nimport {TextField as TextField} from '@material-ui/core';\nimport SimpleDropDownSelector from '../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {getValue} from '../../core/utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n interval: [number, string];\n onChange: ([number, string]) => void;\n onFocus?: () => void;\n};\n\nconst periods = [\n i18n.text('minutes'),\n i18n.text('hours'),\n i18n.text('days'),\n i18n.text('weeks'),\n i18n.text('months'),\n i18n.text('years')\n];\n\nconst DateIntervalSelector = ({interval: [value, unit], onChange, onFocus}: Props) => {\n const styles = useStyles();\n const getIntervalFromValue = (newValue: number) => [newValue, unit];\n const getIntervalFromUnit = ({value: newUnit}: {value: string}) => [value, newUnit];\n const onNumberChange = pipe(getValue, parseInt, getIntervalFromValue, onChange);\n const onUnitChange = pipe(getIntervalFromUnit, onChange);\n return (\n <div className={styles.root}>\n <TextField\n type=\"number\"\n value={value || ''}\n onChange={onNumberChange}\n inputProps={{min: 1, onFocus: onFocus}}\n InputProps={{classes: {root: styles.input}}}\n className={styles.inputNumber}\n />\n <SimpleDropDownSelector\n label={''}\n placeholder={capitalize(unit)}\n className={styles.inputUnit}\n value={{value: unit, label: capitalize(unit)}}\n options={periods.map((value) => ({\n value,\n label: capitalize(value)\n }))}\n onChange={onUnitChange}\n TextFieldProps={{\n inputProps: {onFocus: onFocus},\n InputProps: {classes: {root: styles.input}}\n }}\n />\n </div>\n );\n};\n\nexport default DateIntervalSelector;\n","import React from 'react';\n\ntype State = {\n error: Error | null;\n};\n\ntype Props = {\n error: React.ReactNode;\n};\n\nexport default class ErrorBoundary extends React.Component<Props, State> {\n constructor(props) {\n super(props);\n this.state = {\n error: null\n };\n }\n\n componentDidCatch(error) {\n this.setState({\n error: error\n });\n console.error(error);\n }\n\n render() {\n const {children, error} = this.props;\n if (this.state.error) {\n return error;\n }\n return children;\n }\n}\n","import 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, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getAllUsersForTenant, User, utils} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n selectedUsers: string[];\n onChange: (activities: string[]) => void;\n className?: string;\n disableUnderline?: boolean;\n};\n\nconst UserSelector = ({selectedUsers, onChange, className, disableUnderline}: Props) => {\n const styles = useStyles();\n\n const valueToOption = (value: string) => ({value, label: value});\n const prepareValues = (values: string[]) => values.map(valueToOption);\n const filterUsers = (inputValue) => (users) =>\n inputValue ? users.filter((username) => utils.strings.search(username, inputValue)) : users;\n\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n\n const cachedRequest = useRef<Promise<{array: User[]}>>();\n const getOptions = (inputValue) => {\n if (!cachedRequest.current) {\n cachedRequest.current = getAllUsersForTenant({tenant, servicesPath});\n }\n return cachedRequest.current.then(\n pipe(prop('array'), pluck('username'), filterUsers(inputValue), prepareValues)\n );\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('User')}\n </Typography>\n <MultiSelect\n value={prepareValues(selectedUsers)}\n onChange={pipe(defaultTo([]), pluck('value'), onChange)}\n defaultOptions={true}\n getOptions={getOptions}\n TextFieldProps={{\n InputProps: {disableUnderline},\n className: styles.dropDownInput\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default UserSelector;\n","export enum ActivityTypes {\n MODEL_UPDATED = 'MODEL_UPDATED',\n ENTITY_REMOVED = 'ENTITY_REMOVED',\n ENTITY_CREATED = 'ENTITY_CREATED',\n ENTITY_CHANGED = 'ENTITY_CHANGED',\n ENTITIES_MERGED = 'ENTITIES_MERGED',\n ENTITIES_SPLITTED = 'ENTITIES_SPLITTED',\n ENTITY_LOST_MERGE = 'ENTITY_LOST_MERGE',\n RELATIONSHIP_CREATED = 'RELATIONSHIP_CREATED',\n RELATIONSHIP_REMOVED = 'RELATIONSHIP_REMOVED',\n RELATIONSHIP_CHANGED = 'RELATIONSHIP_CHANGED',\n POTENTIAL_MATCHES_FOUND = 'POTENTIAL_MATCHES_FOUND',\n NOT_MATCHES_SET = 'NOT_MATCHES_SET',\n NOT_MATCHES_RESET = 'NOT_MATCHES_RESET',\n PERIODIC_TASK_SCHEDULED = 'PERIODIC_TASK_SCHEDULED',\n ENTITIES_MERGED_MANUALLY = 'ENTITIES_MERGED_MANUALLY',\n POTENTIAL_MATCHES_REMOVED = 'POTENTIAL_MATCHES_REMOVED',\n ENTITIES_MERGED_ON_THE_FLY = 'ENTITIES_MERGED_ON_THE_FLY',\n USER_LOGIN = 'USER_LOGIN',\n USER_LOGOUT = 'USER_LOGOUT',\n USER_SEARCH = 'USER_SEARCH',\n USER_PROFILE_VIEW = 'USER_PROFILE_VIEW',\n COMMENT_ADDED = 'COMMENT_ADDED',\n COMMENT_UPDATED = 'COMMENT_UPDATED',\n COMMENT_DELETED = 'COMMENT_DELETED',\n ANALYTICS_ATTRIBUTES_CHANGED = 'ANALYTICS_ATTRIBUTES_CHANGED',\n SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE = 'SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE',\n GROUP_CREATED = 'GROUP_CREATED',\n GROUP_REMOVED = 'GROUP_REMOVED',\n GROUP_CHANGED = 'GROUP_CHANGED'\n}\n","import {filter, groupBy, ifElse, map, path, pipe, propOr, values, is, isNil, includes, reject} 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 = (delta: string | Record<string, DeltaValue[]> | DeltaValue | DeltaValue[]) => {\n if (isNil(delta)) {\n return '';\n } else if (typeof delta === 'string') {\n return delta;\n } else if (Array.isArray(delta)) {\n return delta.map(stringifyDeltaValue).join(', ');\n } else if (is(Object, delta)) {\n return 'value' in delta ? stringifyDeltaValue(delta.value) : stringifyDeltaValue(Object.values(delta));\n } else {\n return delta.toString();\n }\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n values={values}\n onCancel={onCancel}\n onApply={onApply}\n type={DataTypes.TYPE_ACTIVENESS_DATE}\n />\n </Menu>\n </div>\n );\n};\n\nexport default CustomDateRangeEditor;\n","import {AttributeType} from '@reltio/mdm-sdk';\n\nexport type ReactGridLayoutItem = {\n i: string;\n x: number;\n y: number;\n w: number;\n h: number;\n minW?: number;\n minH?: number;\n maxW?: number;\n maxH?: number;\n static?: boolean;\n};\n\nexport type AttributeOption = {\n label: string;\n value: string;\n attrType: AttributeType;\n chipLabel: string;\n level: number;\n};\n\nexport enum DateRangeTypes {\n WITHIN = 'within',\n AGO = 'ago',\n BETWEEN = 'between'\n}\n\nexport type DateRangeFilter = {\n type: DateRangeTypes;\n period: [number, string] | [Date, Date];\n};\n\nexport type QueryBuilderAttributeData = {\n title: string;\n pathToTitle: Array<string>;\n fieldName: string;\n entityTypeUri: string;\n attrType: AttributeType;\n uri: string;\n groupName: string;\n filterOptions: Array<string>;\n};\n\nexport type QueryBuilderAttribute = {\n id: string;\n values: Array<unknown>;\n data: QueryBuilderAttributeData;\n filter: string;\n operator: string;\n};\n\nexport type AttributeSelectorItem = {\n attrType?: AttributeType;\n entityTypeUri?: string;\n fieldName: string;\n groupName?: string;\n title: string;\n uri?: string;\n children?: AttributeSelectorItem[];\n pathToTitle?: string[];\n};\n\nexport type AttributeSelectorItemsGroup = {\n id?: string;\n title: string;\n attributes: AttributeSelectorItem[];\n};\n\nexport type AttributeSelectionInfo = {\n index: number;\n checked: boolean;\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n};\n\nexport type BasicAttributeSelectorProps = {\n className?: string;\n itemsGroups: AttributeSelectorItemsGroup[];\n value: AttributeSelectorItem;\n onSelect: (selectInfo: AttributeSelectionInfo) => void;\n onRestoreFocus?: () => void;\n onOpenPopup?: () => void;\n getLabel?: (value: {fieldName?: string; pathToTitle?: string[]; title: string}) => string;\n disableRestoreFocus?: boolean;\n disableEnforceFocus?: boolean;\n single?: boolean;\n ungroup?: boolean;\n disabled?: boolean;\n hideCheckBox?: boolean;\n};\nexport enum RequestStates {\n INIT = 'init',\n LOADING = 'loading',\n LOADED = 'loaded',\n ERROR = 'error'\n}\n\nexport type SelectableItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selected?: boolean;\n};\n\nexport type DropDownMenuItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selectable?: boolean;\n selected?: boolean;\n};\n","import React from 'react';\nimport {AttributesView} from '@reltio/components';\nimport {AttributeViewConfig} from '@reltio/mdm-sdk';\n\ntype ProfileAttributesViewProps = {\n config: AttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileAttributesView = ({className, config}: ProfileAttributesViewProps) => {\n return (\n <AttributesView\n className={className}\n caption={config.caption}\n excludeUris={config.excludeUris}\n includeUris={config.includeUris}\n attributesCount={config.attributesCount}\n pinnedAttributes={config.pinnedAttributes}\n />\n );\n};\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\n\nexport const SingleAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n showInactive?: boolean;\n toggleShowInactive?: (checked: boolean) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n attributeType: AttributeType;\n totalNonVisibleValues: number;\n nonVisibleValues: AttributeValue[];\n }>(null);\n\nSingleAttributeContext.displayName = 'SingleAttributeContext';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n triggerButton: {\n minWidth: 0,\n color: 'rgba(0,0,0,0.54)',\n width: '36px'\n },\n popupContent: {\n paddingTop: '19px',\n paddingBottom: '23px',\n paddingLeft: '23px',\n paddingRight: '23px',\n maxWidth: '180px',\n width: '40%'\n },\n checkboxControlRoot: {\n marginTop: '6px',\n marginLeft: '-12px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\n\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const {showInactive, toggleShowInactive} = useContext(SingleAttributeContext);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n return (\n <>\n <Button ref={buttonRef} classes={{root: classnames(styles.triggerButton, className)}} onClick={togglePopup}>\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n root: styles.checkboxControlRoot,\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive}\n onChange={(e) => toggleShowInactive(e.target.checked)}\n />\n }\n label={i18n.text('Show inactive values')}\n />\n </Popover>\n </>\n );\n};\n\nexport default FilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 4px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n },\n ovIcon: {\n marginTop: '2px',\n marginLeft: '5px'\n }\n}));\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {FacetViewHeader, HideOnShrink, ExpandableSearchInput, VerticalDivider, OvIcon} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport FilterButton from '../FilterButton/FilterButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n caption: string;\n totalVisibleValues: number;\n showInactiveValuesMenu: boolean;\n};\n\nexport const SingleAttributeHeader = ({caption, totalVisibleValues, showInactiveValuesMenu}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, setSearchQuery, setPage, totalNonVisibleValues, nonVisibleValues, attributeType} = useContext(\n SingleAttributeContext\n );\n\n const handleChangeSearchQuery = (query: string) => {\n setSearchQuery(query);\n setPage(0);\n };\n\n return (\n <FacetViewHeader title={caption} className={styles.root}>\n <HideOnShrink widthToHide={500}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {i18n.number(totalVisibleValues)}{' '}\n {totalVisibleValues === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n </HideOnShrink>\n {\n <OvIcon\n nonOvTotal={totalNonVisibleValues}\n className={styles.ovIcon}\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n />\n }\n <ExpandableSearchInput query={searchQuery} onChange={handleChangeSearchQuery} />\n {showInactiveValuesMenu && <FilterButton />}\n </FacetViewHeader>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 -16px 8px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n ovFalse: theme.inactive,\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px 8px 0'\n }\n}));\n","import {equals, filter, identity, is, lensPath, omit, over, pipe, unless} from 'ramda';\nimport {\n AttributeValue,\n cleanAttributesWith,\n Entity,\n findAttributeValuesByTypeUri,\n getAttributeSource,\n getLastUriPart,\n isOv,\n Metadata,\n utils\n} from '@reltio/mdm-sdk';\n\nexport const getAttributeNameFromAttributeUri = getLastUriPart;\n\nexport const search = (value: AttributeValue['value'], searchQuery: string) => {\n switch (typeof value) {\n case 'object':\n return Object.values(value).some((value: AttributeValue[]) => {\n return value.some(({value}) => {\n return search(value, searchQuery);\n });\n });\n default:\n return utils.strings.search(String(value), searchQuery);\n }\n};\n\ntype Config = {\n metadata: Metadata;\n entity: Entity;\n attributeTypeUri: string;\n defaultMaxValues?: number;\n offset?: number;\n searchQuery?: string;\n};\n\nexport const getPagedLocalEntity = async ({\n metadata,\n entity,\n attributeTypeUri,\n defaultMaxValues = Infinity,\n offset = 0,\n searchQuery = ''\n}: Config) => {\n const values = pipe(\n findAttributeValuesByTypeUri,\n filter(({value}) => search(value, searchQuery))\n )(metadata, entity, attributeTypeUri);\n const ovValues = filter(isOv, values);\n\n return {\n [getAttributeSource(attributeTypeUri)]: {\n [getAttributeNameFromAttributeUri(attributeTypeUri)]: ovValues.slice(offset, offset + defaultMaxValues),\n paging: {\n [attributeTypeUri]: {\n totalOvValues: ovValues.length,\n totalValues: values.length\n }\n }\n }\n };\n};\n\nexport const areValuesEqual = (value1: AttributeValue, value2: AttributeValue): boolean => {\n const cleanser =\n is(Object, value1.value) || is(Object, value2.value)\n ? over(\n lensPath(['value']),\n cleanAttributesWith({\n valueTransformer: unless(isOv, omit(['value'])),\n deleteEmptyComplex: true\n })\n )\n : identity;\n return equals(cleanser(value1), cleanser(value2));\n};\n","import React, {useCallback, useContext, useRef} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, cond, map, pathOr, pipe, prop, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {CardinalityMessage, EditableAttribute, ErrorMessage, ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n AttributeValue,\n checkCanCreateAttribute,\n createNewAttribute,\n Entity,\n getAttributeOwnError,\n getAttributePagerActiveTypeErrorMessage,\n getAttributeSource,\n isComplexAttribute,\n isEmptyValue,\n isOv,\n isTempUri,\n AttributeItem\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport {areValuesEqual} from '../../../hooks/helpers';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n parentUri: string;\n showInactive: boolean;\n noDataText: string;\n};\n\nconst emptyArray = [];\n\nexport const SingleAttributeEditableContent = ({values, attributeType, parentUri, showInactive, noDataText}: Props) => {\n const styles = useStyles();\n\n const {uri: attributeTypeUri, required: isRequired, cardinality, name} = attributeType;\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType)\n );\n const errorMessage = useSelector((state) =>\n getAttributePagerActiveTypeErrorMessage(parentUri, attributeType, mdmModule.selectors.getProfileErrors(state))\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n const attributeSource = getAttributeSource(attributeType);\n const entityValuesUris: string[] = pipe(pathOr(emptyArray, [attributeSource, name]), map(prop('uri')))(entity);\n const modifiedEntityValues: AttributeValue[] = pathOr(emptyArray, [attributeSource, name], modifiedEntity);\n const modifiedEntityValuesUris: string[] = modifiedEntityValues.map(prop('uri'));\n const showEmptyEditors = isTempUri(entity.uri);\n\n const emptyEditorValue = useRef<AttributeValue>(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const isModifiedEntityValuesEmpty = isEmptyValue(modifiedEntityValues);\n const showEmpty = isRequired && isModifiedEntityValuesEmpty;\n\n const newValues = showEmpty\n ? [emptyEditorValue.current]\n : modifiedEntityValues.filter(pipe(prop('uri'), isTempUri));\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n const onAdd = useCallback(() => {\n const attribute: AttributeItem = {\n parentUri,\n attributeType\n };\n\n return onAddAttributes(\n showEmpty && !isComplexAttribute(attributeType.type) ? [attribute, attribute] : [attribute]\n );\n }, [onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n\n const commonProps = {\n attributeType: attributeType,\n errors,\n crosswalks: modifiedEntity.crosswalks,\n mode,\n onAddAttributes,\n onChangeAttribute,\n onDeactivateError,\n showNonOv: showInactive\n };\n const isEmptyAttributeList = newValues.length === 0 && values.length === 0;\n return (\n <div>\n <CardinalityMessage cardinality={cardinality} />\n <ErrorMessage message={errorMessage} />\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {newValues.map((value, idx) => (\n <EditableAttribute\n key={value.uri}\n {...commonProps}\n attributeValue={value}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n ownError={getAttributeOwnError(value, idx, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n />\n ))}\n {newValues.length > 0 && values.length > 0 && <Divider className={styles.divider} />}\n {values.map((originalValue) => {\n const modifiedEntityValue = modifiedEntityValues.find(propEq('uri', originalValue.uri));\n const value = modifiedEntityValue || originalValue;\n const deleted = entityValuesUris.includes(value.uri) && !modifiedEntityValuesUris.includes(value.uri);\n const edited = !deleted && modifiedEntityValue && !areValuesEqual(modifiedEntityValue, originalValue);\n const state = cond([\n [always(deleted), always('deleted')],\n [always(edited), always('edited')]\n ])();\n return (\n <div key={value.uri} className={classnames({[styles.ovFalse]: !isOv(value)})}>\n <EditableAttribute\n {...commonProps}\n attributeValue={value}\n ownError={getAttributeOwnError(value, null, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n state={state}\n />\n </div>\n );\n })}\n {isEmptyAttributeList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n","import React from 'react';\nimport {ReadOnlyAttribute} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n showInactive: boolean;\n};\n\nexport const SingleAttributeReadableContent = ({values, attributeType, showInactive}: Props) => {\n return (\n <>\n {values.map((value) => {\n return (\n <ReadOnlyAttribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showInactive}\n />\n );\n })}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n },\n pagination: {\n flexGrow: 0,\n flexShrink: 0\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {PivotingAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {BasicView, BasicTablePagination, LinearLoadIndicator, PivotingAttributeContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SingleAttributeHeader} from '../SingleAttributeHeader/SingleAttributeHeader';\nimport {SingleAttributeEditableContent} from '../SingleAttributeEditableContent/SingleAttributeEditableContent';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {SingleAttributeReadableContent} from '../SingleAttributeReadableContent/SingleAttributeReadableContent';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const SingleAttributeView = ({config, className}: Props) => {\n const {caption, max, showInactiveValuesMenu} = config;\n\n const styles = useStyles();\n\n const {values, totalVisibleValues, page, setPage, isLoading, hasPaging, attributeType, showInactive} = useContext(\n SingleAttributeContext\n );\n\n const entityUri = useSelector(mdm.selectors.getEntityUri);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n const pivotingAttributes: PivotingAttribute[] = useSelector(mdm.selectors.getPivotingAttributes);\n\n const hasValues = values.length !== 0;\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const renderContent = () => {\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (attributeType) {\n if (isViewMode && hasValues) {\n const props = {\n values,\n attributeType,\n showInactive\n };\n return <SingleAttributeReadableContent {...props} />;\n } else if (isEditableMode) {\n const props = {\n values,\n attributeType,\n parentUri: entityUri,\n showInactive,\n noDataText\n };\n return <SingleAttributeEditableContent {...props} />;\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n\n return (\n <PivotingAttributeContext.Provider value={pivotingAttributes}>\n <BasicView className={classnames(styles.root, className)}>\n <SingleAttributeHeader\n totalVisibleValues={totalVisibleValues}\n caption={caption}\n showInactiveValuesMenu={showInactiveValuesMenu}\n />\n <Box className={styles.content}>{renderContent()}</Box>\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n page={page}\n rowsPerPage={max}\n rowsPerPageOptions={[]}\n onChangePage={setPage}\n classes={{root: styles.pagination}}\n />\n )}\n </BasicView>\n </PivotingAttributeContext.Provider>\n );\n};\n","import {useCallback, useState, useEffect, useMemo, useRef} from 'react';\nimport {ifElse, prop, always, has, pathOr, path, partition, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n isDataTenantEntity,\n getPagedEntity,\n getAttributeSource,\n AttributeValue,\n SearchFilter,\n findAttributeTypeByUri,\n isReadableAttribute,\n isTempUri,\n isOv,\n findAttributeValues,\n isFirstLevelAttributeUri,\n SingleAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useSafePromise, useDidUpdateEffect} from '@reltio/components';\nimport {getPagedLocalEntity, getAttributeNameFromAttributeUri} from './helpers';\n\ntype Params = {\n filters?: SearchFilter[];\n searchQuery?: string;\n sorting?: {\n field: string;\n order: string;\n };\n page: number;\n showInactive: boolean;\n};\n\nexport const useSingleAttributeLoader = (\n config: SingleAttributeViewConfig,\n params: Params,\n canShowHistoryDiff: boolean\n) => {\n const {attributeUri, max = 15} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const [values, setValues] = useState([]);\n const [paging, setPaging] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n const attributeValuesRef = useRef<AttributeValue[]>(null);\n\n const dispatch = useDispatch();\n const apiPath = useSelector(mdm.selectors.getApiPath);\n const tenant = useSelector(mdm.selectors.getTenant);\n const entitySelector = canShowHistoryDiff ? mdm.selectors.getEntityWithDiff : mdm.selectors.getEntityWithoutDiff;\n const entity = useSelector(entitySelector);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const diff = useSelector(mdm.selectors.getHistoryDiff);\n\n const parentUri = entity.uri;\n const attributeTypeName = getAttributeNameFromAttributeUri(attributeUri);\n const attributeTypeSource = getAttributeSource(attributeUri);\n attributeValuesRef.current = findAttributeValues(entity, parentUri, attributeTypeName);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const {globalFilter} = useSelector(mdm.selectors.getGlobalSearchRequestOptions);\n const {showInactive} = params;\n const loadAttributes = useCallback(() => {\n if (\n attributeType &&\n isReadableAttribute(attributeType) &&\n !isTempUri(parentUri) &&\n isFirstLevelAttributeUri(attributeUri)\n ) {\n setIsLoading(true);\n const {page, showInactive, ...rest} = params;\n const request = isDataTenantEntity(entity) || isHistoryModeEnabled ? getPagedLocalEntity : getPagedEntity;\n safePromise(\n request({\n metadata,\n entity,\n apiPath,\n tenant,\n parentUri,\n defaultMaxValues: max,\n attributeTypeUri: attributeUri,\n offset: max * page,\n globalFilter,\n options: showInactive ? '' : undefined,\n ...rest\n })\n )\n .then((response) => {\n const attributes = path([attributeTypeSource], response);\n const values: AttributeValue[] = pathOr([], [attributeTypeName], attributes);\n if (!isHistoryModeEnabled) {\n dispatch(\n profile.actions.processNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeUri,\n attributeTypeName,\n values\n })\n );\n }\n setValues(\n values.map((loadedValue) => {\n const valueFromEntity = attributeValuesRef.current?.find(propEq('uri', loadedValue.uri));\n return valueFromEntity || loadedValue;\n })\n );\n setPaging(path(['paging', attributeUri], attributes));\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n setValues([]);\n setPaging(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiPath,\n parentUri,\n tenant,\n attributeUri,\n max,\n metadata,\n params,\n globalFilter,\n attributeType,\n isHistoryModeEnabled,\n diff\n ]);\n\n useEffect(() => {\n loadAttributes();\n }, [loadAttributes]);\n\n useDidUpdateEffect(() => {\n if (isViewMode) {\n loadAttributes();\n }\n }, [isViewMode]);\n const partitionByOv = partition(isOv);\n const [, nonOvValues] = partitionByOv(attributeValuesRef.current || []);\n const nonVisibleValues = showInactive ? [] : nonOvValues;\n const totalProp = showInactive ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(values.length))(paging);\n const hasPaging = max < totalVisibleValues;\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n return {\n values,\n isLoading,\n hasPaging,\n totalVisibleValues,\n attributeType,\n totalNonVisibleValues,\n nonVisibleValues\n };\n};\n","import React from 'react';\nimport {RelationsViewState} from '../hooks/useRelationsState';\n\nexport const RelationsViewStateContext = React.createContext<RelationsViewState>(null);\n\nRelationsViewStateContext.displayName = 'RelationsViewStateContext';\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nconst popupHorizontalPadding = '23px';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n button: {\n color: theme.palette.text.secondary,\n width: '36px',\n minWidth: '36px'\n },\n popupContent: {\n padding: `19px ${popupHorizontalPadding}`\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n },\n divider: {\n backgroundColor: 'rgba(0,0,0,0.1)',\n margin: `19px -${popupHorizontalPadding}`\n },\n title: {\n marginBottom: '30px'\n },\n sortControls: {\n display: 'flex',\n alignItems: 'center'\n },\n sortSelectorRoot: {\n flex: 1,\n padding: '13px 16px',\n fontSize: '0.85rem'\n },\n sortSelectorMenuItem: {\n fontSize: '0.85rem'\n },\n sortOrderButton: {\n flexShrink: 0,\n margin: '0 8px 0 7px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {DropDownEditor, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {Popover as Popover} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport {Button as Button} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\nimport {RelationsViewStateContext} from '../../../contexts/RelationsViewStateContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const {\n showInactive,\n toggleShowInactive,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions\n } = useContext(RelationsViewStateContext);\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n const hasSortOptions = !isEmptyValue(sortOptions);\n\n const isAsc = sortOrder === 'asc';\n\n return (\n <>\n <Button\n ref={buttonRef}\n classes={{\n root: classnames(styles.button, className)\n }}\n onClick={togglePopup}\n >\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={toggleShowInactive}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n {hasSortOptions && (\n <>\n <Divider className={styles.divider} />\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Sort by')}\n </Typography>\n <div className={styles.sortControls}>\n <DropDownEditor\n entries={sortOptions}\n TextFieldProps={{variant: 'filled'}}\n classes={{\n root: styles.sortSelectorRoot,\n menuItem: styles.sortSelectorMenuItem\n }}\n fullWidth\n disableUnderline\n value={sortOption}\n onChange={changeSortOption}\n MenuProps={{\n getContentAnchorEl: null,\n anchorOrigin: {vertical: 'bottom', horizontal: 'left'}\n }}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isAsc ? i18n.text('Ascending') : i18n.text('Descending')}\n icon={isAsc ? ArrowUpwardIcon : ArrowDownwardIcon}\n onClick={toggleSortOrder}\n className={styles.sortOrderButton}\n size=\"L\"\n />\n </div>\n </>\n )}\n </Popover>\n </>\n );\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport default FilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 6px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n }\n});\n","import React from 'react';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\nexport const ImportDTContext = React.createContext<{\n reloadRelations: () => void;\n config: Pick<RelationsViewConfig, 'content' | 'importFromDT' | 'maxDtssImport'>;\n }>(null);\n","import {useSelector, useDispatch} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {useCallback, useContext, useEffect, useState} from 'react';\nimport {getRequestErrorMessage, hasNonImportedRelations, importDTConnections, isTempUri} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {ImportDTContext} from '../../../../contexts/ImportDTContext';\nimport i18n from 'ui-i18n';\n\nconst MAX = Math.pow(2, 31) - 1;\ntype Tenant = {id: string; label: string};\n\nexport const useImportFromDTLoader = () => {\n const dataTenants: Array<Tenant> = useSelector(mdmModule.selectors.getDataTenants);\n const dispatch = useDispatch();\n const {config, reloadRelations} = useContext(ImportDTContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const [tenants, setTenants] = useState<Array<Tenant>>([]);\n const [selectedTenant, setSelectedTenant] = useState<Tenant>(null);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const customerTenant = useSelector(mdmModule.selectors.getTenant);\n const content = [{...config.content, offset: 0, max: config.maxDtssImport ?? MAX}];\n\n const checkHasNonImportedConnections = useCallback(() => {\n setTenants([]);\n if (config.importFromDT && !isTempUri(entityUri)) {\n Promise.all(\n (dataTenants || []).map((tenant) =>\n hasNonImportedRelations({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: tenant.id\n }).then(({hasNonImportedConnections}) => ({\n ...tenant,\n hasNonImportedConnections\n }))\n )\n )\n .then((modifiedTenants) => modifiedTenants.filter((tenant) => tenant.hasNonImportedConnections))\n .then(setTenants);\n }\n }, [entityUri, dtssPath, customerTenant, config, dataTenants]);\n\n const onConfirmImport = useCallback(() => {\n importDTConnections({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: selectedTenant.id\n })\n .then(() => {\n reloadRelations();\n checkHasNonImportedConnections();\n })\n .catch((error) =>\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))))\n );\n setSelectedTenant(null);\n }, [\n entityUri,\n dtssPath,\n customerTenant,\n config,\n checkHasNonImportedConnections,\n reloadRelations,\n selectedTenant,\n setSelectedTenant\n ]);\n\n useEffect(() => {\n checkHasNonImportedConnections();\n }, [checkHasNonImportedConnections]);\n const onCancelConfirmation = useCallback(() => setSelectedTenant(null), []);\n const onImportClick = useCallback((tenant: Tenant) => setSelectedTenant(tenant), []);\n return {\n tenants,\n selectedTenant,\n onConfirmImport,\n onCancelConfirmation,\n onImportClick\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n tenant: {\n backgroundColor: '#0000EE',\n cursor: 'pointer',\n position: 'absolute',\n top: '8px',\n left: '22px',\n width: '10px',\n height: '10px',\n color: 'white',\n fontSize: '10px',\n fontWeight: 'bold',\n userSelect: 'text',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n button: {\n position: 'relative'\n },\n badge: {\n fontSize: '10px',\n height: '14px',\n minWidth: '14px',\n width: '14px',\n fontWeight: 'bold',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px',\n top: '4px'\n }\n}));\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {Badge as Badge} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ninterface Props {\n label: number | string;\n}\n\nexport const MultipleImportIcon = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Badge\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n badgeContent={label}\n >\n <CloudDownloadIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {useImportFromDTLoader} from './hooks/useImportFromDTLoader';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {ConfirmationDialog} from '@reltio/components';\nimport {MultipleImportIcon} from './MultipleImportIcon';\n\nexport const ImportFromDT = () => {\n const {tenants, selectedTenant, onConfirmImport, onCancelConfirmation, onImportClick} = useImportFromDTLoader();\n const styles = useStyles();\n const oneTenant = tenants.length === 1;\n const labelOnButton = oneTenant\n ? tenants[0].label.indexOf('DT:') === 0\n ? tenants[0].label[3]\n : tenants[0].label[0]\n : tenants.length;\n return (\n <>\n {!!tenants.length && (\n <>\n {oneTenant ? (\n <div className={styles.button}>\n <SmallIconButtonWithTooltip\n size={'L'}\n icon={CloudDownloadIcon}\n tooltipTitle={i18n.text('Import connections from ${label}', {label: tenants[0].label})}\n onClick={() => onImportClick(tenants[0])}\n />\n <div className={classnames(styles.tenant)}>{labelOnButton}</div>\n </div>\n ) : (\n <DropDownMenuButton\n menuId={'importDT-table-actions'}\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n tooltipTitle: i18n.text('Import connections'),\n size: 'L',\n // eslint-disable-next-line react/display-name\n icon: () => <MultipleImportIcon label={labelOnButton} />\n }}\n menuItems={tenants.map((tenant) => ({\n onClick: () => {\n onImportClick(tenant);\n },\n text: tenant.label\n }))}\n />\n )}\n <ConfirmationDialog\n open={!!selectedTenant}\n title={i18n.text('Confirmation')}\n content={i18n.text('Import connections from ${label}?', {label: selectedTenant?.label})}\n discardCaption={i18n.text('Cancel')}\n saveCaption={i18n.text('Import')}\n onDiscard={onCancelConfirmation}\n onSave={onConfirmImport}\n />\n </>\n )}\n </>\n );\n};\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {ExpandableSearchInput, FacetViewHeader, HideOnShrink, VerticalDivider} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport FilterButton from './FilterButton/FilterButton';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {useStyles} from './styles';\nimport {ImportFromDT} from './ImportFromDT/ImportFromDT';\n\ntype Props = {\n title?: string;\n total?: number;\n};\n\nconst RelationsHeader = ({title, total}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, changeSearchQuery} = useContext(RelationsViewStateContext);\n\n return (\n <FacetViewHeader title={title || ''} className={styles.header}>\n {total > 0 && (\n <HideOnShrink widthToHide={400}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} items', {count: total})\n : i18n.text('${count} item', {count: total})}\n </Typography>\n </HideOnShrink>\n )}\n <ExpandableSearchInput query={searchQuery} onChange={changeSearchQuery} />\n <ImportFromDT />\n <FilterButton />\n </FacetViewHeader>\n );\n};\n\nexport default RelationsHeader;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n tooltip: theme.tooltip,\n tooltipContent: {\n minWidth: '165px',\n padding: '4px 2px 2px'\n },\n label: {\n fontSize: '11px',\n lineHeight: '13px',\n fontWeight: 500,\n margin: 0,\n color: 'white'\n },\n secondaryLabel: {\n color: 'rgba(255, 255, 255, 0.7)',\n fontSize: '10px',\n marginTop: '4px',\n fontWeight: 500,\n lineHeight: '11px'\n },\n progress: {\n marginTop: '4px',\n color: '#FFFFFF'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {isNil, ifElse} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n ConnectionEntity,\n getDataTenantEntitySecondaryLabel,\n getEntitySecondaryLabel,\n isDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useSafePromise} from '@reltio/components';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nconst PROGRESS_ICON_SIZE = 16;\n\ntype Props = {\n label: string;\n entity?: ConnectionEntity;\n children: React.ReactElement;\n};\n\nconst RelationTooltip = ({label, entity, children, ...tooltipProps}: Props) => {\n const styles = useStyles();\n const safePromise = useSafePromise();\n const tenant = useSelector(mdm.selectors.getTenant);\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const [isLoading, setIsLoading] = useState(false);\n const [secondaryLabel, setSecondaryLabel] = useState<string>(null);\n\n useEffect(() => {\n setSecondaryLabel(null);\n }, [entity]);\n\n const onOpen = useCallback(() => {\n if (entity?.entityUri && isNil(secondaryLabel)) {\n const request = ifElse(\n isDataTenantEntity,\n (entity: ConnectionEntity) =>\n getDataTenantEntitySecondaryLabel({\n entityUri: entity.entityUri,\n dataTenant: entity.dataTenant,\n customerTenant: tenant,\n dtssPath\n }),\n (entity: ConnectionEntity) => getEntitySecondaryLabel(entity.entityUri)\n );\n\n setIsLoading(true);\n safePromise(request(entity))\n .then(({secondaryLabel}) => {\n setSecondaryLabel(secondaryLabel);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [dtssPath, entity, tenant, safePromise, secondaryLabel]);\n\n const tooltipContent = (\n <div className={styles.tooltipContent}>\n <div className={styles.label}>{label}</div>\n {isLoading && <CircularProgress size={PROGRESS_ICON_SIZE} classes={{colorPrimary: styles.progress}} />}\n {secondaryLabel && <div className={styles.secondaryLabel}>{secondaryLabel}</div>}\n </div>\n );\n\n return (\n <Tooltip\n onOpen={onOpen}\n title={tooltipContent}\n disableFocusListener\n classes={{tooltip: styles.tooltip}}\n {...tooltipProps}\n >\n {children}\n </Tooltip>\n );\n};\n\nexport default RelationTooltip;\n","import {\n Connection,\n Metadata,\n getEntityType,\n getLabel,\n getEntityUriForLink,\n getRelationTypeLabelFromMetadata\n} from '@reltio/mdm-sdk';\n\nexport const useRelationInfo = (connection: Connection, metadata: Metadata) => {\n const {entity, relation} = connection;\n const entityType = getEntityType(metadata, entity?.entityType) as string;\n const entityLabel = getLabel(entity?.entityLabel) as string;\n const preparedUri = getEntityUriForLink({uri: entity?.entityUri, dataTenant: entity?.dataTenant}) as string;\n const relationLabel =\n relation?.relationLabel || (getRelationTypeLabelFromMetadata(metadata, relation?.relationType) as string);\n\n return {\n entityType,\n entityLabel,\n preparedUri,\n relationLabel\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button, {ButtonProps} from '@material-ui/core/Button';\nimport {useStyles} from './styles';\n\ntype Props = {\n acceptRelation: () => void;\n ignoreRelation: () => void;\n};\n\nexport const SuggestedButtons = ({acceptRelation, ignoreRelation, ...props}: Props & ButtonProps) => {\n const styles = useStyles();\n return (\n <div className={styles.container}>\n <Button onClick={acceptRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Accept')}\n </Button>\n <Button onClick={ignoreRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Ignore')}\n </Button>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n\n marginBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '24px',\n padding: '0 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n editButtonsContent: {\n marginLeft: 'auto',\n flex: '0 0 40px'\n },\n editButtons: {\n padding: 0\n },\n removed: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary,\n margin: '0 5px'\n }\n}));\n","import React, {memo, useCallback} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Connection, Metadata, isActiveObject, Mode, checkRemoved, checkEdited, checkIgnored} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, EntityUriLink, SmallIconButtonWithTooltip} from '@reltio/components';\nimport RelationTooltip from '../RelationTooltip/RelationTooltip';\nimport {useRelationInfo} from '../../hooks/useRelationInfo';\nimport {checkRelationPermission} from '../../helpers/permissions';\nimport {SuggestedButtons} from '../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n onRemoveRelation: (relationUri: string) => void;\n onEditRelation: (connection: Connection) => void;\n onAcceptRelation?: (connection: Connection) => void;\n onIgnoreRelation?: (connection: Connection) => void;\n metadata: Metadata;\n showControls: boolean;\n renderRelationArrowButton?: () => React.ReactNode;\n};\n\nconst EditableRelationItem = memo(\n ({\n connection,\n metadata,\n showControls,\n onRemoveRelation,\n onEditRelation,\n onAcceptRelation,\n onIgnoreRelation,\n renderRelationArrowButton\n }: Props) => {\n const styles = useStyles();\n\n const {entity, relation} = connection;\n const removed = checkRemoved(connection);\n const edited = checkEdited(connection);\n const ignored = checkIgnored(connection);\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode: Mode.Editing,\n onRemoveRelation,\n onEditRelation,\n metadata,\n connection\n });\n\n const handleRemoveRelation = useCallback(() => onRemoveRelation(connection.relation.relationUri), [\n onRemoveRelation,\n connection\n ]);\n\n const handleEditRelation = useCallback(() => onEditRelation(connection), [onEditRelation, connection]);\n\n const handleAcceptRelation = useCallback(() => {\n onAcceptRelation(connection);\n }, [onAcceptRelation, connection]);\n\n const handleIgnoreRelation = useCallback(() => onIgnoreRelation(connection), [onIgnoreRelation, connection]);\n\n const editButtonsContent =\n (canRemove || canUpdate) && showControls && !connection.suggested ? (\n <>\n {canUpdate && (\n <SmallIconButtonWithTooltip\n icon={EditIcon}\n size=\"XS\"\n onClick={handleEditRelation}\n tooltipTitle={i18n.text('Edit')}\n />\n )}\n {canRemove && (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n size=\"XS\"\n onClick={handleRemoveRelation}\n tooltipTitle={i18n.text('Remove')}\n />\n )}\n </>\n ) : undefined;\n\n const suggustedButtonsContent = connection.suggested ? (\n <SuggestedButtons\n acceptRelation={handleAcceptRelation}\n ignoreRelation={handleIgnoreRelation}\n size=\"small\"\n disabled={ignored}\n />\n ) : undefined;\n const captionText = ignored ? i18n.text('ignored') : i18n.text('edited');\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.removed]: removed || ignored}\n )}\n >\n <div className={styles.row}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {(edited || ignored) && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({captionText})\n </Typography>\n )}\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n\n <div className={styles.editButtonsContent}>{editButtonsContent}</div>\n {suggustedButtonsContent}\n </div>\n </div>\n );\n }\n);\n\nEditableRelationItem.displayName = 'EditableRelationItem';\n\nexport default EditableRelationItem;\n","import {checkMetadataForDelete, checkMetadataForUpdate, checkRemoved, getRelationType, Mode} from '@reltio/mdm-sdk';\n\nexport const checkRelationPermission = ({metadata, mode, connection, onRemoveRelation, onEditRelation}) => {\n const isEditableMode = mode === Mode.Editing || mode === Mode.Suggesting;\n if (isEditableMode && connection) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n","import {Directions, wrapInArrayIfNeeded, InOutRelation} from '@reltio/mdm-sdk';\n\nexport const getFirstRelationTypeObject = (inRelations: InOutRelation, outRelations: InOutRelation) => {\n const prepareRelation = (direction, relations) => {\n const relationsArr = relations ? wrapInArrayIfNeeded(relations) : [];\n return relationsArr.map((relation) => ({\n type: relation,\n direction: direction === Directions.IN ? Directions.IN : Directions.OUT\n }));\n };\n return prepareRelation(Directions.IN, inRelations).concat(prepareRelation(Directions.OUT, outRelations))[0];\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n arrowIcon: {\n fontSize: '16px',\n marginRight: '6px'\n }\n});\n","import React from 'react';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {checkNew, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n connection: Connection;\n config: RelationsViewConfig;\n showSecondLevel: boolean;\n};\n\nexport const RelationArrowButton = ({onClick, connection, config, showSecondLevel}: Props) => {\n const styles = useStyles();\n const {parentEntityUri} = connection;\n const {contentSecondLevel} = config;\n\n const props = {\n onClick,\n className: styles.arrowIcon\n };\n\n if (parentEntityUri || !contentSecondLevel || checkNew(connection)) {\n return null;\n }\n\n return showSecondLevel ? <ArrowDropDownIcon {...props} /> : <ArrowRightIcon {...props} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n row: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n secondLevelContent: {\n paddingLeft: '24px'\n }\n});\n","import React, {useContext, useMemo} from 'react';\nimport {Connection, ActivityFilter, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useSecondLevelConnections} from '../../hooks/useSecondLevelConnections';\nimport {RelationArrowButton} from '../RelationArrowButton/RelationArrowButton';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {useStyles} from './styles';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {EntitiesMapContext} from '@reltio/components';\n\ntype Props = {\n config: RelationsViewConfig;\n connection: Connection;\n children: (render: () => React.ReactNode) => React.ReactNode;\n};\n\nexport const SecondLevelWrapper = ({config, connection, children}: Props) => {\n const styles = useStyles();\n\n const {showInactive} = useContext(RelationsViewStateContext);\n\n const {\n connections,\n showSecondLevel,\n toggleShowSecondLevel,\n loadRelations,\n loading,\n total\n } = useSecondLevelConnections({\n config,\n connection,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const renderRelationArrowButton = () => {\n return (\n <RelationArrowButton\n onClick={toggleShowSecondLevel}\n connection={connection}\n config={config}\n showSecondLevel={showSecondLevel}\n />\n );\n };\n\n return (\n <>\n {children(renderRelationArrowButton)}\n {showSecondLevel && (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.secondLevelContent}>\n <RelationsContent\n isLoading={loading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n parentEntityUri={connection.entity.entityUri}\n />\n </div>\n </EntitiesMapContext.Provider>\n )}\n </>\n );\n};\n","import {useState, useCallback} from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {\n Connection,\n getRelationsForEntity,\n ActivityFilter,\n GlobalSearchRequestOptions,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\ntype Params = {\n config: RelationsViewConfig;\n connection: Connection;\n relationActivityFilter: ActivityFilter;\n};\n\nexport const useSecondLevelConnections = ({config, connection, relationActivityFilter}: Params) => {\n const dispatch = useDispatch();\n\n const [showSecondLevel, setShowSecondLevel] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const {contentSecondLevel} = config;\n const {entity} = connection;\n\n const connections =\n (useSelector((state) =>\n mdmModule.selectors.getConnectionsWithDraftsByViewId(state, config.id, entity.entityUri)\n ) as Connection[]) || [];\n\n const total = useSelector((state) => mdmModule.selectors.getTotalByViewId(state, config.id, entity.entityUri));\n const {activityFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n\n const loadRelations = useCallback(() => {\n const requestConfig = {\n ...contentSecondLevel,\n returnObjects: true,\n returnDates: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n }\n };\n\n setLoading(true);\n\n getRelationsForEntity(entity.entityUri, [requestConfig]).then((response) => {\n const {connections, total} = response[0];\n\n if (connections) {\n dispatch(\n profile.relations.actions.secondLevelRelationsLoaded({\n connections,\n parentEntityUri: entity.entityUri,\n id: config.id,\n total\n })\n );\n }\n\n setLoading(false);\n });\n }, [config.id, contentSecondLevel, dispatch, entity.entityUri, activityFilter, relationActivityFilter]);\n\n const toggleShowSecondLevel = useCallback(() => {\n if (!showSecondLevel && !connection.connections) {\n loadRelations();\n }\n\n setShowSecondLevel((show) => !show);\n }, [loadRelations, connection.connections, showSecondLevel]);\n\n return {connections, showSecondLevel, toggleShowSecondLevel, loadRelations, loading, total};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px',\n marginLeft: '16px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 0 8px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, partition, evolve, always, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n Connection,\n isTempUri,\n Mode,\n createNewConnectionWithDefaultRelationType,\n checkNew,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {RelationEditor} from '@reltio/components';\nimport EditableRelationItem from '../EditableRelationItem/EditableRelationItem';\nimport {getFirstRelationTypeObject} from '../../helpers/relation';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n noDataText: string;\n connections: Array<Connection>;\n config: RelationsViewConfig;\n mode: Mode;\n parentEntityUri?: string;\n};\n\nconst RelationsEditableContent = ({className, connections = [], config, mode, noDataText, parentEntityUri}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationToAdd = useSelector((state) => mdmModule.selectors.getRelationToAddByViewId(state, config.id));\n const relationsToEdit = useSelector((state) => mdmModule.selectors.getRelationsToEditByViewId(state, config.id));\n const entity = useSelector(mdmModule.selectors.getEntity);\n const checkIfCanAddRelations = useSelector((state) =>\n mdmModule.selectors.getCheckIfCanAddRelations(state, config.content)\n );\n\n const dispatch = useDispatch();\n const styles = useStyles();\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({config, mode, metadata, parentEntityUri});\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n }, [config, mode, metadata, dispatch, parentEntityUri]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n dispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n dispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => profile.relations.selectors.getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = profile.relations.selectors.getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n dispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, dispatch]\n );\n const content = config.content;\n const defaultRelationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const onAcceptRelation = useCallback(\n (connection) => {\n const connectionWithDefaultRelationType = pipe(\n omit(['suggested']),\n evolve({\n relation: {\n relationType: always(defaultRelationTypeObject.type),\n object: evolve({type: always(defaultRelationTypeObject.type), attributes: always(null)})\n }\n })\n )(connection);\n dispatch(profile.relations.actions.addRelation(config.id, connectionWithDefaultRelationType));\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const onIgnoreRelation = useCallback(\n (connection) => {\n dispatch(\n profile.relations.actions.ignoreRelation(config.id, {\n relationType: defaultRelationTypeObject.type,\n relationDirection: defaultRelationTypeObject.direction,\n entityUri: connection.entity.entityUri,\n relationUri: connection.relation.relationUri\n })\n );\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const [newConnections, currentConnections] = partition(checkNew, connections);\n const canAddRelations = entity && checkIfCanAddRelations;\n\n const isEmptyRelationList = newConnections.length === 0 && currentConnections.length === 0;\n\n const getRelationEditableContent = (connection: Connection) => {\n const openedRelation = relationsToEdit.find(\n (openedRelation) => openedRelation?.relation?.relationUri === connection?.relation?.relationUri\n );\n const showControls = !config.allowOnlyCreateNew || checkNew(connection);\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n return openedRelation ? (\n <RelationEditor connection={openedRelation} config={config} mode={mode} metadata={metadata} />\n ) : (\n <EditableRelationItem\n renderRelationArrowButton={renderRelationArrowButton}\n connection={connection}\n metadata={metadata}\n showControls={showControls}\n onRemoveRelation={onRemoveRelation}\n onEditRelation={pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)}\n onAcceptRelation={onAcceptRelation}\n onIgnoreRelation={onIgnoreRelation}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n };\n\n const shouldShowAddRelationButton =\n canAddRelations && (!relationToAdd || (relationToAdd && relationToAdd.parentEntityUri === parentEntityUri));\n\n const shouldShowRelationEditorToAdd = relationToAdd && relationToAdd.parentEntityUri === parentEntityUri;\n\n return (\n <div className={className}>\n {shouldShowAddRelationButton && (\n <Button color=\"primary\" onClick={onAddRelation} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {shouldShowRelationEditorToAdd && (\n <RelationEditor connection={relationToAdd} config={config} mode={mode} metadata={metadata} />\n )}\n {newConnections.map(getRelationEditableContent)}\n {newConnections.length > 0 && currentConnections.length > 0 && <Divider className={styles.divider} />}\n {currentConnections.map(getRelationEditableContent)}\n {isEmptyRelationList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n\nexport default RelationsEditableContent;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n attributesList: {\n paddingLeft: '46px',\n paddingRight: '16px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n }\n}));\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n CollaborationObjectTypes,\n Connection,\n createRelatedObjectUris,\n Entity,\n getActivenessAttributes,\n getAttributesListForReadMode,\n getAttributeValuesUris,\n getRelationAttributesList,\n isEmptyValue,\n Metadata\n} from '@reltio/mdm-sdk';\nimport {CollaborationContext, ReadOnlyAttributesList, RelatedObjectUrisContext} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {isEmpty} from 'ramda';\n\ntype Props = {\n connection: Connection;\n className?: string;\n};\n\nexport const RelationAttributes = ({connection, className}: Props) => {\n const styles = useStyles();\n\n const {relation} = connection;\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n\n const firstLevelRelationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relation?.relationType) as AttributeType[],\n [relation?.relationType, metadata]\n );\n\n const attributeListEntity = useMemo(\n () => ({\n attributes: {\n ...profile.relations.selectors.getRelationAttributesFromConnection(connection)\n },\n ...getActivenessAttributes(connection?.relation || {})\n }),\n [connection]\n );\n\n const attributesList = useMemo(\n () => getAttributesListForReadMode(firstLevelRelationAttrTypes, attributeListEntity as Entity),\n [firstLevelRelationAttrTypes, attributeListEntity]\n );\n\n const showAttributesList = attributesList.filter(({values}) => !isEmptyValue(values)).length > 0;\n\n const objectIds = useMemo(() => getAttributeValuesUris(attributeListEntity.attributes), [attributeListEntity]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n !isEmpty(objectIds) && getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const additionalRelatedObjectUris = useMemo(\n () => createRelatedObjectUris(CollaborationObjectTypes.RELATION, {entityUri: currentEntityUri, connection}),\n [connection, currentEntityUri]\n );\n\n return showAttributesList ? (\n <RelatedObjectUrisContext.Provider value={additionalRelatedObjectUris}>\n <ReadOnlyAttributesList\n className={classnames(styles.attributesList, className)}\n entity={attributeListEntity}\n attrTypes={firstLevelRelationAttrTypes}\n />\n </RelatedObjectUrisContext.Provider>\n ) : (\n <div className={classnames(styles.attributesList, className)}>{i18n.text('No attributes')}</div>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport InfoIconSelected from '@material-ui/icons/InfoRounded';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\n\ntype Props = {\n show: boolean;\n onToggle: () => void;\n className?: string;\n};\n\nexport const ShowDetailsButton = ({show, onToggle, className}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n className={className}\n tooltipTitle={\n show\n ? i18n.text('Hide attributes of the relationship')\n : i18n.text('Show attributes of the relationship')\n }\n tooltipPlacement=\"bottom-end\"\n size=\"XXS\"\n icon={show ? InfoIconSelected : InfoIcon}\n onClick={onToggle}\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string; suggested: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '16px',\n padding: '3px 11px 3px 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n wordBreak: 'break-all',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n showDetails: {\n marginLeft: 'auto',\n paddingRight: '5px'\n },\n attributesList: {\n paddingLeft: '46px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n },\n suggestedWrapper: {\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n marginLeft: 'auto',\n alignItems: 'center',\n '& + $showDetails': {\n marginLeft: '4px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n },\n labelWrapper: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {\n Connection,\n Metadata,\n isActiveObject,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {useStyles} from './styles';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\n\ntype Props = {\n connection: Connection;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nconst RelationItem = memo(({connection, renderRelationArrowButton, acceptRelation, ignoreRelation}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n const {entity, relation} = connection;\n const [showDetails, setShowDetails] = useState(false);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.suggestedWrapper]: isSuggested}\n )}\n >\n <div className={classnames(styles.row, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <div className={styles.labelWrapper}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n </div>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n size=\"small\"\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetails}\n />\n )}\n </div>\n </div>\n {showDetails && <RelationAttributes connection={connection} />}\n </div>\n );\n});\n\nRelationItem.displayName = 'RelationItem';\n\nexport default RelationItem;\n","import {pluck, mean, pipe, defaultTo} from 'ramda';\nimport {Rating} from '@reltio/mdm-sdk';\n\nexport const calcAverageRating = (ratings: Rating[]) => {\n return pipe(pluck('value'), mean, defaultTo(0))(ratings);\n};\n\nexport const getCountOfLikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 5).length;\n};\n\nexport const getCountOfDislikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 1).length;\n};\n\nexport const calcWidthOfLikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfLikes(ratings) / ratings.length) * 100 + '%';\n};\n\nexport const calcWidthOfDislikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfDislikes(ratings) / ratings.length) * 100 + '%';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end'\n },\n averageRating: {\n marginBottom: '7px',\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px',\n color: theme.palette.text.primary\n },\n scale: {\n display: 'flex',\n marginBottom: '6px',\n width: '128px',\n height: '4px'\n },\n likesScale: {\n height: '100%',\n backgroundColor: '#8CC152'\n },\n dislikesScale: {\n height: '100%',\n backgroundColor: 'rgb(255, 112, 112)'\n },\n counts: {\n display: 'flex'\n },\n likesCount: {\n marginRight: '32px'\n },\n count: {\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n icon: {\n marginRight: '4px',\n width: '14px',\n height: '14px',\n color: 'rgba(0,0,0,0.38)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport ThumbUpIcon from '@material-ui/icons/ThumbUp';\nimport ThumbDownIcon from '@material-ui/icons/ThumbDown';\nimport {\n calcAverageRating,\n calcWidthOfDislikesScale,\n calcWidthOfLikesScale,\n getCountOfDislikes,\n getCountOfLikes\n} from '../../../helpers/ratings';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n className?: string;\n};\n\nexport const Ratings = ({ratings, className}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, className)}>\n <Typography className={styles.averageRating}>{calcAverageRating(ratings).toFixed(1)}</Typography>\n <div className={styles.scale}>\n <div className={styles.likesScale} style={{width: calcWidthOfLikesScale(ratings)}} />\n <div className={styles.dislikesScale} style={{width: calcWidthOfDislikesScale(ratings)}} />\n </div>\n <div className={styles.counts}>\n <div className={classnames(styles.likesCount, styles.count)}>\n <ThumbUpIcon className={styles.icon} />\n {getCountOfLikes(ratings)}\n </div>\n <div className={styles.count}>\n <ThumbDownIcon className={styles.icon} />\n {getCountOfDislikes(ratings)}\n </div>\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex'\n },\n button: {\n fontSize: '14px',\n textTransform: 'none',\n color: theme.palette.text.secondary\n },\n likeButton: {\n marginLeft: '-12px',\n marginRight: '8px'\n },\n isActive: {\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {DropDownMenuButton} from '@reltio/components';\nimport {Button as Button} from '@material-ui/core';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n onAgree: () => void;\n onDisagree: (comment: string) => void;\n};\n\nexport const RatingsButtons = ({ratings, onAgree, onDisagree}: Props) => {\n const styles = useStyles();\n\n const username = useSelector(mdmModule.selectors.getUserName) as string;\n const ratingOfCurrentUser = ratings.find(({user}) => user === username);\n\n const menuItems = [\n {\n text: i18n.text('Has left the practice'),\n onClick: () => onDisagree(i18n.text('Has left the practice'))\n },\n {\n text: i18n.text('Has moved away'),\n onClick: () => onDisagree(i18n.text('Has moved away'))\n },\n {\n text: i18n.text('Has passed away'),\n onClick: () => onDisagree(i18n.text('Has passed away'))\n },\n {\n text: i18n.text('Has retired'),\n onClick: () => onDisagree(i18n.text('Has retired'))\n },\n {\n text: i18n.text('Other'),\n onClick: () => onDisagree(i18n.text('Other'))\n }\n ];\n\n return (\n <div className={styles.wrapper}>\n <Button\n onClick={onAgree}\n variant=\"text\"\n size=\"small\"\n className={classnames(styles.button, styles.likeButton, {\n [styles.isActive]: ratingOfCurrentUser?.value === 5\n })}\n >\n Agree\n </Button>\n <DropDownMenuButton\n buttonProps={{\n endIcon: <ArrowDropDownIcon />,\n variant: 'text',\n size: 'small',\n className: classnames(styles.button, {\n [styles.isActive]: ratingOfCurrentUser?.value === 1\n })\n }}\n buttonContent={ratingOfCurrentUser?.value === 1 ? ratingOfCurrentUser.comment : 'Disagree'}\n menuItems={menuItems}\n menuId=\"disagree-dropdown-menu-button\"\n />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {suggested: string}) => ({\n wrapper: {\n padding: '6px 16px 6px'\n },\n entityTypeIcon: {\n marginRight: '16px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '14px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n entityLabelContainer: {\n wordBreak: 'break-all',\n textDecoration: 'none'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n ratings: {\n marginLeft: 'auto'\n },\n showDetailsButton: {\n marginLeft: '16px',\n marginTop: '18px'\n },\n relationAttributes: {\n paddingLeft: '60px'\n },\n suggestedWrapper: {\n padding: '6px 8px 6px 16px',\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n alignSelf: 'center',\n '& + $ratings': {\n marginLeft: '16px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n }\n}));\n","import React, {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n Metadata,\n Connection,\n rateRelation,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {Ratings} from '../Ratings/Ratings';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {RatingsButtons} from '../RatingsButtons/RatingsButtons';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n loadRelations: () => void;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nexport const RelationComplexItem = ({\n connection,\n loadRelations,\n renderRelationArrowButton,\n acceptRelation,\n ignoreRelation\n}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n\n const [showDetails, setShowDetails] = useState(false);\n\n const {entity, relation} = connection;\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityLabel, entityType, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const ratings = relation?.ratings || [];\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n\n const handleAgree = () => {\n rateRelation(relation?.relationUri, {\n comment: '',\n value: 5\n }).then(loadRelations);\n };\n\n const handleDisagree = (comment: string) => {\n rateRelation(relation?.relationUri, {\n comment,\n value: 1\n }).then(loadRelations);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n\n return (\n <div className={classnames(styles.wrapper, {[styles.suggestedWrapper]: isSuggested})}>\n <Box display=\"flex\" minHeight=\"44px\" className={COMMENTS_CONTAINER_VISIBILITY_AREA}>\n <Box display=\"flex\" alignItems=\"center\">\n <Box display=\"flex\" alignItems=\"center\">\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon entityType={entityType} className={styles.entityTypeIcon} />\n </Box>\n <Box display=\"flex\" flexDirection=\"column\">\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n </EntityUriLink>\n {relationLabel && <span className={styles.relationLabel}>{relationLabel}</span>}\n {!isSuggested && (\n <RatingsButtons ratings={ratings} onAgree={handleAgree} onDisagree={handleDisagree} />\n )}\n </Box>\n </Box>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <>\n <Ratings ratings={ratings} className={styles.ratings} />\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetailsButton}\n />\n </>\n )}\n </div>\n </Box>\n {showDetails && <RelationAttributes connection={connection} className={styles.relationAttributes} />}\n </div>\n );\n};\n","import React, {useMemo, useContext, useEffect} from 'react';\nimport {Connection, getRelationshipsObjectIdsForCollaboration, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {CollaborationContext} from '@reltio/components';\nimport RelationItem from './RelationItem/RelationItem';\nimport {RelationComplexItem} from './RelationCompexItem/RelationComplexItem';\nimport {useSuggestedRelations} from '../../hooks/useSuggestedRelations';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\n\ntype Props = {\n className?: string;\n connections: Array<Connection>;\n loadRelations: () => void;\n config?: RelationsViewConfig;\n mainEnityUri?: string;\n};\n\nconst RelationsList = ({className, connections = [], loadRelations, config, mainEnityUri}: Props) => {\n const {isComplex, content} = config;\n const {ignoreRelation, acceptRelation} = useSuggestedRelations(content, loadRelations, mainEnityUri);\n\n const objectIds = useMemo(() => {\n return getRelationshipsObjectIdsForCollaboration(connections);\n }, [connections]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n return (\n <div className={className}>\n {connections.map((connection) => {\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n if (isComplex) {\n return (\n <RelationComplexItem\n loadRelations={loadRelations}\n connection={connection}\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }\n\n return (\n <RelationItem\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n connection={connection}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n })}\n </div>\n );\n};\n\nRelationsList.displayName = 'RelationsList';\n\nexport default RelationsList;\n","import {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n Connection,\n ignoreSuggestedRelation,\n createRelation,\n getRequestErrorMessage,\n Directions,\n RelationsContent\n} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {getFirstRelationTypeObject} from '../helpers/relation';\n\nexport const useSuggestedRelations = (content: RelationsContent, loadRelations: () => void, mainEnityUri: string) => {\n const relationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const dispatch = useDispatch();\n const ignoreRelation = (connection: Connection) => () => {\n const {entity} = connection;\n ignoreSuggestedRelation(mainEnityUri, {\n relatedEntityUri: entity.entityUri,\n relationType: relationTypeObject.type,\n relationDirection: relationTypeObject.direction\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n const acceptRelation = (connection: Connection) => () => {\n const {entity, relation} = connection;\n const {startDate, endDate} = relation;\n const isInDirection = relationTypeObject.direction === Directions.IN;\n const startEntityUri = isInDirection ? entity.entityUri : mainEnityUri;\n const endEntityUri = isInDirection ? mainEnityUri : entity.entityUri;\n createRelation({\n startEntityUri,\n endEntityUri,\n relationType: relationTypeObject.type,\n attributes: null,\n startDate,\n endDate\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n return {\n ignoreRelation,\n acceptRelation\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n list: {\n paddingTop: '8px',\n paddingBottom: '10px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {isEditableMode, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport RelationsEditableContent from '../RelationsEditableContent/RelationsEditableContent';\nimport RelationsList from '../RelationsList/RelationsList';\nimport {useStyles} from './styles';\n\ntype Props = {\n isLoading: boolean;\n config: RelationsViewConfig;\n loadRelations: () => void;\n connections: Connection[];\n total: number;\n parentEntityUri?: string;\n};\n\nexport const RelationsContent = ({isLoading, config, loadRelations, connections, total, parentEntityUri}: Props) => {\n const styles = useStyles();\n\n const {selectors} = mdmModule;\n const entity = useSelector(selectors.getEntity);\n const mode = useSelector(selectors.getMode);\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (isEditableMode(mode)) {\n return (\n <RelationsEditableContent\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n config={config}\n mode={mode}\n noDataText={noDataText}\n parentEntityUri={parentEntityUri}\n />\n );\n }\n\n if (total > 0) {\n return (\n <RelationsList\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n mainEnityUri={entity.uri}\n />\n );\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0\n },\n content: {\n position: 'relative',\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: 0\n },\n pagination: {\n height: '52px',\n flexGrow: 0,\n flexShrink: 0\n }\n});\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {ActivityFilter, Connection, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, EntitiesMapContext, useRelationsLoader} from '@reltio/components';\nimport RelationsHeader from '../RelationsHeader/RelationsHeader';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {ImportDTContext} from '../../contexts/ImportDTContext';\nimport {buildRelationsFilter} from '../../helpers/filters';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {pick} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationsViewConfig;\n className?: string;\n};\n\nconst RelationsView = ({config, className}: Props) => {\n const styles = useStyles();\n\n const {\n page,\n setPage,\n rowsPerPage,\n sortOrder,\n sortOption,\n showInactive,\n searchQuery,\n changeSearchQuery\n } = useContext(RelationsViewStateContext);\n const {selectors} = mdmModule;\n const connections = useSelector((state) =>\n selectors.getConnectionsWithDraftsByViewId(state, config.id)\n ) as Connection[];\n const entity = useSelector(selectors.getEntity);\n const total = useSelector((state) => selectors.getTotalByViewId(state, config.id));\n const mode = useSelector(selectors.getMode);\n const sorting = useMemo(\n () => ({\n order: sortOrder,\n field: sortOption\n }),\n [sortOrder, sortOption]\n );\n\n useEffect(() => {\n changeSearchQuery('');\n }, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const filter = useMemo(() => buildRelationsFilter(searchQuery), [searchQuery]);\n\n const {isLoading, reload: loadRelations} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const importDTContextValue = useMemo(\n () => ({\n reloadRelations: loadRelations,\n config: pick(['content', 'importFromDT', 'maxDtssImport'], config)\n }),\n [loadRelations, config]\n );\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={className}>\n <div className={styles.container}>\n <ImportDTContext.Provider value={importDTContextValue}>\n <RelationsHeader title={config.caption} total={total} />\n </ImportDTContext.Provider>\n <div className={styles.content}>\n <RelationsContent\n isLoading={isLoading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n />\n {total > rowsPerPage && (\n <BasicTablePagination\n classes={{root: styles.pagination}}\n count={total}\n rowsPerPageOptions={[]}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n />\n )}\n </div>\n </div>\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n\nRelationsView.displayName = 'RelationsView';\n\nexport {RelationsView};\n","import {FilterBuilder, Maybe, filterValueToQueryStringWithQuotes} from '@reltio/mdm-sdk';\n\nconst buildRelationsFilter = (searchQuery) => {\n const queryClause = Maybe.fromFalsy(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n return new FilterBuilder().addClause(queryClause).build();\n};\n\nexport {buildRelationsFilter};\n","import {useCallback, useMemo, useState} from 'react';\nimport {RelationsViewConfig, SortOrder} from '@reltio/mdm-sdk';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Option = {\n value: string;\n label: string;\n};\n\nexport type RelationsViewState = {\n searchQuery: string;\n changeSearchQuery: (value: string) => void;\n sortOrder: SortOrder;\n toggleSortOrder: () => void;\n sortOption?: string;\n changeSortOption: (option: string) => void;\n sortOptions: Option[];\n page: number;\n setPage: (page: number) => void;\n rowsPerPage: number;\n showInactive: boolean;\n toggleShowInactive: () => void;\n};\n\nconst useRelationsState = (config: RelationsViewConfig): RelationsViewState => {\n const sortOptions = useMemo(\n () =>\n Object.entries(config.sortOptions || {}).map(([key, value]) => ({\n value: key,\n label: value\n })),\n [config.sortOptions]\n );\n\n const rowsPerPage = Number(config.max) || DEFAULT_ROWS_PER_PAGE;\n const [page, setPage] = useState(0);\n const [sortOrder, setSortOrder] = useState(config.sortOrder || DEFAULT_SORT_ORDER);\n const [sortOption, setSortOption] = useState(sortOptions[0]?.value);\n const [searchQuery, setSearchQuery] = useState('');\n const [showInactive, setShowInactive] = useState(DEFAULT_SHOW_INACTIVE);\n\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n const toggleSortOrder = useCallback(() => {\n setPage(0);\n setSortOrder((order) => {\n return order === 'asc' ? 'desc' : 'asc';\n });\n }, []);\n\n const changeSortOption = useCallback((option: string) => {\n setPage(0);\n setSortOption(option);\n }, []);\n\n const changeSearchQuery = useCallback((value: string) => {\n setPage(0);\n setSearchQuery(value);\n }, []);\n\n return {\n searchQuery,\n changeSearchQuery,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions,\n page,\n setPage,\n rowsPerPage,\n showInactive,\n toggleShowInactive\n };\n};\n\nexport default useRelationsState;\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../components/types';\n\nexport const TableAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n visibleColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n onToggleFilters: () => void;\n onSort: (payload) => void;\n onFilter: (payload) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n showTable: boolean;\n filters: {\n [key: string]: {\n filter: string;\n values: [string];\n };\n };\n sorting: {\n order: 'desc' | 'asc';\n field: string;\n };\n attributeType: AttributeType;\n allColumnsData: ColumnsDataType;\n }>(null);\n\nTableAttributeContext.displayName = 'TableAttributeContext';\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles(() => ({\n tableContainer: {\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)',\n marginBottom: '15px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > div': removedStyle\n }\n}));\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import {assoc, chain, isNil, map, path, pipe, prop, reduce, reject, slice, split, uniqBy} from 'ramda';\nimport {\n AttributeNode,\n AttributeType,\n attributeUriToSearchUri,\n flatAttributeTreeNode,\n getAttrDataTypeDefinition,\n getAttributeTypesTree,\n getOvAttributeValuesByPath,\n isAttributeSearchUri,\n Metadata,\n SearchParent\n} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from '../components/AttributeTable/HeadCellRenderer';\nimport {DefaultCellValueRenderer} from '@reltio/components';\n\nexport const getColumnsDataFromAttributeNode = (attrNode: AttributeNode, parents: SearchParent[]) => {\n const {uri, label, children, name} = attrNode;\n return reject(isNil, {\n id: attributeUriToSearchUri(uri, parents),\n label,\n dataTypeDefinition: getAttrDataTypeDefinition(attrNode),\n children: children?.map((childNode) => getColumnsDataFromAttributeNode(childNode, parents.concat({name})))\n });\n};\n\nexport const getColumnsData = (metadata: Metadata, attributeType: AttributeType) =>\n pipe(\n (metadata: Metadata, attributeType: AttributeType) => getAttributeTypesTree(metadata, attributeType),\n map((attrNode: AttributeNode) => getColumnsDataFromAttributeNode(attrNode, [attributeType])),\n chain(flatAttributeTreeNode),\n uniqBy(prop('id'))\n )(metadata, attributeType);\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getAttributeValues = (attrPath, value) => pipe(path(['value']), getOvAttributeValuesByPath(attrPath))(value);\n\nconst getRowValueByColumnId = (columnId, value) => {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getAttributeValues(attrPath, value);\n};\n\nexport const getBasicTableRowsData = (values, columnsData) =>\n values.map((value) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, value), acc), {}),\n assoc('value', value)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (isAttributeSearchUri(columnId)) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: DefaultCellValueRenderer\n});\n\nexport const getBasicTableColumnsData = map(getColumnDataByColumnId);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n header: {\n padding: '0 4px 0 16px'\n }\n}));\n","import React from 'react';\nimport {\n FacetViewHeader,\n ColumnsSettings,\n FilterButton,\n VerticalDivider,\n ExpandableSearchInput\n} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {ColumnsDataType} from '../types';\n\ntype Props = {\n title: string;\n total: number;\n columnsData: ColumnsDataType;\n selectedColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n searchQuery: string;\n onChangeSearchQuery: (val: string) => void;\n filtersEnabled: boolean;\n onToggleFilters: () => void;\n};\nconst AttributeTableHeader = ({\n title,\n searchQuery,\n onChangeSearchQuery,\n filtersEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n onChangeColumns\n}: Props) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <ExpandableSearchInput query={searchQuery} onChange={onChangeSearchQuery} />\n <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </FacetViewHeader>\n );\n};\n\nexport default AttributeTableHeader;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport {withTableContext} from '@reltio/components';\n\ntype Props = {\n cell: {values: string[]};\n isSorted: boolean;\n CellValueRenderer: React.ElementType;\n isRemoved: boolean;\n};\nconst RowCellRenderer = ({cell, CellValueRenderer, isRemoved, isSorted, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({deletedUris}, {rowValue: {value}}) => ({\n isRemoved: Boolean(deletedUris.find((uri) => value.uri === uri))\n}))(RowCellRenderer);\n","import React from 'react';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\ntype Props = {\n onEdit?: () => void;\n onRemove?: () => void;\n};\n\nexport const EditButtons = ({onEdit, onRemove}: Props) => (\n <>\n {onEdit && (\n <SmallIconButtonWithTooltip tooltipTitle={i18n.text('Edit')} icon={EditIcon} size=\"L\" onClick={onEdit} />\n )}\n {onRemove && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Remove')}\n icon={DeleteIcon}\n size=\"L\"\n onClick={onRemove}\n />\n )}\n </>\n);\n\nexport default EditButtons;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport RowCellRenderer from './RowCellRenderer';\nimport {BasicTable, useConfigPermissions} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from '../../helpers/tableAttributeHelpers';\nimport {useStyles} from './styles';\nimport {\n AttributeValue,\n checkCanEditAttribute,\n checkCanDeleteAttribute,\n SearchFilter,\n isReltioCrosswalk,\n Entity,\n isEditableMode as checkIsEditableMode,\n AttributeItem,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../types';\nimport EditButtons from './EditButtons';\nimport {useSelector} from 'react-redux';\nimport {path, prop, pipe} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport mdmModule from '@reltio/mdm-module';\n\nconst MAX_HEIGHT = 477;\n\ntype Props = {\n columnsData: ColumnsDataType;\n values: AttributeValue[];\n filters?: {\n [key: string]: SearchFilter;\n };\n onFilter?: (payload) => void;\n sorting?:\n | {\n field: string;\n order: string;\n }\n | undefined;\n onSort?: (payload) => void;\n config: TableAttributeViewConfig;\n onEdit: React.Dispatch<AttributeValue>;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n deletedUris: string[];\n};\n\nconst AttributeTable = ({\n columnsData,\n values,\n sorting,\n onSort,\n filters,\n onFilter,\n config,\n onEdit,\n onDeleteAttribute,\n deletedUris\n}: Props) => {\n const tableRowsData = useMemo(() => getBasicTableRowsData(values, columnsData), [values, columnsData]);\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const {attributeType} = useContext(TableAttributeContext);\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n\n const {canUpdate, canDelete} = useConfigPermissions();\n\n const checkCanEdit = (attributeValue: AttributeValue) =>\n canUpdate(config) &&\n checkCanEditAttribute({\n attributeType,\n mode,\n attributeValue,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n const checkCanRemove = (attributeValue: AttributeValue) =>\n canDelete(config) &&\n checkCanDeleteAttribute({\n attributeType,\n mode,\n attributeValue,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n\n const hideRightContent = useMemo(\n () =>\n typeof hoverRowIndex === 'number' && isEditableMode\n ? deletedUris.includes(pipe(path([hoverRowIndex]), prop('uri'))(values))\n : true,\n [hoverRowIndex, deletedUris, values, isEditableMode]\n );\n const canRemove = typeof hoverRowIndex === 'number' && checkCanRemove(path([hoverRowIndex], values));\n const canEdit = typeof hoverRowIndex === 'number' && checkCanEdit(path([hoverRowIndex], values));\n\n const handleEditAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canEdit) return;\n onEdit(attributeValue);\n }, [onEdit, hoverRowIndex, values, canEdit]);\n\n const handleRemoveAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canRemove) return;\n const attribute: AttributeItem = {\n parentUri: entityUri,\n attributeType,\n uri: attributeValue.uri,\n value: attributeValue\n };\n onDeleteAttribute(attribute);\n setHoverRowIndex(null);\n }, [hoverRowIndex, values, onDeleteAttribute, canRemove, attributeType, entityUri]);\n\n const hoveredRowRightContent =\n !hideRightContent && (canRemove || canEdit) ? (\n <EditButtons\n onEdit={canEdit ? handleEditAttribute : undefined}\n onRemove={canRemove ? handleRemoveAttribute : undefined}\n />\n ) : undefined;\n const context = useMemo(() => ({deletedUris}), [deletedUris]);\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n autosizing\n maxHeight={MAX_HEIGHT}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n resizeDebounceDelay={150}\n renderRowCell={renderRowCell}\n onRowHover={setHoverRowIndex}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n context={context}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n />\n </div>\n );\n};\n\nexport default AttributeTable;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: '0 8px 10px',\n\n '& > button': {\n fontSize: '14px',\n lineHeight: '16px',\n marginLeft: '8px',\n padding: '10px 8px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n }\n }\n}));\n","import {Button as Button} from '@material-ui/core';\nimport React, {useCallback, useContext} from 'react';\nimport {useStyles} from './styles';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {AttributeValue, Entity, isTempUri, getAttributeOwnError, AttributeItem} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {EditableAttribute, ViewIdContext} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n hasChanges: boolean;\n onChangeAttribute: (attribute: AttributeItem) => void;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n onCancel: (attributeValue: AttributeValue) => void;\n onApply: (attributeValue: AttributeValue) => void;\n attributeValue: AttributeValue;\n};\n\nexport const AttributeEditing = ({\n onChangeAttribute,\n onCancel,\n onApply,\n onDeleteAttribute,\n hasChanges,\n attributeValue\n}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const {attributeType} = useContext(TableAttributeContext);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const showEmptyEditors = isTempUri(entityUri);\n\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, entityUri, attributeType)\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n return (\n <>\n <EditableAttribute\n expanded\n attributeValue={attributeValue}\n showEmptyEditors={showEmptyEditors}\n onDeleteAttribute={onDeleteAttribute}\n onDeactivateError={onDeactivateError}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n mode={mode}\n crosswalks={modifiedEntity.crosswalks}\n errors={errors}\n attributeType={attributeType}\n ownError={getAttributeOwnError(attributeValue, null, attributeType.uri, errors)}\n />\n <div className={styles.actionButtons}>\n <Button\n onClick={() => {\n onCancel(attributeValue);\n }}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n color=\"primary\"\n disabled={!hasChanges}\n onClick={() => {\n onApply(attributeValue);\n }}\n >\n {i18n.text('Apply')}\n </Button>\n </div>\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n flex: 1,\n overflow: 'auto'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n color: 'rgba(0,0,0,0.54)'\n },\n\n tableContainer: {\n height: '477px',\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n\n header: {\n padding: '0 4px 0 16px'\n },\n\n addButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n padding: '4px 16px'\n }\n}));\n","import {useCallback, useContext, useState, useMemo, useEffect} from 'react';\nimport {\n AttributeValue,\n createNewAttribute,\n Entity,\n getAttributeSource,\n isEditableMode as checkIsEditableMode,\n NestedAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, pathOr, pipe, map, prop, equals, both, not, without, filter} from 'ramda';\nimport {TableAttributeContext} from '../../../contexts/TableAttributeContext';\nimport {isTempUri, createDefaultValues} from '@reltio/mdm-sdk';\n\nconst emptyArray = [];\n\nexport const useEditableAttribute = () => {\n const [newAttributeUri, setNewAttributeUri] = useState<string>();\n const [originalValues, setOriginalValues] = useState<AttributeValue[]>([]);\n const mode = useSelector(mdmModule.selectors.getMode);\n\n useEffect(() => {\n setOriginalValues([]);\n setNewAttributeUri(null);\n }, [mode]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const {attributeType, values} = useContext(TableAttributeContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => {\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n },\n [viewId, dispatch]\n );\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onAdd = useCallback(() => {\n const newAttribute = createNewAttribute({\n parentUri: entityUri,\n attributeType\n });\n setNewAttributeUri(newAttribute.uri);\n onChangeAttribute({\n ...newAttribute,\n value: createDefaultValues({\n attributeTypes: attributeType.attributes,\n parentUri: newAttribute.uri,\n mode,\n metadata\n }),\n attributeType\n });\n }, [entityUri, attributeType]);\n\n const onStartEditing = useCallback(\n (attributeValue: AttributeValue) => {\n setOriginalValues((prev) => {\n if (!prev.find(propEq('uri', attributeValue.uri))) {\n return [...prev, attributeValue];\n }\n return prev;\n });\n },\n [setOriginalValues]\n );\n\n const onCancel = useCallback(\n (attributeValue: AttributeValue) => {\n const editingValueOriginal = originalValues.find(propEq('uri', attributeValue.uri));\n if (editingValueOriginal) {\n const attributeItem = {\n ...attributeValue,\n value: editingValueOriginal,\n attributeType,\n uri: attributeValue.uri\n };\n setOriginalValues((prev) => without([editingValueOriginal], prev));\n onChangeAttribute(attributeItem);\n } else {\n const attributeItem = {\n value: attributeValue,\n attributeType,\n uri: attributeValue.uri\n };\n setNewAttributeUri(null);\n onDeleteAttribute(attributeItem);\n }\n },\n [onDeleteAttribute, onChangeAttribute, setOriginalValues, originalValues]\n );\n\n const onApply = useCallback(\n (attributeValue: AttributeValue) => {\n setNewAttributeUri(null);\n setOriginalValues((prev) => {\n const original = prev.find(propEq('uri', attributeValue.uri));\n return original ? without([original], prev) : prev;\n });\n },\n [setOriginalValues, setNewAttributeUri]\n );\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const isEditableMode = checkIsEditableMode(mode);\n const attributeSource = getAttributeSource(attributeType);\n\n const modifiedEntityValues: NestedAttributeValue[] = pathOr(\n emptyArray,\n [attributeSource, attributeType?.name],\n modifiedEntity\n );\n\n const modifiedValues = useMemo(() => {\n const newValues = modifiedEntityValues.filter(\n pipe(prop('uri'), both(isTempUri, pipe(equals(newAttributeUri), not)))\n );\n\n const oldValues = map(\n (originalValue) => modifiedEntityValues.find(propEq('uri', originalValue.uri)) || originalValue\n )(values);\n return [...newValues, ...oldValues].map((value) => originalValues.find(propEq('uri', value.uri)) ?? value);\n }, [modifiedEntityValues, originalValues, newAttributeUri, values]);\n\n const deletedUris = useMemo(\n () =>\n isEditableMode\n ? pipe(\n map(prop('uri')),\n filter((uri) => !modifiedEntityValues.find(propEq('uri', uri)))\n )(values)\n : [],\n [modifiedEntityValues, values]\n );\n\n const editingValues = modifiedEntityValues.filter(\n ({uri}) => uri === newAttributeUri || originalValues.find(propEq('uri', uri))\n );\n\n const checkHasChanges = (value) => originalValues.find(propEq('uri', value.uri)) !== value;\n\n return {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n };\n};\n","import React, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n BasicView,\n BasicTablePagination,\n LinearLoadIndicator,\n FacetViewHeader,\n useConfigPermissions\n} from '@reltio/components';\nimport {propEq} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport AttributeTableHeader from '../AttributeTableHeader/AttributeTableHeader';\nimport AttributeTable from '../AttributeTable/AttributeTable';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {AttributeEditing} from '../AttributeEditing/AttributeEditing';\n\nimport {useStyles} from './styles';\nimport {\n checkCanCreateAttribute,\n isEditableMode as checkIsEditableMode,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useEditableAttribute} from './hooks/useEditableAttribute';\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const TableAttributeView = ({config, className}: Props) => {\n const {caption, max} = config;\n const styles = useStyles();\n\n const {\n values,\n page,\n setPage,\n isLoading,\n searchQuery,\n setSearchQuery,\n visibleColumns,\n onFilter,\n onSort,\n onToggleFilters,\n onChangeColumns,\n filters,\n sorting,\n totalVisibleValues,\n hasPaging,\n attributeType,\n showTable,\n allColumnsData\n } = useContext(TableAttributeContext);\n\n const {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n } = useEditableAttribute();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n\n const preparedValues = isEditableMode ? modifiedValues : values;\n\n const {canCreate: hasConfigToCreate} = useConfigPermissions();\n\n const canCreate =\n hasConfigToCreate(config) &&\n attributeType &&\n checkCanCreateAttribute({attributeType, mode}) &&\n !editingValues.length;\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))),\n [visibleColumns, allColumnsData]\n );\n\n return (\n <BasicView className={classnames(styles.root, className)}>\n {showTable ? (\n <>\n <AttributeTableHeader\n title={caption}\n total={totalVisibleValues}\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n searchQuery={searchQuery}\n onChangeSearchQuery={setSearchQuery}\n filtersEnabled={!!filters}\n onToggleFilters={onToggleFilters}\n />\n <div style={{position: 'relative'}}>\n {isEditableMode && (\n <div className={styles.editor}>\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.addButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {editingValues.map((value) => (\n <AttributeEditing\n key={value.uri}\n attributeValue={value}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n onCancel={onCancel}\n onApply={onApply}\n hasChanges={checkHasChanges(value)}\n />\n ))}\n </div>\n )}\n {visibleColumnsData.length > 0 && (\n <AttributeTable\n columnsData={visibleColumnsData}\n config={config}\n values={preparedValues}\n filters={filters}\n onFilter={onFilter}\n sorting={sorting}\n onSort={onSort}\n onEdit={onStartEditing}\n onDeleteAttribute={onDeleteAttribute}\n deletedUris={deletedUris}\n />\n )}\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n rowsPerPageOptions={[]}\n rowsPerPage={max}\n page={page}\n onChangePage={setPage}\n />\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </>\n ) : (\n <>\n <FacetViewHeader title={caption} className={styles.header} />\n <Typography className={styles.noData}>{i18n.text('No data')}</Typography>\n </>\n )}\n </BasicView>\n );\n};\n","import {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {pick, prop} from 'ramda';\nimport {Entity, getPathsTree, isTempUri, updateTreesWithNewEntity} from '@reltio/mdm-sdk';\nimport {useDidUpdateEffect, useSafePromise} from '@reltio/components';\nimport {Response, Node} from '../types';\n\nlet nodeCounter = 0;\nexport const generateId = () => nodeCounter++;\n\nconst processResponse = (response: Response) => {\n const fakeRoot = {\n children: [] as Node[],\n nodeId: generateId()\n };\n if (response.parentPaths) {\n for (let i = 0; i < response.parentPaths.length; i++) {\n const path = response.parentPaths[i];\n let nextRoot = fakeRoot;\n for (let j = path.length - 1; j >= 0; j--) {\n const nextParent = path[j];\n const entity = response.entities[nextParent.entityUri];\n const isRoot = j === path.length - 1;\n const node: Node = {\n entity,\n children: [],\n nodeId: generateId(),\n expanded: true,\n rootIndex: isRoot ? i + 1 : undefined\n };\n if (isRoot) {\n node.root = isRoot;\n }\n nextRoot.children.push(node);\n nextRoot = node;\n }\n }\n }\n return fakeRoot.children;\n};\nexport const useLoadPaths = (entityUri: string, graphUri: string) => {\n const safePromise = useSafePromise();\n const [treeData, setTreeData] = useState<Node[]>([]);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n useDidUpdateEffect(() => {\n const forest = treeData\n .map((tree, index) => ({tree, index}))\n .reduce((acc, tree) => ({...acc, [tree.index]: {root: tree.tree}}), {});\n const newTrees = updateTreesWithNewEntity(pick(['uri', 'label', 'secondaryLabel', 'type'], entity), forest);\n setTreeData(newTrees.map(prop('root')));\n }, [entity?.updatedTime]);\n useEffect(() => {\n if (!isTempUri(entityUri)) {\n safePromise(getPathsTree({uri: entityUri, graphUri}))\n .then(processResponse)\n .then(setTreeData)\n .catch((e) => {\n console.warn(e);\n });\n }\n return () => {\n setTreeData([]);\n };\n }, [entityUri, graphUri, safePromise]);\n return {treeData, setTreeData};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n fontSize: '13px',\n display: 'flex',\n paddingTop: '6px',\n position: 'relative'\n },\n title: {\n flexGrow: 1,\n minHeight: '15px',\n color: theme.palette.secondary.main,\n lineHeight: '15px'\n },\n link: {\n cursor: 'pointer',\n color: theme.palette.secondary.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 {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n dragHandleContainer: {\n position: 'relative',\n width: '100%',\n height: 'inherit'\n },\n dragHandleVisibilityArea: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '24px',\n zIndex: 11,\n '&:hover $dragHandle': {\n visibility: 'visible'\n },\n '.react-grid-item.static &:hover $dragHandle': {\n visibility: 'hidden'\n }\n },\n dragHandle: {\n position: 'absolute',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n top: '-3px',\n zIndex: 11,\n cursor: 'move',\n visibility: 'hidden'\n },\n dragIcon: {\n transform: 'translateX(-50%) rotate(90deg)',\n color: 'rgba(0, 0, 0, 0.3)'\n }\n});\n","import React, {ComponentType} from 'react';\nimport classnames from 'classnames';\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\n\nimport {useStyles} from './styles';\n\nconst withDragHandle = <P extends Record<string, unknown>>(Component: ComponentType<P>) => {\n const WithDragHandle = (props: P) => {\n const styles = useStyles();\n return (\n <div className={styles.dragHandleContainer}>\n <div className={styles.dragHandleVisibilityArea}>\n <div className={classnames('viewDraggableHandle', styles.dragHandle)}>\n <DragIndicatorIcon className={styles.dragIcon} />\n </div>\n </div>\n <Component {...props} />\n </div>\n );\n };\n\n WithDragHandle.displayName = 'WithDragHandle';\n return WithDragHandle;\n};\n\nexport default withDragHandle;\n","import React, {ComponentType} from 'react';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, ErrorBoundary} from '@reltio/components';\n\nconst withErrorBoundary = <P extends Record<string, unknown>>(Component: ComponentType<P>) => {\n const WithErrorBoundary = (props: P) => {\n return (\n <ErrorBoundary\n error={\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.ERROR}\n text=\"\"\n secondaryText={i18n.text('Something went wrong')}\n variant={EMPTY_STATE_VARIANTS.small}\n />\n }\n >\n <Component {...props} />\n </ErrorBoundary>\n );\n };\n\n WithErrorBoundary.displayName = 'WithErrorBoundary';\n return WithErrorBoundary;\n};\n\nexport default withErrorBoundary;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n stubView: {\n padding: '20px'\n },\n fullHeight: {\n height: '100%'\n },\n component: {\n boxSizing: 'border-box',\n overflow: 'auto',\n boxShadow: 'none',\n borderRadius: 'unset'\n }\n});\n","import {useEffect, useState} from 'react';\nimport {both, gt, lt, path, pipe} from 'ramda';\nimport {resolve} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nconst filterWrongLat = pipe(path(['point', 'lat']), both(gt(90), lt(-90)));\n\nexport const useMarkers = (entity, metadata, mapKey) => {\n const [markers, setMarkers] = useState([]);\n const [loading, setLoading] = useState(true);\n const safePromise = useSafePromise();\n useEffect(() => {\n setLoading(true);\n safePromise(resolve(metadata, [entity], mapKey))\n .then((markers) => {\n setMarkers(markers.filter(filterWrongLat));\n })\n .catch(() => {\n setMarkers([]);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [entity, metadata, mapKey, safePromise]);\n\n return {markers, loading};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n fullHeight: {\n height: '100%'\n },\n fullscreenBtn: {\n position: 'absolute',\n right: '5px',\n top: '5px',\n zIndex: 100\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n caption: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport useStyles from './styles';\n\ntype ImageLineCaptionProps = {\n totalImages: number;\n};\n\nexport const ImageLineCaption = ({totalImages}: ImageLineCaptionProps) => {\n const styles = useStyles();\n const photoWord = totalImages > 1 ? i18n.text('photos') : i18n.text('photo');\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {`${totalImages} ${photoWord}`}\n </Typography>\n );\n};\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, pathOr} from 'ramda';\nimport {EditableImageAttributesLine} from '@reltio/components';\nimport {AttributeType, Entity, Paging, AttributeItem, ImageAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {IMAGE_SIZE} from '../ImageAttributeView';\nimport {ImageLineCaption} from '../ImageLineCaption/ImageLineCaption';\n\ntype ImageAttributeViewEditableContentProps = {\n config: ImageAttributeViewConfig;\n attributeType: AttributeType;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nexport const ImageAttributeViewEditableContent = ({\n config,\n attributeType,\n paging,\n requestNextPageOfAttributeValues\n}: ImageAttributeViewEditableContentProps) => {\n const dispatch = useDispatch();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const modifiedEntityValues = pathOr([], ['attributes', attributeType.name], modifiedEntity);\n const viewId = config.id;\n\n const onChangeAttribute = (params: AttributeItem) =>\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n\n const onDeleteAttribute = (params: AttributeItem) =>\n pipe(profile.actions.removeAttribute, dispatch)({...params, viewId});\n\n return (\n <>\n <EditableImageAttributesLine\n attributeValues={modifiedEntityValues}\n attributeType={attributeType}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={modifiedEntity.uri}\n onChangeAttribute={onChangeAttribute}\n imageSize={IMAGE_SIZE}\n paging={paging}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n />\n <ImageLineCaption totalImages={modifiedEntityValues.length} />\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: '8px 16px'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pathOr, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {BasicView, FacetViewHeader, ImageAttributesLine} from '@reltio/components';\nimport {findAttributeTypeByUri, isEditableMode, ImageAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {ImageAttributeViewEditableContent} from './ImageAttributeViewEditableContent/ImageAttributeViewEditableContent';\nimport {ImageLineCaption} from './ImageLineCaption/ImageLineCaption';\nimport useStyles from './styles';\n\ntype ImageAttributeViewProps = {\n config: ImageAttributeViewConfig;\n className?: string;\n};\n\nexport const IMAGE_SIZE = {\n imageMargin: 4,\n imageWidth: 162,\n imageHeight: 162\n};\n\nexport const ImageAttributeView = ({config, className}: ImageAttributeViewProps) => {\n const {attributeUri} = config;\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const entity = useSelector(mdmModule.selectors.getEntityWithDiff);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const attributeType = findAttributeTypeByUri(metadata, attributeUri);\n const entityValues = pathOr([], ['attributes', attributeType?.name], entity);\n const paging = path(['attributes', 'paging', attributeUri], entity);\n const totalValues = entityValues.length;\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const requestNextPageOfAttributeValues = useCallback(\n (payload: RequestNextPageOfAttributeValuesPayload) =>\n dispatch(profile.actions.requestNextPageOfAttributeValues(payload)),\n [dispatch]\n );\n\n const renderContent = () => {\n if (attributeType) {\n if (isEditableMode(mode)) {\n const props = {\n attributeType,\n config,\n paging,\n requestNextPageOfAttributeValues\n };\n return <ImageAttributeViewEditableContent {...props} />;\n }\n if (totalValues > 0) {\n const props = {\n attributeValues: entityValues,\n attributeType,\n imageSize: IMAGE_SIZE,\n paging,\n parentUri: entity.uri,\n requestNextPageOfAttributeValues\n };\n return (\n <>\n <ImageAttributesLine {...props} />\n <ImageLineCaption totalImages={totalValues} />\n </>\n );\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n return (\n <BasicView className={className}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.container}>{renderContent()}</div>\n </BasicView>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n matchesContainer: {\n position: 'relative'\n },\n footer: {\n display: 'flex',\n alignItems: 'end',\n flexGrow: 1,\n justifyContent: 'flex-start',\n borderTop: '1px solid rgba(0,0,0, 0.12)',\n padding: '8px 16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n noData: {\n paddingLeft: '16px',\n paddingBottom: '16px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n }\n}));\n","import {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {getActionPermissionForMatch, Match, ProfilePotentialMatchesViewConfig} from '@reltio/mdm-sdk';\nimport React, {useCallback, useContext, useMemo} from 'react';\nimport {ActionButtonMode, MergeButton, NotMatchButton, ViewIdContext} from '@reltio/components';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onStartRequest: () => void;\n onFinishRequest: () => void;\n};\nexport const ActionButtons = ({config, match, onStartRequest, onFinishRequest}: Props) => {\n const dispatch = useDispatch();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const {canMerge, canMark} = getActionPermissionForMatch(metadata, config, match.object, entity, match.matchRules);\n const entities = useMemo(() => {\n return [match.object];\n }, [match.object]);\n\n const actionButtonProps = {\n entity,\n entities,\n mode: ActionButtonMode.iconButton,\n onStartRequest\n };\n const viewId = useContext(ViewIdContext);\n const onMergeFinish = useCallback(() => {\n onFinishRequest();\n dispatch(profile.entity.actions.loadEntity({viewId, uri: entity.uri}));\n }, [dispatch, entity.uri, onFinishRequest, viewId]);\n return (\n <>\n {canMerge && <MergeButton {...actionButtonProps} onFinishRequest={onMergeFinish} />}\n {canMark && <NotMatchButton {...actionButtonProps} onFinishRequest={onFinishRequest} />}\n </>\n );\n};\n","import {\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n CommentsContainer,\n ProfileMatchCard,\n useMatchesLoader\n} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n Match,\n ProfilePotentialMatchesViewConfig\n} from '@reltio/mdm-sdk';\nimport {ActionButtons} from './ActionButtons';\nimport React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = Pick<ReturnType<typeof useMatchesLoader>, 'entitiesMap'> & {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onFinishRequest: () => void;\n onStartRequest: () => void;\n};\n\nexport const MatchCard = ({config, entitiesMap, match, onFinishRequest, onStartRequest}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n return (\n <ProfileMatchCard\n match={match}\n entity={entity}\n entitiesMap={entitiesMap}\n metadata={metadata}\n className={COMMENTS_CONTAINER_VISIBILITY_AREA}\n >\n <CommentsContainer\n uri={createObjectIdForPM(entity.uri, match.object.uri)}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: match.object.uri\n })}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n />\n <ActionButtons\n match={match}\n config={config}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n />\n </ProfileMatchCard>\n );\n};\n","import React, {useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {isEmpty, map} from 'ramda';\nimport {Link as Link} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n BasicView,\n CollaborationContext,\n EntitiesMapContext,\n FacetViewHeader,\n LinearLoadIndicator,\n useMatchesLoader,\n ViewIdContext\n} from '@reltio/components';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n getEntityUriForLink,\n getEntityUriFromMatchObject,\n getPotentialMatchesObjectIdsForCollaboration,\n Order,\n ProfilePotentialMatchesViewConfig\n} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\nimport {MatchCard} from './MatchCard';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n className?: string;\n};\n\nexport const DEFAULT_MATCHES_LIMIT = 3;\nexport const DEFAULT_OPTIONS = {\n showTransitiveMatches: true,\n showInactiveEntities: false\n};\nexport const DEFAULT_SORTING = {order: Order.asc, field: 'score'};\nenum ComponentStates {\n Loading,\n NoData,\n Loaded\n}\nexport const ProfilePotentialMatchesView = ({config, className}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = getEntityUriForLink(entity);\n\n const [isLoading, setIsLoading] = useState(false);\n const turnOnDisableSpinner = useCallback(() => {\n setIsLoading(true);\n }, []);\n const turnOffDisableSpinner = useCallback(() => {\n setIsLoading(false);\n }, []);\n\n const {matches, entitiesMap, loadMatches, total} = useMatchesLoader({\n enabled: !!entityUri,\n entity,\n options: DEFAULT_OPTIONS,\n filter: '',\n page: 0,\n sorting: DEFAULT_SORTING,\n rowsPerPage: DEFAULT_MATCHES_LIMIT,\n onStartLoading: turnOnDisableSpinner,\n onFinishLoading: turnOffDisableSpinner\n });\n const onFinishMatchAction = useCallback(() => {\n loadMatches();\n }, [loadMatches]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const openPotentialMatchPerspective = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'potentialMatches', viewId}));\n }, [dispatch, viewId]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, map(getEntityUriFromMatchObject, matches)),\n [entityUri, matches]\n );\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const showSeeAll = total > DEFAULT_MATCHES_LIMIT && !isEmpty(matches);\n const getComponentState = () => {\n if (isLoading) {\n return ComponentStates.Loading;\n }\n if (isEmpty(matches)) {\n return ComponentStates.NoData;\n }\n return ComponentStates.Loaded;\n };\n const state = getComponentState();\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={classnames(styles.root, className)}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.matchesContainer}>\n {state === ComponentStates.Loading && <LinearLoadIndicator />}\n {state === ComponentStates.NoData && (\n <Typography className={styles.noData}>{i18n.text('No matches found')}</Typography>\n )}\n {state === ComponentStates.Loaded &&\n matches.map((match) => (\n <MatchCard\n config={config}\n entitiesMap={entitiesMap}\n match={match}\n onFinishRequest={onFinishMatchAction}\n onStartRequest={turnOnDisableSpinner}\n key={match.object.uri}\n />\n ))}\n </div>\n {showSeeAll && (\n <>\n <div className={styles.footer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n onClick={openPotentialMatchPerspective}\n underline=\"none\"\n >\n {i18n.text('See all')}\n </Link>\n </div>\n </>\n )}\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n","import React, {lazy} from 'react';\nimport {Store} from 'redux';\nimport {\n ProfileViewConfig,\n ProfileViewTypes,\n AttributeViewConfig,\n EntityMapViewConfig,\n ProfilePotentialMatchesViewConfig,\n RelationsViewConfig,\n ImageAttributeViewConfig,\n SingleAttributeViewConfig,\n HierarchyPathsViewConfig,\n HierarchyTreeViewConfig,\n CustomActionViewConfig\n} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {ProfileAttributesView} from '../ProfileAttributesView/ProfileAttributesView';\nimport {ProfileSingleAttributeView} from '../ProfileSingleAttributeView/ProfileSingleAttributeView';\nimport {ProfileRelationsView} from '../ProfileRelationsView/ProfileRelationsView';\nimport {ProfileTableAttributeView} from '../ProfileTableAttributeView/ProfileTableAttributeView';\nimport {HierarchyPathsView} from '../HierarchyPathsView';\nimport {CustomView} from '../Sandbox/CustomView';\nimport withDragHandle from './HOCs/withDragHandle';\nimport withErrorBoundary from './HOCs/withErrorBoundary';\nimport {StubView} from './StubView';\nimport EntityMapView from '../EntityMapView/EntityMapView';\nimport {ImageAttributeView} from '../ImageAttributeView/ImageAttributeView';\nimport {ProfilePotentialMatchesView} from '../ProfilePotentialMatchesView/ProfilePotentialMatchesView';\n\nconst wrapView = <P extends unknown>(component: P): P => pipe(withErrorBoundary, withDragHandle)(component);\n\nconst WrappedStubView = wrapView(StubView);\nexport const WrappedProfileAttributesView = wrapView(ProfileAttributesView);\nexport const WrappedProfileSingleAttributeView = wrapView(ProfileSingleAttributeView);\nexport const WrappedProfileTableAttributeView = wrapView(ProfileTableAttributeView);\nexport const WrappedProfileRelationsView = wrapView(ProfileRelationsView);\nexport const WrappedCustomView = wrapView(CustomView);\nexport const WrappedHierarchyPathView = wrapView(HierarchyPathsView);\nexport const WrappedProfilePotentialMatchesView = wrapView(ProfilePotentialMatchesView);\n\nexport const WrappedHierarchyTreeView = lazy(() =>\n import('@reltio/hierarchy-tree').then((importedModule) => ({\n default: wrapView(importedModule.HierarchyTreeView)\n }))\n);\n\nexport const WrappedRelationshipsTableView = lazy(() =>\n import('@reltio/relations-table').then((importedModule) => ({\n default: wrapView(importedModule.RelationshipsTableView)\n }))\n);\nexport const WrappedEntityMapView = wrapView(EntityMapView);\nexport const WrappedImageAttributeView = wrapView(ImageAttributeView);\n\nexport type ViewComponentProps = {\n store: Store<unknown>;\n config:\n | ProfileViewConfig\n | AttributeViewConfig\n | SingleAttributeViewConfig\n | RelationsViewConfig\n | EntityMapViewConfig\n | ImageAttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n isAutosize?: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nclass ViewsFactory {\n static ViewTypes = ProfileViewTypes;\n static getComponentBy = (\n propName: string,\n {store, config, className, isFullscreen, onToggleFullscreen}: ViewComponentProps\n ) => {\n switch (config[propName]) {\n case ViewsFactory.ViewTypes.HierarchyTree:\n return (\n <WrappedHierarchyTreeView\n config={config as HierarchyTreeViewConfig}\n store={store}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.HierarchyPaths:\n return <WrappedHierarchyPathView config={config as HierarchyPathsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.RelationsTable:\n return (\n <WrappedRelationshipsTableView\n config={config as RelationsViewConfig}\n store={store}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Relations:\n return <WrappedProfileRelationsView config={config as RelationsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.Attributes:\n return <WrappedProfileAttributesView className={className} config={config as AttributeViewConfig} />;\n case ViewsFactory.ViewTypes.SingleAttribute:\n return (\n <WrappedProfileSingleAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.AttributeTable:\n return (\n <WrappedProfileTableAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Map:\n return (\n <WrappedEntityMapView\n config={config as EntityMapViewConfig}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Custom:\n return <WrappedCustomView config={config as CustomActionViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.ImageAttribute:\n return <WrappedImageAttributeView config={config as ImageAttributeViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.PotentialMatches:\n return (\n <WrappedProfilePotentialMatchesView\n config={config as ProfilePotentialMatchesViewConfig}\n className={className}\n />\n );\n }\n };\n static getComponent = (props: ViewComponentProps) => {\n return (\n ViewsFactory.getComponentBy('class', props) ||\n ViewsFactory.getComponentBy('react-class', props) || <WrappedStubView className={props.className} />\n );\n };\n}\n\nexport default ViewsFactory;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {BasicView} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst StubView = ({className}: Props) => {\n const styles = useStyles();\n return (\n <BasicView className={classnames(styles.stubView, 'viewDraggableHandle', className)}>NOT IMPLEMENTED</BasicView>\n );\n};\n\nexport {StubView};\n","import React from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {SingleAttributeContext} from './contexts/SingleAttributeContext';\nimport {SingleAttributeView} from './components/SingleAttributeView/SingleAttributeView';\nimport {useSingleAttribute} from './hooks/useSingleAttribute';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileSingleAttributeView = ({className, config}: Props) => {\n const singleAttribute = useSingleAttribute(config);\n\n return (\n <SingleAttributeContext.Provider value={singleAttribute}>\n <SingleAttributeView config={config} className={className} />\n </SingleAttributeContext.Provider>\n );\n};\n","import {useState, useMemo, useCallback} from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\n\nexport const useSingleAttribute = (config: SingleAttributeViewConfig) => {\n const [searchQuery, setSearchQuery] = useState('');\n const [page, setPage] = useState(0);\n const [showInactive, setShowInactive] = useState(false);\n const params = useMemo(() => ({page, searchQuery, showInactive}), [page, searchQuery, showInactive]);\n const attribute = useSingleAttributeLoader(config, params, true);\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n return {\n setSearchQuery,\n searchQuery,\n setPage,\n page,\n toggleShowInactive,\n showInactive,\n ...attribute\n };\n};\n","import React from 'react';\nimport {TableAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {TableAttributeContext} from './contexts/TableAttributeContext';\nimport {useTableAttribute} from './hooks/useTableAttribute';\nimport {TableAttributeView} from './components/TableAttributeView/TableAttributeView';\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileTableAttributeView = ({config, className}: Props) => {\n const tableAttribute = useTableAttribute(config);\n\n return (\n <TableAttributeContext.Provider value={tableAttribute}>\n {config && <TableAttributeView config={config} className={className} />}\n </TableAttributeContext.Provider>\n );\n};\n","import {useMemo, useReducer} from 'react';\nimport {reject, isNil, pipe, not, prop} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {findAttributeTypeByUri, isComplexAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useActions} from '@reltio/components';\nimport reducer, {actions} from './reducer';\nimport {getColumnsData} from '../helpers/tableAttributeHelpers';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\nimport {buildMDMFilters} from './helpers';\n\nconst DEFAULT_COUNT_COLUMN = 5;\n\nexport const useTableAttribute = (config: SingleAttributeViewConfig) => {\n const {attributeUri} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const allColumnsData = useMemo(\n () => (attributeType ? getColumnsData(metadata, attributeType) : []),\n [metadata, attributeType]\n );\n const initialState = useMemo(\n () => ({\n searchQuery: '',\n filters: null,\n sorting: undefined,\n visibleColumns: allColumnsData\n .filter(pipe(prop('dataTypeDefinition'), isComplexAttribute, not))\n .map(({id}) => id)\n .slice(0, DEFAULT_COUNT_COLUMN),\n page: 0\n }),\n [allColumnsData]\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const {searchQuery, filters, sorting, page} = state;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n const requestFilters = useMemo(() => {\n const mdmFilters = buildMDMFilters(allColumnsData, filters);\n return mdmFilters.length ? mdmFilters : null;\n }, [filters, allColumnsData]);\n\n const params = useMemo(\n () => reject(isNil, {filters: requestFilters, page, sorting, searchQuery}),\n [requestFilters, page, sorting, searchQuery]\n );\n const {changeSearchQuery, changePage, toggleSort, changeFilter, toggleFilters, changeColumns} = useActions({\n actions,\n dispatch\n });\n const attribute = useSingleAttributeLoader(config, params, false);\n const showTable = Boolean(\n (attribute?.values?.length || requestFilters || searchQuery || isEditableMode) &&\n attributeType &&\n !attributeType.hidden\n );\n return {\n ...state,\n setSearchQuery: changeSearchQuery,\n setPage: changePage,\n onSort: toggleSort,\n onFilter: changeFilter,\n onToggleFilters: toggleFilters,\n onChangeColumns: changeColumns,\n showTable,\n allColumnsData,\n ...attribute\n };\n};\n","import {propEq} from 'ramda';\nimport {Maybe} from '@reltio/mdm-sdk';\nimport {ColumnData, ColumnFilter, columnFilterToMdmFilter} from '@reltio/components';\n\nexport const buildMDMFilters = (columnsData: ColumnData[], filters: {[key: string]: ColumnFilter}) =>\n Maybe.fromNull(filters)\n .map((filters) =>\n Object.entries(filters).map(([columnId, columnFilter]) => {\n const columnData = columnsData.find(propEq('id', columnId));\n return columnFilterToMdmFilter(columnData, columnFilter);\n })\n )\n .orSome([]);\n","import React from 'react';\nimport RelationsView from './components/RelationsView';\nimport {RelationsViewStateContext} from './contexts/RelationsViewStateContext';\nimport useRelationsState from './hooks/useRelationsState';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\ntype Props = {\n config: RelationsViewConfig;\n onResize?: (width: number, height: number) => void;\n className?: string;\n};\n\nexport const ProfileRelationsView = ({config, className}: Props) => {\n const relationsState = useRelationsState(config);\n return (\n <RelationsViewStateContext.Provider value={relationsState}>\n <RelationsView config={config} className={className} />\n </RelationsViewStateContext.Provider>\n );\n};\n","import React, {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 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","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('Suggest changes and initiate a workflow review'),\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","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';\n\nimport {useStyles} from './styles';\n\nconst DEFAULT_PANEL_WIDTH = 480;\nexport enum ActivePanel {\n Workflow,\n Collaboration,\n History\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 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 {\n historyFilter,\n onApplyFilter,\n isLoading,\n historicUris,\n historyWithTotal,\n canLoadMore,\n 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\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 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","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} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeError, Metadata} from '@reltio/mdm-sdk';\n\nimport useStyles from '../styles';\n\nimport {getDisplayedErrorMessage, getDisplayedErrorPath} from '../helpers';\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 displayedMessage = getDisplayedErrorMessage(metadata, error);\n const displayedErrorPath = getDisplayedErrorPath(error);\n return (\n <li>\n <span>{displayedMessage}</span>\n {displayedErrorPath && (\n <>\n <br />\n <span className={styles.parents}>{displayedErrorPath}</span>\n </>\n )}\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 {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","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} from '@reltio/components';\n\nimport {ProfileSavedState, Layout} from '../../types';\n\nimport {ProfileLayout} from '../ProfileLayout';\nimport {PerspectiveProfileBand} from '../PerspectiveProfileBand';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\nimport {ProfileErrorsPanel} from '../ProfileErrorsPanel';\nimport {useProfileValidation} from '../hooks/useProfileValidation';\n\nimport {useStyles} from './styles';\nimport {Notifications} from '../Notifications';\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 {isLoaded, savedState = emptyState, updateSavedState} = 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 <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 </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"],"names":["customStyles","input","currentStyles","fontSize","menuPortal","zIndex","useStyles","makeStyles","root","flex","title","paddingBottom","paddingLeft","dropDownInput","width","justifyContent","backgroundColor","borderTop","option","height","noOptionsMessage","entityType","selectedAttributes","className","onChange","disableUnderline","menuPlacement","metadata","useSelector","mdmModule","styles","prepareItems","useCallback","data","level","prevLabel","reduce","acc","item","hidden","chipLabel","label","push","value","uri","attrType","subAttributes","getAttributeTypeSubAttributes","concat","options","useMemo","attributes","classnames","Typography","variant","i18n","MultiSelect","TextFieldProps","InputProps","classes","components","DropdownIndicator","DropdownIndicatorWithIconButton","MultiValue","props","Option","isFocused","isSelected","innerProps","AttributeListItem","checked","labelInText","pipe","defaultTo","menuPortalTarget","document","body","theme","display","flexDirection","basicView","BasicView","forwardRef","ref","children","otherProps","Paper","displayName","propTypes","PropTypes","paddingRight","inputNumber","minWidth","marginRight","inputUnit","periods","interval","unit","onFocus","onNumberChange","getValue","parseInt","newValue","onUnitChange","newUnit","TextField","type","inputProps","min","SimpleDropDownSelector","placeholder","capitalize","map","ErrorBoundary","React","constructor","super","this","state","error","componentDidCatch","setState","console","render","style","loadingMessage","selectedUsers","valueToOption","prepareValues","values","tenant","servicesPath","cachedRequest","useRef","pluck","defaultOptions","getOptions","inputValue","current","getAllUsersForTenant","then","prop","users","filter","username","utils","filterUsers","ActivityTypes","getItemDataType","path","getActivityType","activity","items","firstItem","removeIgnoredItems","isImplementedItem","isValidActivityType","includes","filteredItems","length","reject","itemsTotal","splitActivityByType","propOr","groupBy","ifElse","stringifyDeltaValue","delta","isNil","Array","isArray","join","is","Object","toString","getActivityLabel","dropdownIndicator","transition","inputRoot","padding","dateOptionLabel","paper","localeFormat","moment","longDateFormat","inputRef","open","setOpen","useState","handleToggle","onCancel","fullWidth","formatDataTypeValue","dataTypeDefinition","DataTypes","formatValue","onClick","endAdornment","selectProps","menuIsOpen","readOnly","InputLabelProps","shrink","Menu","autoFocus","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","DateRangePicker","onApply","DateRangeTypes","RequestStates","SingleAttributeContext","triggerButton","color","popupContent","paddingTop","maxWidth","checkboxControlRoot","marginTop","marginLeft","checkboxControlLabel","checkboxControlCheckbox","buttonRef","isOpen","setIsOpen","showInactive","toggleShowInactive","useContext","togglePopup","Button","Popover","FormControlLabel","control","Checkbox","e","target","totalCaption","lineHeight","letterSpacing","flexShrink","ovIcon","SingleAttributeHeader","caption","totalVisibleValues","showInactiveValuesMenu","searchQuery","setSearchQuery","setPage","totalNonVisibleValues","nonVisibleValues","attributeType","FacetViewHeader","HideOnShrink","widthToHide","VerticalDivider","margin","OvIcon","nonOvTotal","nonOvValues","ExpandableSearchInput","query","moreButton","marginBottom","buttonLabel","fontWeight","icon","divider","ovFalse","inactive","noData","palette","text","secondary","getAttributeNameFromAttributeUri","getLastUriPart","search","some","String","getPagedLocalEntity","async","entity","attributeTypeUri","defaultMaxValues","Infinity","offset","findAttributeValuesByTypeUri","ovValues","isOv","getAttributeSource","slice","paging","totalOvValues","totalValues","emptyArray","SingleAttributeEditableContent","parentUri","noDataText","required","isRequired","cardinality","name","dispatch","useDispatch","viewId","ViewIdContext","modifiedEntity","errors","errorMessage","getAttributePagerActiveTypeErrorMessage","mode","attributeSource","entityValuesUris","pathOr","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","key","attributeValue","lazy","ownError","getAttributeOwnError","Divider","originalValue","modifiedEntityValue","find","propEq","deleted","edited","value1","value2","cleanser","over","lensPath","cleanAttributesWith","valueTransformer","unless","omit","deleteEmptyComplex","identity","equals","areValuesEqual","cond","always","SingleAttributeReadableContent","content","position","overflow","flexGrow","pagination","SingleAttributeView","config","max","page","isLoading","hasPaging","entityUri","mdm","isViewMode","isEditableMode","pivotingAttributes","hasValues","PivotingAttributeContext","Box","LinearLoadIndicator","renderContent","BasicTablePagination","count","rowsPerPage","rowsPerPageOptions","onChangePage","useSingleAttributeLoader","canShowHistoryDiff","attributeUri","setValues","setPaging","setIsLoading","safePromise","useSafePromise","attributeValuesRef","apiPath","entitySelector","isHistoryModeEnabled","diff","attributeTypeName","attributeTypeSource","findAttributeValues","findAttributeTypeByUri","globalFilter","loadAttributes","isReadableAttribute","isFirstLevelAttributeUri","rest","request","isDataTenantEntity","getPagedEntity","undefined","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","entries","menuItem","MenuProps","SmallIconButton","tooltipTitle","ArrowUpwardIcon","ArrowDownwardIcon","size","header","ImportDTContext","MAX","Math","pow","cursor","top","left","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","id","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","container","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","action","payload","removedStyle","tableContainer","fontFamily","rowCell","transform","headCell","pointerEvents","withFilterAtBottom","DefaultHeadCellRenderer","getColumnsDataFromAttributeNode","attrNode","parents","attributeUriToSearchUri","getAttrDataTypeDefinition","childNode","getAttrPathFromColumnId","split","getNestedPathByColumnId","columnId","isAttributeSearchUri","attrPath","getBasicTableColumnsData","columnData","sortable","resizable","nestedPath","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","DefaultCellValueRenderer","onChangeSearchQuery","filtersEnabled","onToggleFilters","columnsData","selectedColumns","onChangeColumns","enabled","ColumnsSettings","withTableContext","deletedUris","rowValue","Boolean","cell","CellValueRenderer","isSorted","index","onEdit","onRemove","onSort","filters","onFilter","tableRowsData","assoc","getOvAttributeValuesByPath","getAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","checkIsEditableMode","renderRowCell","hoverRowIndex","setHoverRowIndex","canDelete","useConfigPermissions","hideRightContent","checkCanDeleteAttribute","isReltioCrosswalk","canEdit","checkCanEditAttribute","checkCanEdit","handleEditAttribute","handleRemoveAttribute","hoveredRowRightContent","context","BasicTable","autosizing","maxHeight","rowsData","hoverStateEnabled","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","resizeDebounceDelay","onRowHover","hoveredRowRightContentWrapper","hoveredRowRightContentContainer","actionButtons","AttributeEditing","hasChanges","expanded","addButton","editor","TableAttributeView","visibleColumns","showTable","allColumnsData","checkHasChanges","onStartEditing","modifiedValues","editingValues","newAttributeUri","setNewAttributeUri","originalValues","setOriginalValues","newAttribute","createDefaultValues","attributeTypes","prev","editingValueOriginal","attributeItem","without","original","both","not","useEditableAttribute","preparedValues","hasConfigToCreate","visibleColumnsData","nodeCounter","generateId","processResponse","fakeRoot","nodeId","parentPaths","i","nextRoot","j","nextParent","entities","isRoot","node","rootIndex","link","selected","avatar","treeContainer","tree","buttonsContainer","ConfigContext","onImageLoadFail","src","DEFAULT_ICON","Node","absoluteImagePath","uiPath","entityLink","getEntityLink","onTitleClick","entityTypeGraphIcon","getPropWithInheritance","getAbsoluteImageUrl","Avatar","onError","Link","to","getNodeKey","lineBlock","lineChildren","verticalLine","horizontalLineRight","textAlign","boxSizing","whiteSpace","nodeContent","bottom","rowContents","borderLeft","verticalAlign","buttonWrapper","collapsedButton","expandedButton","borderRight","rowTitle","nodeContentRenderer","scaffoldBlockPxWidth","toggleChildrenVisibility","treeIndex","nodeTitle","showToggleChildrenButton","treeNodeRenderer","lowerSiblingCounts","scaffoldBlockCount","scaffold","forEach","lowerSiblingCount","shift","scaffoldWidth","nodeStyle","rowHeight","slideRegionSize","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","viewBox","version","xmlns","stroke","strokeWidth","fill","fillRule","fillOpacity","d","onGraphOpen","ShowGraphIcon","bodyWrapper","dragHandleContainer","dragHandleVisibilityArea","visibility","dragHandle","dragIcon","Component","WithDragHandle","DragIndicator","WithErrorBoundary","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","secondaryText","EMPTY_STATE_VARIANTS","stubView","fullHeight","component","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","basicViewRef","dialogRef","showModal","setShowModal","defaultTooltip","html","visible","updatedTooltip","popup","useAPI","innerHTML","from","childNodes","child","appendChild","Dialog","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","fixedSizeContainer","omittingProps","ProfileLayoutItem","layoutItemConfig","views","ResizeComponent","AutosizeComponent","ReactReduxContext","isCustomView","class","platform","CustomScriptPlatform","reltioClass","_","getViewTypeByClass","ProfileLayout","layout","layoutOptions","onLayoutChanged","ReltioGridLayout","LayoutItem","draggableHandle","xmlnsXlink","xlinkHref","mask","editingButtons","searchResults","comments","SuggestIcon","SvgIcon","CopyIcon","filterGroupByPermissions","group","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","ActivePanel","getSecondTitle","RightSidePanel","isWorkflowSideViewEnabled","isCollaborationSideViewEnabled","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","visibleElements","SidePanel","SidePanelContentHeader","SideButtonsPanel","buttonsProps","onButtonClick","activeIndexId","accordionSummaryHeight","defaultBorderStyle","accordion","borderBottom","accordionExpanded","accordionSummary","accordionSummaryHeading","typography","pxToRem","fontWeightRegular","accordionSummaryExpanded","accordionSummaryContent","accordionDetails","errorsAccordion","borderColor","errorsAccordionDetails","warningsAccordion","warningsAccordionDetails","errorIcon","warningIcon","ErrorsPanel","panels","expandedPanelId","ErrorComponent","accordionClassName","accordionDetailsClassName","Accordion","square","AccordionSummary","expandIcon","ExpandMore","AccordionDetails","clearError","Error","displayedMessage","ErrorType","ErrorSource","getDisplayedErrorMessage","displayedErrorPath","errorPath","AttributeValuePathItemType","getDisplayedErrorPath","ProfileErrorsPanel","cachedAllErrors","allErrors","cacheForAllErrors","errors1","errors2","areErrorsEqual","useCachedErrors","warnings","isCriticalError","setExpandedPanelId","number","panelId","event","isExpanded","perspectiveView","overflowX","overflowY","scrollWrapper","emptyState","profileWrapper","profileContainer","closeIcon","snackbar","flexWrap","Notification","notification","autoCloseInterval","autoHideDuration","setAction","setShow","closeSnackbar","_e","reason","cancelAction","onConfirm","applyAction","needConfirmation","CloseIcon","Portal","Snackbar","confirmationText","confirmationDescription","Notifications","notifications","n","ProfilePerspectiveView","saveState","getSavedState","getSavedStateAndFix","scrollWrapperRef","debouncedSaveState","debounce","nestedRoute","savedStateKey","isLoaded","savedState","updateSavedState","useSavedStateForEntityType","setLayout","setViews","configHash","hash","isHistoryActive","getProfileObjectIdsForCollaboration","collaboration","useCollaboration","emptyCollaboration","useUsers","workflowTasks","useWorkflowTasks","workflow","useHistorySlice","historyDiff","useHistoryDiff","keywordValue","isConfigChanged","fixedViews","fixedLayout","fixNonUniqViewsIds","sidePanelViews","scrollTop","isValidateReadMode","isDTEntity","profileViews","hasProfileViews","validate","needDispatch","useProfileValidation","handleLayoutChange","boundariesElement","popupBoundariesValue","element","priority","ProfilePerspectiveViewContext","UsersContext","SearchValueContext","profileBand","PopupBoundariesContext","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","onResize","qxSandboxApi","getSavedStatePromisified","promisifyCallback","SnackbarRenderer","showSnackbarMessage","useSnackbar","processedConfig","convertOldProfileConfig","SnackbarContext","S","SandboxAPIContext","StylesProvider","MuiPickersUtilsProvider","MomentUtils","handleHeight","floor","ErrorPopup","showErrorFromStore","titleContainer","textOverflow","totalNumber","TagListHeader","switchToProfile","ArrowForwardIosRounded","Spacer","toolbar","TagProfileBand","Toolbar","tagsContainer","tagsView","listContainer","entitiesList","ROWS_PER_PAGE_OPTIONS","TagPerspectiveView","tag","setRowsPerPage","globalSearchRequestOptions","safeRequestTotalPromise","safeRequestEntitiesPromise","setTotal","setEntities","requestEntities","requestTotal","getDataTenantFromEntityUri","fieldName","isDT","getEntities","requestOptions","select","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","getTotalFromDataTenant","getTotals","json","useTagsProvider","useTag","refScrollBlock","hasPagination","ProfilesList","onChangeRowsPerPage"],"sourceRoot":""}
1
+ {"version":3,"file":"8532.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeSelector/AttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/BasicView/styles.js","webpack://@reltio/remotes/../components/src/components/BasicView/BasicView.tsx","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/DateIntervalSelector.tsx","webpack://@reltio/remotes/../components/src/components/ErrorBoundary/ErrorBoundary.tsx","webpack://@reltio/remotes/../components/src/components/Spacer/Spacer.js","webpack://@reltio/remotes/../components/src/components/UserSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/UserSelector/UserSelector.tsx","webpack://@reltio/remotes/../components/src/components/activityLog/types/ActivityTypes.ts","webpack://@reltio/remotes/../components/src/components/activityLog/utils/activities.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/CustomDateRangeEditor.tsx","webpack://@reltio/remotes/../components/src/types/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileAttributesView/ProfileAttributesView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/contexts/SingleAttributeContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/SingleAttributeHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/hooks/helpers/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/SingleAttributeEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/SingleAttributeReadableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/SingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useSingleAttributeLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/RelationsViewStateContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/ImportDTContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/hooks/useImportFromDTLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/MultipleImportIcon.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/ImportFromDT.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/RelationsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/RelationTooltip.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationInfo.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/SuggestedButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/EditableRelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/permissions.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/relation.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/RelationArrowButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/SecondLevelWrapper.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSecondLevelConnections.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/RelationsEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/RelationAttributes.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/ShowDetailsButton/ShowDetailsButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/RelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/ratings.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/Ratings.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/RatingsButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/RelationComplexItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationsList.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSuggestedRelations.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/RelationsContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/RelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/filters.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationsState.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/contexts/TableAttributeContext.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/reducer.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/HeadCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/helpers/tableAttributeHelpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/AttributeTableHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/RowCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/EditButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/AttributeTable.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/AttributeEditing.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/hooks/useEditableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/TableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useLoadPaths.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/ConfigContext.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/Node.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/helpers.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/node-content-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/index.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/tree-node-data-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/icons/ShowGraph.svg","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/Sandbox/styles.ts","webpack://@reltio/remotes/../profile/src/components/views/HOCs/styles.ts","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withDragHandle.tsx","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withErrorBoundary.tsx","webpack://@reltio/remotes/../profile/src/components/views/styles.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/useMarkers.js","webpack://@reltio/remotes/../profile/src/components/EntityMapView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/ImageLineCaption.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeViewEditableContent/ImageAttributeViewEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ActionButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/MatchCard.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ProfilePotentialMatchesView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewsFactory.tsx","webpack://@reltio/remotes/../profile/src/components/views/StubView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/ProfileSingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/hooks/useSingleAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/ProfileTableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/useTableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/ProfileRelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/Sandbox/CustomView.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/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/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/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/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/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"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n },\n noOptionsMessage: {\n fontSize: '14px'\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe, defaultTo} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {AttributeOption} from '../../types';\nimport mdmModule from '@reltio/mdm-module';\nimport {MultiValueProps, OptionProps} from 'react-select';\nimport {AttributeType, getAttributeTypeSubAttributes, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport MultiValue from '../ReactSelect/commonComponents/MultiValue';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n entityType: TEntityType;\n selectedAttributes: AttributeOption[];\n className?: string;\n onChange?: (attributes: AttributeOption[]) => void;\n title?: string;\n disableUnderline?: boolean;\n menuPlacement?: string;\n};\n\nconst AttributeSelector = ({\n entityType,\n selectedAttributes,\n className,\n onChange,\n title,\n disableUnderline,\n menuPlacement = 'bottom'\n}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const styles = useStyles();\n\n const prepareItems = useCallback(\n (data: AttributeType[], level = 0, prevLabel = ''): AttributeOption[] => {\n return data.reduce((acc, item) => {\n if (item.hidden) return acc;\n const chipLabel = `${prevLabel && prevLabel + ' / '}${item.label}`;\n acc.push({\n label: item.label,\n value: item.uri,\n attrType: item,\n chipLabel,\n level\n });\n const subAttributes = getAttributeTypeSubAttributes(metadata, item);\n return acc.concat(subAttributes ? prepareItems(subAttributes, level + 1, chipLabel) : []);\n }, []);\n },\n [metadata]\n );\n\n const options = useMemo(() => prepareItems(entityType?.attributes || []), [entityType, prepareItems]);\n\n const CustomOption = ({isFocused, isSelected, data, label, innerProps}: OptionProps<AttributeOption, true>) => (\n <div {...innerProps}>\n <AttributeListItem\n checked={isSelected}\n level={data.level}\n data={data}\n label={label}\n labelInText={label}\n isFocused={isFocused}\n />\n </div>\n );\n\n const CustomMultiValue = ({data, ...props}: MultiValueProps<AttributeOption>) => (\n <MultiValue {...props}>{data.chipLabel}</MultiValue>\n );\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {title || i18n.text('Attribute')}\n </Typography>\n <MultiSelect\n value={selectedAttributes}\n options={options}\n TextFieldProps={{\n InputProps: {disableUnderline},\n classes: {root: styles.dropDownInput}\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton,\n MultiValue: CustomMultiValue,\n Option: CustomOption\n }}\n onChange={pipe(defaultTo([]), onChange)}\n styles={customStyles}\n classes={styles}\n menuPlacement={menuPlacement}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default AttributeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n 'basic-view__paper': {\n display: 'flex',\n flexDirection: 'column',\n ...theme.basicView\n }\n}));\n","import Paper, {PaperProps} from '@material-ui/core/Paper';\nimport PropTypes from 'prop-types';\nimport React, {forwardRef, Ref} from 'react';\nimport {useStyles} from './styles';\n\nconst BasicView = forwardRef<Ref<typeof Paper>, PaperProps>(({children, className, ...otherProps}, ref) => {\n const styles = useStyles();\n return (\n <Paper ref={ref} className={className} classes={{root: styles['basic-view__paper']}} {...otherProps}>\n {children}\n </Paper>\n );\n});\n\nBasicView.displayName = 'BasicView';\n\nBasicView.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n};\n\nexport default BasicView;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flex: 1\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px',\n fontSize: '14px'\n },\n inputNumber: {\n minWidth: '60px',\n marginRight: 10,\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n inputUnit: {\n width: '100%'\n }\n});\n","import React from 'react';\nimport {pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport capitalize from '@material-ui/core/utils/capitalize';\nimport {TextField as TextField} from '@material-ui/core';\nimport SimpleDropDownSelector from '../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {getValue} from '../../core/utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n interval: [number, string];\n onChange: ([number, string]) => void;\n onFocus?: () => void;\n};\n\nconst periods = [\n i18n.text('minutes'),\n i18n.text('hours'),\n i18n.text('days'),\n i18n.text('weeks'),\n i18n.text('months'),\n i18n.text('years')\n];\n\nconst DateIntervalSelector = ({interval: [value, unit], onChange, onFocus}: Props) => {\n const styles = useStyles();\n const getIntervalFromValue = (newValue: number) => [newValue, unit];\n const getIntervalFromUnit = ({value: newUnit}: {value: string}) => [value, newUnit];\n const onNumberChange = pipe(getValue, parseInt, getIntervalFromValue, onChange);\n const onUnitChange = pipe(getIntervalFromUnit, onChange);\n return (\n <div className={styles.root}>\n <TextField\n type=\"number\"\n value={value || ''}\n onChange={onNumberChange}\n inputProps={{min: 1, onFocus: onFocus}}\n InputProps={{classes: {root: styles.input}}}\n className={styles.inputNumber}\n />\n <SimpleDropDownSelector\n label={''}\n placeholder={capitalize(unit)}\n className={styles.inputUnit}\n value={{value: unit, label: capitalize(unit)}}\n options={periods.map((value) => ({\n value,\n label: capitalize(value)\n }))}\n onChange={onUnitChange}\n TextFieldProps={{\n inputProps: {onFocus: onFocus},\n InputProps: {classes: {root: styles.input}}\n }}\n />\n </div>\n );\n};\n\nexport default DateIntervalSelector;\n","import React from 'react';\n\ntype State = {\n error: Error | null;\n};\n\ntype Props = {\n error: React.ReactNode;\n};\n\nexport default class ErrorBoundary extends React.Component<Props, State> {\n constructor(props) {\n super(props);\n this.state = {\n error: null\n };\n }\n\n componentDidCatch(error) {\n this.setState({\n error: error\n });\n console.error(error);\n }\n\n render() {\n const {children, error} = this.props;\n if (this.state.error) {\n return error;\n }\n return children;\n }\n}\n","import 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, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getAllUsersForTenant, User, utils} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n selectedUsers: string[];\n onChange: (activities: string[]) => void;\n className?: string;\n disableUnderline?: boolean;\n};\n\nconst UserSelector = ({selectedUsers, onChange, className, disableUnderline}: Props) => {\n const styles = useStyles();\n\n const valueToOption = (value: string) => ({value, label: value});\n const prepareValues = (values: string[]) => values.map(valueToOption);\n const filterUsers = (inputValue) => (users) =>\n inputValue ? users.filter((username) => utils.strings.search(username, inputValue)) : users;\n\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n\n const cachedRequest = useRef<Promise<{array: User[]}>>();\n const getOptions = (inputValue) => {\n if (!cachedRequest.current) {\n cachedRequest.current = getAllUsersForTenant({tenant, servicesPath});\n }\n return cachedRequest.current.then(\n pipe(prop('array'), pluck('username'), filterUsers(inputValue), prepareValues)\n );\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('User')}\n </Typography>\n <MultiSelect\n value={prepareValues(selectedUsers)}\n onChange={pipe(defaultTo([]), pluck('value'), onChange)}\n defaultOptions={true}\n getOptions={getOptions}\n TextFieldProps={{\n InputProps: {disableUnderline},\n className: styles.dropDownInput\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default UserSelector;\n","export enum ActivityTypes {\n MODEL_UPDATED = 'MODEL_UPDATED',\n ENTITY_REMOVED = 'ENTITY_REMOVED',\n ENTITY_CREATED = 'ENTITY_CREATED',\n ENTITY_CHANGED = 'ENTITY_CHANGED',\n ENTITIES_MERGED = 'ENTITIES_MERGED',\n ENTITIES_SPLITTED = 'ENTITIES_SPLITTED',\n ENTITY_LOST_MERGE = 'ENTITY_LOST_MERGE',\n RELATIONSHIP_CREATED = 'RELATIONSHIP_CREATED',\n RELATIONSHIP_REMOVED = 'RELATIONSHIP_REMOVED',\n RELATIONSHIP_CHANGED = 'RELATIONSHIP_CHANGED',\n POTENTIAL_MATCHES_FOUND = 'POTENTIAL_MATCHES_FOUND',\n NOT_MATCHES_SET = 'NOT_MATCHES_SET',\n NOT_MATCHES_RESET = 'NOT_MATCHES_RESET',\n PERIODIC_TASK_SCHEDULED = 'PERIODIC_TASK_SCHEDULED',\n ENTITIES_MERGED_MANUALLY = 'ENTITIES_MERGED_MANUALLY',\n POTENTIAL_MATCHES_REMOVED = 'POTENTIAL_MATCHES_REMOVED',\n ENTITIES_MERGED_ON_THE_FLY = 'ENTITIES_MERGED_ON_THE_FLY',\n USER_LOGIN = 'USER_LOGIN',\n USER_LOGOUT = 'USER_LOGOUT',\n USER_SEARCH = 'USER_SEARCH',\n USER_PROFILE_VIEW = 'USER_PROFILE_VIEW',\n COMMENT_ADDED = 'COMMENT_ADDED',\n COMMENT_UPDATED = 'COMMENT_UPDATED',\n COMMENT_DELETED = 'COMMENT_DELETED',\n ANALYTICS_ATTRIBUTES_CHANGED = 'ANALYTICS_ATTRIBUTES_CHANGED',\n SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE = 'SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE',\n GROUP_CREATED = 'GROUP_CREATED',\n GROUP_REMOVED = 'GROUP_REMOVED',\n GROUP_CHANGED = 'GROUP_CHANGED'\n}\n","import {filter, groupBy, ifElse, map, path, pipe, propOr, values, is, isNil, includes, reject} 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 = (delta: string | Record<string, DeltaValue[]> | DeltaValue | DeltaValue[]) => {\n if (isNil(delta)) {\n return '';\n } else if (typeof delta === 'string') {\n return delta;\n } else if (Array.isArray(delta)) {\n return delta.map(stringifyDeltaValue).join(', ');\n } else if (is(Object, delta)) {\n return 'value' in delta ? stringifyDeltaValue(delta.value) : stringifyDeltaValue(Object.values(delta));\n } else {\n return delta.toString();\n }\n};\n\nexport const getActivityLabel = (type: ActivityTypes) => {\n const labels = {\n [ActivityTypes.COMMENT_ADDED]: i18n.text('Comment added'),\n [ActivityTypes.COMMENT_DELETED]: i18n.text('Comment deleted'),\n [ActivityTypes.COMMENT_UPDATED]: i18n.text('Comment updated'),\n [ActivityTypes.ENTITIES_MERGED]: i18n.text('Profile merged'),\n [ActivityTypes.ENTITIES_MERGED_MANUALLY]: i18n.text('Profile merged manually'),\n [ActivityTypes.ENTITIES_MERGED_ON_THE_FLY]: i18n.text('Profile merged on the fly'),\n [ActivityTypes.ENTITIES_SPLITTED]: i18n.text('Profile un-merged'),\n [ActivityTypes.ENTITY_CHANGED]: i18n.text('Profile updated'),\n [ActivityTypes.ENTITY_CREATED]: i18n.text('Profile created'),\n [ActivityTypes.ENTITY_LOST_MERGE]: i18n.text('Profile lost merge'),\n [ActivityTypes.ENTITY_REMOVED]: i18n.text('Profile removed'),\n [ActivityTypes.GROUP_CHANGED]: i18n.text('Group updated'),\n [ActivityTypes.GROUP_CREATED]: i18n.text('Group created'),\n [ActivityTypes.GROUP_REMOVED]: i18n.text('Group removed'),\n [ActivityTypes.MODEL_UPDATED]: i18n.text('Model was updated'),\n [ActivityTypes.NOT_MATCHES_RESET]: i18n.text('Not matches reset'),\n [ActivityTypes.NOT_MATCHES_SET]: i18n.text('Not matches set'),\n [ActivityTypes.PERIODIC_TASK_SCHEDULED]: i18n.text('Periodic task was scheduled'),\n [ActivityTypes.POTENTIAL_MATCHES_FOUND]: i18n.text('Potential matches found'),\n [ActivityTypes.POTENTIAL_MATCHES_REMOVED]: i18n.text('Potential matches removed'),\n [ActivityTypes.RELATIONSHIP_CHANGED]: i18n.text('Relationship updated'),\n [ActivityTypes.RELATIONSHIP_CREATED]: i18n.text('Relationship created'),\n [ActivityTypes.RELATIONSHIP_REMOVED]: i18n.text('Relationship removed'),\n [ActivityTypes.USER_LOGIN]: i18n.text('Logged in'),\n [ActivityTypes.USER_LOGOUT]: i18n.text('Logged out'),\n [ActivityTypes.USER_PROFILE_VIEW]: i18n.text('Profile viewed'),\n [ActivityTypes.USER_SEARCH]: i18n.text('Searched'),\n [ActivityTypes.ANALYTICS_ATTRIBUTES_CHANGED]: i18n.text('Analytics attribute changed'),\n [ActivityTypes.SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE]: i18n.text('SFDC connector synchronization issue')\n };\n return labels[type] || '';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n dropdownIndicator: {\n transition: 'transform .15s ease'\n },\n inputRoot: {\n fontSize: '14px',\n height: 46\n },\n input: {\n padding: '0 12px 0'\n },\n dateOptionLabel: {\n minWidth: '100px'\n },\n paper: {\n minWidth: '112px'\n }\n});\n","import React, {useCallback, useRef, useState} from 'react';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {DataTypes, formatDataTypeValue} from '@reltio/mdm-sdk';\n\nimport {TextField as TextField} from '@material-ui/core';\nimport {Menu as Menu} from '@material-ui/core';\nimport DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport DateRangePicker from '../../DateRangePicker/DateRangePicker';\nimport {useStyles} from './styles';\n\ntype DateValues = [Date, Date];\ntype Props = {\n values: DateValues;\n onChange: (values: DateValues) => void;\n onFocus?: () => void;\n};\n\nconst localeFormat = moment.localeData().longDateFormat('L');\n\nconst formatValue = (value: Date, placeholder: string) => {\n return isNil(value)\n ? `${placeholder}`\n : `${formatDataTypeValue({dataTypeDefinition: {type: DataTypes.TYPE_ACTIVENESS_DATE}}, value)}`;\n};\n\nconst CustomDateRangeEditor = ({values, onChange, onFocus}: Props) => {\n const placeholder = localeFormat;\n const inputRef = useRef(null);\n const [open, setOpen] = useState(false);\n const styles = useStyles();\n\n const onApply = (values: DateValues) => {\n onChange(values);\n setOpen(false);\n };\n\n const handleToggle = useCallback(() => {\n setOpen((open) => !open);\n onFocus();\n }, [onFocus]);\n\n const onCancel = () => {\n setOpen(false);\n };\n\n return (\n <div className={styles.root}>\n <TextField\n fullWidth\n value={values.map((value) => formatValue(value, placeholder)).join(' \\u2014 ')}\n onClick={handleToggle}\n variant=\"filled\"\n ref={inputRef}\n InputProps={{\n endAdornment: (\n <DropdownIndicatorWithIconButton\n selectProps={{classes: styles, menuIsOpen: open}}\n innerProps={{}}\n />\n ),\n disableUnderline: isNil(values),\n readOnly: true,\n classes: {\n root: styles.inputRoot,\n input: styles.input\n }\n }}\n InputLabelProps={{\n shrink: false\n }}\n placeholder={i18n.text(`${placeholder} \\u2014 ${placeholder}`)}\n />\n <Menu\n variant=\"menu\"\n open={open}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={inputRef.current}\n onClose={onCancel}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{\n autoFocusItem: open,\n style: {width: '100%'}\n }}\n >\n <DateRangePicker\n values={values}\n onCancel={onCancel}\n onApply={onApply}\n type={DataTypes.TYPE_ACTIVENESS_DATE}\n />\n </Menu>\n </div>\n );\n};\n\nexport default CustomDateRangeEditor;\n","import {AttributeType} from '@reltio/mdm-sdk';\n\nexport type ReactGridLayoutItem = {\n i: string;\n x: number;\n y: number;\n w: number;\n h: number;\n minW?: number;\n minH?: number;\n maxW?: number;\n maxH?: number;\n static?: boolean;\n};\n\nexport type AttributeOption = {\n label: string;\n value: string;\n attrType: AttributeType;\n chipLabel: string;\n level: number;\n};\n\nexport enum DateRangeTypes {\n WITHIN = 'within',\n AGO = 'ago',\n BETWEEN = 'between'\n}\n\nexport type DateRangeFilter = {\n type: DateRangeTypes;\n period: [number, string] | [Date, Date];\n};\n\nexport type QueryBuilderAttributeData = {\n title: string;\n pathToTitle: Array<string>;\n fieldName: string;\n entityTypeUri: string;\n attrType: AttributeType;\n uri: string;\n groupName: string;\n filterOptions: Array<string>;\n};\n\nexport type QueryBuilderAttribute = {\n id: string;\n values: Array<unknown>;\n data: QueryBuilderAttributeData;\n filter: string;\n operator: string;\n};\n\nexport type AttributeSelectorItem = {\n attrType?: AttributeType;\n entityTypeUri?: string;\n fieldName: string;\n groupName?: string;\n title: string;\n uri?: string;\n children?: AttributeSelectorItem[];\n pathToTitle?: string[];\n};\n\nexport type AttributeSelectorItemsGroup = {\n id?: string;\n title: string;\n attributes: AttributeSelectorItem[];\n};\n\nexport type AttributeSelectionInfo = {\n index: number;\n checked: boolean;\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n};\n\nexport type BasicAttributeSelectorProps = {\n className?: string;\n itemsGroups: AttributeSelectorItemsGroup[];\n value: AttributeSelectorItem;\n onSelect: (selectInfo: AttributeSelectionInfo) => void;\n onRestoreFocus?: () => void;\n onOpenPopup?: () => void;\n getLabel?: (value: {fieldName?: string; pathToTitle?: string[]; title: string}) => string;\n disableRestoreFocus?: boolean;\n disableEnforceFocus?: boolean;\n single?: boolean;\n ungroup?: boolean;\n disabled?: boolean;\n hideCheckBox?: boolean;\n};\nexport enum RequestStates {\n INIT = 'init',\n LOADING = 'loading',\n LOADED = 'loaded',\n ERROR = 'error'\n}\n\nexport type SelectableItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selected?: boolean;\n};\n\nexport type DropDownMenuItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selectable?: boolean;\n selected?: boolean;\n};\n","import React from 'react';\nimport {AttributesView} from '@reltio/components';\nimport {AttributeViewConfig} from '@reltio/mdm-sdk';\n\ntype ProfileAttributesViewProps = {\n config: AttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileAttributesView = ({className, config}: ProfileAttributesViewProps) => {\n return (\n <AttributesView\n className={className}\n caption={config.caption}\n excludeUris={config.excludeUris}\n includeUris={config.includeUris}\n attributesCount={config.attributesCount}\n pinnedAttributes={config.pinnedAttributes}\n />\n );\n};\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\n\nexport const SingleAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n showInactive?: boolean;\n toggleShowInactive?: (checked: boolean) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n attributeType: AttributeType;\n totalNonVisibleValues: number;\n nonVisibleValues: AttributeValue[];\n }>(null);\n\nSingleAttributeContext.displayName = 'SingleAttributeContext';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n triggerButton: {\n minWidth: 0,\n color: 'rgba(0,0,0,0.54)',\n width: '36px'\n },\n popupContent: {\n paddingTop: '19px',\n paddingBottom: '23px',\n paddingLeft: '23px',\n paddingRight: '23px',\n maxWidth: '180px',\n width: '40%'\n },\n checkboxControlRoot: {\n marginTop: '6px',\n marginLeft: '-12px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\n\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const {showInactive, toggleShowInactive} = useContext(SingleAttributeContext);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n return (\n <>\n <Button ref={buttonRef} classes={{root: classnames(styles.triggerButton, className)}} onClick={togglePopup}>\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n root: styles.checkboxControlRoot,\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive}\n onChange={(e) => toggleShowInactive(e.target.checked)}\n />\n }\n label={i18n.text('Show inactive values')}\n />\n </Popover>\n </>\n );\n};\n\nexport default FilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 4px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n },\n ovIcon: {\n marginTop: '2px',\n marginLeft: '5px'\n }\n}));\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {FacetViewHeader, HideOnShrink, ExpandableSearchInput, VerticalDivider, OvIcon} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport FilterButton from '../FilterButton/FilterButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n caption: string;\n totalVisibleValues: number;\n showInactiveValuesMenu: boolean;\n};\n\nexport const SingleAttributeHeader = ({caption, totalVisibleValues, showInactiveValuesMenu}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, setSearchQuery, setPage, totalNonVisibleValues, nonVisibleValues, attributeType} = useContext(\n SingleAttributeContext\n );\n\n const handleChangeSearchQuery = (query: string) => {\n setSearchQuery(query);\n setPage(0);\n };\n\n return (\n <FacetViewHeader title={caption} className={styles.root}>\n <HideOnShrink widthToHide={500}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {i18n.number(totalVisibleValues)}{' '}\n {totalVisibleValues === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n </HideOnShrink>\n {\n <OvIcon\n nonOvTotal={totalNonVisibleValues}\n className={styles.ovIcon}\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n />\n }\n <ExpandableSearchInput query={searchQuery} onChange={handleChangeSearchQuery} />\n {showInactiveValuesMenu && <FilterButton />}\n </FacetViewHeader>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 -16px 8px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n ovFalse: theme.inactive,\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px 8px 0'\n }\n}));\n","import {equals, filter, identity, is, lensPath, omit, over, pipe, unless} from 'ramda';\nimport {\n AttributeValue,\n cleanAttributesWith,\n Entity,\n findAttributeValuesByTypeUri,\n getAttributeSource,\n getLastUriPart,\n isOv,\n Metadata,\n utils\n} from '@reltio/mdm-sdk';\n\nexport const getAttributeNameFromAttributeUri = getLastUriPart;\n\nexport const search = (value: AttributeValue['value'], searchQuery: string) => {\n switch (typeof value) {\n case 'object':\n return Object.values(value).some((value: AttributeValue[]) => {\n return value.some(({value}) => {\n return search(value, searchQuery);\n });\n });\n default:\n return utils.strings.search(String(value), searchQuery);\n }\n};\n\ntype Config = {\n metadata: Metadata;\n entity: Entity;\n attributeTypeUri: string;\n defaultMaxValues?: number;\n offset?: number;\n searchQuery?: string;\n};\n\nexport const getPagedLocalEntity = async ({\n metadata,\n entity,\n attributeTypeUri,\n defaultMaxValues = Infinity,\n offset = 0,\n searchQuery = ''\n}: Config) => {\n const values = pipe(\n findAttributeValuesByTypeUri,\n filter(({value}) => search(value, searchQuery))\n )(metadata, entity, attributeTypeUri);\n const ovValues = filter(isOv, values);\n\n return {\n [getAttributeSource(attributeTypeUri)]: {\n [getAttributeNameFromAttributeUri(attributeTypeUri)]: ovValues.slice(offset, offset + defaultMaxValues),\n paging: {\n [attributeTypeUri]: {\n totalOvValues: ovValues.length,\n totalValues: values.length\n }\n }\n }\n };\n};\n\nexport const areValuesEqual = (value1: AttributeValue, value2: AttributeValue): boolean => {\n const cleanser =\n is(Object, value1.value) || is(Object, value2.value)\n ? over(\n lensPath(['value']),\n cleanAttributesWith({\n valueTransformer: unless(isOv, omit(['value'])),\n deleteEmptyComplex: true\n })\n )\n : identity;\n return equals(cleanser(value1), cleanser(value2));\n};\n","import React, {useCallback, useContext, useRef} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, cond, map, pathOr, pipe, prop, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {CardinalityMessage, EditableAttribute, ErrorMessage, ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n AttributeValue,\n checkCanCreateAttribute,\n createNewAttribute,\n Entity,\n getAttributeOwnError,\n getAttributePagerActiveTypeErrorMessage,\n getAttributeSource,\n isComplexAttribute,\n isEmptyValue,\n isOv,\n isTempUri,\n AttributeItem\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport {areValuesEqual} from '../../../hooks/helpers';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n parentUri: string;\n showInactive: boolean;\n noDataText: string;\n};\n\nconst emptyArray = [];\n\nexport const SingleAttributeEditableContent = ({values, attributeType, parentUri, showInactive, noDataText}: Props) => {\n const styles = useStyles();\n\n const {uri: attributeTypeUri, required: isRequired, cardinality, name} = attributeType;\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType)\n );\n const errorMessage = useSelector((state) =>\n getAttributePagerActiveTypeErrorMessage(parentUri, attributeType, mdmModule.selectors.getProfileErrors(state))\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n const attributeSource = getAttributeSource(attributeType);\n const entityValuesUris: string[] = pipe(pathOr(emptyArray, [attributeSource, name]), map(prop('uri')))(entity);\n const modifiedEntityValues: AttributeValue[] = pathOr(emptyArray, [attributeSource, name], modifiedEntity);\n const modifiedEntityValuesUris: string[] = modifiedEntityValues.map(prop('uri'));\n const showEmptyEditors = isTempUri(entity.uri);\n\n const emptyEditorValue = useRef<AttributeValue>(\n createNewAttribute({\n parentUri,\n attributeType\n })\n );\n\n const isModifiedEntityValuesEmpty = isEmptyValue(modifiedEntityValues);\n const showEmpty = isRequired && isModifiedEntityValuesEmpty;\n\n const newValues = showEmpty\n ? [emptyEditorValue.current]\n : modifiedEntityValues.filter(pipe(prop('uri'), isTempUri));\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n const onAdd = useCallback(() => {\n const attribute: AttributeItem = {\n parentUri,\n attributeType\n };\n\n return onAddAttributes(\n showEmpty && !isComplexAttribute(attributeType.type) ? [attribute, attribute] : [attribute]\n );\n }, [onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n\n const commonProps = {\n attributeType: attributeType,\n errors,\n crosswalks: modifiedEntity.crosswalks,\n mode,\n onAddAttributes,\n onChangeAttribute,\n onDeactivateError,\n showNonOv: showInactive\n };\n const isEmptyAttributeList = newValues.length === 0 && values.length === 0;\n return (\n <div>\n <CardinalityMessage cardinality={cardinality} />\n <ErrorMessage message={errorMessage} />\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {newValues.map((value, idx) => (\n <EditableAttribute\n key={value.uri}\n {...commonProps}\n attributeValue={value}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n ownError={getAttributeOwnError(value, idx, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n />\n ))}\n {newValues.length > 0 && values.length > 0 && <Divider className={styles.divider} />}\n {values.map((originalValue) => {\n const modifiedEntityValue = modifiedEntityValues.find(propEq('uri', originalValue.uri));\n const value = modifiedEntityValue || originalValue;\n const deleted = entityValuesUris.includes(value.uri) && !modifiedEntityValuesUris.includes(value.uri);\n const edited = !deleted && modifiedEntityValue && !areValuesEqual(modifiedEntityValue, originalValue);\n const state = cond([\n [always(deleted), always('deleted')],\n [always(edited), always('edited')]\n ])();\n return (\n <div key={value.uri} className={classnames({[styles.ovFalse]: !isOv(value)})}>\n <EditableAttribute\n {...commonProps}\n attributeValue={value}\n ownError={getAttributeOwnError(value, null, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n state={state}\n />\n </div>\n );\n })}\n {isEmptyAttributeList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n","import React from 'react';\nimport {ReadOnlyAttribute} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n showInactive: boolean;\n};\n\nexport const SingleAttributeReadableContent = ({values, attributeType, showInactive}: Props) => {\n return (\n <>\n {values.map((value) => {\n return (\n <ReadOnlyAttribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showInactive}\n />\n );\n })}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n },\n pagination: {\n flexGrow: 0,\n flexShrink: 0\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {PivotingAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {BasicView, BasicTablePagination, LinearLoadIndicator, PivotingAttributeContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SingleAttributeHeader} from '../SingleAttributeHeader/SingleAttributeHeader';\nimport {SingleAttributeEditableContent} from '../SingleAttributeEditableContent/SingleAttributeEditableContent';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {SingleAttributeReadableContent} from '../SingleAttributeReadableContent/SingleAttributeReadableContent';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const SingleAttributeView = ({config, className}: Props) => {\n const {caption, max, showInactiveValuesMenu} = config;\n\n const styles = useStyles();\n\n const {values, totalVisibleValues, page, setPage, isLoading, hasPaging, attributeType, showInactive} = useContext(\n SingleAttributeContext\n );\n\n const entityUri = useSelector(mdm.selectors.getEntityUri);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n const pivotingAttributes: PivotingAttribute[] = useSelector(mdm.selectors.getPivotingAttributes);\n\n const hasValues = values.length !== 0;\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const renderContent = () => {\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (attributeType) {\n if (isViewMode && hasValues) {\n const props = {\n values,\n attributeType,\n showInactive\n };\n return <SingleAttributeReadableContent {...props} />;\n } else if (isEditableMode) {\n const props = {\n values,\n attributeType,\n parentUri: entityUri,\n showInactive,\n noDataText\n };\n return <SingleAttributeEditableContent {...props} />;\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n\n return (\n <PivotingAttributeContext.Provider value={pivotingAttributes}>\n <BasicView className={classnames(styles.root, className)}>\n <SingleAttributeHeader\n totalVisibleValues={totalVisibleValues}\n caption={caption}\n showInactiveValuesMenu={showInactiveValuesMenu}\n />\n <Box className={styles.content}>{renderContent()}</Box>\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n page={page}\n rowsPerPage={max}\n rowsPerPageOptions={[]}\n onChangePage={setPage}\n classes={{root: styles.pagination}}\n />\n )}\n </BasicView>\n </PivotingAttributeContext.Provider>\n );\n};\n","import {useCallback, useState, useEffect, useMemo, useRef} from 'react';\nimport {ifElse, prop, always, has, pathOr, path, partition, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n isDataTenantEntity,\n getPagedEntity,\n getAttributeSource,\n AttributeValue,\n SearchFilter,\n findAttributeTypeByUri,\n isReadableAttribute,\n isTempUri,\n isOv,\n findAttributeValues,\n isFirstLevelAttributeUri,\n SingleAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useSafePromise, useDidUpdateEffect} from '@reltio/components';\nimport {getPagedLocalEntity, getAttributeNameFromAttributeUri} from './helpers';\n\ntype Params = {\n filters?: SearchFilter[];\n searchQuery?: string;\n sorting?: {\n field: string;\n order: string;\n };\n page: number;\n showInactive: boolean;\n};\n\nexport const useSingleAttributeLoader = (\n config: SingleAttributeViewConfig,\n params: Params,\n canShowHistoryDiff: boolean\n) => {\n const {attributeUri, max = 15} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const [values, setValues] = useState([]);\n const [paging, setPaging] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n const attributeValuesRef = useRef<AttributeValue[]>(null);\n\n const dispatch = useDispatch();\n const apiPath = useSelector(mdm.selectors.getApiPath);\n const tenant = useSelector(mdm.selectors.getTenant);\n const entitySelector = canShowHistoryDiff ? mdm.selectors.getEntityWithDiff : mdm.selectors.getEntityWithoutDiff;\n const entity = useSelector(entitySelector);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const diff = useSelector(mdm.selectors.getHistoryDiff);\n\n const parentUri = entity.uri;\n const attributeTypeName = getAttributeNameFromAttributeUri(attributeUri);\n const attributeTypeSource = getAttributeSource(attributeUri);\n attributeValuesRef.current = findAttributeValues(entity, parentUri, attributeTypeName);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const {globalFilter} = useSelector(mdm.selectors.getGlobalSearchRequestOptions);\n const {showInactive} = params;\n const loadAttributes = useCallback(() => {\n if (\n attributeType &&\n isReadableAttribute(attributeType) &&\n !isTempUri(parentUri) &&\n isFirstLevelAttributeUri(attributeUri)\n ) {\n setIsLoading(true);\n const {page, showInactive, ...rest} = params;\n const request = isDataTenantEntity(entity) || isHistoryModeEnabled ? getPagedLocalEntity : getPagedEntity;\n safePromise(\n request({\n metadata,\n entity,\n apiPath,\n tenant,\n parentUri,\n defaultMaxValues: max,\n attributeTypeUri: attributeUri,\n offset: max * page,\n globalFilter,\n options: showInactive ? '' : undefined,\n ...rest\n })\n )\n .then((response) => {\n const attributes = path([attributeTypeSource], response);\n const values: AttributeValue[] = pathOr([], [attributeTypeName], attributes);\n if (!isHistoryModeEnabled) {\n dispatch(\n profile.actions.processNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeUri,\n attributeTypeName,\n values\n })\n );\n }\n setValues(\n values.map((loadedValue) => {\n const valueFromEntity = attributeValuesRef.current?.find(propEq('uri', loadedValue.uri));\n return valueFromEntity || loadedValue;\n })\n );\n setPaging(path(['paging', attributeUri], attributes));\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n setValues([]);\n setPaging(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiPath,\n parentUri,\n tenant,\n attributeUri,\n max,\n metadata,\n params,\n globalFilter,\n attributeType,\n isHistoryModeEnabled,\n diff\n ]);\n\n useEffect(() => {\n loadAttributes();\n }, [loadAttributes]);\n\n useDidUpdateEffect(() => {\n if (isViewMode) {\n loadAttributes();\n }\n }, [isViewMode]);\n const partitionByOv = partition(isOv);\n const [, nonOvValues] = partitionByOv(attributeValuesRef.current || []);\n const nonVisibleValues = showInactive ? [] : nonOvValues;\n const totalProp = showInactive ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(values.length))(paging);\n const hasPaging = max < totalVisibleValues;\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n return {\n values,\n isLoading,\n hasPaging,\n totalVisibleValues,\n attributeType,\n totalNonVisibleValues,\n nonVisibleValues\n };\n};\n","import React from 'react';\nimport {RelationsViewState} from '../hooks/useRelationsState';\n\nexport const RelationsViewStateContext = React.createContext<RelationsViewState>(null);\n\nRelationsViewStateContext.displayName = 'RelationsViewStateContext';\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nconst popupHorizontalPadding = '23px';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n button: {\n color: theme.palette.text.secondary,\n width: '36px',\n minWidth: '36px'\n },\n popupContent: {\n padding: `19px ${popupHorizontalPadding}`\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n },\n divider: {\n backgroundColor: 'rgba(0,0,0,0.1)',\n margin: `19px -${popupHorizontalPadding}`\n },\n title: {\n marginBottom: '30px'\n },\n sortControls: {\n display: 'flex',\n alignItems: 'center'\n },\n sortSelectorRoot: {\n flex: 1,\n padding: '13px 16px',\n fontSize: '0.85rem'\n },\n sortSelectorMenuItem: {\n fontSize: '0.85rem'\n },\n sortOrderButton: {\n flexShrink: 0,\n margin: '0 8px 0 7px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {DropDownEditor, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {Popover as Popover} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport {Button as Button} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\nimport {RelationsViewStateContext} from '../../../contexts/RelationsViewStateContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const {\n showInactive,\n toggleShowInactive,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions\n } = useContext(RelationsViewStateContext);\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n const hasSortOptions = !isEmptyValue(sortOptions);\n\n const isAsc = sortOrder === 'asc';\n\n return (\n <>\n <Button\n ref={buttonRef}\n classes={{\n root: classnames(styles.button, className)\n }}\n onClick={togglePopup}\n >\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={toggleShowInactive}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n {hasSortOptions && (\n <>\n <Divider className={styles.divider} />\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Sort by')}\n </Typography>\n <div className={styles.sortControls}>\n <DropDownEditor\n entries={sortOptions}\n TextFieldProps={{variant: 'filled'}}\n classes={{\n root: styles.sortSelectorRoot,\n menuItem: styles.sortSelectorMenuItem\n }}\n fullWidth\n disableUnderline\n value={sortOption}\n onChange={changeSortOption}\n MenuProps={{\n getContentAnchorEl: null,\n anchorOrigin: {vertical: 'bottom', horizontal: 'left'}\n }}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isAsc ? i18n.text('Ascending') : i18n.text('Descending')}\n icon={isAsc ? ArrowUpwardIcon : ArrowDownwardIcon}\n onClick={toggleSortOrder}\n className={styles.sortOrderButton}\n size=\"L\"\n />\n </div>\n </>\n )}\n </Popover>\n </>\n );\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport default FilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 6px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n }\n});\n","import React from 'react';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\nexport const ImportDTContext = React.createContext<{\n reloadRelations: () => void;\n config: Pick<RelationsViewConfig, 'content' | 'importFromDT' | 'maxDtssImport'>;\n }>(null);\n","import {useSelector, useDispatch} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {useCallback, useContext, useEffect, useState} from 'react';\nimport {getRequestErrorMessage, hasNonImportedRelations, importDTConnections, isTempUri} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {ImportDTContext} from '../../../../contexts/ImportDTContext';\nimport i18n from 'ui-i18n';\n\nconst MAX = Math.pow(2, 31) - 1;\ntype Tenant = {id: string; label: string};\n\nexport const useImportFromDTLoader = () => {\n const dataTenants: Array<Tenant> = useSelector(mdmModule.selectors.getDataTenants);\n const dispatch = useDispatch();\n const {config, reloadRelations} = useContext(ImportDTContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const [tenants, setTenants] = useState<Array<Tenant>>([]);\n const [selectedTenant, setSelectedTenant] = useState<Tenant>(null);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const customerTenant = useSelector(mdmModule.selectors.getTenant);\n const content = [{...config.content, offset: 0, max: config.maxDtssImport ?? MAX}];\n\n const checkHasNonImportedConnections = useCallback(() => {\n setTenants([]);\n if (config.importFromDT && !isTempUri(entityUri)) {\n Promise.all(\n (dataTenants || []).map((tenant) =>\n hasNonImportedRelations({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: tenant.id\n }).then(({hasNonImportedConnections}) => ({\n ...tenant,\n hasNonImportedConnections\n }))\n )\n )\n .then((modifiedTenants) => modifiedTenants.filter((tenant) => tenant.hasNonImportedConnections))\n .then(setTenants);\n }\n }, [entityUri, dtssPath, customerTenant, config, dataTenants]);\n\n const onConfirmImport = useCallback(() => {\n importDTConnections({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: selectedTenant.id\n })\n .then(() => {\n reloadRelations();\n checkHasNonImportedConnections();\n })\n .catch((error) =>\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))))\n );\n setSelectedTenant(null);\n }, [\n entityUri,\n dtssPath,\n customerTenant,\n config,\n checkHasNonImportedConnections,\n reloadRelations,\n selectedTenant,\n setSelectedTenant\n ]);\n\n useEffect(() => {\n checkHasNonImportedConnections();\n }, [checkHasNonImportedConnections]);\n const onCancelConfirmation = useCallback(() => setSelectedTenant(null), []);\n const onImportClick = useCallback((tenant: Tenant) => setSelectedTenant(tenant), []);\n return {\n tenants,\n selectedTenant,\n onConfirmImport,\n onCancelConfirmation,\n onImportClick\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n tenant: {\n backgroundColor: '#0000EE',\n cursor: 'pointer',\n position: 'absolute',\n top: '8px',\n left: '22px',\n width: '10px',\n height: '10px',\n color: 'white',\n fontSize: '10px',\n fontWeight: 'bold',\n userSelect: 'text',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n button: {\n position: 'relative'\n },\n badge: {\n fontSize: '10px',\n height: '14px',\n minWidth: '14px',\n width: '14px',\n fontWeight: 'bold',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px',\n top: '4px'\n }\n}));\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {Badge as Badge} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ninterface Props {\n label: number | string;\n}\n\nexport const MultipleImportIcon = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Badge\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n badgeContent={label}\n >\n <CloudDownloadIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {useImportFromDTLoader} from './hooks/useImportFromDTLoader';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {ConfirmationDialog} from '@reltio/components';\nimport {MultipleImportIcon} from './MultipleImportIcon';\n\nexport const ImportFromDT = () => {\n const {tenants, selectedTenant, onConfirmImport, onCancelConfirmation, onImportClick} = useImportFromDTLoader();\n const styles = useStyles();\n const oneTenant = tenants.length === 1;\n const labelOnButton = oneTenant\n ? tenants[0].label.indexOf('DT:') === 0\n ? tenants[0].label[3]\n : tenants[0].label[0]\n : tenants.length;\n return (\n <>\n {!!tenants.length && (\n <>\n {oneTenant ? (\n <div className={styles.button}>\n <SmallIconButtonWithTooltip\n size={'L'}\n icon={CloudDownloadIcon}\n tooltipTitle={i18n.text('Import connections from ${label}', {label: tenants[0].label})}\n onClick={() => onImportClick(tenants[0])}\n />\n <div className={classnames(styles.tenant)}>{labelOnButton}</div>\n </div>\n ) : (\n <DropDownMenuButton\n menuId={'importDT-table-actions'}\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n tooltipTitle: i18n.text('Import connections'),\n size: 'L',\n // eslint-disable-next-line react/display-name\n icon: () => <MultipleImportIcon label={labelOnButton} />\n }}\n menuItems={tenants.map((tenant) => ({\n onClick: () => {\n onImportClick(tenant);\n },\n text: tenant.label\n }))}\n />\n )}\n <ConfirmationDialog\n open={!!selectedTenant}\n title={i18n.text('Confirmation')}\n content={i18n.text('Import connections from ${label}?', {label: selectedTenant?.label})}\n discardCaption={i18n.text('Cancel')}\n saveCaption={i18n.text('Import')}\n onDiscard={onCancelConfirmation}\n onSave={onConfirmImport}\n />\n </>\n )}\n </>\n );\n};\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {ExpandableSearchInput, FacetViewHeader, HideOnShrink, VerticalDivider} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport FilterButton from './FilterButton/FilterButton';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {useStyles} from './styles';\nimport {ImportFromDT} from './ImportFromDT/ImportFromDT';\n\ntype Props = {\n title?: string;\n total?: number;\n};\n\nconst RelationsHeader = ({title, total}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, changeSearchQuery} = useContext(RelationsViewStateContext);\n\n return (\n <FacetViewHeader title={title || ''} className={styles.header}>\n {total > 0 && (\n <HideOnShrink widthToHide={400}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} items', {count: total})\n : i18n.text('${count} item', {count: total})}\n </Typography>\n </HideOnShrink>\n )}\n <ExpandableSearchInput query={searchQuery} onChange={changeSearchQuery} />\n <ImportFromDT />\n <FilterButton />\n </FacetViewHeader>\n );\n};\n\nexport default RelationsHeader;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n tooltip: theme.tooltip,\n tooltipContent: {\n minWidth: '165px',\n padding: '4px 2px 2px'\n },\n label: {\n fontSize: '11px',\n lineHeight: '13px',\n fontWeight: 500,\n margin: 0,\n color: 'white'\n },\n secondaryLabel: {\n color: 'rgba(255, 255, 255, 0.7)',\n fontSize: '10px',\n marginTop: '4px',\n fontWeight: 500,\n lineHeight: '11px'\n },\n progress: {\n marginTop: '4px',\n color: '#FFFFFF'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {isNil, ifElse} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n ConnectionEntity,\n getDataTenantEntitySecondaryLabel,\n getEntitySecondaryLabel,\n isDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useSafePromise} from '@reltio/components';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nconst PROGRESS_ICON_SIZE = 16;\n\ntype Props = {\n label: string;\n entity?: ConnectionEntity;\n children: React.ReactElement;\n};\n\nconst RelationTooltip = ({label, entity, children, ...tooltipProps}: Props) => {\n const styles = useStyles();\n const safePromise = useSafePromise();\n const tenant = useSelector(mdm.selectors.getTenant);\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const [isLoading, setIsLoading] = useState(false);\n const [secondaryLabel, setSecondaryLabel] = useState<string>(null);\n\n useEffect(() => {\n setSecondaryLabel(null);\n }, [entity]);\n\n const onOpen = useCallback(() => {\n if (entity?.entityUri && isNil(secondaryLabel)) {\n const request = ifElse(\n isDataTenantEntity,\n (entity: ConnectionEntity) =>\n getDataTenantEntitySecondaryLabel({\n entityUri: entity.entityUri,\n dataTenant: entity.dataTenant,\n customerTenant: tenant,\n dtssPath\n }),\n (entity: ConnectionEntity) => getEntitySecondaryLabel(entity.entityUri)\n );\n\n setIsLoading(true);\n safePromise(request(entity))\n .then(({secondaryLabel}) => {\n setSecondaryLabel(secondaryLabel);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [dtssPath, entity, tenant, safePromise, secondaryLabel]);\n\n const tooltipContent = (\n <div className={styles.tooltipContent}>\n <div className={styles.label}>{label}</div>\n {isLoading && <CircularProgress size={PROGRESS_ICON_SIZE} classes={{colorPrimary: styles.progress}} />}\n {secondaryLabel && <div className={styles.secondaryLabel}>{secondaryLabel}</div>}\n </div>\n );\n\n return (\n <Tooltip\n onOpen={onOpen}\n title={tooltipContent}\n disableFocusListener\n classes={{tooltip: styles.tooltip}}\n {...tooltipProps}\n >\n {children}\n </Tooltip>\n );\n};\n\nexport default RelationTooltip;\n","import {\n Connection,\n Metadata,\n getEntityType,\n getLabel,\n getEntityUriForLink,\n getRelationTypeLabelFromMetadata\n} from '@reltio/mdm-sdk';\n\nexport const useRelationInfo = (connection: Connection, metadata: Metadata) => {\n const {entity, relation} = connection;\n const entityType = getEntityType(metadata, entity?.entityType) as string;\n const entityLabel = getLabel(entity?.entityLabel) as string;\n const preparedUri = getEntityUriForLink({uri: entity?.entityUri, dataTenant: entity?.dataTenant}) as string;\n const relationLabel =\n relation?.relationLabel || (getRelationTypeLabelFromMetadata(metadata, relation?.relationType) as string);\n\n return {\n entityType,\n entityLabel,\n preparedUri,\n relationLabel\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button, {ButtonProps} from '@material-ui/core/Button';\nimport {useStyles} from './styles';\n\ntype Props = {\n acceptRelation: () => void;\n ignoreRelation: () => void;\n};\n\nexport const SuggestedButtons = ({acceptRelation, ignoreRelation, ...props}: Props & ButtonProps) => {\n const styles = useStyles();\n return (\n <div className={styles.container}>\n <Button onClick={acceptRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Accept')}\n </Button>\n <Button onClick={ignoreRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Ignore')}\n </Button>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n\n marginBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '24px',\n padding: '0 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n editButtonsContent: {\n marginLeft: 'auto',\n flex: '0 0 40px'\n },\n editButtons: {\n padding: 0\n },\n removed: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary,\n margin: '0 5px'\n }\n}));\n","import React, {memo, useCallback} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Connection, Metadata, isActiveObject, Mode, checkRemoved, checkEdited, checkIgnored} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, EntityUriLink, SmallIconButtonWithTooltip} from '@reltio/components';\nimport RelationTooltip from '../RelationTooltip/RelationTooltip';\nimport {useRelationInfo} from '../../hooks/useRelationInfo';\nimport {checkRelationPermission} from '../../helpers/permissions';\nimport {SuggestedButtons} from '../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n onRemoveRelation: (relationUri: string) => void;\n onEditRelation: (connection: Connection) => void;\n onAcceptRelation?: (connection: Connection) => void;\n onIgnoreRelation?: (connection: Connection) => void;\n metadata: Metadata;\n showControls: boolean;\n renderRelationArrowButton?: () => React.ReactNode;\n};\n\nconst EditableRelationItem = memo(\n ({\n connection,\n metadata,\n showControls,\n onRemoveRelation,\n onEditRelation,\n onAcceptRelation,\n onIgnoreRelation,\n renderRelationArrowButton\n }: Props) => {\n const styles = useStyles();\n\n const {entity, relation} = connection;\n const removed = checkRemoved(connection);\n const edited = checkEdited(connection);\n const ignored = checkIgnored(connection);\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode: Mode.Editing,\n onRemoveRelation,\n onEditRelation,\n metadata,\n connection\n });\n\n const handleRemoveRelation = useCallback(() => onRemoveRelation(connection.relation.relationUri), [\n onRemoveRelation,\n connection\n ]);\n\n const handleEditRelation = useCallback(() => onEditRelation(connection), [onEditRelation, connection]);\n\n const handleAcceptRelation = useCallback(() => {\n onAcceptRelation(connection);\n }, [onAcceptRelation, connection]);\n\n const handleIgnoreRelation = useCallback(() => onIgnoreRelation(connection), [onIgnoreRelation, connection]);\n\n const editButtonsContent =\n (canRemove || canUpdate) && showControls && !connection.suggested ? (\n <>\n {canUpdate && (\n <SmallIconButtonWithTooltip\n icon={EditIcon}\n size=\"XS\"\n onClick={handleEditRelation}\n tooltipTitle={i18n.text('Edit')}\n />\n )}\n {canRemove && (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n size=\"XS\"\n onClick={handleRemoveRelation}\n tooltipTitle={i18n.text('Remove')}\n />\n )}\n </>\n ) : undefined;\n\n const suggustedButtonsContent = connection.suggested ? (\n <SuggestedButtons\n acceptRelation={handleAcceptRelation}\n ignoreRelation={handleIgnoreRelation}\n size=\"small\"\n disabled={ignored}\n />\n ) : undefined;\n const captionText = ignored ? i18n.text('ignored') : i18n.text('edited');\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.removed]: removed || ignored}\n )}\n >\n <div className={styles.row}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {(edited || ignored) && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({captionText})\n </Typography>\n )}\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n\n <div className={styles.editButtonsContent}>{editButtonsContent}</div>\n {suggustedButtonsContent}\n </div>\n </div>\n );\n }\n);\n\nEditableRelationItem.displayName = 'EditableRelationItem';\n\nexport default EditableRelationItem;\n","import {checkMetadataForDelete, checkMetadataForUpdate, checkRemoved, getRelationType, Mode} from '@reltio/mdm-sdk';\n\nexport const checkRelationPermission = ({metadata, mode, connection, onRemoveRelation, onEditRelation}) => {\n const isEditableMode = mode === Mode.Editing || mode === Mode.Suggesting;\n if (isEditableMode && connection) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n","import {Directions, wrapInArrayIfNeeded, InOutRelation} from '@reltio/mdm-sdk';\n\nexport const getFirstRelationTypeObject = (inRelations: InOutRelation, outRelations: InOutRelation) => {\n const prepareRelation = (direction, relations) => {\n const relationsArr = relations ? wrapInArrayIfNeeded(relations) : [];\n return relationsArr.map((relation) => ({\n type: relation,\n direction: direction === Directions.IN ? Directions.IN : Directions.OUT\n }));\n };\n return prepareRelation(Directions.IN, inRelations).concat(prepareRelation(Directions.OUT, outRelations))[0];\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n arrowIcon: {\n fontSize: '16px',\n marginRight: '6px'\n }\n});\n","import React from 'react';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {checkNew, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n connection: Connection;\n config: RelationsViewConfig;\n showSecondLevel: boolean;\n};\n\nexport const RelationArrowButton = ({onClick, connection, config, showSecondLevel}: Props) => {\n const styles = useStyles();\n const {parentEntityUri} = connection;\n const {contentSecondLevel} = config;\n\n const props = {\n onClick,\n className: styles.arrowIcon\n };\n\n if (parentEntityUri || !contentSecondLevel || checkNew(connection)) {\n return null;\n }\n\n return showSecondLevel ? <ArrowDropDownIcon {...props} /> : <ArrowRightIcon {...props} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n row: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n secondLevelContent: {\n paddingLeft: '24px'\n }\n});\n","import React, {useContext, useMemo} from 'react';\nimport {Connection, ActivityFilter, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useSecondLevelConnections} from '../../hooks/useSecondLevelConnections';\nimport {RelationArrowButton} from '../RelationArrowButton/RelationArrowButton';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {useStyles} from './styles';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {EntitiesMapContext} from '@reltio/components';\n\ntype Props = {\n config: RelationsViewConfig;\n connection: Connection;\n children: (render: () => React.ReactNode) => React.ReactNode;\n};\n\nexport const SecondLevelWrapper = ({config, connection, children}: Props) => {\n const styles = useStyles();\n\n const {showInactive} = useContext(RelationsViewStateContext);\n\n const {\n connections,\n showSecondLevel,\n toggleShowSecondLevel,\n loadRelations,\n loading,\n total\n } = useSecondLevelConnections({\n config,\n connection,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const renderRelationArrowButton = () => {\n return (\n <RelationArrowButton\n onClick={toggleShowSecondLevel}\n connection={connection}\n config={config}\n showSecondLevel={showSecondLevel}\n />\n );\n };\n\n return (\n <>\n {children(renderRelationArrowButton)}\n {showSecondLevel && (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.secondLevelContent}>\n <RelationsContent\n isLoading={loading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n parentEntityUri={connection.entity.entityUri}\n />\n </div>\n </EntitiesMapContext.Provider>\n )}\n </>\n );\n};\n","import {useState, useCallback} from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {\n Connection,\n getRelationsForEntity,\n ActivityFilter,\n GlobalSearchRequestOptions,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\ntype Params = {\n config: RelationsViewConfig;\n connection: Connection;\n relationActivityFilter: ActivityFilter;\n};\n\nexport const useSecondLevelConnections = ({config, connection, relationActivityFilter}: Params) => {\n const dispatch = useDispatch();\n\n const [showSecondLevel, setShowSecondLevel] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const {contentSecondLevel} = config;\n const {entity} = connection;\n\n const connections =\n (useSelector((state) =>\n mdmModule.selectors.getConnectionsWithDraftsByViewId(state, config.id, entity.entityUri)\n ) as Connection[]) || [];\n\n const total = useSelector((state) => mdmModule.selectors.getTotalByViewId(state, config.id, entity.entityUri));\n const {activityFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n\n const loadRelations = useCallback(() => {\n const requestConfig = {\n ...contentSecondLevel,\n returnObjects: true,\n returnDates: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n }\n };\n\n setLoading(true);\n\n getRelationsForEntity(entity.entityUri, [requestConfig]).then((response) => {\n const {connections, total} = response[0];\n\n if (connections) {\n dispatch(\n profile.relations.actions.secondLevelRelationsLoaded({\n connections,\n parentEntityUri: entity.entityUri,\n id: config.id,\n total\n })\n );\n }\n\n setLoading(false);\n });\n }, [config.id, contentSecondLevel, dispatch, entity.entityUri, activityFilter, relationActivityFilter]);\n\n const toggleShowSecondLevel = useCallback(() => {\n if (!showSecondLevel && !connection.connections) {\n loadRelations();\n }\n\n setShowSecondLevel((show) => !show);\n }, [loadRelations, connection.connections, showSecondLevel]);\n\n return {connections, showSecondLevel, toggleShowSecondLevel, loadRelations, loading, total};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px',\n marginLeft: '16px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 0 8px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, partition, evolve, always, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n Connection,\n isTempUri,\n Mode,\n createNewConnectionWithDefaultRelationType,\n checkNew,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {RelationEditor} from '@reltio/components';\nimport EditableRelationItem from '../EditableRelationItem/EditableRelationItem';\nimport {getFirstRelationTypeObject} from '../../helpers/relation';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n noDataText: string;\n connections: Array<Connection>;\n config: RelationsViewConfig;\n mode: Mode;\n parentEntityUri?: string;\n};\n\nconst RelationsEditableContent = ({className, connections = [], config, mode, noDataText, parentEntityUri}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationToAdd = useSelector((state) => mdmModule.selectors.getRelationToAddByViewId(state, config.id));\n const relationsToEdit = useSelector((state) => mdmModule.selectors.getRelationsToEditByViewId(state, config.id));\n const entity = useSelector(mdmModule.selectors.getEntity);\n const checkIfCanAddRelations = useSelector((state) =>\n mdmModule.selectors.getCheckIfCanAddRelations(state, config.content)\n );\n\n const dispatch = useDispatch();\n const styles = useStyles();\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({config, mode, metadata, parentEntityUri});\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n }, [config, mode, metadata, dispatch, parentEntityUri]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n dispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n dispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => profile.relations.selectors.getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = profile.relations.selectors.getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n dispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, dispatch]\n );\n const content = config.content;\n const defaultRelationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const onAcceptRelation = useCallback(\n (connection) => {\n const connectionWithDefaultRelationType = pipe(\n omit(['suggested']),\n evolve({\n relation: {\n relationType: always(defaultRelationTypeObject.type),\n object: evolve({type: always(defaultRelationTypeObject.type), attributes: always(null)})\n }\n })\n )(connection);\n dispatch(profile.relations.actions.addRelation(config.id, connectionWithDefaultRelationType));\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const onIgnoreRelation = useCallback(\n (connection) => {\n dispatch(\n profile.relations.actions.ignoreRelation(config.id, {\n relationType: defaultRelationTypeObject.type,\n relationDirection: defaultRelationTypeObject.direction,\n entityUri: connection.entity.entityUri,\n relationUri: connection.relation.relationUri\n })\n );\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const [newConnections, currentConnections] = partition(checkNew, connections);\n const canAddRelations = entity && checkIfCanAddRelations;\n\n const isEmptyRelationList = newConnections.length === 0 && currentConnections.length === 0;\n\n const getRelationEditableContent = (connection: Connection) => {\n const openedRelation = relationsToEdit.find(\n (openedRelation) => openedRelation?.relation?.relationUri === connection?.relation?.relationUri\n );\n const showControls = !config.allowOnlyCreateNew || checkNew(connection);\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n return openedRelation ? (\n <RelationEditor connection={openedRelation} config={config} mode={mode} metadata={metadata} />\n ) : (\n <EditableRelationItem\n renderRelationArrowButton={renderRelationArrowButton}\n connection={connection}\n metadata={metadata}\n showControls={showControls}\n onRemoveRelation={onRemoveRelation}\n onEditRelation={pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)}\n onAcceptRelation={onAcceptRelation}\n onIgnoreRelation={onIgnoreRelation}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n };\n\n const shouldShowAddRelationButton =\n canAddRelations && (!relationToAdd || (relationToAdd && relationToAdd.parentEntityUri === parentEntityUri));\n\n const shouldShowRelationEditorToAdd = relationToAdd && relationToAdd.parentEntityUri === parentEntityUri;\n\n return (\n <div className={className}>\n {shouldShowAddRelationButton && (\n <Button color=\"primary\" onClick={onAddRelation} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {shouldShowRelationEditorToAdd && (\n <RelationEditor connection={relationToAdd} config={config} mode={mode} metadata={metadata} />\n )}\n {newConnections.map(getRelationEditableContent)}\n {newConnections.length > 0 && currentConnections.length > 0 && <Divider className={styles.divider} />}\n {currentConnections.map(getRelationEditableContent)}\n {isEmptyRelationList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n\nexport default RelationsEditableContent;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n attributesList: {\n paddingLeft: '46px',\n paddingRight: '16px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n }\n}));\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n CollaborationObjectTypes,\n Connection,\n createRelatedObjectUris,\n Entity,\n getActivenessAttributes,\n getAttributesListForReadMode,\n getAttributeValuesUris,\n getRelationAttributesList,\n isEmptyValue,\n Metadata\n} from '@reltio/mdm-sdk';\nimport {CollaborationContext, ReadOnlyAttributesList, RelatedObjectUrisContext} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {isEmpty} from 'ramda';\n\ntype Props = {\n connection: Connection;\n className?: string;\n};\n\nexport const RelationAttributes = ({connection, className}: Props) => {\n const styles = useStyles();\n\n const {relation} = connection;\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n\n const firstLevelRelationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relation?.relationType) as AttributeType[],\n [relation?.relationType, metadata]\n );\n\n const attributeListEntity = useMemo(\n () => ({\n attributes: {\n ...profile.relations.selectors.getRelationAttributesFromConnection(connection)\n },\n ...getActivenessAttributes(connection?.relation || {})\n }),\n [connection]\n );\n\n const attributesList = useMemo(\n () => getAttributesListForReadMode(firstLevelRelationAttrTypes, attributeListEntity as Entity),\n [firstLevelRelationAttrTypes, attributeListEntity]\n );\n\n const showAttributesList = attributesList.filter(({values}) => !isEmptyValue(values)).length > 0;\n\n const objectIds = useMemo(() => getAttributeValuesUris(attributeListEntity.attributes), [attributeListEntity]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n !isEmpty(objectIds) && getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const additionalRelatedObjectUris = useMemo(\n () => createRelatedObjectUris(CollaborationObjectTypes.RELATION, {entityUri: currentEntityUri, connection}),\n [connection, currentEntityUri]\n );\n\n return showAttributesList ? (\n <RelatedObjectUrisContext.Provider value={additionalRelatedObjectUris}>\n <ReadOnlyAttributesList\n className={classnames(styles.attributesList, className)}\n entity={attributeListEntity}\n attrTypes={firstLevelRelationAttrTypes}\n />\n </RelatedObjectUrisContext.Provider>\n ) : (\n <div className={classnames(styles.attributesList, className)}>{i18n.text('No attributes')}</div>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport InfoIconSelected from '@material-ui/icons/InfoRounded';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\n\ntype Props = {\n show: boolean;\n onToggle: () => void;\n className?: string;\n};\n\nexport const ShowDetailsButton = ({show, onToggle, className}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n className={className}\n tooltipTitle={\n show\n ? i18n.text('Hide attributes of the relationship')\n : i18n.text('Show attributes of the relationship')\n }\n tooltipPlacement=\"bottom-end\"\n size=\"XXS\"\n icon={show ? InfoIconSelected : InfoIcon}\n onClick={onToggle}\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string; suggested: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '16px',\n padding: '3px 11px 3px 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n wordBreak: 'break-all',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n showDetails: {\n marginLeft: 'auto',\n paddingRight: '5px'\n },\n attributesList: {\n paddingLeft: '46px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n },\n suggestedWrapper: {\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n marginLeft: 'auto',\n alignItems: 'center',\n '& + $showDetails': {\n marginLeft: '4px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n },\n labelWrapper: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {\n Connection,\n Metadata,\n isActiveObject,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {useStyles} from './styles';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\n\ntype Props = {\n connection: Connection;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nconst RelationItem = memo(({connection, renderRelationArrowButton, acceptRelation, ignoreRelation}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n const {entity, relation} = connection;\n const [showDetails, setShowDetails] = useState(false);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.suggestedWrapper]: isSuggested}\n )}\n >\n <div className={classnames(styles.row, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <div className={styles.labelWrapper}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n </div>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n size=\"small\"\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetails}\n />\n )}\n </div>\n </div>\n {showDetails && <RelationAttributes connection={connection} />}\n </div>\n );\n});\n\nRelationItem.displayName = 'RelationItem';\n\nexport default RelationItem;\n","import {pluck, mean, pipe, defaultTo} from 'ramda';\nimport {Rating} from '@reltio/mdm-sdk';\n\nexport const calcAverageRating = (ratings: Rating[]) => {\n return pipe(pluck('value'), mean, defaultTo(0))(ratings);\n};\n\nexport const getCountOfLikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 5).length;\n};\n\nexport const getCountOfDislikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 1).length;\n};\n\nexport const calcWidthOfLikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfLikes(ratings) / ratings.length) * 100 + '%';\n};\n\nexport const calcWidthOfDislikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfDislikes(ratings) / ratings.length) * 100 + '%';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end'\n },\n averageRating: {\n marginBottom: '7px',\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px',\n color: theme.palette.text.primary\n },\n scale: {\n display: 'flex',\n marginBottom: '6px',\n width: '128px',\n height: '4px'\n },\n likesScale: {\n height: '100%',\n backgroundColor: '#8CC152'\n },\n dislikesScale: {\n height: '100%',\n backgroundColor: 'rgb(255, 112, 112)'\n },\n counts: {\n display: 'flex'\n },\n likesCount: {\n marginRight: '32px'\n },\n count: {\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n icon: {\n marginRight: '4px',\n width: '14px',\n height: '14px',\n color: 'rgba(0,0,0,0.38)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport ThumbUpIcon from '@material-ui/icons/ThumbUp';\nimport ThumbDownIcon from '@material-ui/icons/ThumbDown';\nimport {\n calcAverageRating,\n calcWidthOfDislikesScale,\n calcWidthOfLikesScale,\n getCountOfDislikes,\n getCountOfLikes\n} from '../../../helpers/ratings';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n className?: string;\n};\n\nexport const Ratings = ({ratings, className}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, className)}>\n <Typography className={styles.averageRating}>{calcAverageRating(ratings).toFixed(1)}</Typography>\n <div className={styles.scale}>\n <div className={styles.likesScale} style={{width: calcWidthOfLikesScale(ratings)}} />\n <div className={styles.dislikesScale} style={{width: calcWidthOfDislikesScale(ratings)}} />\n </div>\n <div className={styles.counts}>\n <div className={classnames(styles.likesCount, styles.count)}>\n <ThumbUpIcon className={styles.icon} />\n {getCountOfLikes(ratings)}\n </div>\n <div className={styles.count}>\n <ThumbDownIcon className={styles.icon} />\n {getCountOfDislikes(ratings)}\n </div>\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex'\n },\n button: {\n fontSize: '14px',\n textTransform: 'none',\n color: theme.palette.text.secondary\n },\n likeButton: {\n marginLeft: '-12px',\n marginRight: '8px'\n },\n isActive: {\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {DropDownMenuButton} from '@reltio/components';\nimport {Button as Button} from '@material-ui/core';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n onAgree: () => void;\n onDisagree: (comment: string) => void;\n};\n\nexport const RatingsButtons = ({ratings, onAgree, onDisagree}: Props) => {\n const styles = useStyles();\n\n const username = useSelector(mdmModule.selectors.getUserName) as string;\n const ratingOfCurrentUser = ratings.find(({user}) => user === username);\n\n const menuItems = [\n {\n text: i18n.text('Has left the practice'),\n onClick: () => onDisagree(i18n.text('Has left the practice'))\n },\n {\n text: i18n.text('Has moved away'),\n onClick: () => onDisagree(i18n.text('Has moved away'))\n },\n {\n text: i18n.text('Has passed away'),\n onClick: () => onDisagree(i18n.text('Has passed away'))\n },\n {\n text: i18n.text('Has retired'),\n onClick: () => onDisagree(i18n.text('Has retired'))\n },\n {\n text: i18n.text('Other'),\n onClick: () => onDisagree(i18n.text('Other'))\n }\n ];\n\n return (\n <div className={styles.wrapper}>\n <Button\n onClick={onAgree}\n variant=\"text\"\n size=\"small\"\n className={classnames(styles.button, styles.likeButton, {\n [styles.isActive]: ratingOfCurrentUser?.value === 5\n })}\n >\n Agree\n </Button>\n <DropDownMenuButton\n buttonProps={{\n endIcon: <ArrowDropDownIcon />,\n variant: 'text',\n size: 'small',\n className: classnames(styles.button, {\n [styles.isActive]: ratingOfCurrentUser?.value === 1\n })\n }}\n buttonContent={ratingOfCurrentUser?.value === 1 ? ratingOfCurrentUser.comment : 'Disagree'}\n menuItems={menuItems}\n menuId=\"disagree-dropdown-menu-button\"\n />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {suggested: string}) => ({\n wrapper: {\n padding: '6px 16px 6px'\n },\n entityTypeIcon: {\n marginRight: '16px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '14px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n entityLabelContainer: {\n wordBreak: 'break-all',\n textDecoration: 'none'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n ratings: {\n marginLeft: 'auto'\n },\n showDetailsButton: {\n marginLeft: '16px',\n marginTop: '18px'\n },\n relationAttributes: {\n paddingLeft: '60px'\n },\n suggestedWrapper: {\n padding: '6px 8px 6px 16px',\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n alignSelf: 'center',\n '& + $ratings': {\n marginLeft: '16px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n }\n}));\n","import React, {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n Metadata,\n Connection,\n rateRelation,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {Ratings} from '../Ratings/Ratings';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {RatingsButtons} from '../RatingsButtons/RatingsButtons';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n loadRelations: () => void;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nexport const RelationComplexItem = ({\n connection,\n loadRelations,\n renderRelationArrowButton,\n acceptRelation,\n ignoreRelation\n}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n\n const [showDetails, setShowDetails] = useState(false);\n\n const {entity, relation} = connection;\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityLabel, entityType, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const ratings = relation?.ratings || [];\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n\n const handleAgree = () => {\n rateRelation(relation?.relationUri, {\n comment: '',\n value: 5\n }).then(loadRelations);\n };\n\n const handleDisagree = (comment: string) => {\n rateRelation(relation?.relationUri, {\n comment,\n value: 1\n }).then(loadRelations);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n\n return (\n <div className={classnames(styles.wrapper, {[styles.suggestedWrapper]: isSuggested})}>\n <Box display=\"flex\" minHeight=\"44px\" className={COMMENTS_CONTAINER_VISIBILITY_AREA}>\n <Box display=\"flex\" alignItems=\"center\">\n <Box display=\"flex\" alignItems=\"center\">\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon entityType={entityType} className={styles.entityTypeIcon} />\n </Box>\n <Box display=\"flex\" flexDirection=\"column\">\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n </EntityUriLink>\n {relationLabel && <span className={styles.relationLabel}>{relationLabel}</span>}\n {!isSuggested && (\n <RatingsButtons ratings={ratings} onAgree={handleAgree} onDisagree={handleDisagree} />\n )}\n </Box>\n </Box>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <>\n <Ratings ratings={ratings} className={styles.ratings} />\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetailsButton}\n />\n </>\n )}\n </div>\n </Box>\n {showDetails && <RelationAttributes connection={connection} className={styles.relationAttributes} />}\n </div>\n );\n};\n","import React, {useMemo, useContext, useEffect} from 'react';\nimport {Connection, getRelationshipsObjectIdsForCollaboration, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {CollaborationContext} from '@reltio/components';\nimport RelationItem from './RelationItem/RelationItem';\nimport {RelationComplexItem} from './RelationCompexItem/RelationComplexItem';\nimport {useSuggestedRelations} from '../../hooks/useSuggestedRelations';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\n\ntype Props = {\n className?: string;\n connections: Array<Connection>;\n loadRelations: () => void;\n config?: RelationsViewConfig;\n mainEnityUri?: string;\n};\n\nconst RelationsList = ({className, connections = [], loadRelations, config, mainEnityUri}: Props) => {\n const {isComplex, content} = config;\n const {ignoreRelation, acceptRelation} = useSuggestedRelations(content, loadRelations, mainEnityUri);\n\n const objectIds = useMemo(() => {\n return getRelationshipsObjectIdsForCollaboration(connections);\n }, [connections]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n return (\n <div className={className}>\n {connections.map((connection) => {\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n if (isComplex) {\n return (\n <RelationComplexItem\n loadRelations={loadRelations}\n connection={connection}\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }\n\n return (\n <RelationItem\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n connection={connection}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n })}\n </div>\n );\n};\n\nRelationsList.displayName = 'RelationsList';\n\nexport default RelationsList;\n","import {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n Connection,\n ignoreSuggestedRelation,\n createRelation,\n getRequestErrorMessage,\n Directions,\n RelationsContent\n} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {getFirstRelationTypeObject} from '../helpers/relation';\n\nexport const useSuggestedRelations = (content: RelationsContent, loadRelations: () => void, mainEnityUri: string) => {\n const relationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const dispatch = useDispatch();\n const ignoreRelation = (connection: Connection) => () => {\n const {entity} = connection;\n ignoreSuggestedRelation(mainEnityUri, {\n relatedEntityUri: entity.entityUri,\n relationType: relationTypeObject.type,\n relationDirection: relationTypeObject.direction\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n const acceptRelation = (connection: Connection) => () => {\n const {entity, relation} = connection;\n const {startDate, endDate} = relation;\n const isInDirection = relationTypeObject.direction === Directions.IN;\n const startEntityUri = isInDirection ? entity.entityUri : mainEnityUri;\n const endEntityUri = isInDirection ? mainEnityUri : entity.entityUri;\n createRelation({\n startEntityUri,\n endEntityUri,\n relationType: relationTypeObject.type,\n attributes: null,\n startDate,\n endDate\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n return {\n ignoreRelation,\n acceptRelation\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n list: {\n paddingTop: '8px',\n paddingBottom: '10px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {isEditableMode, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport RelationsEditableContent from '../RelationsEditableContent/RelationsEditableContent';\nimport RelationsList from '../RelationsList/RelationsList';\nimport {useStyles} from './styles';\n\ntype Props = {\n isLoading: boolean;\n config: RelationsViewConfig;\n loadRelations: () => void;\n connections: Connection[];\n total: number;\n parentEntityUri?: string;\n};\n\nexport const RelationsContent = ({isLoading, config, loadRelations, connections, total, parentEntityUri}: Props) => {\n const styles = useStyles();\n\n const {selectors} = mdmModule;\n const entity = useSelector(selectors.getEntity);\n const mode = useSelector(selectors.getMode);\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (isEditableMode(mode)) {\n return (\n <RelationsEditableContent\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n config={config}\n mode={mode}\n noDataText={noDataText}\n parentEntityUri={parentEntityUri}\n />\n );\n }\n\n if (total > 0) {\n return (\n <RelationsList\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n mainEnityUri={entity.uri}\n />\n );\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0\n },\n content: {\n position: 'relative',\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: 0\n },\n pagination: {\n height: '52px',\n flexGrow: 0,\n flexShrink: 0\n }\n});\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {ActivityFilter, Connection, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, EntitiesMapContext, useRelationsLoader} from '@reltio/components';\nimport RelationsHeader from '../RelationsHeader/RelationsHeader';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {ImportDTContext} from '../../contexts/ImportDTContext';\nimport {buildRelationsFilter} from '../../helpers/filters';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {pick} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationsViewConfig;\n className?: string;\n};\n\nconst RelationsView = ({config, className}: Props) => {\n const styles = useStyles();\n\n const {\n page,\n setPage,\n rowsPerPage,\n sortOrder,\n sortOption,\n showInactive,\n searchQuery,\n changeSearchQuery\n } = useContext(RelationsViewStateContext);\n const {selectors} = mdmModule;\n const connections = useSelector((state) =>\n selectors.getConnectionsWithDraftsByViewId(state, config.id)\n ) as Connection[];\n const entity = useSelector(selectors.getEntity);\n const total = useSelector((state) => selectors.getTotalByViewId(state, config.id));\n const mode = useSelector(selectors.getMode);\n const sorting = useMemo(\n () => ({\n order: sortOrder,\n field: sortOption\n }),\n [sortOrder, sortOption]\n );\n\n useEffect(() => {\n changeSearchQuery('');\n }, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const filter = useMemo(() => buildRelationsFilter(searchQuery), [searchQuery]);\n\n const {isLoading, reload: loadRelations} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const importDTContextValue = useMemo(\n () => ({\n reloadRelations: loadRelations,\n config: pick(['content', 'importFromDT', 'maxDtssImport'], config)\n }),\n [loadRelations, config]\n );\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={className}>\n <div className={styles.container}>\n <ImportDTContext.Provider value={importDTContextValue}>\n <RelationsHeader title={config.caption} total={total} />\n </ImportDTContext.Provider>\n <div className={styles.content}>\n <RelationsContent\n isLoading={isLoading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n />\n {total > rowsPerPage && (\n <BasicTablePagination\n classes={{root: styles.pagination}}\n count={total}\n rowsPerPageOptions={[]}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n />\n )}\n </div>\n </div>\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n\nRelationsView.displayName = 'RelationsView';\n\nexport {RelationsView};\n","import {FilterBuilder, Maybe, filterValueToQueryStringWithQuotes} from '@reltio/mdm-sdk';\n\nconst buildRelationsFilter = (searchQuery) => {\n const queryClause = Maybe.fromFalsy(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n return new FilterBuilder().addClause(queryClause).build();\n};\n\nexport {buildRelationsFilter};\n","import {useCallback, useMemo, useState} from 'react';\nimport {RelationsViewConfig, SortOrder} from '@reltio/mdm-sdk';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Option = {\n value: string;\n label: string;\n};\n\nexport type RelationsViewState = {\n searchQuery: string;\n changeSearchQuery: (value: string) => void;\n sortOrder: SortOrder;\n toggleSortOrder: () => void;\n sortOption?: string;\n changeSortOption: (option: string) => void;\n sortOptions: Option[];\n page: number;\n setPage: (page: number) => void;\n rowsPerPage: number;\n showInactive: boolean;\n toggleShowInactive: () => void;\n};\n\nconst useRelationsState = (config: RelationsViewConfig): RelationsViewState => {\n const sortOptions = useMemo(\n () =>\n Object.entries(config.sortOptions || {}).map(([key, value]) => ({\n value: key,\n label: value\n })),\n [config.sortOptions]\n );\n\n const rowsPerPage = Number(config.max) || DEFAULT_ROWS_PER_PAGE;\n const [page, setPage] = useState(0);\n const [sortOrder, setSortOrder] = useState(config.sortOrder || DEFAULT_SORT_ORDER);\n const [sortOption, setSortOption] = useState(sortOptions[0]?.value);\n const [searchQuery, setSearchQuery] = useState('');\n const [showInactive, setShowInactive] = useState(DEFAULT_SHOW_INACTIVE);\n\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n const toggleSortOrder = useCallback(() => {\n setPage(0);\n setSortOrder((order) => {\n return order === 'asc' ? 'desc' : 'asc';\n });\n }, []);\n\n const changeSortOption = useCallback((option: string) => {\n setPage(0);\n setSortOption(option);\n }, []);\n\n const changeSearchQuery = useCallback((value: string) => {\n setPage(0);\n setSearchQuery(value);\n }, []);\n\n return {\n searchQuery,\n changeSearchQuery,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions,\n page,\n setPage,\n rowsPerPage,\n showInactive,\n toggleShowInactive\n };\n};\n\nexport default useRelationsState;\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../components/types';\n\nexport const TableAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n visibleColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n onToggleFilters: () => void;\n onSort: (payload) => void;\n onFilter: (payload) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n showTable: boolean;\n filters: {\n [key: string]: {\n filter: string;\n values: [string];\n };\n };\n sorting: {\n order: 'desc' | 'asc';\n field: string;\n };\n attributeType: AttributeType;\n allColumnsData: ColumnsDataType;\n }>(null);\n\nTableAttributeContext.displayName = 'TableAttributeContext';\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles(() => ({\n tableContainer: {\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)',\n marginBottom: '15px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > div': removedStyle\n }\n}));\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import {assoc, chain, isNil, map, path, pipe, prop, reduce, reject, slice, split, uniqBy} from 'ramda';\nimport {\n AttributeNode,\n AttributeType,\n attributeUriToSearchUri,\n flatAttributeTreeNode,\n getAttrDataTypeDefinition,\n getAttributeTypesTree,\n getOvAttributeValuesByPath,\n isAttributeSearchUri,\n Metadata,\n SearchParent\n} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from '../components/AttributeTable/HeadCellRenderer';\nimport {DefaultCellValueRenderer} from '@reltio/components';\n\nexport const getColumnsDataFromAttributeNode = (attrNode: AttributeNode, parents: SearchParent[]) => {\n const {uri, label, children, name} = attrNode;\n return reject(isNil, {\n id: attributeUriToSearchUri(uri, parents),\n label,\n dataTypeDefinition: getAttrDataTypeDefinition(attrNode),\n children: children?.map((childNode) => getColumnsDataFromAttributeNode(childNode, parents.concat({name})))\n });\n};\n\nexport const getColumnsData = (metadata: Metadata, attributeType: AttributeType) =>\n pipe(\n (metadata: Metadata, attributeType: AttributeType) => getAttributeTypesTree(metadata, attributeType),\n map((attrNode: AttributeNode) => getColumnsDataFromAttributeNode(attrNode, [attributeType])),\n chain(flatAttributeTreeNode),\n uniqBy(prop('id'))\n )(metadata, attributeType);\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getAttributeValues = (attrPath, value) => pipe(path(['value']), getOvAttributeValuesByPath(attrPath))(value);\n\nconst getRowValueByColumnId = (columnId, value) => {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getAttributeValues(attrPath, value);\n};\n\nexport const getBasicTableRowsData = (values, columnsData) =>\n values.map((value) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, value), acc), {}),\n assoc('value', value)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (isAttributeSearchUri(columnId)) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: DefaultCellValueRenderer\n});\n\nexport const getBasicTableColumnsData = map(getColumnDataByColumnId);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n header: {\n padding: '0 4px 0 16px'\n }\n}));\n","import React from 'react';\nimport {\n FacetViewHeader,\n ColumnsSettings,\n FilterButton,\n VerticalDivider,\n ExpandableSearchInput\n} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {ColumnsDataType} from '../types';\n\ntype Props = {\n title: string;\n total: number;\n columnsData: ColumnsDataType;\n selectedColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n searchQuery: string;\n onChangeSearchQuery: (val: string) => void;\n filtersEnabled: boolean;\n onToggleFilters: () => void;\n};\nconst AttributeTableHeader = ({\n title,\n searchQuery,\n onChangeSearchQuery,\n filtersEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n onChangeColumns\n}: Props) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <ExpandableSearchInput query={searchQuery} onChange={onChangeSearchQuery} />\n <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </FacetViewHeader>\n );\n};\n\nexport default AttributeTableHeader;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport {withTableContext} from '@reltio/components';\n\ntype Props = {\n cell: {values: string[]};\n isSorted: boolean;\n CellValueRenderer: React.ElementType;\n isRemoved: boolean;\n};\nconst RowCellRenderer = ({cell, CellValueRenderer, isRemoved, isSorted, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({deletedUris}, {rowValue: {value}}) => ({\n isRemoved: Boolean(deletedUris.find((uri) => value.uri === uri))\n}))(RowCellRenderer);\n","import React from 'react';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\ntype Props = {\n onEdit?: () => void;\n onRemove?: () => void;\n};\n\nexport const EditButtons = ({onEdit, onRemove}: Props) => (\n <>\n {onEdit && (\n <SmallIconButtonWithTooltip tooltipTitle={i18n.text('Edit')} icon={EditIcon} size=\"L\" onClick={onEdit} />\n )}\n {onRemove && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Remove')}\n icon={DeleteIcon}\n size=\"L\"\n onClick={onRemove}\n />\n )}\n </>\n);\n\nexport default EditButtons;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport RowCellRenderer from './RowCellRenderer';\nimport {BasicTable, useConfigPermissions} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from '../../helpers/tableAttributeHelpers';\nimport {useStyles} from './styles';\nimport {\n AttributeValue,\n checkCanEditAttribute,\n checkCanDeleteAttribute,\n SearchFilter,\n isReltioCrosswalk,\n Entity,\n isEditableMode as checkIsEditableMode,\n AttributeItem,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../types';\nimport EditButtons from './EditButtons';\nimport {useSelector} from 'react-redux';\nimport {path, prop, pipe} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport mdmModule from '@reltio/mdm-module';\n\nconst MAX_HEIGHT = 477;\n\ntype Props = {\n columnsData: ColumnsDataType;\n values: AttributeValue[];\n filters?: {\n [key: string]: SearchFilter;\n };\n onFilter?: (payload) => void;\n sorting?:\n | {\n field: string;\n order: string;\n }\n | undefined;\n onSort?: (payload) => void;\n config: TableAttributeViewConfig;\n onEdit: React.Dispatch<AttributeValue>;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n deletedUris: string[];\n};\n\nconst AttributeTable = ({\n columnsData,\n values,\n sorting,\n onSort,\n filters,\n onFilter,\n config,\n onEdit,\n onDeleteAttribute,\n deletedUris\n}: Props) => {\n const tableRowsData = useMemo(() => getBasicTableRowsData(values, columnsData), [values, columnsData]);\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const {attributeType} = useContext(TableAttributeContext);\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n\n const {canUpdate, canDelete} = useConfigPermissions();\n\n const checkCanEdit = (attributeValue: AttributeValue) =>\n canUpdate(config) &&\n checkCanEditAttribute({\n attributeType,\n mode,\n attributeValue,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n const checkCanRemove = (attributeValue: AttributeValue) =>\n canDelete(config) &&\n checkCanDeleteAttribute({\n attributeType,\n mode,\n attributeValue,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n\n const hideRightContent = useMemo(\n () =>\n typeof hoverRowIndex === 'number' && isEditableMode\n ? deletedUris.includes(pipe(path([hoverRowIndex]), prop('uri'))(values))\n : true,\n [hoverRowIndex, deletedUris, values, isEditableMode]\n );\n const canRemove = typeof hoverRowIndex === 'number' && checkCanRemove(path([hoverRowIndex], values));\n const canEdit = typeof hoverRowIndex === 'number' && checkCanEdit(path([hoverRowIndex], values));\n\n const handleEditAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canEdit) return;\n onEdit(attributeValue);\n }, [onEdit, hoverRowIndex, values, canEdit]);\n\n const handleRemoveAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canRemove) return;\n const attribute: AttributeItem = {\n parentUri: entityUri,\n attributeType,\n uri: attributeValue.uri,\n value: attributeValue\n };\n onDeleteAttribute(attribute);\n setHoverRowIndex(null);\n }, [hoverRowIndex, values, onDeleteAttribute, canRemove, attributeType, entityUri]);\n\n const hoveredRowRightContent =\n !hideRightContent && (canRemove || canEdit) ? (\n <EditButtons\n onEdit={canEdit ? handleEditAttribute : undefined}\n onRemove={canRemove ? handleRemoveAttribute : undefined}\n />\n ) : undefined;\n const context = useMemo(() => ({deletedUris}), [deletedUris]);\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n autosizing\n maxHeight={MAX_HEIGHT}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n resizeDebounceDelay={150}\n renderRowCell={renderRowCell}\n onRowHover={setHoverRowIndex}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n context={context}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n />\n </div>\n );\n};\n\nexport default AttributeTable;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: '0 8px 10px',\n\n '& > button': {\n fontSize: '14px',\n lineHeight: '16px',\n marginLeft: '8px',\n padding: '10px 8px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n }\n }\n}));\n","import {Button as Button} from '@material-ui/core';\nimport React, {useCallback, useContext} from 'react';\nimport {useStyles} from './styles';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {AttributeValue, Entity, isTempUri, getAttributeOwnError, AttributeItem} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {EditableAttribute, ViewIdContext} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n hasChanges: boolean;\n onChangeAttribute: (attribute: AttributeItem) => void;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n onCancel: (attributeValue: AttributeValue) => void;\n onApply: (attributeValue: AttributeValue) => void;\n attributeValue: AttributeValue;\n};\n\nexport const AttributeEditing = ({\n onChangeAttribute,\n onCancel,\n onApply,\n onDeleteAttribute,\n hasChanges,\n attributeValue\n}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const {attributeType} = useContext(TableAttributeContext);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const showEmptyEditors = isTempUri(entityUri);\n\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, entityUri, attributeType)\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n return (\n <>\n <EditableAttribute\n expanded\n attributeValue={attributeValue}\n showEmptyEditors={showEmptyEditors}\n onDeleteAttribute={onDeleteAttribute}\n onDeactivateError={onDeactivateError}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n mode={mode}\n crosswalks={modifiedEntity.crosswalks}\n errors={errors}\n attributeType={attributeType}\n ownError={getAttributeOwnError(attributeValue, null, attributeType.uri, errors)}\n />\n <div className={styles.actionButtons}>\n <Button\n onClick={() => {\n onCancel(attributeValue);\n }}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n color=\"primary\"\n disabled={!hasChanges}\n onClick={() => {\n onApply(attributeValue);\n }}\n >\n {i18n.text('Apply')}\n </Button>\n </div>\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n flex: 1,\n overflow: 'auto'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n color: 'rgba(0,0,0,0.54)'\n },\n\n tableContainer: {\n height: '477px',\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n\n header: {\n padding: '0 4px 0 16px'\n },\n\n addButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n padding: '4px 16px'\n }\n}));\n","import {useCallback, useContext, useState, useMemo, useEffect} from 'react';\nimport {\n AttributeValue,\n createNewAttribute,\n Entity,\n getAttributeSource,\n isEditableMode as checkIsEditableMode,\n NestedAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, pathOr, pipe, map, prop, equals, both, not, without, filter} from 'ramda';\nimport {TableAttributeContext} from '../../../contexts/TableAttributeContext';\nimport {isTempUri, createDefaultValues} from '@reltio/mdm-sdk';\n\nconst emptyArray = [];\n\nexport const useEditableAttribute = () => {\n const [newAttributeUri, setNewAttributeUri] = useState<string>();\n const [originalValues, setOriginalValues] = useState<AttributeValue[]>([]);\n const mode = useSelector(mdmModule.selectors.getMode);\n\n useEffect(() => {\n setOriginalValues([]);\n setNewAttributeUri(null);\n }, [mode]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const {attributeType, values} = useContext(TableAttributeContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => {\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n },\n [viewId, dispatch]\n );\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onAdd = useCallback(() => {\n const newAttribute = createNewAttribute({\n parentUri: entityUri,\n attributeType\n });\n setNewAttributeUri(newAttribute.uri);\n onChangeAttribute({\n ...newAttribute,\n value: createDefaultValues({\n attributeTypes: attributeType.attributes,\n parentUri: newAttribute.uri,\n mode,\n metadata\n }),\n attributeType\n });\n }, [entityUri, attributeType]);\n\n const onStartEditing = useCallback(\n (attributeValue: AttributeValue) => {\n setOriginalValues((prev) => {\n if (!prev.find(propEq('uri', attributeValue.uri))) {\n return [...prev, attributeValue];\n }\n return prev;\n });\n },\n [setOriginalValues]\n );\n\n const onCancel = useCallback(\n (attributeValue: AttributeValue) => {\n const editingValueOriginal = originalValues.find(propEq('uri', attributeValue.uri));\n if (editingValueOriginal) {\n const attributeItem = {\n ...attributeValue,\n value: editingValueOriginal,\n attributeType,\n uri: attributeValue.uri\n };\n setOriginalValues((prev) => without([editingValueOriginal], prev));\n onChangeAttribute(attributeItem);\n } else {\n const attributeItem = {\n value: attributeValue,\n attributeType,\n uri: attributeValue.uri\n };\n setNewAttributeUri(null);\n onDeleteAttribute(attributeItem);\n }\n },\n [onDeleteAttribute, onChangeAttribute, setOriginalValues, originalValues]\n );\n\n const onApply = useCallback(\n (attributeValue: AttributeValue) => {\n setNewAttributeUri(null);\n setOriginalValues((prev) => {\n const original = prev.find(propEq('uri', attributeValue.uri));\n return original ? without([original], prev) : prev;\n });\n },\n [setOriginalValues, setNewAttributeUri]\n );\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const isEditableMode = checkIsEditableMode(mode);\n const attributeSource = getAttributeSource(attributeType);\n\n const modifiedEntityValues: NestedAttributeValue[] = pathOr(\n emptyArray,\n [attributeSource, attributeType?.name],\n modifiedEntity\n );\n\n const modifiedValues = useMemo(() => {\n const newValues = modifiedEntityValues.filter(\n pipe(prop('uri'), both(isTempUri, pipe(equals(newAttributeUri), not)))\n );\n\n const oldValues = map(\n (originalValue) => modifiedEntityValues.find(propEq('uri', originalValue.uri)) || originalValue\n )(values);\n return [...newValues, ...oldValues].map((value) => originalValues.find(propEq('uri', value.uri)) ?? value);\n }, [modifiedEntityValues, originalValues, newAttributeUri, values]);\n\n const deletedUris = useMemo(\n () =>\n isEditableMode\n ? pipe(\n map(prop('uri')),\n filter((uri) => !modifiedEntityValues.find(propEq('uri', uri)))\n )(values)\n : [],\n [modifiedEntityValues, values]\n );\n\n const editingValues = modifiedEntityValues.filter(\n ({uri}) => uri === newAttributeUri || originalValues.find(propEq('uri', uri))\n );\n\n const checkHasChanges = (value) => originalValues.find(propEq('uri', value.uri)) !== value;\n\n return {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n };\n};\n","import React, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n BasicView,\n BasicTablePagination,\n LinearLoadIndicator,\n FacetViewHeader,\n useConfigPermissions\n} from '@reltio/components';\nimport {propEq} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport AttributeTableHeader from '../AttributeTableHeader/AttributeTableHeader';\nimport AttributeTable from '../AttributeTable/AttributeTable';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {AttributeEditing} from '../AttributeEditing/AttributeEditing';\n\nimport {useStyles} from './styles';\nimport {\n checkCanCreateAttribute,\n isEditableMode as checkIsEditableMode,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useEditableAttribute} from './hooks/useEditableAttribute';\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const TableAttributeView = ({config, className}: Props) => {\n const {caption, max} = config;\n const styles = useStyles();\n\n const {\n values,\n page,\n setPage,\n isLoading,\n searchQuery,\n setSearchQuery,\n visibleColumns,\n onFilter,\n onSort,\n onToggleFilters,\n onChangeColumns,\n filters,\n sorting,\n totalVisibleValues,\n hasPaging,\n attributeType,\n showTable,\n allColumnsData\n } = useContext(TableAttributeContext);\n\n const {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n } = useEditableAttribute();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n\n const preparedValues = isEditableMode ? modifiedValues : values;\n\n const {canCreate: hasConfigToCreate} = useConfigPermissions();\n\n const canCreate =\n hasConfigToCreate(config) &&\n attributeType &&\n checkCanCreateAttribute({attributeType, mode}) &&\n !editingValues.length;\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))),\n [visibleColumns, allColumnsData]\n );\n\n return (\n <BasicView className={classnames(styles.root, className)}>\n {showTable ? (\n <>\n <AttributeTableHeader\n title={caption}\n total={totalVisibleValues}\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n searchQuery={searchQuery}\n onChangeSearchQuery={setSearchQuery}\n filtersEnabled={!!filters}\n onToggleFilters={onToggleFilters}\n />\n <div style={{position: 'relative'}}>\n {isEditableMode && (\n <div className={styles.editor}>\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.addButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {editingValues.map((value) => (\n <AttributeEditing\n key={value.uri}\n attributeValue={value}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n onCancel={onCancel}\n onApply={onApply}\n hasChanges={checkHasChanges(value)}\n />\n ))}\n </div>\n )}\n {visibleColumnsData.length > 0 && (\n <AttributeTable\n columnsData={visibleColumnsData}\n config={config}\n values={preparedValues}\n filters={filters}\n onFilter={onFilter}\n sorting={sorting}\n onSort={onSort}\n onEdit={onStartEditing}\n onDeleteAttribute={onDeleteAttribute}\n deletedUris={deletedUris}\n />\n )}\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n rowsPerPageOptions={[]}\n rowsPerPage={max}\n page={page}\n onChangePage={setPage}\n />\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </>\n ) : (\n <>\n <FacetViewHeader title={caption} className={styles.header} />\n <Typography className={styles.noData}>{i18n.text('No data')}</Typography>\n </>\n )}\n </BasicView>\n );\n};\n","import {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {pick, prop} from 'ramda';\nimport {Entity, getPathsTree, isTempUri, updateTreesWithNewEntity} from '@reltio/mdm-sdk';\nimport {useDidUpdateEffect, useSafePromise} from '@reltio/components';\nimport {Response, Node} from '../types';\n\nlet nodeCounter = 0;\nexport const generateId = () => nodeCounter++;\n\nconst processResponse = (response: Response) => {\n const fakeRoot = {\n children: [] as Node[],\n nodeId: generateId()\n };\n if (response.parentPaths) {\n for (let i = 0; i < response.parentPaths.length; i++) {\n const path = response.parentPaths[i];\n let nextRoot = fakeRoot;\n for (let j = path.length - 1; j >= 0; j--) {\n const nextParent = path[j];\n const entity = response.entities[nextParent.entityUri];\n const isRoot = j === path.length - 1;\n const node: Node = {\n entity,\n children: [],\n nodeId: generateId(),\n expanded: true,\n rootIndex: isRoot ? i + 1 : undefined\n };\n if (isRoot) {\n node.root = isRoot;\n }\n nextRoot.children.push(node);\n nextRoot = node;\n }\n }\n }\n return fakeRoot.children;\n};\nexport const useLoadPaths = (entityUri: string, graphUri: string) => {\n const safePromise = useSafePromise();\n const [treeData, setTreeData] = useState<Node[]>([]);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n useDidUpdateEffect(() => {\n const forest = treeData\n .map((tree, index) => ({tree, index}))\n .reduce((acc, tree) => ({...acc, [tree.index]: {root: tree.tree}}), {});\n const newTrees = updateTreesWithNewEntity(pick(['uri', 'label', 'secondaryLabel', 'type'], entity), forest);\n setTreeData(newTrees.map(prop('root')));\n }, [entity?.updatedTime]);\n useEffect(() => {\n if (!isTempUri(entityUri)) {\n safePromise(getPathsTree({uri: entityUri, graphUri}))\n .then(processResponse)\n .then(setTreeData)\n .catch((e) => {\n console.warn(e);\n });\n }\n return () => {\n setTreeData([]);\n };\n }, [entityUri, graphUri, safePromise]);\n return {treeData, setTreeData};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n fontSize: '13px',\n display: 'flex',\n paddingTop: '6px',\n position: 'relative'\n },\n title: {\n flexGrow: 1,\n minHeight: '15px',\n color: theme.palette.secondary.main,\n lineHeight: '15px'\n },\n link: {\n cursor: 'pointer',\n color: theme.palette.secondary.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 {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n dragHandleContainer: {\n position: 'relative',\n width: '100%',\n height: 'inherit'\n },\n dragHandleVisibilityArea: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '24px',\n zIndex: 11,\n '&:hover $dragHandle': {\n visibility: 'visible'\n },\n '.react-grid-item.static &:hover $dragHandle': {\n visibility: 'hidden'\n }\n },\n dragHandle: {\n position: 'absolute',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n top: '-3px',\n zIndex: 11,\n cursor: 'move',\n visibility: 'hidden'\n },\n dragIcon: {\n transform: 'translateX(-50%) rotate(90deg)',\n color: 'rgba(0, 0, 0, 0.3)'\n }\n});\n","import React, {ComponentType} from 'react';\nimport classnames from 'classnames';\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\n\nimport {useStyles} from './styles';\n\nconst withDragHandle = <P extends Record<string, unknown>>(Component: ComponentType<P>) => {\n const WithDragHandle = (props: P) => {\n const styles = useStyles();\n return (\n <div className={styles.dragHandleContainer}>\n <div className={styles.dragHandleVisibilityArea}>\n <div className={classnames('viewDraggableHandle', styles.dragHandle)}>\n <DragIndicatorIcon className={styles.dragIcon} />\n </div>\n </div>\n <Component {...props} />\n </div>\n );\n };\n\n WithDragHandle.displayName = 'WithDragHandle';\n return WithDragHandle;\n};\n\nexport default withDragHandle;\n","import React, {ComponentType} from 'react';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, ErrorBoundary} from '@reltio/components';\n\nconst withErrorBoundary = <P extends Record<string, unknown>>(Component: ComponentType<P>) => {\n const WithErrorBoundary = (props: P) => {\n return (\n <ErrorBoundary\n error={\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.ERROR}\n text=\"\"\n secondaryText={i18n.text('Something went wrong')}\n variant={EMPTY_STATE_VARIANTS.small}\n />\n }\n >\n <Component {...props} />\n </ErrorBoundary>\n );\n };\n\n WithErrorBoundary.displayName = 'WithErrorBoundary';\n return WithErrorBoundary;\n};\n\nexport default withErrorBoundary;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n stubView: {\n padding: '20px'\n },\n fullHeight: {\n height: '100%'\n },\n component: {\n boxSizing: 'border-box',\n overflow: 'auto',\n boxShadow: 'none',\n borderRadius: 'unset'\n }\n});\n","import {useEffect, useState} from 'react';\nimport {both, gt, lt, path, pipe} from 'ramda';\nimport {resolve} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nconst filterWrongLat = pipe(path(['point', 'lat']), both(gt(90), lt(-90)));\n\nexport const useMarkers = (entity, metadata, mapKey) => {\n const [markers, setMarkers] = useState([]);\n const [loading, setLoading] = useState(true);\n const safePromise = useSafePromise();\n useEffect(() => {\n setLoading(true);\n safePromise(resolve(metadata, [entity], mapKey))\n .then((markers) => {\n setMarkers(markers.filter(filterWrongLat));\n })\n .catch(() => {\n setMarkers([]);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [entity, metadata, mapKey, safePromise]);\n\n return {markers, loading};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n fullHeight: {\n height: '100%'\n },\n fullscreenBtn: {\n position: 'absolute',\n right: '5px',\n top: '5px',\n zIndex: 100\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n caption: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport useStyles from './styles';\n\ntype ImageLineCaptionProps = {\n totalImages: number;\n};\n\nexport const ImageLineCaption = ({totalImages}: ImageLineCaptionProps) => {\n const styles = useStyles();\n const photoWord = totalImages > 1 ? i18n.text('photos') : i18n.text('photo');\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {`${totalImages} ${photoWord}`}\n </Typography>\n );\n};\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, pathOr} from 'ramda';\nimport {EditableImageAttributesLine} from '@reltio/components';\nimport {AttributeType, Entity, Paging, AttributeItem, ImageAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {IMAGE_SIZE} from '../ImageAttributeView';\nimport {ImageLineCaption} from '../ImageLineCaption/ImageLineCaption';\n\ntype ImageAttributeViewEditableContentProps = {\n config: ImageAttributeViewConfig;\n attributeType: AttributeType;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nexport const ImageAttributeViewEditableContent = ({\n config,\n attributeType,\n paging,\n requestNextPageOfAttributeValues\n}: ImageAttributeViewEditableContentProps) => {\n const dispatch = useDispatch();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const modifiedEntityValues = pathOr([], ['attributes', attributeType.name], modifiedEntity);\n const viewId = config.id;\n\n const onChangeAttribute = (params: AttributeItem) =>\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n\n const onDeleteAttribute = (params: AttributeItem) =>\n pipe(profile.actions.removeAttribute, dispatch)({...params, viewId});\n\n return (\n <>\n <EditableImageAttributesLine\n attributeValues={modifiedEntityValues}\n attributeType={attributeType}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={modifiedEntity.uri}\n onChangeAttribute={onChangeAttribute}\n imageSize={IMAGE_SIZE}\n paging={paging}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n />\n <ImageLineCaption totalImages={modifiedEntityValues.length} />\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: '8px 16px'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pathOr, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {BasicView, FacetViewHeader, ImageAttributesLine} from '@reltio/components';\nimport {findAttributeTypeByUri, isEditableMode, ImageAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {ImageAttributeViewEditableContent} from './ImageAttributeViewEditableContent/ImageAttributeViewEditableContent';\nimport {ImageLineCaption} from './ImageLineCaption/ImageLineCaption';\nimport useStyles from './styles';\n\ntype ImageAttributeViewProps = {\n config: ImageAttributeViewConfig;\n className?: string;\n};\n\nexport const IMAGE_SIZE = {\n imageMargin: 4,\n imageWidth: 162,\n imageHeight: 162\n};\n\nexport const ImageAttributeView = ({config, className}: ImageAttributeViewProps) => {\n const {attributeUri} = config;\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const entity = useSelector(mdmModule.selectors.getEntityWithDiff);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const attributeType = findAttributeTypeByUri(metadata, attributeUri);\n const entityValues = pathOr([], ['attributes', attributeType?.name], entity);\n const paging = path(['attributes', 'paging', attributeUri], entity);\n const totalValues = entityValues.length;\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const requestNextPageOfAttributeValues = useCallback(\n (payload: RequestNextPageOfAttributeValuesPayload) =>\n dispatch(profile.actions.requestNextPageOfAttributeValues(payload)),\n [dispatch]\n );\n\n const renderContent = () => {\n if (attributeType) {\n if (isEditableMode(mode)) {\n const props = {\n attributeType,\n config,\n paging,\n requestNextPageOfAttributeValues\n };\n return <ImageAttributeViewEditableContent {...props} />;\n }\n if (totalValues > 0) {\n const props = {\n attributeValues: entityValues,\n attributeType,\n imageSize: IMAGE_SIZE,\n paging,\n parentUri: entity.uri,\n requestNextPageOfAttributeValues\n };\n return (\n <>\n <ImageAttributesLine {...props} />\n <ImageLineCaption totalImages={totalValues} />\n </>\n );\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n return (\n <BasicView className={className}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.container}>{renderContent()}</div>\n </BasicView>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n matchesContainer: {\n position: 'relative'\n },\n footer: {\n display: 'flex',\n alignItems: 'end',\n flexGrow: 1,\n justifyContent: 'flex-start',\n borderTop: '1px solid rgba(0,0,0, 0.12)',\n padding: '8px 16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n noData: {\n paddingLeft: '16px',\n paddingBottom: '16px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n }\n}));\n","import {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {getActionPermissionForMatch, Match, ProfilePotentialMatchesViewConfig} from '@reltio/mdm-sdk';\nimport React, {useCallback, useContext, useMemo} from 'react';\nimport {ActionButtonMode, MergeButton, NotMatchButton, ViewIdContext} from '@reltio/components';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onStartRequest: () => void;\n onFinishRequest: () => void;\n};\nexport const ActionButtons = ({config, match, onStartRequest, onFinishRequest}: Props) => {\n const dispatch = useDispatch();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const {canMerge, canMark} = getActionPermissionForMatch(metadata, config, match.object, entity, match.matchRules);\n const entities = useMemo(() => {\n return [match.object];\n }, [match.object]);\n\n const actionButtonProps = {\n entity,\n entities,\n mode: ActionButtonMode.iconButton,\n onStartRequest\n };\n const viewId = useContext(ViewIdContext);\n const onMergeFinish = useCallback(() => {\n onFinishRequest();\n dispatch(profile.entity.actions.loadEntity({viewId, uri: entity.uri}));\n }, [dispatch, entity.uri, onFinishRequest, viewId]);\n return (\n <>\n {canMerge && <MergeButton {...actionButtonProps} onFinishRequest={onMergeFinish} />}\n {canMark && <NotMatchButton {...actionButtonProps} onFinishRequest={onFinishRequest} />}\n </>\n );\n};\n","import {\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n CommentsContainer,\n ProfileMatchCard,\n useMatchesLoader\n} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n Match,\n ProfilePotentialMatchesViewConfig\n} from '@reltio/mdm-sdk';\nimport {ActionButtons} from './ActionButtons';\nimport React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = Pick<ReturnType<typeof useMatchesLoader>, 'entitiesMap'> & {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onFinishRequest: () => void;\n onStartRequest: () => void;\n};\n\nexport const MatchCard = ({config, entitiesMap, match, onFinishRequest, onStartRequest}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n return (\n <ProfileMatchCard\n match={match}\n entity={entity}\n entitiesMap={entitiesMap}\n metadata={metadata}\n className={COMMENTS_CONTAINER_VISIBILITY_AREA}\n >\n <CommentsContainer\n uri={createObjectIdForPM(entity.uri, match.object.uri)}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: match.object.uri\n })}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n />\n <ActionButtons\n match={match}\n config={config}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n />\n </ProfileMatchCard>\n );\n};\n","import React, {useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {isEmpty, map} from 'ramda';\nimport {Link as Link} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n BasicView,\n CollaborationContext,\n EntitiesMapContext,\n FacetViewHeader,\n LinearLoadIndicator,\n useMatchesLoader,\n ViewIdContext\n} from '@reltio/components';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n getEntityUriForLink,\n getEntityUriFromMatchObject,\n getPotentialMatchesObjectIdsForCollaboration,\n Order,\n ProfilePotentialMatchesViewConfig\n} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\nimport {MatchCard} from './MatchCard';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n className?: string;\n};\n\nexport const DEFAULT_MATCHES_LIMIT = 3;\nexport const DEFAULT_OPTIONS = {\n showTransitiveMatches: true,\n showInactiveEntities: false\n};\nexport const DEFAULT_SORTING = {order: Order.asc, field: 'score'};\nenum ComponentStates {\n Loading,\n NoData,\n Loaded\n}\nexport const ProfilePotentialMatchesView = ({config, className}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = getEntityUriForLink(entity);\n\n const [isLoading, setIsLoading] = useState(false);\n const turnOnDisableSpinner = useCallback(() => {\n setIsLoading(true);\n }, []);\n const turnOffDisableSpinner = useCallback(() => {\n setIsLoading(false);\n }, []);\n\n const {matches, entitiesMap, loadMatches, total} = useMatchesLoader({\n enabled: !!entityUri,\n entity,\n options: DEFAULT_OPTIONS,\n filter: '',\n page: 0,\n sorting: DEFAULT_SORTING,\n rowsPerPage: DEFAULT_MATCHES_LIMIT,\n onStartLoading: turnOnDisableSpinner,\n onFinishLoading: turnOffDisableSpinner\n });\n const onFinishMatchAction = useCallback(() => {\n loadMatches();\n }, [loadMatches]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const openPotentialMatchPerspective = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'potentialMatches', viewId}));\n }, [dispatch, viewId]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, map(getEntityUriFromMatchObject, matches)),\n [entityUri, matches]\n );\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const showSeeAll = total > DEFAULT_MATCHES_LIMIT && !isEmpty(matches);\n const getComponentState = () => {\n if (isLoading) {\n return ComponentStates.Loading;\n }\n if (isEmpty(matches)) {\n return ComponentStates.NoData;\n }\n return ComponentStates.Loaded;\n };\n const state = getComponentState();\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={classnames(styles.root, className)}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.matchesContainer}>\n {state === ComponentStates.Loading && <LinearLoadIndicator />}\n {state === ComponentStates.NoData && (\n <Typography className={styles.noData}>{i18n.text('No matches found')}</Typography>\n )}\n {state === ComponentStates.Loaded &&\n matches.map((match) => (\n <MatchCard\n config={config}\n entitiesMap={entitiesMap}\n match={match}\n onFinishRequest={onFinishMatchAction}\n onStartRequest={turnOnDisableSpinner}\n key={match.object.uri}\n />\n ))}\n </div>\n {showSeeAll && (\n <>\n <div className={styles.footer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n onClick={openPotentialMatchPerspective}\n underline=\"none\"\n >\n {i18n.text('See all')}\n </Link>\n </div>\n </>\n )}\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n","import React, {lazy} from 'react';\nimport {Store} from 'redux';\nimport {\n ProfileViewConfig,\n ProfileViewTypes,\n AttributeViewConfig,\n EntityMapViewConfig,\n ProfilePotentialMatchesViewConfig,\n RelationsViewConfig,\n ImageAttributeViewConfig,\n SingleAttributeViewConfig,\n HierarchyPathsViewConfig,\n HierarchyTreeViewConfig,\n CustomActionViewConfig\n} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {ProfileAttributesView} from '../ProfileAttributesView/ProfileAttributesView';\nimport {ProfileSingleAttributeView} from '../ProfileSingleAttributeView/ProfileSingleAttributeView';\nimport {ProfileRelationsView} from '../ProfileRelationsView/ProfileRelationsView';\nimport {ProfileTableAttributeView} from '../ProfileTableAttributeView/ProfileTableAttributeView';\nimport {HierarchyPathsView} from '../HierarchyPathsView';\nimport {CustomView} from '../Sandbox/CustomView';\nimport withDragHandle from './HOCs/withDragHandle';\nimport withErrorBoundary from './HOCs/withErrorBoundary';\nimport {StubView} from './StubView';\nimport EntityMapView from '../EntityMapView/EntityMapView';\nimport {ImageAttributeView} from '../ImageAttributeView/ImageAttributeView';\nimport {ProfilePotentialMatchesView} from '../ProfilePotentialMatchesView/ProfilePotentialMatchesView';\n\nconst wrapView = <P extends unknown>(component: P): P => pipe(withErrorBoundary, withDragHandle)(component);\n\nconst WrappedStubView = wrapView(StubView);\nexport const WrappedProfileAttributesView = wrapView(ProfileAttributesView);\nexport const WrappedProfileSingleAttributeView = wrapView(ProfileSingleAttributeView);\nexport const WrappedProfileTableAttributeView = wrapView(ProfileTableAttributeView);\nexport const WrappedProfileRelationsView = wrapView(ProfileRelationsView);\nexport const WrappedCustomView = wrapView(CustomView);\nexport const WrappedHierarchyPathView = wrapView(HierarchyPathsView);\nexport const WrappedProfilePotentialMatchesView = wrapView(ProfilePotentialMatchesView);\n\nexport const WrappedHierarchyTreeView = lazy(() =>\n import('@reltio/hierarchy-tree').then((importedModule) => ({\n default: wrapView(importedModule.HierarchyTreeView)\n }))\n);\n\nexport const WrappedRelationshipsTableView = lazy(() =>\n import('@reltio/relations-table').then((importedModule) => ({\n default: wrapView(importedModule.RelationshipsTableView)\n }))\n);\nexport const WrappedEntityMapView = wrapView(EntityMapView);\nexport const WrappedImageAttributeView = wrapView(ImageAttributeView);\n\nexport type ViewComponentProps = {\n store: Store<unknown>;\n config:\n | ProfileViewConfig\n | AttributeViewConfig\n | SingleAttributeViewConfig\n | RelationsViewConfig\n | EntityMapViewConfig\n | ImageAttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n isAutosize?: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nclass ViewsFactory {\n static ViewTypes = ProfileViewTypes;\n static getComponentBy = (\n propName: string,\n {store, config, className, isFullscreen, onToggleFullscreen}: ViewComponentProps\n ) => {\n switch (config[propName]) {\n case ViewsFactory.ViewTypes.HierarchyTree:\n return (\n <WrappedHierarchyTreeView\n config={config as HierarchyTreeViewConfig}\n store={store}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.HierarchyPaths:\n return <WrappedHierarchyPathView config={config as HierarchyPathsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.RelationsTable:\n return (\n <WrappedRelationshipsTableView\n config={config as RelationsViewConfig}\n store={store}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Relations:\n return <WrappedProfileRelationsView config={config as RelationsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.Attributes:\n return <WrappedProfileAttributesView className={className} config={config as AttributeViewConfig} />;\n case ViewsFactory.ViewTypes.SingleAttribute:\n return (\n <WrappedProfileSingleAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.AttributeTable:\n return (\n <WrappedProfileTableAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Map:\n return (\n <WrappedEntityMapView\n config={config as EntityMapViewConfig}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Custom:\n return <WrappedCustomView config={config as CustomActionViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.ImageAttribute:\n return <WrappedImageAttributeView config={config as ImageAttributeViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.PotentialMatches:\n return (\n <WrappedProfilePotentialMatchesView\n config={config as ProfilePotentialMatchesViewConfig}\n className={className}\n />\n );\n }\n };\n static getComponent = (props: ViewComponentProps) => {\n return (\n ViewsFactory.getComponentBy('class', props) ||\n ViewsFactory.getComponentBy('react-class', props) || <WrappedStubView className={props.className} />\n );\n };\n}\n\nexport default ViewsFactory;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {BasicView} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst StubView = ({className}: Props) => {\n const styles = useStyles();\n return (\n <BasicView className={classnames(styles.stubView, 'viewDraggableHandle', className)}>NOT IMPLEMENTED</BasicView>\n );\n};\n\nexport {StubView};\n","import React from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {SingleAttributeContext} from './contexts/SingleAttributeContext';\nimport {SingleAttributeView} from './components/SingleAttributeView/SingleAttributeView';\nimport {useSingleAttribute} from './hooks/useSingleAttribute';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileSingleAttributeView = ({className, config}: Props) => {\n const singleAttribute = useSingleAttribute(config);\n\n return (\n <SingleAttributeContext.Provider value={singleAttribute}>\n <SingleAttributeView config={config} className={className} />\n </SingleAttributeContext.Provider>\n );\n};\n","import {useState, useMemo, useCallback} from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\n\nexport const useSingleAttribute = (config: SingleAttributeViewConfig) => {\n const [searchQuery, setSearchQuery] = useState('');\n const [page, setPage] = useState(0);\n const [showInactive, setShowInactive] = useState(false);\n const params = useMemo(() => ({page, searchQuery, showInactive}), [page, searchQuery, showInactive]);\n const attribute = useSingleAttributeLoader(config, params, true);\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n return {\n setSearchQuery,\n searchQuery,\n setPage,\n page,\n toggleShowInactive,\n showInactive,\n ...attribute\n };\n};\n","import React from 'react';\nimport {TableAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {TableAttributeContext} from './contexts/TableAttributeContext';\nimport {useTableAttribute} from './hooks/useTableAttribute';\nimport {TableAttributeView} from './components/TableAttributeView/TableAttributeView';\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileTableAttributeView = ({config, className}: Props) => {\n const tableAttribute = useTableAttribute(config);\n\n return (\n <TableAttributeContext.Provider value={tableAttribute}>\n {config && <TableAttributeView config={config} className={className} />}\n </TableAttributeContext.Provider>\n );\n};\n","import {useMemo, useReducer} from 'react';\nimport {reject, isNil, pipe, not, prop} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {findAttributeTypeByUri, isComplexAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useActions} from '@reltio/components';\nimport reducer, {actions} from './reducer';\nimport {getColumnsData} from '../helpers/tableAttributeHelpers';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\nimport {buildMDMFilters} from './helpers';\n\nconst DEFAULT_COUNT_COLUMN = 5;\n\nexport const useTableAttribute = (config: SingleAttributeViewConfig) => {\n const {attributeUri} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const allColumnsData = useMemo(\n () => (attributeType ? getColumnsData(metadata, attributeType) : []),\n [metadata, attributeType]\n );\n const initialState = useMemo(\n () => ({\n searchQuery: '',\n filters: null,\n sorting: undefined,\n visibleColumns: allColumnsData\n .filter(pipe(prop('dataTypeDefinition'), isComplexAttribute, not))\n .map(({id}) => id)\n .slice(0, DEFAULT_COUNT_COLUMN),\n page: 0\n }),\n [allColumnsData]\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const {searchQuery, filters, sorting, page} = state;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n const requestFilters = useMemo(() => {\n const mdmFilters = buildMDMFilters(allColumnsData, filters);\n return mdmFilters.length ? mdmFilters : null;\n }, [filters, allColumnsData]);\n\n const params = useMemo(\n () => reject(isNil, {filters: requestFilters, page, sorting, searchQuery}),\n [requestFilters, page, sorting, searchQuery]\n );\n const {changeSearchQuery, changePage, toggleSort, changeFilter, toggleFilters, changeColumns} = useActions({\n actions,\n dispatch\n });\n const attribute = useSingleAttributeLoader(config, params, false);\n const showTable = Boolean(\n (attribute?.values?.length || requestFilters || searchQuery || isEditableMode) &&\n attributeType &&\n !attributeType.hidden\n );\n return {\n ...state,\n setSearchQuery: changeSearchQuery,\n setPage: changePage,\n onSort: toggleSort,\n onFilter: changeFilter,\n onToggleFilters: toggleFilters,\n onChangeColumns: changeColumns,\n showTable,\n allColumnsData,\n ...attribute\n };\n};\n","import {propEq} from 'ramda';\nimport {Maybe} from '@reltio/mdm-sdk';\nimport {ColumnData, ColumnFilter, columnFilterToMdmFilter} from '@reltio/components';\n\nexport const buildMDMFilters = (columnsData: ColumnData[], filters: {[key: string]: ColumnFilter}) =>\n Maybe.fromNull(filters)\n .map((filters) =>\n Object.entries(filters).map(([columnId, columnFilter]) => {\n const columnData = columnsData.find(propEq('id', columnId));\n return columnFilterToMdmFilter(columnData, columnFilter);\n })\n )\n .orSome([]);\n","import React from 'react';\nimport RelationsView from './components/RelationsView';\nimport {RelationsViewStateContext} from './contexts/RelationsViewStateContext';\nimport useRelationsState from './hooks/useRelationsState';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\ntype Props = {\n config: RelationsViewConfig;\n onResize?: (width: number, height: number) => void;\n className?: string;\n};\n\nexport const ProfileRelationsView = ({config, className}: Props) => {\n const relationsState = useRelationsState(config);\n return (\n <RelationsViewStateContext.Provider value={relationsState}>\n <RelationsView config={config} className={className} />\n </RelationsViewStateContext.Provider>\n );\n};\n","import React, {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 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","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('Suggest changes and initiate a workflow review'),\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","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';\n\nimport {useStyles} from './styles';\n\nconst DEFAULT_PANEL_WIDTH = 480;\nexport enum ActivePanel {\n Workflow,\n Collaboration,\n History\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 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 {\n historyFilter,\n onApplyFilter,\n isLoading,\n historicUris,\n historyWithTotal,\n canLoadMore,\n 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\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 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","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} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeError, Metadata} from '@reltio/mdm-sdk';\n\nimport useStyles from '../styles';\n\nimport {getDisplayedErrorMessage, getDisplayedErrorPath} from '../helpers';\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 displayedMessage = getDisplayedErrorMessage(metadata, error);\n const displayedErrorPath = getDisplayedErrorPath(error);\n return (\n <li>\n <span>{displayedMessage}</span>\n {displayedErrorPath && (\n <>\n <br />\n <span className={styles.parents}>{displayedErrorPath}</span>\n </>\n )}\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 {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","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} from '@reltio/components';\n\nimport {ProfileSavedState, Layout} from '../../types';\n\nimport {ProfileLayout} from '../ProfileLayout';\nimport {PerspectiveProfileBand} from '../PerspectiveProfileBand';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\nimport {ProfileErrorsPanel} from '../ProfileErrorsPanel';\nimport {useProfileValidation} from '../hooks/useProfileValidation';\n\nimport {useStyles} from './styles';\nimport {Notifications} from '../Notifications';\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 {isLoaded, savedState = emptyState, updateSavedState} = 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 <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 </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"],"names":["customStyles","input","currentStyles","fontSize","menuPortal","zIndex","useStyles","makeStyles","root","flex","title","paddingBottom","paddingLeft","dropDownInput","width","justifyContent","backgroundColor","borderTop","option","height","noOptionsMessage","entityType","selectedAttributes","className","onChange","disableUnderline","menuPlacement","metadata","useSelector","mdmModule","styles","prepareItems","useCallback","data","level","prevLabel","reduce","acc","item","hidden","chipLabel","label","push","value","uri","attrType","subAttributes","getAttributeTypeSubAttributes","concat","options","useMemo","attributes","classnames","Typography","variant","i18n","MultiSelect","TextFieldProps","InputProps","classes","components","DropdownIndicator","DropdownIndicatorWithIconButton","MultiValue","props","Option","isFocused","isSelected","innerProps","AttributeListItem","checked","labelInText","pipe","defaultTo","menuPortalTarget","document","body","theme","display","flexDirection","basicView","BasicView","forwardRef","ref","children","otherProps","Paper","displayName","propTypes","PropTypes","paddingRight","inputNumber","minWidth","marginRight","inputUnit","periods","interval","unit","onFocus","onNumberChange","getValue","parseInt","newValue","onUnitChange","newUnit","TextField","type","inputProps","min","SimpleDropDownSelector","placeholder","capitalize","map","ErrorBoundary","React","constructor","super","this","state","error","componentDidCatch","setState","console","render","style","loadingMessage","selectedUsers","valueToOption","prepareValues","values","tenant","servicesPath","cachedRequest","useRef","pluck","defaultOptions","getOptions","inputValue","current","getAllUsersForTenant","then","prop","users","filter","username","utils","filterUsers","ActivityTypes","getItemDataType","path","getActivityType","activity","items","firstItem","removeIgnoredItems","isImplementedItem","isValidActivityType","includes","filteredItems","length","reject","itemsTotal","splitActivityByType","propOr","groupBy","ifElse","stringifyDeltaValue","delta","isNil","Array","isArray","join","is","Object","toString","getActivityLabel","dropdownIndicator","transition","inputRoot","padding","dateOptionLabel","paper","localeFormat","moment","longDateFormat","inputRef","open","setOpen","useState","handleToggle","onCancel","fullWidth","formatDataTypeValue","dataTypeDefinition","DataTypes","formatValue","onClick","endAdornment","selectProps","menuIsOpen","readOnly","InputLabelProps","shrink","Menu","autoFocus","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","DateRangePicker","onApply","DateRangeTypes","RequestStates","SingleAttributeContext","triggerButton","color","popupContent","paddingTop","maxWidth","checkboxControlRoot","marginTop","marginLeft","checkboxControlLabel","checkboxControlCheckbox","buttonRef","isOpen","setIsOpen","showInactive","toggleShowInactive","useContext","togglePopup","Button","Popover","FormControlLabel","control","Checkbox","e","target","totalCaption","lineHeight","letterSpacing","flexShrink","ovIcon","SingleAttributeHeader","caption","totalVisibleValues","showInactiveValuesMenu","searchQuery","setSearchQuery","setPage","totalNonVisibleValues","nonVisibleValues","attributeType","FacetViewHeader","HideOnShrink","widthToHide","VerticalDivider","margin","OvIcon","nonOvTotal","nonOvValues","ExpandableSearchInput","query","moreButton","marginBottom","buttonLabel","fontWeight","icon","divider","ovFalse","inactive","noData","palette","text","secondary","getAttributeNameFromAttributeUri","getLastUriPart","search","some","String","getPagedLocalEntity","async","entity","attributeTypeUri","defaultMaxValues","Infinity","offset","findAttributeValuesByTypeUri","ovValues","isOv","getAttributeSource","slice","paging","totalOvValues","totalValues","emptyArray","SingleAttributeEditableContent","parentUri","noDataText","required","isRequired","cardinality","name","dispatch","useDispatch","viewId","ViewIdContext","modifiedEntity","errors","errorMessage","getAttributePagerActiveTypeErrorMessage","mode","attributeSource","entityValuesUris","pathOr","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","key","attributeValue","lazy","ownError","getAttributeOwnError","Divider","originalValue","modifiedEntityValue","find","propEq","deleted","edited","value1","value2","cleanser","over","lensPath","cleanAttributesWith","valueTransformer","unless","omit","deleteEmptyComplex","identity","equals","areValuesEqual","cond","always","SingleAttributeReadableContent","content","position","overflow","flexGrow","pagination","SingleAttributeView","config","max","page","isLoading","hasPaging","entityUri","mdm","isViewMode","isEditableMode","pivotingAttributes","hasValues","PivotingAttributeContext","Box","LinearLoadIndicator","renderContent","BasicTablePagination","count","rowsPerPage","rowsPerPageOptions","onChangePage","useSingleAttributeLoader","canShowHistoryDiff","attributeUri","setValues","setPaging","setIsLoading","safePromise","useSafePromise","attributeValuesRef","apiPath","entitySelector","isHistoryModeEnabled","diff","attributeTypeName","attributeTypeSource","findAttributeValues","findAttributeTypeByUri","globalFilter","loadAttributes","isReadableAttribute","isFirstLevelAttributeUri","rest","request","isDataTenantEntity","getPagedEntity","undefined","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","entries","menuItem","MenuProps","SmallIconButton","tooltipTitle","ArrowUpwardIcon","ArrowDownwardIcon","size","header","ImportDTContext","MAX","Math","pow","cursor","top","left","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","id","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","container","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","action","payload","removedStyle","tableContainer","fontFamily","rowCell","transform","headCell","pointerEvents","withFilterAtBottom","DefaultHeadCellRenderer","getColumnsDataFromAttributeNode","attrNode","parents","attributeUriToSearchUri","getAttrDataTypeDefinition","childNode","getAttrPathFromColumnId","split","getNestedPathByColumnId","columnId","isAttributeSearchUri","attrPath","getBasicTableColumnsData","columnData","sortable","resizable","nestedPath","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","DefaultCellValueRenderer","onChangeSearchQuery","filtersEnabled","onToggleFilters","columnsData","selectedColumns","onChangeColumns","enabled","ColumnsSettings","withTableContext","deletedUris","rowValue","Boolean","cell","CellValueRenderer","isSorted","index","onEdit","onRemove","onSort","filters","onFilter","tableRowsData","assoc","getOvAttributeValuesByPath","getAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","checkIsEditableMode","renderRowCell","hoverRowIndex","setHoverRowIndex","canDelete","useConfigPermissions","hideRightContent","checkCanDeleteAttribute","isReltioCrosswalk","canEdit","checkCanEditAttribute","checkCanEdit","handleEditAttribute","handleRemoveAttribute","hoveredRowRightContent","context","BasicTable","autosizing","maxHeight","rowsData","hoverStateEnabled","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","resizeDebounceDelay","onRowHover","hoveredRowRightContentWrapper","hoveredRowRightContentContainer","actionButtons","AttributeEditing","hasChanges","expanded","addButton","editor","TableAttributeView","visibleColumns","showTable","allColumnsData","checkHasChanges","onStartEditing","modifiedValues","editingValues","newAttributeUri","setNewAttributeUri","originalValues","setOriginalValues","newAttribute","createDefaultValues","attributeTypes","prev","editingValueOriginal","attributeItem","without","original","both","not","useEditableAttribute","preparedValues","hasConfigToCreate","visibleColumnsData","nodeCounter","generateId","processResponse","fakeRoot","nodeId","parentPaths","i","nextRoot","j","nextParent","entities","isRoot","node","rootIndex","link","selected","avatar","treeContainer","tree","buttonsContainer","ConfigContext","onImageLoadFail","src","DEFAULT_ICON","Node","absoluteImagePath","uiPath","entityLink","getEntityLink","onTitleClick","entityTypeGraphIcon","getPropWithInheritance","getAbsoluteImageUrl","Avatar","onError","Link","to","getNodeKey","lineBlock","lineChildren","verticalLine","horizontalLineRight","textAlign","boxSizing","whiteSpace","nodeContent","bottom","rowContents","borderLeft","verticalAlign","buttonWrapper","collapsedButton","expandedButton","borderRight","rowTitle","nodeContentRenderer","scaffoldBlockPxWidth","toggleChildrenVisibility","treeIndex","nodeTitle","showToggleChildrenButton","treeNodeRenderer","lowerSiblingCounts","scaffoldBlockCount","scaffold","forEach","lowerSiblingCount","shift","scaffoldWidth","nodeStyle","rowHeight","slideRegionSize","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","viewBox","version","xmlns","stroke","strokeWidth","fill","fillRule","fillOpacity","d","onGraphOpen","ShowGraphIcon","bodyWrapper","dragHandleContainer","dragHandleVisibilityArea","visibility","dragHandle","dragIcon","Component","WithDragHandle","DragIndicator","WithErrorBoundary","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","secondaryText","EMPTY_STATE_VARIANTS","stubView","fullHeight","component","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","basicViewRef","dialogRef","showModal","setShowModal","defaultTooltip","html","visible","updatedTooltip","popup","useAPI","innerHTML","from","childNodes","child","appendChild","Dialog","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","fixedSizeContainer","omittingProps","ProfileLayoutItem","layoutItemConfig","views","ResizeComponent","AutosizeComponent","ReactReduxContext","isCustomView","class","platform","CustomScriptPlatform","reltioClass","_","getViewTypeByClass","ProfileLayout","layout","layoutOptions","onLayoutChanged","ReltioGridLayout","LayoutItem","draggableHandle","xmlnsXlink","xlinkHref","mask","editingButtons","searchResults","comments","SuggestIcon","SvgIcon","CopyIcon","filterGroupByPermissions","group","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","ActivePanel","getSecondTitle","RightSidePanel","isWorkflowSideViewEnabled","isCollaborationSideViewEnabled","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","visibleElements","SidePanel","SidePanelContentHeader","SideButtonsPanel","buttonsProps","onButtonClick","activeIndexId","accordionSummaryHeight","defaultBorderStyle","accordion","borderBottom","accordionExpanded","accordionSummary","accordionSummaryHeading","typography","pxToRem","fontWeightRegular","accordionSummaryExpanded","accordionSummaryContent","accordionDetails","errorsAccordion","borderColor","errorsAccordionDetails","warningsAccordion","warningsAccordionDetails","errorIcon","warningIcon","ErrorsPanel","panels","expandedPanelId","ErrorComponent","accordionClassName","accordionDetailsClassName","Accordion","square","AccordionSummary","expandIcon","ExpandMore","AccordionDetails","clearError","Error","displayedMessage","ErrorType","ErrorSource","getDisplayedErrorMessage","displayedErrorPath","errorPath","AttributeValuePathItemType","getDisplayedErrorPath","ProfileErrorsPanel","cachedAllErrors","allErrors","cacheForAllErrors","errors1","errors2","areErrorsEqual","useCachedErrors","warnings","isCriticalError","setExpandedPanelId","number","panelId","event","isExpanded","perspectiveView","overflowX","overflowY","scrollWrapper","emptyState","profileWrapper","profileContainer","closeIcon","snackbar","flexWrap","Notification","notification","autoCloseInterval","autoHideDuration","setAction","setShow","closeSnackbar","_e","reason","cancelAction","onConfirm","applyAction","needConfirmation","CloseIcon","Portal","Snackbar","confirmationText","confirmationDescription","Notifications","notifications","n","ProfilePerspectiveView","saveState","getSavedState","getSavedStateAndFix","scrollWrapperRef","debouncedSaveState","debounce","nestedRoute","savedStateKey","isLoaded","savedState","updateSavedState","useSavedStateForEntityType","setLayout","setViews","configHash","hash","isHistoryActive","getProfileObjectIdsForCollaboration","collaboration","useCollaboration","emptyCollaboration","useUsers","workflowTasks","useWorkflowTasks","workflow","useHistorySlice","historyDiff","useHistoryDiff","keywordValue","isConfigChanged","fixedViews","fixedLayout","fixNonUniqViewsIds","sidePanelViews","scrollTop","isValidateReadMode","isDTEntity","profileViews","hasProfileViews","validate","needDispatch","useProfileValidation","handleLayoutChange","boundariesElement","popupBoundariesValue","element","priority","ProfilePerspectiveViewContext","UsersContext","SearchValueContext","profileBand","PopupBoundariesContext","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","onResize","qxSandboxApi","getSavedStatePromisified","promisifyCallback","SnackbarRenderer","showSnackbarMessage","useSnackbar","processedConfig","convertOldProfileConfig","SnackbarContext","S","SandboxAPIContext","StylesProvider","MuiPickersUtilsProvider","MomentUtils","handleHeight","floor","ErrorPopup","showErrorFromStore","titleContainer","textOverflow","totalNumber","TagListHeader","switchToProfile","ArrowForwardIosRounded","Spacer","toolbar","TagProfileBand","Toolbar","tagsContainer","tagsView","listContainer","entitiesList","ROWS_PER_PAGE_OPTIONS","TagPerspectiveView","tag","setRowsPerPage","globalSearchRequestOptions","safeRequestTotalPromise","safeRequestEntitiesPromise","setTotal","setEntities","requestEntities","requestTotal","getDataTenantFromEntityUri","fieldName","isDT","getEntities","requestOptions","select","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","getTotalFromDataTenant","getTotals","json","useTagsProvider","useTag","refScrollBlock","hasPagination","ProfilesList","onChangeRowsPerPage"],"sourceRoot":""}