@reltio/remotes 1.4.1464 → 1.4.1466
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/4097.js.map +1 -1
- package/6057.js +1 -1
- package/6057.js.map +1 -1
- package/8213.js +1 -1
- package/8213.js.map +1 -1
- package/package.json +1 -1
package/8213.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"8213.js","mappings":"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","sources":["webpack://@reltio/remotes/../profile/src/components/ProfileAttributesView/ProfileAttributesView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/contexts/SingleAttributeContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/SingleAttributeHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/hooks/helpers/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/SingleAttributeEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/SingleAttributeReadableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/SingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useSingleAttributeLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/RelationsViewStateContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/ImportDTContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/hooks/useImportFromDTLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/MultipleImportIcon.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/ImportFromDT.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/RelationsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/RelationTooltip.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationInfo.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/SuggestedButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/EditableRelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/permissions.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/relation.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/RelationArrowButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/SecondLevelWrapper.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSecondLevelConnections.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/RelationsEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/RelationAttributes.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/ShowDetailsButton/ShowDetailsButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/RelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/ratings.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/Ratings.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/RatingsButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/RelationComplexItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationsList.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSuggestedRelations.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/RelationsContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/RelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/filters.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationsState.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/contexts/TableAttributeContext.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/reducer.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/BlobRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/helpers/tableAttributeHelpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/AttributeTableHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/EditButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/AttributeTable.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/AttributeEditing.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/hooks/useEditableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/TableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useLoadPaths.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/ConfigContext.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/Node.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/helpers.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/node-content-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/index.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/tree-node-data-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/icons/ShowGraph.svg","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useDynamicNodesHeights.ts","webpack://@reltio/remotes/../profile/src/components/Sandbox/styles.ts","webpack://@reltio/remotes/../profile/src/components/Sandbox/CustomView.tsx","webpack://@reltio/remotes/../profile/src/components/views/HOCs/styles.ts","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withDragHandle.tsx","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withErrorBoundary.tsx","webpack://@reltio/remotes/../profile/src/components/views/styles.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/useMarkers.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/ImageLineCaption.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeViewEditableContent/ImageAttributeViewEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ActionButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/MatchCard.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ProfilePotentialMatchesView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewsFactory.tsx","webpack://@reltio/remotes/../profile/src/components/views/StubView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/ProfileSingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/hooks/useSingleAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/ProfileTableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/useTableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/ProfileRelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsView.tsx","webpack://@reltio/remotes/../profile/src/components/EntityMapView/EntityMapView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewComponent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/ProfileLayoutItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayout/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileLayout/ProfileLayout.tsx","webpack://@reltio/remotes/../profile/src/components/Notifications/styles.ts","webpack://@reltio/remotes/../profile/src/components/Notifications/Notification.tsx","webpack://@reltio/remotes/../profile/src/components/Notifications/Notifications.tsx","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/suggest.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/copy.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/hooks/useCloneAction.ts","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/PerspectiveProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowButton/WorkflowButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/CollaborationList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/WorkflowList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/icons/CollaborationIcon.svg","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationButton/CollaborationButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowPanelEmptyState/WorkflowPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationPanelEmptyState/CollaborationPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/icons/ConnectorsIcon.svg","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/DBConnectorsList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/DBConnectorsList/DBConnectorsList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/components/ErrorsPanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/icons/hyperlink.svg","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/components/Error.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/useCachedErrors.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/ProfileErrorsPanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/useProfileLayout.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/ProfilePerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useProfileValidation.ts","webpack://@reltio/remotes/../profile/src/perspectives/ProfilePerspective.tsx","webpack://@reltio/remotes/../profile/src/perspectives/helpers.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/TagListHeader.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/TagProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTagsProvider.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/TagPerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTag.ts","webpack://@reltio/remotes/../profile/src/perspectives/TagPerspective.tsx","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/components/DCRProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/components/DCRProfileBand/DCRProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/DCRReviewPerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/perspectives/DCRReviewPerspective.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/AddRelationButton/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/AddRelationButton/AddRelationButton.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/RowCellRenderer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/EntityProfileRenderer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/HeadCellRenderer.js","webpack://@reltio/remotes/../relations-table/src/core/relations.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/helpers/dataHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/EditButtons.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/RelationsTable.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/helpers/buttonsHelper.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/MoreButton/styles.ts","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/MoreButton/MoreButton.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/RelationsTableHeader.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/stateReducer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/helpers/tableHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/helpers/relationsHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableView.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/index.js","webpack://@reltio/remotes/../relations-table/src/index.tsx"],"sourcesContent":["import 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 {\n FacetViewHeader,\n HideOnShrink,\n ExpandableSearchInput,\n VerticalDivider,\n OvIcon,\n DescriptionIcon\n} 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} =\n useContext(SingleAttributeContext);\n\n const handleChangeSearchQuery = (query: string) => {\n setSearchQuery(query);\n setPage(0);\n };\n\n return (\n <FacetViewHeader title={caption} className={styles.root}>\n <DescriptionIcon description={attributeType?.description} />\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, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, cond, isEmpty, 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: AttributeValue = useMemo(\n () =>\n createNewAttribute({\n parentUri,\n attributeType\n }),\n [parentUri, attributeType]\n );\n\n const isModifiedEntityValuesEmpty = isEmptyValue(modifiedEntityValues);\n const showEmpty = isRequired && isModifiedEntityValuesEmpty;\n\n const newValues = showEmpty ? [emptyEditorValue] : 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 !isEmpty(modifiedEntity) && (\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 =\n entityValuesUris.includes(value.uri) && !modifiedEntityValuesUris.includes(value.uri);\n const edited =\n !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};\n","import React from 'react';\nimport {ReadOnlyAttribute} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n showInactive: boolean;\n};\n\nexport const SingleAttributeReadableContent = ({values, attributeType, showInactive}: Props) => {\n return (\n <>\n {values.map((value) => {\n return (\n <ReadOnlyAttribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showInactive}\n />\n );\n })}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n },\n pagination: {\n flexGrow: 0,\n flexShrink: 0\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {PivotingAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {BasicView, BasicTablePagination, LinearLoadIndicator, PivotingAttributeContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SingleAttributeHeader} from '../SingleAttributeHeader/SingleAttributeHeader';\nimport {SingleAttributeEditableContent} from '../SingleAttributeEditableContent/SingleAttributeEditableContent';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {SingleAttributeReadableContent} from '../SingleAttributeReadableContent/SingleAttributeReadableContent';\nimport {useStyles} from './styles';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const SingleAttributeView = ({config, className}: Props) => {\n const {caption, max = DEFAULT_ROWS_PER_PAGE, showInactiveValuesMenu} = config;\n\n const styles = useStyles();\n\n const {values, totalVisibleValues, page, setPage, isLoading, hasPaging, attributeType, showInactive} =\n useContext(SingleAttributeContext);\n\n const entityUri = useSelector(mdm.selectors.getEntityUri);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n const pivotingAttributes: PivotingAttribute[] = useSelector(mdm.selectors.getPivotingAttributes);\n\n const hasValues = values.length !== 0;\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const renderContent = () => {\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (attributeType) {\n if (isViewMode && hasValues) {\n const props = {\n values,\n attributeType,\n showInactive\n };\n return <SingleAttributeReadableContent {...props} />;\n } else if (isEditableMode) {\n const props = {\n values,\n attributeType,\n parentUri: entityUri,\n showInactive,\n noDataText\n };\n return <SingleAttributeEditableContent {...props} />;\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n\n return (\n <PivotingAttributeContext.Provider value={pivotingAttributes}>\n <BasicView className={classnames(styles.root, className)}>\n <SingleAttributeHeader\n totalVisibleValues={totalVisibleValues}\n caption={caption}\n showInactiveValuesMenu={showInactiveValuesMenu}\n />\n <Box className={styles.content}>{renderContent()}</Box>\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n page={page}\n rowsPerPage={max}\n rowsPerPageOptions={[]}\n onChangePage={setPage}\n classes={{root: styles.pagination}}\n />\n )}\n </BasicView>\n </PivotingAttributeContext.Provider>\n );\n};\n","import {useCallback, useState, useEffect, useMemo, useRef} from 'react';\nimport {ifElse, prop, always, has, pathOr, path, partition, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n isDataTenantEntity,\n getPagedEntity,\n getAttributeSource,\n AttributeValue,\n SearchFilter,\n findAttributeTypeByUri,\n isReadableAttribute,\n isTempUri,\n isOv,\n findAttributeValues,\n isFirstLevelAttributeUri,\n SingleAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useSafePromise, useDidUpdateEffect} from '@reltio/components';\nimport {getPagedLocalEntity, getAttributeNameFromAttributeUri} from './helpers';\n\ntype Params = {\n filters?: SearchFilter[];\n searchQuery?: string;\n sorting?: {\n field: string;\n order: string;\n };\n page: number;\n showInactive: boolean;\n};\n\nexport const useSingleAttributeLoader = (config: SingleAttributeViewConfig, params: Params) => {\n const {attributeUri, max = 15} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const [values, setValues] = useState([]);\n const [paging, setPaging] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n const attributeValuesRef = useRef<AttributeValue[]>(null);\n\n const dispatch = useDispatch();\n const apiPath = useSelector(mdm.selectors.getApiPath);\n const tenant = useSelector(mdm.selectors.getTenant);\n const entity = useSelector(mdm.selectors.getEntityWithDiff);\n\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const diff = useSelector(mdm.selectors.getHistoryDiff);\n\n const parentUri = entity.uri;\n const attributeTypeName = getAttributeNameFromAttributeUri(attributeUri);\n const attributeTypeSource = getAttributeSource(attributeUri);\n attributeValuesRef.current = findAttributeValues(entity, parentUri, attributeTypeName);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const {globalFilter} = useSelector(mdm.selectors.getGlobalSearchRequestOptions);\n const {showInactive} = params;\n const loadAttributes = useCallback(() => {\n if (\n attributeType &&\n isReadableAttribute(attributeType) &&\n !isTempUri(parentUri) &&\n isFirstLevelAttributeUri(attributeUri)\n ) {\n setIsLoading(true);\n const {page, showInactive, ...rest} = params;\n const request = isDataTenantEntity(entity) || isHistoryModeEnabled ? getPagedLocalEntity : getPagedEntity;\n safePromise(\n request({\n metadata,\n entity,\n apiPath,\n tenant,\n parentUri,\n defaultMaxValues: max,\n attributeTypeUri: attributeUri,\n offset: max * page,\n globalFilter,\n options: showInactive ? '' : undefined,\n ...rest\n })\n )\n .then((response) => {\n const attributes = path([attributeTypeSource], response);\n const values: AttributeValue[] = pathOr([], [attributeTypeName], attributes);\n if (!isHistoryModeEnabled) {\n dispatch(\n profile.actions.processNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeUri,\n attributeTypeName,\n values\n })\n );\n }\n setValues(\n values.map((loadedValue) => {\n const valueFromEntity = attributeValuesRef.current?.find(propEq('uri', loadedValue.uri));\n return valueFromEntity || loadedValue;\n })\n );\n setPaging(path(['paging', attributeUri], attributes));\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n setValues([]);\n setPaging(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiPath,\n parentUri,\n tenant,\n attributeUri,\n max,\n metadata,\n params,\n globalFilter,\n attributeType,\n isHistoryModeEnabled,\n diff\n ]);\n\n useEffect(() => {\n loadAttributes();\n }, [loadAttributes]);\n\n useDidUpdateEffect(() => {\n if (isViewMode) {\n loadAttributes();\n }\n }, [isViewMode]);\n const partitionByOv = partition(isOv);\n const [, nonOvValues] = partitionByOv(attributeValuesRef.current || []);\n const nonVisibleValues = showInactive ? [] : nonOvValues;\n const totalProp = showInactive ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(values.length))(paging);\n const hasPaging = max < totalVisibleValues;\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n return {\n values,\n isLoading,\n hasPaging,\n totalVisibleValues,\n attributeType,\n totalNonVisibleValues,\n nonVisibleValues\n };\n};\n","import React from 'react';\nimport {RelationsViewState} from '../hooks/useRelationsState';\n\nexport const RelationsViewStateContext = React.createContext<RelationsViewState>(null);\n\nRelationsViewStateContext.displayName = 'RelationsViewStateContext';\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nconst popupHorizontalPadding = '23px';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n button: {\n color: theme.palette.text.secondary,\n width: '36px',\n minWidth: '36px'\n },\n popupContent: {\n padding: `19px ${popupHorizontalPadding}`\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n },\n divider: {\n backgroundColor: 'rgba(0,0,0,0.1)',\n margin: `19px -${popupHorizontalPadding}`\n },\n title: {\n marginBottom: '30px'\n },\n sortControls: {\n display: 'flex',\n alignItems: 'center'\n },\n sortSelectorRoot: {\n flex: 1,\n padding: '13px 16px',\n fontSize: '0.85rem'\n },\n sortSelectorMenuItem: {\n fontSize: '0.85rem'\n },\n sortOrderButton: {\n flexShrink: 0,\n margin: '0 8px 0 7px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {DropDownEditor, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {Popover as Popover} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport {Button as Button} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\nimport {RelationsViewStateContext} from '../../../contexts/RelationsViewStateContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const {\n showInactive,\n toggleShowInactive,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions\n } = useContext(RelationsViewStateContext);\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n const hasSortOptions = !isEmptyValue(sortOptions);\n\n const isAsc = sortOrder === 'asc';\n\n return (\n <>\n <Button\n ref={buttonRef}\n classes={{\n root: classnames(styles.button, className)\n }}\n onClick={togglePopup}\n >\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={toggleShowInactive}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n {hasSortOptions && (\n <>\n <Divider className={styles.divider} />\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Sort by')}\n </Typography>\n <div className={styles.sortControls}>\n <DropDownEditor\n entries={sortOptions}\n TextFieldProps={{variant: 'filled'}}\n classes={{\n root: styles.sortSelectorRoot,\n menuItem: styles.sortSelectorMenuItem\n }}\n fullWidth\n disableUnderline\n value={sortOption}\n onChange={changeSortOption}\n MenuProps={{\n getContentAnchorEl: null,\n anchorOrigin: {vertical: 'bottom', horizontal: 'left'}\n }}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isAsc ? i18n.text('Ascending') : i18n.text('Descending')}\n icon={isAsc ? ArrowUpwardIcon : ArrowDownwardIcon}\n onClick={toggleSortOrder}\n className={styles.sortOrderButton}\n size=\"L\"\n />\n </div>\n </>\n )}\n </Popover>\n </>\n );\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport default FilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 6px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n }\n});\n","import React from 'react';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\nexport const ImportDTContext = React.createContext<{\n reloadRelations: () => void;\n config: Pick<RelationsViewConfig, 'content' | 'importFromDT' | 'maxDtssImport'>;\n }>(null);\n","import {useSelector, useDispatch} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {useCallback, useContext, useEffect, useState} from 'react';\nimport {getRequestErrorMessage, hasNonImportedRelations, importDTConnections, isTempUri} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {ImportDTContext} from '../../../../contexts/ImportDTContext';\nimport i18n from 'ui-i18n';\n\nconst MAX = Math.pow(2, 31) - 1;\ntype Tenant = {id: string; label: string};\n\nexport const useImportFromDTLoader = () => {\n const dataTenants: Array<Tenant> = useSelector(mdmModule.selectors.getDataTenants);\n const dispatch = useDispatch();\n const {config, reloadRelations} = useContext(ImportDTContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const [tenants, setTenants] = useState<Array<Tenant>>([]);\n const [selectedTenant, setSelectedTenant] = useState<Tenant>(null);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const customerTenant = useSelector(mdmModule.selectors.getTenant);\n const content = [{...config.content, offset: 0, max: config.maxDtssImport ?? MAX}];\n\n const checkHasNonImportedConnections = useCallback(() => {\n setTenants([]);\n if (config.importFromDT && !isTempUri(entityUri)) {\n Promise.all(\n (dataTenants || []).map((tenant) =>\n hasNonImportedRelations({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: tenant.id\n }).then(({hasNonImportedConnections}) => ({\n ...tenant,\n hasNonImportedConnections\n }))\n )\n )\n .then((modifiedTenants) => modifiedTenants.filter((tenant) => tenant.hasNonImportedConnections))\n .then(setTenants);\n }\n }, [entityUri, dtssPath, customerTenant, config, dataTenants]);\n\n const onConfirmImport = useCallback(() => {\n importDTConnections({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: selectedTenant.id\n })\n .then(() => {\n reloadRelations();\n checkHasNonImportedConnections();\n })\n .catch((error) =>\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))))\n );\n setSelectedTenant(null);\n }, [\n entityUri,\n dtssPath,\n customerTenant,\n config,\n checkHasNonImportedConnections,\n reloadRelations,\n selectedTenant,\n setSelectedTenant\n ]);\n\n useEffect(() => {\n checkHasNonImportedConnections();\n }, [checkHasNonImportedConnections]);\n const onCancelConfirmation = useCallback(() => setSelectedTenant(null), []);\n const onImportClick = useCallback((tenant: Tenant) => setSelectedTenant(tenant), []);\n return {\n tenants,\n selectedTenant,\n onConfirmImport,\n onCancelConfirmation,\n onImportClick\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n tenant: {\n backgroundColor: '#0000EE',\n cursor: 'pointer',\n position: 'absolute',\n top: '8px',\n left: '22px',\n width: '10px',\n height: '10px',\n color: 'white',\n fontSize: '10px',\n fontWeight: 'bold',\n userSelect: 'text',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n button: {\n position: 'relative'\n },\n badge: {\n fontSize: '10px',\n height: '14px',\n minWidth: '14px',\n width: '14px',\n fontWeight: 'bold',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px',\n top: '4px'\n }\n}));\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {Badge as Badge} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ninterface Props {\n label: number | string;\n}\n\nexport const MultipleImportIcon = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Badge\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n badgeContent={label}\n >\n <CloudDownloadIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {useImportFromDTLoader} from './hooks/useImportFromDTLoader';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {ConfirmationDialog} from '@reltio/components';\nimport {MultipleImportIcon} from './MultipleImportIcon';\n\nexport const ImportFromDT = () => {\n const {tenants, selectedTenant, onConfirmImport, onCancelConfirmation, onImportClick} = useImportFromDTLoader();\n const styles = useStyles();\n const oneTenant = tenants.length === 1;\n const labelOnButton = oneTenant\n ? tenants[0].label.indexOf('DT:') === 0\n ? tenants[0].label[3]\n : tenants[0].label[0]\n : tenants.length;\n return (\n <>\n {!!tenants.length && (\n <>\n {oneTenant ? (\n <div className={styles.button}>\n <SmallIconButtonWithTooltip\n size={'L'}\n icon={CloudDownloadIcon}\n tooltipTitle={i18n.text('Import connections from ${label}', {label: tenants[0].label})}\n onClick={() => onImportClick(tenants[0])}\n />\n <div className={classnames(styles.tenant)}>{labelOnButton}</div>\n </div>\n ) : (\n <DropDownMenuButton\n menuId={'importDT-table-actions'}\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n tooltipTitle: i18n.text('Import connections'),\n size: 'L',\n // eslint-disable-next-line react/display-name\n icon: () => <MultipleImportIcon label={labelOnButton} />\n }}\n menuItems={tenants.map((tenant) => ({\n onClick: () => {\n onImportClick(tenant);\n },\n text: tenant.label\n }))}\n />\n )}\n <ConfirmationDialog\n open={!!selectedTenant}\n title={i18n.text('Confirmation')}\n content={i18n.text('Import connections from ${label}?', {label: selectedTenant?.label})}\n discardCaption={i18n.text('Cancel')}\n saveCaption={i18n.text('Import')}\n onDiscard={onCancelConfirmation}\n onSave={onConfirmImport}\n />\n </>\n )}\n </>\n );\n};\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {ExpandableSearchInput, FacetViewHeader, HideOnShrink, VerticalDivider} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport FilterButton from './FilterButton/FilterButton';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {useStyles} from './styles';\nimport {ImportFromDT} from './ImportFromDT/ImportFromDT';\n\ntype Props = {\n title?: string;\n total?: number;\n};\n\nconst RelationsHeader = ({title, total}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, changeSearchQuery} = useContext(RelationsViewStateContext);\n\n return (\n <FacetViewHeader title={title || ''} className={styles.header}>\n {total > 0 && (\n <HideOnShrink widthToHide={400}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} items', {count: total})\n : i18n.text('${count} item', {count: total})}\n </Typography>\n </HideOnShrink>\n )}\n <ExpandableSearchInput query={searchQuery} onChange={changeSearchQuery} />\n <ImportFromDT />\n <FilterButton />\n </FacetViewHeader>\n );\n};\n\nexport default RelationsHeader;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n tooltip: theme.tooltip,\n tooltipContent: {\n minWidth: '165px',\n padding: '4px 2px 2px'\n },\n label: {\n fontSize: '11px',\n lineHeight: '13px',\n fontWeight: 500,\n margin: 0,\n color: 'white'\n },\n secondaryLabel: {\n color: 'rgba(255, 255, 255, 0.7)',\n fontSize: '10px',\n marginTop: '4px',\n fontWeight: 500,\n lineHeight: '11px'\n },\n progress: {\n marginTop: '4px',\n color: '#FFFFFF'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {isNil, ifElse} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n ConnectionEntity,\n getDataTenantEntitySecondaryLabel,\n getEntitySecondaryLabel,\n isDataTenantEntity,\n isTempUri\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useSafePromise} from '@reltio/components';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nconst PROGRESS_ICON_SIZE = 16;\n\ntype Props = {\n label: string;\n entity?: ConnectionEntity;\n children: React.ReactElement;\n};\n\nconst RelationTooltip = ({label, entity, children, ...tooltipProps}: Props) => {\n const styles = useStyles();\n const safePromise = useSafePromise();\n const tenant = useSelector(mdm.selectors.getTenant);\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const [isLoading, setIsLoading] = useState(false);\n const [secondaryLabel, setSecondaryLabel] = useState<string>(null);\n\n useEffect(() => {\n setSecondaryLabel(null);\n }, [entity]);\n\n const onOpen = useCallback(() => {\n if (entity?.entityUri && !isTempUri(entity?.entityUri) && isNil(secondaryLabel)) {\n const request = ifElse(\n isDataTenantEntity,\n (entity: ConnectionEntity) =>\n getDataTenantEntitySecondaryLabel({\n entityUri: entity.entityUri,\n dataTenant: entity.dataTenant,\n customerTenant: tenant,\n dtssPath\n }),\n (entity: ConnectionEntity) => getEntitySecondaryLabel(entity.entityUri)\n );\n\n setIsLoading(true);\n safePromise(request(entity))\n .then(({secondaryLabel}) => {\n setSecondaryLabel(secondaryLabel);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [dtssPath, entity, tenant, safePromise, secondaryLabel]);\n\n const tooltipContent = (\n <div className={styles.tooltipContent}>\n <div className={styles.label}>{label}</div>\n {isLoading && <CircularProgress size={PROGRESS_ICON_SIZE} classes={{colorPrimary: styles.progress}} />}\n {secondaryLabel && <div className={styles.secondaryLabel}>{secondaryLabel}</div>}\n </div>\n );\n\n return (\n <Tooltip\n onOpen={onOpen}\n title={tooltipContent}\n disableFocusListener\n classes={{tooltip: styles.tooltip}}\n {...tooltipProps}\n >\n {children}\n </Tooltip>\n );\n};\n\nexport default RelationTooltip;\n","import {\n Connection,\n Metadata,\n getEntityType,\n getLabel,\n getEntityUriForLink,\n getRelationTypeLabelFromMetadata,\n TEntityType\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 TEntityType;\n const entityLabel = getLabel(entity?.entityLabel) as string;\n const preparedUri = getEntityUriForLink({uri: entity?.entityUri, dataTenant: entity?.dataTenant}) as string;\n const relationLabel =\n relation?.relationLabel || (getRelationTypeLabelFromMetadata(metadata, relation?.relationType) as string);\n\n return {\n entityType,\n entityLabel,\n preparedUri,\n relationLabel\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button, {ButtonProps} from '@material-ui/core/Button';\nimport {useStyles} from './styles';\n\ntype Props = {\n acceptRelation: () => void;\n ignoreRelation: () => void;\n};\n\nexport const SuggestedButtons = ({acceptRelation, ignoreRelation, ...props}: Props & ButtonProps) => {\n const styles = useStyles();\n return (\n <div className={styles.container}>\n <Button onClick={acceptRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Accept')}\n </Button>\n <Button onClick={ignoreRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Ignore')}\n </Button>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n\n marginBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '24px',\n padding: '0 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n editButtonsContent: {\n marginLeft: 'auto',\n flex: '0 0 40px'\n },\n editButtons: {\n padding: 0\n },\n removed: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary,\n margin: '0 5px'\n }\n}));\n","import React, {memo, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport {Typography as Typography} from '@material-ui/core';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Connection, Metadata, isActiveObject, checkRemoved, checkEdited, checkIgnored} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, EntityUriLink, SmallIconButtonWithTooltip} from '@reltio/components';\nimport RelationTooltip from '../RelationTooltip/RelationTooltip';\nimport {useRelationInfo} from '../../hooks/useRelationInfo';\nimport {checkRelationPermission} from '../../helpers/permissions';\nimport {SuggestedButtons} from '../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n onRemoveRelation: (relationUri: string) => void;\n onEditRelation: (connection: Connection) => void;\n onAcceptRelation?: (connection: Connection) => void;\n onIgnoreRelation?: (connection: Connection) => void;\n metadata: Metadata;\n showControls: boolean;\n renderRelationArrowButton?: () => React.ReactNode;\n};\n\nconst EditableRelationItem = memo(\n ({\n connection,\n metadata,\n showControls,\n onRemoveRelation,\n onEditRelation,\n onAcceptRelation,\n onIgnoreRelation,\n renderRelationArrowButton\n }: Props) => {\n const styles = useStyles();\n\n const {entity, relation} = connection;\n const removed = checkRemoved(connection);\n const edited = checkEdited(connection);\n const ignored = checkIgnored(connection);\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n const mode = useSelector(mdm.selectors.getMode);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode,\n onRemoveRelation,\n onEditRelation,\n metadata,\n connection\n });\n\n const handleRemoveRelation = useCallback(\n () => onRemoveRelation(connection.relation.relationUri),\n [onRemoveRelation, connection]\n );\n\n const handleEditRelation = useCallback(() => onEditRelation(connection), [onEditRelation, connection]);\n\n const handleAcceptRelation = useCallback(() => {\n onAcceptRelation(connection);\n }, [onAcceptRelation, connection]);\n\n const handleIgnoreRelation = useCallback(() => onIgnoreRelation(connection), [onIgnoreRelation, connection]);\n\n const editButtonsContent =\n (canRemove || canUpdate) && showControls && !connection.suggested ? (\n <>\n {canUpdate && (\n <SmallIconButtonWithTooltip\n icon={EditIcon}\n size=\"XS\"\n onClick={handleEditRelation}\n tooltipTitle={i18n.text('Edit')}\n />\n )}\n {canRemove && (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n size=\"XS\"\n onClick={handleRemoveRelation}\n tooltipTitle={i18n.text('Remove')}\n />\n )}\n </>\n ) : undefined;\n\n const suggustedButtonsContent = connection.suggested ? (\n <SuggestedButtons\n acceptRelation={handleAcceptRelation}\n ignoreRelation={handleIgnoreRelation}\n size=\"small\"\n disabled={ignored}\n />\n ) : undefined;\n const captionText = ignored ? i18n.text('ignored') : i18n.text('edited');\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.removed]: removed || ignored}\n )}\n >\n <div className={styles.row}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {(edited || ignored) && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({captionText})\n </Typography>\n )}\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n\n <div className={styles.editButtonsContent}>{editButtonsContent}</div>\n {suggustedButtonsContent}\n </div>\n </div>\n );\n }\n);\n\nEditableRelationItem.displayName = 'EditableRelationItem';\n\nexport default EditableRelationItem;\n","import {checkMetadataForDelete, checkMetadataForUpdate, checkRemoved, getRelationType, Mode} from '@reltio/mdm-sdk';\n\nexport const checkRelationPermission = ({metadata, mode, connection, onRemoveRelation, onEditRelation}) => {\n const isEditableMode = mode === Mode.Editing || mode === Mode.Suggesting;\n if (isEditableMode && connection) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n","import {Directions, wrapInArrayIfNeeded, InOutRelation} from '@reltio/mdm-sdk';\n\nexport const getFirstRelationTypeObject = (inRelations: InOutRelation, outRelations: InOutRelation) => {\n const prepareRelation = (direction, relations) => {\n const relationsArr = relations ? wrapInArrayIfNeeded(relations) : [];\n return relationsArr.map((relation) => ({\n type: relation,\n direction: direction === Directions.IN ? Directions.IN : Directions.OUT\n }));\n };\n return prepareRelation(Directions.IN, inRelations).concat(prepareRelation(Directions.OUT, outRelations))[0];\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n arrowIcon: {\n fontSize: '16px',\n marginRight: '6px'\n }\n});\n","import React from 'react';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {checkNew, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n connection: Connection;\n config: RelationsViewConfig;\n showSecondLevel: boolean;\n};\n\nexport const RelationArrowButton = ({onClick, connection, config, showSecondLevel}: Props) => {\n const styles = useStyles();\n const {parentEntityUri} = connection;\n const {contentSecondLevel} = config;\n\n const props = {\n onClick,\n className: styles.arrowIcon\n };\n\n if (parentEntityUri || !contentSecondLevel || checkNew(connection)) {\n return null;\n }\n\n return showSecondLevel ? <ArrowDropDownIcon {...props} /> : <ArrowRightIcon {...props} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n row: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n secondLevelContent: {\n paddingLeft: '24px'\n }\n});\n","import React, {useContext, useMemo} from 'react';\nimport {Connection, ActivityFilter, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useSecondLevelConnections} from '../../hooks/useSecondLevelConnections';\nimport {RelationArrowButton} from '../RelationArrowButton/RelationArrowButton';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {useStyles} from './styles';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {EntitiesMapContext} from '@reltio/components';\n\ntype Props = {\n config: RelationsViewConfig;\n connection: Connection;\n children: (render: () => React.ReactNode) => React.ReactNode;\n};\n\nexport const SecondLevelWrapper = ({config, connection, children}: Props) => {\n const styles = useStyles();\n\n const {showInactive} = useContext(RelationsViewStateContext);\n\n const {\n connections,\n showSecondLevel,\n toggleShowSecondLevel,\n loadRelations,\n loading,\n total\n } = useSecondLevelConnections({\n config,\n connection,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const renderRelationArrowButton = () => {\n return (\n <RelationArrowButton\n onClick={toggleShowSecondLevel}\n connection={connection}\n config={config}\n showSecondLevel={showSecondLevel}\n />\n );\n };\n\n return (\n <>\n {children(renderRelationArrowButton)}\n {showSecondLevel && (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.secondLevelContent}>\n <RelationsContent\n isLoading={loading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n parentEntityUri={connection.entity.entityUri}\n />\n </div>\n </EntitiesMapContext.Provider>\n )}\n </>\n );\n};\n","import {useState, useCallback} from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {\n Connection,\n getRelationsForEntity,\n ActivityFilter,\n GlobalSearchRequestOptions,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\ntype Params = {\n config: RelationsViewConfig;\n connection: Connection;\n relationActivityFilter: ActivityFilter;\n};\n\nexport const useSecondLevelConnections = ({config, connection, relationActivityFilter}: Params) => {\n const dispatch = useDispatch();\n\n const [showSecondLevel, setShowSecondLevel] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const {contentSecondLevel} = config;\n const {entity} = connection;\n\n const connections =\n (useSelector((state) =>\n mdmModule.selectors.getConnectionsWithDraftsByViewId(state, config.id, entity.entityUri)\n ) as Connection[]) || [];\n\n const total = useSelector((state) => mdmModule.selectors.getTotalByViewId(state, config.id, entity.entityUri));\n const {activityFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n\n const loadRelations = useCallback(() => {\n const requestConfig = {\n ...contentSecondLevel,\n returnObjects: true,\n returnDates: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n }\n };\n\n setLoading(true);\n\n getRelationsForEntity(entity.entityUri, [requestConfig]).then((response) => {\n const {connections, total} = response[0];\n\n if (connections) {\n dispatch(\n profile.relations.actions.secondLevelRelationsLoaded({\n connections,\n parentEntityUri: entity.entityUri,\n id: config.id,\n total\n })\n );\n }\n\n setLoading(false);\n });\n }, [config.id, contentSecondLevel, dispatch, entity.entityUri, activityFilter, relationActivityFilter]);\n\n const toggleShowSecondLevel = useCallback(() => {\n if (!showSecondLevel && !connection.connections) {\n loadRelations();\n }\n\n setShowSecondLevel((show) => !show);\n }, [loadRelations, connection.connections, showSecondLevel]);\n\n return {connections, showSecondLevel, toggleShowSecondLevel, loadRelations, loading, total};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px',\n marginLeft: '16px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 0 8px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, partition, evolve, always, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n Connection,\n isTempUri,\n Mode,\n createNewConnectionWithDefaultRelationType,\n checkNew,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {RelationEditor} from '@reltio/components';\nimport EditableRelationItem from '../EditableRelationItem/EditableRelationItem';\nimport {getFirstRelationTypeObject} from '../../helpers/relation';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n noDataText: string;\n connections: Array<Connection>;\n config: RelationsViewConfig;\n mode: Mode;\n parentEntityUri?: string;\n};\n\nconst RelationsEditableContent = ({className, connections = [], config, mode, noDataText, parentEntityUri}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationToAdd = useSelector((state) => mdmModule.selectors.getRelationToAddByViewId(state, config.id));\n const relationsToEdit = useSelector((state) => mdmModule.selectors.getRelationsToEditByViewId(state, config.id));\n const entity = useSelector(mdmModule.selectors.getEntity);\n const checkIfCanAddRelations = useSelector((state) =>\n mdmModule.selectors.getCheckIfCanAddRelations(state, config.content)\n );\n\n const dispatch = useDispatch();\n const styles = useStyles();\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({config, mode, metadata, parentEntityUri});\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n }, [config, mode, metadata, dispatch, parentEntityUri]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n dispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n dispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => profile.relations.selectors.getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = profile.relations.selectors.getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n dispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, dispatch]\n );\n const content = config.content;\n const defaultRelationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const onAcceptRelation = useCallback(\n (connection) => {\n const connectionWithDefaultRelationType = pipe(\n omit(['suggested']),\n evolve({\n relation: {\n relationType: always(defaultRelationTypeObject.type),\n object: evolve({type: always(defaultRelationTypeObject.type), attributes: always(null)})\n }\n })\n )(connection);\n dispatch(profile.relations.actions.addRelation(config.id, connectionWithDefaultRelationType));\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const onIgnoreRelation = useCallback(\n (connection) => {\n dispatch(\n profile.relations.actions.ignoreRelation(config.id, {\n relationType: defaultRelationTypeObject.type,\n relationDirection: defaultRelationTypeObject.direction,\n entityUri: connection.entity.entityUri,\n relationUri: connection.relation.relationUri\n })\n );\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const [newConnections, currentConnections] = partition(checkNew, connections);\n const canAddRelations = entity && checkIfCanAddRelations;\n\n const isEmptyRelationList = newConnections.length === 0 && currentConnections.length === 0;\n\n const getRelationEditableContent = (connection: Connection) => {\n const openedRelation = relationsToEdit.find(\n (openedRelation) => openedRelation?.relation?.relationUri === connection?.relation?.relationUri\n );\n const showControls = !config.allowOnlyCreateNew || checkNew(connection);\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n return openedRelation ? (\n <RelationEditor connection={openedRelation} config={config} mode={mode} metadata={metadata} />\n ) : (\n <EditableRelationItem\n renderRelationArrowButton={renderRelationArrowButton}\n connection={connection}\n metadata={metadata}\n showControls={showControls}\n onRemoveRelation={onRemoveRelation}\n onEditRelation={pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)}\n onAcceptRelation={onAcceptRelation}\n onIgnoreRelation={onIgnoreRelation}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n };\n\n const shouldShowAddRelationButton =\n canAddRelations && (!relationToAdd || (relationToAdd && relationToAdd.parentEntityUri === parentEntityUri));\n\n const shouldShowRelationEditorToAdd = relationToAdd && relationToAdd.parentEntityUri === parentEntityUri;\n\n return (\n <div className={className}>\n {shouldShowAddRelationButton && (\n <Button color=\"primary\" onClick={onAddRelation} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {shouldShowRelationEditorToAdd && (\n <RelationEditor connection={relationToAdd} config={config} mode={mode} metadata={metadata} />\n )}\n {newConnections.map(getRelationEditableContent)}\n {newConnections.length > 0 && currentConnections.length > 0 && <Divider className={styles.divider} />}\n {currentConnections.map(getRelationEditableContent)}\n {isEmptyRelationList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n\nexport default RelationsEditableContent;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n attributesList: {\n paddingLeft: '46px',\n paddingRight: '16px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n }\n}));\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n CollaborationObjectTypes,\n Connection,\n createRelatedObjectUris,\n Entity,\n getActivenessAttributes,\n getAttributesListForReadMode,\n getAttributeValuesUris,\n getRelationAttributesList,\n isEmptyValue,\n Metadata\n} from '@reltio/mdm-sdk';\nimport {CollaborationContext, ReadOnlyAttributesList, RelatedObjectUrisContext} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {isEmpty} from 'ramda';\n\ntype Props = {\n connection: Connection;\n className?: string;\n};\n\nexport const RelationAttributes = ({connection, className}: Props) => {\n const styles = useStyles();\n\n const {relation} = connection;\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n\n const firstLevelRelationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relation?.relationType) as AttributeType[],\n [relation?.relationType, metadata]\n );\n\n const attributeListEntity = useMemo(\n () => ({\n attributes: {\n ...profile.relations.selectors.getRelationAttributesFromConnection(connection)\n },\n ...getActivenessAttributes(connection?.relation || {})\n }),\n [connection]\n );\n\n const attributesList = useMemo(\n () => getAttributesListForReadMode(firstLevelRelationAttrTypes, attributeListEntity as Entity),\n [firstLevelRelationAttrTypes, attributeListEntity]\n );\n\n const showAttributesList = attributesList.filter(({values}) => !isEmptyValue(values)).length > 0;\n\n const objectIds = useMemo(() => getAttributeValuesUris(attributeListEntity.attributes), [attributeListEntity]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n !isEmpty(objectIds) && getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const additionalRelatedObjectUris = useMemo(\n () => createRelatedObjectUris(CollaborationObjectTypes.RELATION, {entityUri: currentEntityUri, connection}),\n [connection, currentEntityUri]\n );\n\n return showAttributesList ? (\n <RelatedObjectUrisContext.Provider value={additionalRelatedObjectUris}>\n <ReadOnlyAttributesList\n className={classnames(styles.attributesList, className)}\n entity={attributeListEntity}\n attrTypes={firstLevelRelationAttrTypes}\n />\n </RelatedObjectUrisContext.Provider>\n ) : (\n <div className={classnames(styles.attributesList, className)}>{i18n.text('No attributes')}</div>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport InfoIconSelected from '@material-ui/icons/InfoRounded';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\n\ntype Props = {\n show: boolean;\n onToggle: () => void;\n className?: string;\n};\n\nexport const ShowDetailsButton = ({show, onToggle, className}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n className={className}\n tooltipTitle={\n show\n ? i18n.text('Hide attributes of the relationship')\n : i18n.text('Show attributes of the relationship')\n }\n tooltipPlacement=\"bottom-end\"\n size=\"XXS\"\n icon={show ? InfoIconSelected : InfoIcon}\n onClick={onToggle}\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string; suggested: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '16px',\n padding: '3px 11px 3px 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n wordBreak: 'break-all',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n showDetails: {\n marginLeft: 'auto',\n paddingRight: '5px'\n },\n attributesList: {\n paddingLeft: '46px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n },\n suggestedWrapper: {\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n marginLeft: 'auto',\n alignItems: 'center',\n '& + $showDetails': {\n marginLeft: '4px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n },\n labelWrapper: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {\n Connection,\n Metadata,\n isActiveObject,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {useStyles} from './styles';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\n\ntype Props = {\n connection: Connection;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nconst RelationItem = memo(({connection, renderRelationArrowButton, acceptRelation, ignoreRelation}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n const {entity, relation} = connection;\n const [showDetails, setShowDetails] = useState(false);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.suggestedWrapper]: isSuggested}\n )}\n >\n <div className={classnames(styles.row, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <div className={styles.labelWrapper}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n </div>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n size=\"small\"\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetails}\n />\n )}\n </div>\n </div>\n {showDetails && <RelationAttributes connection={connection} />}\n </div>\n );\n});\n\nRelationItem.displayName = 'RelationItem';\n\nexport default RelationItem;\n","import {pluck, mean, pipe, defaultTo} from 'ramda';\nimport {Rating} from '@reltio/mdm-sdk';\n\nexport const calcAverageRating = (ratings: Rating[]) => {\n return pipe(pluck('value'), mean, defaultTo(0))(ratings);\n};\n\nexport const getCountOfLikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 5).length;\n};\n\nexport const getCountOfDislikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 1).length;\n};\n\nexport const calcWidthOfLikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfLikes(ratings) / ratings.length) * 100 + '%';\n};\n\nexport const calcWidthOfDislikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfDislikes(ratings) / ratings.length) * 100 + '%';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end'\n },\n averageRating: {\n marginBottom: '7px',\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px',\n color: theme.palette.text.primary\n },\n scale: {\n display: 'flex',\n marginBottom: '6px',\n width: '128px',\n height: '4px'\n },\n likesScale: {\n height: '100%',\n backgroundColor: '#8CC152'\n },\n dislikesScale: {\n height: '100%',\n backgroundColor: 'rgb(255, 112, 112)'\n },\n counts: {\n display: 'flex'\n },\n likesCount: {\n marginRight: '32px'\n },\n count: {\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n icon: {\n marginRight: '4px',\n width: '14px',\n height: '14px',\n color: 'rgba(0,0,0,0.38)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport ThumbUpIcon from '@material-ui/icons/ThumbUp';\nimport ThumbDownIcon from '@material-ui/icons/ThumbDown';\nimport {\n calcAverageRating,\n calcWidthOfDislikesScale,\n calcWidthOfLikesScale,\n getCountOfDislikes,\n getCountOfLikes\n} from '../../../helpers/ratings';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n className?: string;\n};\n\nexport const Ratings = ({ratings, className}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, className)}>\n <Typography className={styles.averageRating}>{calcAverageRating(ratings).toFixed(1)}</Typography>\n <div className={styles.scale}>\n <div className={styles.likesScale} style={{width: calcWidthOfLikesScale(ratings)}} />\n <div className={styles.dislikesScale} style={{width: calcWidthOfDislikesScale(ratings)}} />\n </div>\n <div className={styles.counts}>\n <div className={classnames(styles.likesCount, styles.count)}>\n <ThumbUpIcon className={styles.icon} />\n {getCountOfLikes(ratings)}\n </div>\n <div className={styles.count}>\n <ThumbDownIcon className={styles.icon} />\n {getCountOfDislikes(ratings)}\n </div>\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex'\n },\n button: {\n fontSize: '14px',\n textTransform: 'none',\n color: theme.palette.text.secondary\n },\n likeButton: {\n marginLeft: '-12px',\n marginRight: '8px'\n },\n isActive: {\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {DropDownMenuButton} from '@reltio/components';\nimport {Button as Button} from '@material-ui/core';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n onAgree: () => void;\n onDisagree: (comment: string) => void;\n};\n\nexport const RatingsButtons = ({ratings, onAgree, onDisagree}: Props) => {\n const styles = useStyles();\n\n const username = useSelector(mdmModule.selectors.getUserName) as string;\n const ratingOfCurrentUser = ratings.find(({user}) => user === username);\n\n const menuItems = [\n {\n text: i18n.text('Has left the practice'),\n onClick: () => onDisagree(i18n.text('Has left the practice'))\n },\n {\n text: i18n.text('Has moved away'),\n onClick: () => onDisagree(i18n.text('Has moved away'))\n },\n {\n text: i18n.text('Has passed away'),\n onClick: () => onDisagree(i18n.text('Has passed away'))\n },\n {\n text: i18n.text('Has retired'),\n onClick: () => onDisagree(i18n.text('Has retired'))\n },\n {\n text: i18n.text('Other'),\n onClick: () => onDisagree(i18n.text('Other'))\n }\n ];\n\n return (\n <div className={styles.wrapper}>\n <Button\n onClick={onAgree}\n variant=\"text\"\n size=\"small\"\n className={classnames(styles.button, styles.likeButton, {\n [styles.isActive]: ratingOfCurrentUser?.value === 5\n })}\n >\n Agree\n </Button>\n <DropDownMenuButton\n buttonProps={{\n endIcon: <ArrowDropDownIcon />,\n variant: 'text',\n size: 'small',\n className: classnames(styles.button, {\n [styles.isActive]: ratingOfCurrentUser?.value === 1\n })\n }}\n buttonContent={ratingOfCurrentUser?.value === 1 ? ratingOfCurrentUser.comment : 'Disagree'}\n menuItems={menuItems}\n menuId=\"disagree-dropdown-menu-button\"\n />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {suggested: string}) => ({\n wrapper: {\n padding: '6px 16px 6px'\n },\n entityTypeIcon: {\n marginRight: '16px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '14px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n entityLabelContainer: {\n wordBreak: 'break-all',\n textDecoration: 'none'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n ratings: {\n marginLeft: 'auto'\n },\n showDetailsButton: {\n marginLeft: '16px',\n marginTop: '18px'\n },\n relationAttributes: {\n paddingLeft: '60px'\n },\n suggestedWrapper: {\n padding: '6px 8px 6px 16px',\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n alignSelf: 'center',\n '& + $ratings': {\n marginLeft: '16px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n }\n}));\n","import React, {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n Metadata,\n Connection,\n rateRelation,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {Ratings} from '../Ratings/Ratings';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {RatingsButtons} from '../RatingsButtons/RatingsButtons';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n loadRelations: () => void;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nexport const RelationComplexItem = ({\n connection,\n loadRelations,\n renderRelationArrowButton,\n acceptRelation,\n ignoreRelation\n}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n\n const [showDetails, setShowDetails] = useState(false);\n\n const {entity, relation} = connection;\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityLabel, entityType, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const ratings = relation?.ratings || [];\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n\n const handleAgree = () => {\n rateRelation(relation?.relationUri, {\n comment: '',\n value: 5\n }).then(loadRelations);\n };\n\n const handleDisagree = (comment: string) => {\n rateRelation(relation?.relationUri, {\n comment,\n value: 1\n }).then(loadRelations);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n\n return (\n <div className={classnames(styles.wrapper, {[styles.suggestedWrapper]: isSuggested})}>\n <Box display=\"flex\" minHeight=\"44px\" className={COMMENTS_CONTAINER_VISIBILITY_AREA}>\n <Box display=\"flex\" alignItems=\"center\">\n <Box display=\"flex\" alignItems=\"center\">\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon entityType={entityType} className={styles.entityTypeIcon} />\n </Box>\n <Box display=\"flex\" flexDirection=\"column\">\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n </EntityUriLink>\n {relationLabel && <span className={styles.relationLabel}>{relationLabel}</span>}\n {!isSuggested && (\n <RatingsButtons ratings={ratings} onAgree={handleAgree} onDisagree={handleDisagree} />\n )}\n </Box>\n </Box>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <>\n <Ratings ratings={ratings} className={styles.ratings} />\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetailsButton}\n />\n </>\n )}\n </div>\n </Box>\n {showDetails && <RelationAttributes connection={connection} className={styles.relationAttributes} />}\n </div>\n );\n};\n","import React, {useMemo, useContext, useEffect} from 'react';\nimport {Connection, getRelationshipsObjectIdsForCollaboration, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {CollaborationContext} from '@reltio/components';\nimport RelationItem from './RelationItem/RelationItem';\nimport {RelationComplexItem} from './RelationCompexItem/RelationComplexItem';\nimport {useSuggestedRelations} from '../../hooks/useSuggestedRelations';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\n\ntype Props = {\n className?: string;\n connections: Array<Connection>;\n loadRelations: () => void;\n config?: RelationsViewConfig;\n mainEnityUri?: string;\n};\n\nconst RelationsList = ({className, connections = [], loadRelations, config, mainEnityUri}: Props) => {\n const {isComplex, content} = config;\n const {ignoreRelation, acceptRelation} = useSuggestedRelations(content, loadRelations, mainEnityUri);\n\n const objectIds = useMemo(() => {\n return getRelationshipsObjectIdsForCollaboration(connections);\n }, [connections]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n return (\n <div className={className}>\n {connections.map((connection) => {\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n if (isComplex) {\n return (\n <RelationComplexItem\n loadRelations={loadRelations}\n connection={connection}\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }\n\n return (\n <RelationItem\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n connection={connection}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n })}\n </div>\n );\n};\n\nRelationsList.displayName = 'RelationsList';\n\nexport default RelationsList;\n","import {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n Connection,\n ignoreSuggestedRelation,\n createRelation,\n getRequestErrorMessage,\n Directions,\n RelationsContent\n} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {getFirstRelationTypeObject} from '../helpers/relation';\n\nexport const useSuggestedRelations = (content: RelationsContent, loadRelations: () => void, mainEnityUri: string) => {\n const relationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const dispatch = useDispatch();\n const ignoreRelation = (connection: Connection) => () => {\n const {entity} = connection;\n ignoreSuggestedRelation(mainEnityUri, {\n relatedEntityUri: entity.entityUri,\n relationType: relationTypeObject.type,\n relationDirection: relationTypeObject.direction\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n const acceptRelation = (connection: Connection) => () => {\n const {entity, relation} = connection;\n const {startDate, endDate} = relation;\n const isInDirection = relationTypeObject.direction === Directions.IN;\n const startEntityUri = isInDirection ? entity.entityUri : mainEnityUri;\n const endEntityUri = isInDirection ? mainEnityUri : entity.entityUri;\n createRelation({\n startEntityUri,\n endEntityUri,\n relationType: relationTypeObject.type,\n attributes: null,\n startDate,\n endDate\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n return {\n ignoreRelation,\n acceptRelation\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n list: {\n paddingTop: '8px',\n paddingBottom: '10px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {isEditableMode, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport RelationsEditableContent from '../RelationsEditableContent/RelationsEditableContent';\nimport RelationsList from '../RelationsList/RelationsList';\nimport {useStyles} from './styles';\n\ntype Props = {\n isLoading: boolean;\n config: RelationsViewConfig;\n loadRelations: () => void;\n connections: Connection[];\n total: number;\n parentEntityUri?: string;\n};\n\nexport const RelationsContent = ({isLoading, config, loadRelations, connections, total, parentEntityUri}: Props) => {\n const styles = useStyles();\n\n const {selectors} = mdmModule;\n const entity = useSelector(selectors.getEntity);\n const mode = useSelector(selectors.getMode);\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (isEditableMode(mode)) {\n return (\n <RelationsEditableContent\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n config={config}\n mode={mode}\n noDataText={noDataText}\n parentEntityUri={parentEntityUri}\n />\n );\n }\n\n if (total > 0) {\n return (\n <RelationsList\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n mainEnityUri={entity.uri}\n />\n );\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0\n },\n content: {\n position: 'relative',\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: 0\n },\n pagination: {\n height: '52px',\n flexGrow: 0,\n flexShrink: 0\n }\n});\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {ActivityFilter, Connection, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, EntitiesMapContext, useRelationsLoader} from '@reltio/components';\nimport RelationsHeader from '../RelationsHeader/RelationsHeader';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {ImportDTContext} from '../../contexts/ImportDTContext';\nimport {buildRelationsFilter} from '../../helpers/filters';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {pick} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationsViewConfig;\n className?: string;\n};\n\nconst RelationsView = ({config, className}: Props) => {\n const styles = useStyles();\n\n const {\n page,\n setPage,\n rowsPerPage,\n sortOrder,\n sortOption,\n showInactive,\n searchQuery,\n changeSearchQuery\n } = useContext(RelationsViewStateContext);\n const {selectors} = mdmModule;\n const connections = useSelector((state) =>\n selectors.getConnectionsWithDraftsByViewId(state, config.id)\n ) as Connection[];\n const entity = useSelector(selectors.getEntity);\n const total = useSelector((state) => selectors.getTotalByViewId(state, config.id));\n const mode = useSelector(selectors.getMode);\n const sorting = useMemo(\n () => ({\n order: sortOrder,\n field: sortOption\n }),\n [sortOrder, sortOption]\n );\n\n useEffect(() => {\n changeSearchQuery('');\n }, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const filter = useMemo(() => buildRelationsFilter(searchQuery), [searchQuery]);\n\n const {isLoading, reload: loadRelations} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const importDTContextValue = useMemo(\n () => ({\n reloadRelations: loadRelations,\n config: pick(['content', 'importFromDT', 'maxDtssImport'], config)\n }),\n [loadRelations, config]\n );\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={className}>\n <div className={styles.container}>\n <ImportDTContext.Provider value={importDTContextValue}>\n <RelationsHeader title={config.caption} total={total} />\n </ImportDTContext.Provider>\n <div className={styles.content}>\n <RelationsContent\n isLoading={isLoading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n />\n {total > rowsPerPage && (\n <BasicTablePagination\n classes={{root: styles.pagination}}\n count={total}\n rowsPerPageOptions={[]}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n />\n )}\n </div>\n </div>\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n\nRelationsView.displayName = 'RelationsView';\n\nexport {RelationsView};\n","import {FilterBuilder, Maybe, filterValueToQueryStringWithQuotes} from '@reltio/mdm-sdk';\n\nconst buildRelationsFilter = (searchQuery) => {\n const queryClause = Maybe.fromFalsy(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n return new FilterBuilder().addClause(queryClause).build();\n};\n\nexport {buildRelationsFilter};\n","import {useCallback, useMemo, useState} from 'react';\nimport {RelationsViewConfig, SortOrder} from '@reltio/mdm-sdk';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Option = {\n value: string;\n label: string;\n};\n\nexport type RelationsViewState = {\n searchQuery: string;\n changeSearchQuery: (value: string) => void;\n sortOrder: SortOrder;\n toggleSortOrder: () => void;\n sortOption?: string;\n changeSortOption: (option: string) => void;\n sortOptions: Option[];\n page: number;\n setPage: (page: number) => void;\n rowsPerPage: number;\n showInactive: boolean;\n toggleShowInactive: () => void;\n};\n\nconst useRelationsState = (config: RelationsViewConfig): RelationsViewState => {\n const sortOptions = useMemo(\n () =>\n Object.entries(config.sortOptions || {}).map(([key, value]) => ({\n value: key,\n label: value\n })),\n [config.sortOptions]\n );\n\n const rowsPerPage = Number(config.max) || DEFAULT_ROWS_PER_PAGE;\n const [page, setPage] = useState(0);\n const [sortOrder, setSortOrder] = useState(config.sortOrder || DEFAULT_SORT_ORDER);\n const [sortOption, setSortOption] = useState(sortOptions[0]?.value);\n const [searchQuery, setSearchQuery] = useState('');\n const [showInactive, setShowInactive] = useState(DEFAULT_SHOW_INACTIVE);\n\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n const toggleSortOrder = useCallback(() => {\n setPage(0);\n setSortOrder((order) => {\n return order === 'asc' ? 'desc' : 'asc';\n });\n }, []);\n\n const changeSortOption = useCallback((option: string) => {\n setPage(0);\n setSortOption(option);\n }, []);\n\n const changeSearchQuery = useCallback((value: string) => {\n setPage(0);\n setSearchQuery(value);\n }, []);\n\n return {\n searchQuery,\n changeSearchQuery,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions,\n page,\n setPage,\n rowsPerPage,\n showInactive,\n toggleShowInactive\n };\n};\n\nexport default useRelationsState;\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../components/types';\n\nexport const TableAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n visibleColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n onToggleFilters: () => void;\n onSort: (payload) => void;\n onFilter: (payload) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n showTable: boolean;\n filters: {\n [key: string]: {\n filter: string;\n values: [string];\n };\n };\n sorting: {\n order: 'desc' | 'asc';\n field: string;\n };\n attributeType: AttributeType;\n allColumnsData: ColumnsDataType;\n }>(null);\n\nTableAttributeContext.displayName = 'TableAttributeContext';\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nconst BLOB_HEIGHT = 100;\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles(() => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n blobWrapper: {\n position: 'relative',\n overflowY: 'auto',\n overflowX: 'hidden',\n whiteSpace: 'pre',\n maxHeight: `${BLOB_HEIGHT}px`,\n boxSizing: 'border-box',\n padding: '15px 25px 0 25px'\n },\n defaultWrapper: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n padding: '15px 25px 0 25px'\n },\n updateAttribute: {\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n padding: '0 4px',\n marginLeft: '-4px',\n textDecoration: 'line-through',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n },\n description: {\n marginLeft: '-22px'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > div': removedStyle\n }\n}));\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, DescriptionIcon} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n const {description} = props?.headCellData || {};\n\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n <DescriptionIcon description={description} className={styles.description} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport {stopPropagation} from '@reltio/components';\nimport {PrimitiveValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: PrimitiveValue;\n historyClassName?: string;\n};\n\nconst BlobRenderer = ({value, historyClassName}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.blobWrapper} onScroll={stopPropagation}>\n <span className={styles[historyClassName]}>{value}</span>\n </div>\n );\n};\n\nexport default BlobRenderer;\n","import React, {useContext} from 'react';\nimport {pipe} from 'ramda';\nimport {DataTypes, getHistoryAppearanceByUri, getHistoryAttributeClassName, PrimitiveValue} from '@reltio/mdm-sdk';\nimport {DataTypeValue, ExpandedValueTooltip, HistoryDiffContext} from '@reltio/components';\nimport BlobRenderer from './BlobRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n value: PrimitiveValue;\n uri: string;\n };\n columnData: {\n dataTypeDefinition: {\n type: DataTypes;\n };\n };\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const styles = useStyles();\n\n const {value: simpleValue, uri} = value;\n const {appearance} = useContext(HistoryDiffContext);\n const historyClassName = pipe(getHistoryAppearanceByUri, getHistoryAttributeClassName)(uri, appearance);\n\n switch (dataTypeDefinition.type) {\n case DataTypes.TYPE_BLOB:\n return <BlobRenderer value={simpleValue} historyClassName={historyClassName} />;\n default: {\n const dataTypeValue = <DataTypeValue value={simpleValue} dataTypeDefinition={dataTypeDefinition} />;\n return (\n <ExpandedValueTooltip value={dataTypeValue}>\n <div className={styles.defaultWrapper}>\n <span className={styles[historyClassName]}>{dataTypeValue}</span>\n </div>\n </ExpandedValueTooltip>\n );\n }\n }\n};\n\nexport default DefaultCellValueRenderer;\n","import {assoc, chain, isNil, map, path, pipe, prop, reduce, reject, slice, split, uniqBy} from 'ramda';\nimport {\n AttributeNode,\n AttributeType,\n attributeUriToSearchUri,\n flatAttributeTreeNode,\n getAttrDataTypeDefinition,\n getAttributeTypesTree,\n getOvAttributeValuesByPathWithUri,\n isAttributeSearchUri,\n Metadata,\n SearchParent\n} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from '../components/AttributeTable/cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from '../components/AttributeTable/cell-renderers/DefaultCellValueRenderer';\n\nexport const getColumnsDataFromAttributeNode = (attrNode: AttributeNode, parents: SearchParent[]) => {\n const {uri, label, children, name, description} = attrNode;\n return reject(isNil, {\n id: attributeUriToSearchUri(uri, parents),\n label,\n description,\n dataTypeDefinition: getAttrDataTypeDefinition(attrNode),\n children: children?.map((childNode) => getColumnsDataFromAttributeNode(childNode, parents.concat({name})))\n });\n};\n\nexport const getColumnsData = (metadata: Metadata, attributeType: AttributeType) =>\n pipe(\n (metadata: Metadata, attributeType: AttributeType) => getAttributeTypesTree(metadata, attributeType),\n map((attrNode: AttributeNode) => getColumnsDataFromAttributeNode(attrNode, [attributeType])),\n chain(flatAttributeTreeNode),\n uniqBy(prop('id'))\n )(metadata, attributeType);\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getAttributeValues = (attrPath, value) =>\n pipe(path(['value']), getOvAttributeValuesByPathWithUri(attrPath))(value);\n\nconst getRowValueByColumnId = (columnId, value) => {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getAttributeValues(attrPath, value);\n};\n\nexport const getBasicTableRowsData = (values, columnsData) =>\n values.map((value) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, value), acc), {}),\n assoc('value', value)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (isAttributeSearchUri(columnId)) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: DefaultCellValueRenderer\n});\n\nexport const getBasicTableColumnsData = map(getColumnDataByColumnId);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n header: {\n padding: '0 4px 0 16px'\n }\n}));\n","import React, {useContext} from 'react';\nimport {\n FacetViewHeader,\n ColumnsSettings,\n FilterButton,\n VerticalDivider,\n ExpandableSearchInput,\n DescriptionIcon\n} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {ColumnsDataType} from '../types';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\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 const {attributeType} = useContext(TableAttributeContext);\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <DescriptionIcon description={attributeType?.description} />\n <ExpandableSearchInput query={searchQuery} onChange={onChangeSearchQuery} />\n <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </FacetViewHeader>\n );\n};\n\nexport default AttributeTableHeader;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport {withTableContext} from '@reltio/components';\n\ntype Props = {\n cell: {values: string[]};\n isSorted: boolean;\n CellValueRenderer: React.ElementType;\n isRemoved: boolean;\n};\nconst RowCellRenderer = ({cell, CellValueRenderer, isRemoved, isSorted, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({deletedUris}, {rowValue: {value}}) => ({\n isRemoved: Boolean(deletedUris.find((uri) => value.uri === uri))\n}))(RowCellRenderer);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n tableContainer: {\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)',\n marginBottom: '15px'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n }\n}));\n","import React from 'react';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\ntype Props = {\n onEdit?: () => void;\n onRemove?: () => void;\n};\n\nexport const EditButtons = ({onEdit, onRemove}: Props) => (\n <>\n {onEdit && (\n <SmallIconButtonWithTooltip tooltipTitle={i18n.text('Edit')} icon={EditIcon} size=\"L\" onClick={onEdit} />\n )}\n {onRemove && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Remove')}\n icon={DeleteIcon}\n size=\"L\"\n onClick={onRemove}\n />\n )}\n </>\n);\n\nexport default EditButtons;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {BasicTable, useConfigPermissions} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from '../../helpers/tableAttributeHelpers';\nimport {useStyles} from './styles';\nimport {\n AttributeValue,\n checkCanEditAttribute,\n checkCanDeleteAttribute,\n SearchFilter,\n isReltioCrosswalk,\n Entity,\n isEditableMode as checkIsEditableMode,\n AttributeItem,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../types';\nimport EditButtons from './EditButtons';\nimport {useSelector} from 'react-redux';\nimport {path, prop, pipe} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport mdmModule from '@reltio/mdm-module';\n\nconst MAX_HEIGHT = 477;\n\ntype Props = {\n columnsData: ColumnsDataType;\n values: AttributeValue[];\n filters?: {\n [key: string]: SearchFilter;\n };\n onFilter?: (payload) => void;\n sorting?:\n | {\n field: string;\n order: string;\n }\n | undefined;\n onSort?: (payload) => void;\n config: TableAttributeViewConfig;\n onEdit: React.Dispatch<AttributeValue>;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n deletedUris: string[];\n};\n\nconst AttributeTable = ({\n columnsData,\n values,\n sorting,\n onSort,\n filters,\n onFilter,\n config,\n onEdit,\n onDeleteAttribute,\n deletedUris\n}: Props) => {\n const tableRowsData = useMemo(() => getBasicTableRowsData(values, columnsData), [values, columnsData]);\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const {attributeType} = useContext(TableAttributeContext);\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n\n const {canUpdate, canDelete} = useConfigPermissions();\n\n const checkCanEdit = (attributeValue: AttributeValue) =>\n canUpdate(config) &&\n checkCanEditAttribute({\n attributeType,\n mode,\n attributeValue,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n const checkCanRemove = (attributeValue: AttributeValue) =>\n canDelete(config) &&\n checkCanDeleteAttribute({\n attributeType,\n mode,\n attributeValue,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n\n const hideRightContent = useMemo(\n () =>\n typeof hoverRowIndex === 'number' && isEditableMode\n ? deletedUris.includes(pipe(path([hoverRowIndex]), prop('uri'))(values))\n : true,\n [hoverRowIndex, deletedUris, values, isEditableMode]\n );\n const canRemove = typeof hoverRowIndex === 'number' && checkCanRemove(path([hoverRowIndex], values));\n const canEdit = typeof hoverRowIndex === 'number' && checkCanEdit(path([hoverRowIndex], values));\n\n const handleEditAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canEdit) return;\n onEdit(attributeValue);\n }, [onEdit, hoverRowIndex, values, canEdit]);\n\n const handleRemoveAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canRemove) return;\n const attribute: AttributeItem = {\n parentUri: entityUri,\n attributeType,\n uri: attributeValue.uri,\n value: attributeValue\n };\n onDeleteAttribute(attribute);\n setHoverRowIndex(null);\n }, [hoverRowIndex, values, onDeleteAttribute, canRemove, attributeType, entityUri]);\n\n const hoveredRowRightContent =\n !hideRightContent && (canRemove || canEdit) ? (\n <EditButtons\n onEdit={canEdit ? handleEditAttribute : undefined}\n onRemove={canRemove ? handleRemoveAttribute : undefined}\n />\n ) : undefined;\n const context = useMemo(() => ({deletedUris}), [deletedUris]);\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n autosizing\n maxHeight={MAX_HEIGHT}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n resizeDebounceDelay={150}\n renderRowCell={renderRowCell}\n onRowHover={setHoverRowIndex}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n context={context}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n />\n </div>\n );\n};\n\nexport default AttributeTable;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: '0 8px 10px',\n\n '& > button': {\n fontSize: '14px',\n lineHeight: '16px',\n marginLeft: '8px',\n padding: '10px 8px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n }\n }\n}));\n","import {Button as Button} from '@material-ui/core';\nimport React, {useCallback, useContext} from 'react';\nimport {useStyles} from './styles';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {AttributeValue, Entity, isTempUri, getAttributeOwnError, AttributeItem} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {EditableAttribute, ViewIdContext} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n hasChanges: boolean;\n onChangeAttribute: (attribute: AttributeItem) => void;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n onCancel: (attributeValue: AttributeValue) => void;\n onApply: (attributeValue: AttributeValue) => void;\n attributeValue: AttributeValue;\n};\n\nexport const AttributeEditing = ({\n onChangeAttribute,\n onCancel,\n onApply,\n onDeleteAttribute,\n hasChanges,\n attributeValue\n}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const {attributeType} = useContext(TableAttributeContext);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const showEmptyEditors = isTempUri(entityUri);\n\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, entityUri, attributeType)\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n return (\n <>\n <EditableAttribute\n expanded\n attributeValue={attributeValue}\n showEmptyEditors={showEmptyEditors}\n onDeleteAttribute={onDeleteAttribute}\n onDeactivateError={onDeactivateError}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n mode={mode}\n crosswalks={modifiedEntity.crosswalks}\n errors={errors}\n attributeType={attributeType}\n ownError={getAttributeOwnError(attributeValue, null, attributeType.uri, errors)}\n />\n <div className={styles.actionButtons}>\n <Button\n onClick={() => {\n onCancel(attributeValue);\n }}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n color=\"primary\"\n disabled={!hasChanges}\n onClick={() => {\n onApply(attributeValue);\n }}\n >\n {i18n.text('Apply')}\n </Button>\n </div>\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n flex: 1,\n overflow: 'auto'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n color: 'rgba(0,0,0,0.54)'\n },\n\n tableContainer: {\n height: '477px',\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n\n header: {\n padding: '0 4px 0 16px'\n },\n\n addButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n padding: '4px 16px'\n }\n}));\n","import {useCallback, useContext, useState, useMemo, useEffect} from 'react';\nimport {\n AttributeValue,\n createNewAttribute,\n Entity,\n getAttributeSource,\n isEditableMode as checkIsEditableMode,\n NestedAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, pathOr, pipe, map, prop, equals, both, not, without, filter} from 'ramda';\nimport {TableAttributeContext} from '../../../contexts/TableAttributeContext';\nimport {isTempUri, createDefaultValues} from '@reltio/mdm-sdk';\n\nconst emptyArray = [];\n\nexport const useEditableAttribute = () => {\n const [newAttributeUri, setNewAttributeUri] = useState<string>();\n const [originalValues, setOriginalValues] = useState<AttributeValue[]>([]);\n const mode = useSelector(mdmModule.selectors.getMode);\n\n useEffect(() => {\n setOriginalValues([]);\n setNewAttributeUri(null);\n }, [mode]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const {attributeType, values} = useContext(TableAttributeContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => {\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n },\n [viewId, dispatch]\n );\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onAdd = useCallback(() => {\n const newAttribute = createNewAttribute({\n parentUri: entityUri,\n attributeType\n });\n setNewAttributeUri(newAttribute.uri);\n onChangeAttribute({\n ...newAttribute,\n value: createDefaultValues({\n attributeTypes: attributeType.attributes,\n parentUri: newAttribute.uri,\n mode,\n metadata\n }),\n attributeType\n });\n }, [entityUri, attributeType]);\n\n const onStartEditing = useCallback(\n (attributeValue: AttributeValue) => {\n setOriginalValues((prev) => {\n if (!prev.find(propEq('uri', attributeValue.uri))) {\n return [...prev, attributeValue];\n }\n return prev;\n });\n },\n [setOriginalValues]\n );\n\n const onCancel = useCallback(\n (attributeValue: AttributeValue) => {\n const editingValueOriginal = originalValues.find(propEq('uri', attributeValue.uri));\n if (editingValueOriginal) {\n const attributeItem = {\n ...attributeValue,\n value: editingValueOriginal,\n attributeType,\n uri: attributeValue.uri\n };\n setOriginalValues((prev) => without([editingValueOriginal], prev));\n onChangeAttribute(attributeItem);\n } else {\n const attributeItem = {\n value: attributeValue,\n attributeType,\n uri: attributeValue.uri\n };\n setNewAttributeUri(null);\n onDeleteAttribute(attributeItem);\n }\n },\n [onDeleteAttribute, onChangeAttribute, setOriginalValues, originalValues]\n );\n\n const onApply = useCallback(\n (attributeValue: AttributeValue) => {\n setNewAttributeUri(null);\n setOriginalValues((prev) => {\n const original = prev.find(propEq('uri', attributeValue.uri));\n return original ? without([original], prev) : prev;\n });\n },\n [setOriginalValues, setNewAttributeUri]\n );\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const isEditableMode = checkIsEditableMode(mode);\n const attributeSource = getAttributeSource(attributeType);\n\n const modifiedEntityValues: NestedAttributeValue[] = pathOr(\n emptyArray,\n [attributeSource, attributeType?.name],\n modifiedEntity\n );\n\n const modifiedValues = useMemo(() => {\n const newValues = modifiedEntityValues.filter(\n pipe(prop('uri'), both(isTempUri, pipe(equals(newAttributeUri), not)))\n );\n\n const oldValues = map(\n (originalValue) => modifiedEntityValues.find(propEq('uri', originalValue.uri)) || originalValue\n )(values);\n return [...newValues, ...oldValues].map((value) => originalValues.find(propEq('uri', value.uri)) ?? value);\n }, [modifiedEntityValues, originalValues, newAttributeUri, values]);\n\n const deletedUris = useMemo(\n () =>\n isEditableMode\n ? pipe(\n map(prop('uri')),\n filter((uri) => !modifiedEntityValues.find(propEq('uri', uri)))\n )(values)\n : [],\n [modifiedEntityValues, values]\n );\n\n const editingValues = modifiedEntityValues.filter(\n ({uri}) => uri === newAttributeUri || originalValues.find(propEq('uri', uri))\n );\n\n const checkHasChanges = (value) => originalValues.find(propEq('uri', value.uri)) !== value;\n\n return {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n };\n};\n","import React, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n BasicView,\n BasicTablePagination,\n LinearLoadIndicator,\n FacetViewHeader,\n useConfigPermissions,\n DescriptionIcon\n} from '@reltio/components';\nimport {propEq} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport AttributeTableHeader from '../AttributeTableHeader/AttributeTableHeader';\nimport AttributeTable from '../AttributeTable/AttributeTable';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {AttributeEditing} from '../AttributeEditing/AttributeEditing';\n\nimport {useStyles} from './styles';\nimport {\n checkCanCreateAttribute,\n isEditableMode as checkIsEditableMode,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useEditableAttribute} from './hooks/useEditableAttribute';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const TableAttributeView = ({config, className}: Props) => {\n const {caption, max = DEFAULT_ROWS_PER_PAGE} = config;\n const styles = useStyles();\n\n const {\n values,\n page,\n setPage,\n isLoading,\n searchQuery,\n setSearchQuery,\n visibleColumns,\n onFilter,\n onSort,\n onToggleFilters,\n onChangeColumns,\n filters,\n sorting,\n totalVisibleValues,\n hasPaging,\n attributeType,\n showTable,\n allColumnsData\n } = useContext(TableAttributeContext);\n\n const {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n } = useEditableAttribute();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n\n const preparedValues = isEditableMode ? modifiedValues : values;\n\n const {canCreate: hasConfigToCreate} = useConfigPermissions();\n\n const canCreate =\n hasConfigToCreate(config) &&\n attributeType &&\n checkCanCreateAttribute({attributeType, mode}) &&\n !editingValues.length;\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))),\n [visibleColumns, allColumnsData]\n );\n\n return (\n <BasicView className={classnames(styles.root, className)}>\n {showTable ? (\n <>\n <AttributeTableHeader\n title={caption}\n total={totalVisibleValues}\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n searchQuery={searchQuery}\n onChangeSearchQuery={setSearchQuery}\n filtersEnabled={!!filters}\n onToggleFilters={onToggleFilters}\n />\n <div style={{position: 'relative'}}>\n {isEditableMode && (\n <div className={styles.editor}>\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.addButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {editingValues.map((value) => (\n <AttributeEditing\n key={value.uri}\n attributeValue={value}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n onCancel={onCancel}\n onApply={onApply}\n hasChanges={checkHasChanges(value)}\n />\n ))}\n </div>\n )}\n {visibleColumnsData.length > 0 && (\n <AttributeTable\n columnsData={visibleColumnsData}\n config={config}\n values={preparedValues}\n filters={filters}\n onFilter={onFilter}\n sorting={sorting}\n onSort={onSort}\n onEdit={onStartEditing}\n onDeleteAttribute={onDeleteAttribute}\n deletedUris={deletedUris}\n />\n )}\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n rowsPerPageOptions={[]}\n rowsPerPage={max}\n page={page}\n onChangePage={setPage}\n />\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </>\n ) : (\n <>\n <FacetViewHeader title={caption} className={styles.header}>\n <DescriptionIcon description={attributeType?.description} />\n </FacetViewHeader>\n <Typography className={styles.noData}>{i18n.text('No data')}</Typography>\n </>\n )}\n </BasicView>\n );\n};\n","import {useEffect, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {pick, prop} from 'ramda';\nimport {Entity, getPathsTree, getRequestErrorMessage, 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 [errorMessage, setErrorMessage] = useState<string>(null);\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 setErrorMessage(null);\n safePromise(getPathsTree({uri: entityUri, graphUri}))\n .then(processResponse)\n .then(setTreeData)\n .catch((e) => {\n console.warn(e);\n setErrorMessage(getRequestErrorMessage(e, i18n.text('Something went wrong')));\n });\n }\n return () => {\n setTreeData([]);\n };\n }, [entityUri, graphUri, safePromise]);\n return {treeData, setTreeData, errorMessage};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n fontSize: '13px',\n display: 'flex',\n paddingTop: '6px',\n position: 'relative'\n },\n title: {\n flexGrow: 1,\n minHeight: '15px',\n color: theme.palette.primary.main,\n lineHeight: '15px'\n },\n link: {\n cursor: 'pointer',\n color: theme.palette.primary.main,\n lineHeight: '15px',\n wordBreak: 'break-word'\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 errorMessage: {\n fontSize: '13px',\n margin: '0 16px 0',\n lineHeight: '1.4',\n color: theme.palette.text.secondary\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} from '@reltio/mdm-sdk';\nimport {Link, UrlGeneratorsContext} 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 {\n entity: {label: title, uri},\n nodeId\n } = node;\n\n const styles = useStyles();\n const dispatch = useDispatch();\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const uiPath = useSelector(mdm.selectors.getUIPath);\n const {uri: currentEntityUri} = useSelector(mdm.selectors.getEntity);\n\n const config = useContext(ConfigContext);\n const {generateEntityUrl} = useContext(UrlGeneratorsContext);\n\n const entityLink = generateEntityUrl({uiPath, uri});\n const isSelected = uri === currentEntityUri;\n const entityType = getEntityType(metadata, node.entity.type) || {};\n const entityTypeGraphIcon = getPropWithInheritance(metadata, entityType, 'typeGraphIcon');\n const icon = entityTypeGraphIcon && getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n\n const onTitleClick = useCallback(() => {\n dispatch(ui.actions.openEntity({uri, viewId: config.id}));\n }, [dispatch, config, uri]);\n\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","import {Node} from './types';\n\nexport const getNodeKey = ({node}: {node: Node}) => node.nodeId;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {theme as treeTheme} from '../theme';\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 '&:after': {\n content: \"''\",\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)',\n width: '1px',\n left: '50%',\n bottom: '0',\n height: `calc(100% - ${treeTheme.rowHeight}px)`\n }\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: 'calc(50% - 1px)',\n top: 0,\n height: `${treeTheme.rowHeight / 2}px`,\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)'\n },\n horizontalLineRight: {\n height: '1px',\n top: `${treeTheme.rowHeight / 2}px`,\n left: 'calc(50% - 1px)',\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 {useCallback, useState} from 'react';\nimport {assoc} from 'ramda';\n\nimport {theme} from '../theme';\nimport {Node} from '../types';\nimport {getNodeKey} from '../helpers';\n\ntype HeightsCache = {[nodeId: Node['nodeId']]: number};\n\nconst getCacheKey = (node: Node) => getNodeKey({node});\n\nexport const useDynamicNodesHeights = () => {\n const [heightsCache, setHeightsCache] = useState<HeightsCache>({});\n const clearHeightsCache = useCallback(() => {\n setHeightsCache({});\n }, []);\n const onResize = useCallback(\n (node: Node) => (_, height) => {\n setHeightsCache((prevCache) =>\n prevCache[getCacheKey(node)] !== height ? assoc(getCacheKey(node), height, prevCache) : prevCache\n );\n },\n []\n );\n const getRowHeight = useCallback(\n ({node}: {node: Node}): number =>\n heightsCache[getCacheKey(node)]\n ? Math.max(heightsCache[getCacheKey(node)], theme.rowHeight)\n : theme.rowHeight,\n [heightsCache]\n );\n return {onResize, getRowHeight, clearHeightsCache};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative'\n },\n bodyWrapper: {\n paddingTop: '21px'\n }\n}));\n","import React, {useRef, useEffect, useState} from 'react';\nimport {useAPI} from '@reltio/components';\nimport {CustomActionViewConfig} from '@reltio/mdm-sdk';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {isNil, reject} from 'ramda';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: CustomActionViewConfig;\n className?: string;\n};\n\nexport const CustomView = ({config, className}: Props) => {\n const basicViewRef = useRef<HTMLDivElement>();\n const dialogRef = useRef<HTMLDivElement>();\n const [showModal, setShowModal] = useState<boolean>(false);\n const {height, width, tooltip: defaultTooltip} = config;\n const {html, visible, tooltip: updatedTooltip, customStyles, popup} = useAPI(config);\n const styles = useStyles();\n const tooltip = updatedTooltip || defaultTooltip;\n useEffect(() => {\n if (basicViewRef.current && html) {\n basicViewRef.current.innerHTML = '';\n Array.from(html.childNodes).forEach((child) => {\n basicViewRef.current.appendChild(child);\n });\n }\n }, [html]);\n useEffect(() => {\n setShowModal(!!popup);\n }, [popup]);\n\n useEffect(() => {\n if (showModal && dialogRef.current) {\n dialogRef.current.innerHTML = '';\n if (popup) {\n Array.from(popup.childNodes).forEach((child) => {\n dialogRef.current.appendChild(child);\n });\n }\n }\n }, [showModal, popup]);\n\n const style: {width?: number; height?: number} = reject(isNil, {width, height});\n return visible ? (\n <div className={styles.bodyWrapper}>\n <Dialog ref={dialogRef} open={!!popup} />\n <Tooltip title={tooltip || ''}>\n <div\n ref={basicViewRef}\n style={{...style, ...customStyles}}\n className={classnames(styles.root, className)}\n />\n </Tooltip>\n </div>\n ) : null;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n dragHandleContainer: {\n position: 'relative',\n width: '100%',\n height: 'inherit'\n },\n dragHandleVisibilityArea: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '24px',\n zIndex: 11,\n '&:hover $dragHandle': {\n visibility: 'visible'\n },\n '.react-grid-item.static &:hover $dragHandle': {\n visibility: 'hidden'\n }\n },\n dragHandle: {\n position: 'absolute',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n top: '-3px',\n zIndex: 11,\n cursor: 'move',\n visibility: 'hidden'\n },\n dragIcon: {\n transform: 'translateX(-50%) rotate(90deg)',\n color: 'rgba(0, 0, 0, 0.3)'\n }\n});\n","import React, {ComponentType} from 'react';\nimport classnames from 'classnames';\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\n\nimport {useStyles} from './styles';\n\nconst withDragHandle = <P extends Record<string, unknown>>(Component: ComponentType<P>) => {\n const WithDragHandle = (props: P) => {\n const styles = useStyles();\n return (\n <div className={styles.dragHandleContainer}>\n <div className={styles.dragHandleVisibilityArea}>\n <div className={classnames('viewDraggableHandle', styles.dragHandle)}>\n <DragIndicatorIcon className={styles.dragIcon} />\n </div>\n </div>\n <Component {...props} />\n </div>\n );\n };\n\n WithDragHandle.displayName = 'WithDragHandle';\n return WithDragHandle;\n};\n\nexport default withDragHandle;\n","import React, {ComponentType} from 'react';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, ErrorBoundary} from '@reltio/components';\n\nconst withErrorBoundary = <P extends Record<string, unknown>>(Component: ComponentType<P>) => {\n const WithErrorBoundary = (props: P) => {\n return (\n <ErrorBoundary\n error={\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.ERROR}\n text=\"\"\n secondaryText={i18n.text('Something went wrong')}\n variant={EMPTY_STATE_VARIANTS.small}\n />\n }\n >\n <Component {...props} />\n </ErrorBoundary>\n );\n };\n\n WithErrorBoundary.displayName = 'WithErrorBoundary';\n return WithErrorBoundary;\n};\n\nexport default withErrorBoundary;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n stubView: {\n padding: '20px'\n },\n fullHeight: {\n height: '100%'\n },\n component: {\n boxSizing: 'border-box',\n overflow: 'auto',\n boxShadow: 'none',\n borderRadius: 'unset'\n }\n});\n","import {useEffect, useState} from 'react';\nimport {both, gt, lt, path, pipe} from 'ramda';\nimport {Entity, GeoPoint, Metadata, resolve} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nconst filterWrongLat = pipe(path(['point', 'lat']), both(gt(90), lt(-90)));\n\nexport const useMarkers = (entity: Entity, metadata: Metadata, mapKey: string) => {\n const [markers, setMarkers] = useState<GeoPoint[]>([]);\n const [loading, setLoading] = useState(true);\n const safePromise = useSafePromise();\n useEffect(() => {\n setLoading(true);\n safePromise(resolve(metadata, [entity], mapKey))\n .then((markers) => {\n setMarkers(markers.filter(filterWrongLat));\n })\n .catch(() => {\n setMarkers([]);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [entity, metadata, mapKey, safePromise]);\n\n return {markers, loading};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n fullHeight: {\n height: '100%'\n },\n fullscreenBtn: {\n position: 'absolute',\n right: '5px',\n top: '5px',\n zIndex: 100\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n caption: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport useStyles from './styles';\n\ntype ImageLineCaptionProps = {\n totalImages: number;\n};\n\nexport const ImageLineCaption = ({totalImages}: ImageLineCaptionProps) => {\n const styles = useStyles();\n const photoWord = totalImages > 1 ? i18n.text('photos') : i18n.text('photo');\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {`${totalImages} ${photoWord}`}\n </Typography>\n );\n};\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, pathOr} from 'ramda';\nimport {EditableImageAttributesLine} from '@reltio/components';\nimport {AttributeType, Entity, Paging, AttributeItem, ImageAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {IMAGE_SIZE} from '../ImageAttributeView';\nimport {ImageLineCaption} from '../ImageLineCaption/ImageLineCaption';\n\ntype ImageAttributeViewEditableContentProps = {\n config: ImageAttributeViewConfig;\n attributeType: AttributeType;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nexport const ImageAttributeViewEditableContent = ({\n config,\n attributeType,\n paging,\n requestNextPageOfAttributeValues\n}: ImageAttributeViewEditableContentProps) => {\n const dispatch = useDispatch();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const modifiedEntityValues = pathOr([], ['attributes', attributeType.name], modifiedEntity);\n const viewId = config.id;\n\n const onChangeAttribute = (params: AttributeItem) =>\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n\n const onDeleteAttribute = (params: AttributeItem) =>\n pipe(profile.actions.removeAttribute, dispatch)({...params, viewId});\n\n return (\n <>\n <EditableImageAttributesLine\n attributeValues={modifiedEntityValues}\n attributeType={attributeType}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={modifiedEntity.uri}\n onChangeAttribute={onChangeAttribute}\n imageSize={IMAGE_SIZE}\n paging={paging}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n />\n <ImageLineCaption totalImages={modifiedEntityValues.length} />\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: '8px 16px'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pathOr, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {BasicView, DescriptionIcon, 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 <DescriptionIcon description={attributeType?.description} />\n </FacetViewHeader>\n <div className={styles.container}>{renderContent()}</div>\n </BasicView>\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 {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '52px'\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 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 {MatchCard} from './MatchCard';\nimport {useStyles} from './styles';\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} = 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 = !isEmpty(matches);\n const getComponentState = () => {\n if (isLoading) {\n return ComponentStates.Loading;\n }\n if (isEmpty(matches)) {\n return ComponentStates.NoData;\n }\n return ComponentStates.Loaded;\n };\n const state = getComponentState();\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={classnames(styles.root, className)}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.matchesContainer}>\n {state === ComponentStates.Loading && <LinearLoadIndicator />}\n {state === ComponentStates.NoData && (\n <Typography className={styles.noData}>{i18n.text('No matches found')}</Typography>\n )}\n {state === ComponentStates.Loaded &&\n matches.map((match) => (\n <MatchCard\n config={config}\n entitiesMap={entitiesMap}\n match={match}\n onFinishRequest={onFinishMatchAction}\n onStartRequest={turnOnDisableSpinner}\n key={match.object.uri}\n />\n ))}\n </div>\n {showSeeAll && (\n <>\n <div className={styles.footer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n onClick={openPotentialMatchPerspective}\n underline=\"none\"\n >\n {i18n.text('See all')}\n </Link>\n </div>\n </>\n )}\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n","import React, {lazy} from 'react';\nimport {Store} from 'redux';\nimport {\n ProfileViewConfig,\n ProfileViewTypes,\n AttributeViewConfig,\n EntityMapViewConfig,\n ProfilePotentialMatchesViewConfig,\n RelationsViewConfig,\n ImageAttributeViewConfig,\n SingleAttributeViewConfig,\n HierarchyPathsViewConfig,\n HierarchyTreeViewConfig,\n CustomActionViewConfig\n} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {ProfileAttributesView} from '../ProfileAttributesView/ProfileAttributesView';\nimport {ProfileSingleAttributeView} from '../ProfileSingleAttributeView/ProfileSingleAttributeView';\nimport {ProfileRelationsView} from '../ProfileRelationsView/ProfileRelationsView';\nimport {ProfileTableAttributeView} from '../ProfileTableAttributeView/ProfileTableAttributeView';\nimport {HierarchyPathsView} from '../HierarchyPathsView';\nimport {CustomView} from '../Sandbox/CustomView';\nimport withDragHandle from './HOCs/withDragHandle';\nimport withErrorBoundary from './HOCs/withErrorBoundary';\nimport {StubView} from './StubView';\nimport EntityMapView from '../EntityMapView/EntityMapView';\nimport {ImageAttributeView} from '../ImageAttributeView/ImageAttributeView';\nimport {ProfilePotentialMatchesView} from '../ProfilePotentialMatchesView/ProfilePotentialMatchesView';\n\nconst wrapView = <P extends unknown>(component: P): P => pipe(withErrorBoundary, withDragHandle)(component);\n\nconst WrappedStubView = wrapView(StubView);\nexport const WrappedProfileAttributesView = wrapView(ProfileAttributesView);\nexport const WrappedProfileSingleAttributeView = wrapView(ProfileSingleAttributeView);\nexport const WrappedProfileTableAttributeView = wrapView(ProfileTableAttributeView);\nexport const WrappedProfileRelationsView = wrapView(ProfileRelationsView);\nexport const WrappedCustomView = wrapView(CustomView);\nexport const WrappedHierarchyPathView = wrapView(HierarchyPathsView);\nexport const WrappedProfilePotentialMatchesView = wrapView(ProfilePotentialMatchesView);\n\nexport const WrappedHierarchyTreeView = lazy(() =>\n import(/* webpackMode: \"eager\" */ '@reltio/hierarchy-tree').then((importedModule) => ({\n default: wrapView(importedModule.HierarchyTreeView)\n }))\n);\n\nexport const WrappedRelationshipsTableView = lazy(() =>\n import(/* webpackMode: \"eager\" */ '@reltio/relations-table').then((importedModule) => ({\n default: wrapView(importedModule.RelationshipsTableView)\n }))\n);\nexport const WrappedEntityMapView = wrapView(EntityMapView);\nexport const WrappedImageAttributeView = wrapView(ImageAttributeView);\n\nexport type ViewComponentProps = {\n store: Store<unknown>;\n config:\n | ProfileViewConfig\n | AttributeViewConfig\n | SingleAttributeViewConfig\n | RelationsViewConfig\n | EntityMapViewConfig\n | ImageAttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n isAutosize?: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nclass ViewsFactory {\n static ViewTypes = ProfileViewTypes;\n static getComponentBy = (\n propName: string,\n {store, config, className, isFullscreen, onToggleFullscreen}: ViewComponentProps\n ) => {\n switch (config[propName]) {\n case ViewsFactory.ViewTypes.HierarchyTree:\n return (\n <WrappedHierarchyTreeView\n config={config as HierarchyTreeViewConfig}\n store={store}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.HierarchyPaths:\n return <WrappedHierarchyPathView config={config as HierarchyPathsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.RelationsTable:\n return (\n <WrappedRelationshipsTableView\n config={config as RelationsViewConfig}\n store={store}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Relations:\n return <WrappedProfileRelationsView config={config as RelationsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.Attributes:\n return <WrappedProfileAttributesView className={className} config={config as AttributeViewConfig} />;\n case ViewsFactory.ViewTypes.SingleAttribute:\n return (\n <WrappedProfileSingleAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.AttributeTable:\n return (\n <WrappedProfileTableAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Map:\n return (\n <WrappedEntityMapView\n config={config as EntityMapViewConfig}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Custom:\n return <WrappedCustomView config={config as CustomActionViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.ImageAttribute:\n return <WrappedImageAttributeView config={config as ImageAttributeViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.PotentialMatches:\n return (\n <WrappedProfilePotentialMatchesView\n config={config as ProfilePotentialMatchesViewConfig}\n className={className}\n />\n );\n }\n };\n static getComponent = (props: ViewComponentProps) => {\n return (\n ViewsFactory.getComponentBy('class', props) ||\n ViewsFactory.getComponentBy('react-class', props) || <WrappedStubView className={props.className} />\n );\n };\n}\n\nexport default ViewsFactory;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {BasicView} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst StubView = ({className}: Props) => {\n const styles = useStyles();\n return (\n <BasicView className={classnames(styles.stubView, 'viewDraggableHandle', className)}>NOT IMPLEMENTED</BasicView>\n );\n};\n\nexport {StubView};\n","import React from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {SingleAttributeContext} from './contexts/SingleAttributeContext';\nimport {SingleAttributeView} from './components/SingleAttributeView/SingleAttributeView';\nimport {useSingleAttribute} from './hooks/useSingleAttribute';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileSingleAttributeView = ({className, config}: Props) => {\n const singleAttribute = useSingleAttribute(config);\n\n return (\n <SingleAttributeContext.Provider value={singleAttribute}>\n <SingleAttributeView config={config} className={className} />\n </SingleAttributeContext.Provider>\n );\n};\n","import {useState, useMemo, useCallback} from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\n\nexport const useSingleAttribute = (config: SingleAttributeViewConfig) => {\n const [searchQuery, setSearchQuery] = useState('');\n const [page, setPage] = useState(0);\n const [showInactive, setShowInactive] = useState(false);\n const params = useMemo(() => ({page, searchQuery, showInactive}), [page, searchQuery, showInactive]);\n const attribute = useSingleAttributeLoader(config, params);\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n return {\n setSearchQuery,\n searchQuery,\n setPage,\n page,\n toggleShowInactive,\n showInactive,\n ...attribute\n };\n};\n","import React from 'react';\nimport {TableAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {TableAttributeContext} from './contexts/TableAttributeContext';\nimport {useTableAttribute} from './hooks/useTableAttribute';\nimport {TableAttributeView} from './components/TableAttributeView/TableAttributeView';\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileTableAttributeView = ({config, className}: Props) => {\n const tableAttribute = useTableAttribute(config);\n\n return (\n <TableAttributeContext.Provider value={tableAttribute}>\n {config && <TableAttributeView config={config} className={className} />}\n </TableAttributeContext.Provider>\n );\n};\n","import {useMemo, useReducer} from 'react';\nimport {reject, isNil, pipe, not, prop} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {findAttributeTypeByUri, isComplexAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useActions} from '@reltio/components';\nimport reducer, {actions} from './reducer';\nimport {getColumnsData} from '../helpers/tableAttributeHelpers';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\nimport {buildMDMFilters} from './helpers';\n\nconst DEFAULT_COUNT_COLUMN = 5;\n\nexport const useTableAttribute = (config: SingleAttributeViewConfig) => {\n const {attributeUri} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const allColumnsData = useMemo(\n () => (attributeType ? getColumnsData(metadata, attributeType) : []),\n [metadata, attributeType]\n );\n const initialState = useMemo(\n () => ({\n searchQuery: '',\n filters: null,\n sorting: undefined,\n visibleColumns: allColumnsData\n .filter(pipe(prop('dataTypeDefinition'), isComplexAttribute, not))\n .map(({id}) => id)\n .slice(0, DEFAULT_COUNT_COLUMN),\n page: 0\n }),\n [allColumnsData]\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const {searchQuery, filters, sorting, page} = state;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n const requestFilters = useMemo(() => {\n const mdmFilters = buildMDMFilters(allColumnsData, filters);\n return mdmFilters.length ? mdmFilters : null;\n }, [filters, allColumnsData]);\n\n const params = useMemo(\n () => reject(isNil, {filters: requestFilters, page, sorting, searchQuery}),\n [requestFilters, page, sorting, searchQuery]\n );\n const {changeSearchQuery, changePage, toggleSort, changeFilter, toggleFilters, changeColumns} = useActions({\n actions,\n dispatch\n });\n const attribute = useSingleAttributeLoader(config, params);\n const showTable = Boolean(\n (attribute?.values?.length || requestFilters || searchQuery || isEditableMode) &&\n attributeType &&\n !attributeType.hidden\n );\n return {\n ...state,\n setSearchQuery: changeSearchQuery,\n setPage: changePage,\n onSort: toggleSort,\n onFilter: changeFilter,\n onToggleFilters: toggleFilters,\n onChangeColumns: changeColumns,\n showTable,\n allColumnsData,\n ...attribute\n };\n};\n","import {propEq} from 'ramda';\nimport {Maybe} from '@reltio/mdm-sdk';\nimport {ColumnData, ColumnFilter, columnFilterToMdmFilter} from '@reltio/components';\n\nexport const buildMDMFilters = (columnsData: ColumnData[], filters: {[key: string]: ColumnFilter}) =>\n Maybe.fromNull(filters)\n .map((filters) =>\n Object.entries(filters).map(([columnId, columnFilter]) => {\n const columnData = columnsData.find(propEq('id', columnId));\n return columnFilterToMdmFilter(columnData, columnFilter);\n })\n )\n .orSome([]);\n","import React from 'react';\nimport RelationsView from './components/RelationsView';\nimport {RelationsViewStateContext} from './contexts/RelationsViewStateContext';\nimport useRelationsState from './hooks/useRelationsState';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\ntype Props = {\n config: RelationsViewConfig;\n onResize?: (width: number, height: number) => void;\n className?: string;\n};\n\nexport const ProfileRelationsView = ({config, className}: Props) => {\n const relationsState = useRelationsState(config);\n return (\n <RelationsViewStateContext.Provider value={relationsState}>\n <RelationsView config={config} className={className} />\n </RelationsViewStateContext.Provider>\n );\n};\n","import React, {useCallback, useEffect} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {BasicView, ReactSortableTree} from '@reltio/components';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {Typography as Typography} from '@material-ui/core';\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';\nimport {useDynamicNodesHeights} from './hooks/useDynamicNodesHeights';\n\ntype Props = {\n className?: string;\n config: HierarchyPathsViewConfig;\n};\n\nexport const HierarchyPathsView = ({config, className}: Props) => {\n const {id, caption, graph} = config;\n const graphType = graph?.type;\n\n const styles = useStyles();\n const dispatch = useDispatch();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const {treeData, setTreeData, errorMessage} = useLoadPaths(entityUri, graphType);\n const {onResize, getRowHeight, clearHeightsCache} = useDynamicNodesHeights();\n\n const openGraph = useCallback(() => {\n dispatch(ui.actions.openGraph({viewId: id, graphType, entityUri}));\n }, [dispatch, id, graphType, entityUri]);\n\n const generateNodeProps = useCallback(\n (rowInfo) => ({\n title: (\n <ReactResizeDetector\n handleHeight\n refreshMode=\"debounce\"\n refreshRate={100}\n onResize={onResize(rowInfo.node)}\n >\n <Node node={rowInfo.node} />\n </ReactResizeDetector>\n )\n }),\n [onResize]\n );\n\n useEffect(() => {\n clearHeightsCache();\n }, [clearHeightsCache, entityUri]);\n\n return (\n <BasicView className={className}>\n <HierarchyPathsHeader onGraphOpen={openGraph} title={caption} />\n <ConfigContext.Provider value={config}>\n <div className={styles.treeContainer}>\n <div className={styles.tree}>\n {!errorMessage ? (\n <ReactSortableTree\n isVirtualized={false}\n treeData={treeData}\n canDrag={false}\n theme={theme}\n generateNodeProps={generateNodeProps}\n onChange={setTreeData}\n getNodeKey={getNodeKey}\n rowHeight={getRowHeight}\n />\n ) : (\n <Typography className={styles.errorMessage}>{errorMessage}</Typography>\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 {makeStyles} from '@material-ui/core/styles';\n\nconst DEFAULT_MIN_WIDTH = 1024;\n\ntype Props = {\n maxWidth?: number;\n scrollbarWidth?: number;\n};\n\nexport const useStyles = makeStyles({\n scrollWrapper: {\n flexGrow: 1,\n overflow: 'auto'\n },\n scrollableContent: ({maxWidth, scrollbarWidth}: Props) => ({\n minWidth: maxWidth && maxWidth < DEFAULT_MIN_WIDTH ? maxWidth - scrollbarWidth : DEFAULT_MIN_WIDTH\n })\n});\n","import React, {useEffect, useMemo, useRef} from 'react';\nimport {PopupBoundariesContext, ReltioGridLayout} from '@reltio/components';\nimport {ProfileViewConfig} from '@reltio/mdm-sdk';\nimport {ProfileLayoutItem} from '../ProfileLayoutItem';\nimport {Layout} from '../../types';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n views: ProfileViewConfig[];\n layout?: Layout;\n entityUri?: string;\n maxWidth?: number;\n onLayoutChanged: (layout: Layout) => void;\n};\n\nconst calcScrollbarWidth = (element: HTMLDivElement) => (element ? element.offsetWidth - element.clientWidth : 0);\n\nconst ProfileLayout = ({views, layout, entityUri, maxWidth, onLayoutChanged}: Props) => {\n const scrollWrapperRef = useRef<HTMLDivElement>();\n const scrollbarWidth = calcScrollbarWidth(scrollWrapperRef.current);\n const boundariesElement = scrollWrapperRef.current;\n\n const styles = useStyles({maxWidth, scrollbarWidth});\n\n const popupBoundariesValue = useMemo(\n () => ({element: boundariesElement, priority: ['left', 'right', 'top', 'bottom']}),\n [boundariesElement]\n );\n\n useEffect(() => {\n if (scrollWrapperRef.current) {\n scrollWrapperRef.current.scrollTop = 0;\n }\n }, [entityUri]);\n\n return (\n <div ref={scrollWrapperRef} className={styles.scrollWrapper}>\n <div className={styles.scrollableContent}>\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ReltioGridLayout\n LayoutItem={ProfileLayoutItem}\n views={views}\n layout={layout}\n onLayoutChanged={onLayoutChanged}\n draggableHandle=\".viewDraggableHandle\"\n />\n </PopupBoundariesContext.Provider>\n </div>\n </div>\n );\n};\n\nexport {ProfileLayout};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n closeIcon: {\n paddingRight: '12px',\n boxSizing: 'content-box',\n '& path': {\n fill: '#fff'\n }\n },\n snackbar: {\n '& > div': {\n flexWrap: 'nowrap',\n alignItems: 'baseline'\n }\n }\n}));\n","import {Snackbar as Snackbar} from '@material-ui/core';\nimport {Portal as Portal} from '@material-ui/core';\nimport React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {ConfirmationDialog, SmallIconButton} from '@reltio/components';\nimport {NotificationItem, Action} from './types';\nimport {useStyles} from './styles';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\n\ntype Props = {\n notification: NotificationItem;\n};\n\nconst AUTO_HIDE_DURATION = 5000;\n\nexport const Notification = ({notification}: Props) => {\n const styles = useStyles({});\n const dispatch = useDispatch();\n const autoCloseInterval: number = useSelector(mdmModule.selectors.getAutoCloseInterval);\n const autoHideDuration =\n notification.autoHideDuration || (autoCloseInterval && autoCloseInterval * 1000) || AUTO_HIDE_DURATION;\n const [action, setAction] = useState<Action>();\n const [show, setShow] = useState(true);\n const closeSnackbar = useCallback(\n (_e?: unknown, reason?: string) => {\n if (reason !== 'clickaway') {\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n setShow(false);\n }\n },\n [notification]\n );\n const onDiscard = useCallback(() => {\n action.cancelAction && dispatch(action.cancelAction);\n setAction(undefined);\n }, [action]);\n const onConfirm = useCallback(() => {\n dispatch(action.applyAction);\n setAction(undefined);\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n }, [action, notification]);\n\n const actions = (\n <>\n {notification.actions.map((action) => (\n <Button\n key={action.label}\n color=\"primary\"\n size=\"small\"\n onClick={() => {\n if (action.needConfirmation) {\n setAction(action);\n } else {\n dispatch(action.applyAction);\n }\n setShow(false);\n }}\n >\n {action.label}\n </Button>\n ))}\n </>\n );\n const message = (\n <>\n <SmallIconButton className={styles.closeIcon} size=\"S\" icon={CloseIcon} onClick={closeSnackbar} />\n {notification.text}\n </>\n );\n\n return (\n <>\n <Portal container={document.body}>\n <Snackbar\n autoHideDuration={autoHideDuration}\n open={show}\n classes={{root: styles.snackbar}}\n action={actions}\n onClose={closeSnackbar}\n anchorOrigin={{vertical: 'bottom', horizontal: 'center'}}\n message={message}\n />\n </Portal>\n <ConfirmationDialog\n open={!!action}\n title={action?.confirmationText}\n content={action?.confirmationDescription}\n onSave={onConfirm}\n onDiscard={onDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n </>\n );\n};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {NotificationItem} from './types';\nimport {Notification} from './Notification';\n\nexport const Notifications = () => {\n const notifications: NotificationItem[] = useSelector(mdm.selectors.getNotifications);\n if (!notifications) return null;\n return (\n <>\n {notifications.slice(-1).map((n) => (\n <Notification key={n.id} notification={n} />\n ))}\n </>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"19\",\n height: \"17\",\n viewBox: \"0 0 19 17\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M14 17v2H4v-2h10zm6-4v2H4v-2l12.884.001H17l.116-.002L20 13zm-8.457-2H4V9h5.82a8.465 8.465 0 001.723 2zM9.139 6.178l-.289.733.035.088L4 7V5l5.713-.002c-.22.375-.412.768-.574 1.18zM17 2.82a6.451 6.451 0 00-6 4.09 6.451 6.451 0 006 4.092 6.451 6.451 0 006-4.091 6.451 6.451 0 00-6-4.091zm0 6.815a2.728 2.728 0 010-5.455 2.728 2.728 0 010 5.455zm0-4.365c-.905 0-1.636.73-1.636 1.636 0 .906.73 1.637 1.636 1.637.905 0 1.636-.731 1.636-1.637 0-.905-.73-1.636-1.636-1.636z\",\n id: \"svg1467685497a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", {\n transform: \"translate(-4 -2.5)\"\n}, React.createElement(\"mask\", {\n id: \"svg1467685497b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1467685497a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg1467685497b)\",\n d: \"M0 0h24v24H0z\"\n})))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M20.222 6C21.21 6 22 6.8 22 7.778v12.444C22 21.2 21.209 22 20.222 22H7.778C6.79 22 6 21.2 6 20.222V7.778C6 6.8 6.791 6 7.778 6h12.444zM20 8H8v12h12V8zM4 18H2V4c0-1.1.9-2 2-2h14v2H4v14z\",\n id: \"svg2383396984a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2383396984b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2383396984a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2383396984b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n editingButtons: {\n display: 'flex',\n '& button + button': {\n minWidth: '88px',\n marginLeft: '8px'\n }\n },\n searchResults: {\n width: '150px',\n height: '25px',\n backgroundColor: '#ccc'\n },\n comments: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '10px'\n }\n});\n","import {useCallback, useMemo} from 'react';\nimport {\n includes,\n pipe,\n isNil,\n propOr,\n filter,\n map,\n prop,\n cond,\n identity,\n omit,\n find,\n complement,\n when,\n either,\n pick,\n always,\n T\n} from 'ramda';\nimport {\n BaseCloneAction,\n CloneAction,\n Entity,\n getEntityType,\n isReference,\n isRelationWithEntityType,\n getRelationTypeUriFromAttrType\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\n\ntype Props = {\n cloneAction?: CloneAction[];\n onCloneDiscard: () => void;\n};\n\nexport const useCloneAction = ({cloneAction: cloneActionProp, onCloneDiscard}: Props) => {\n const entity: Entity = useSelector(mdm.selectors.getEntityWithoutDiff);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const dispatch = useDispatch();\n const entityTypeUri = entity?.type;\n const relationTypes = metadata.relationTypes;\n const isRelationSuitableForEntityType = useCallback(isRelationWithEntityType(metadata, entityTypeUri), [\n metadata,\n entityTypeUri\n ]);\n const entityType = getEntityType(metadata, entityTypeUri);\n const cloneAction = useMemo<BaseCloneAction>(\n () =>\n when(\n complement(isNil),\n pipe(\n find(pipe(propOr([], 'entityTypeUris'), either(includes(entityTypeUri), includes('*')))),\n when(complement(isNil), omit(['entityTypeUris']))\n )\n )(cloneActionProp),\n [cloneActionProp, entityTypeUri]\n );\n const onClone = useCallback(() => {\n if (cloneAction) {\n const modifiedRelationTypes: string[] = pipe(\n prop('relationshipTypesToCopy'),\n cond([\n [\n isNil,\n pipe(\n always(entityType),\n propOr([], 'attributes'),\n filter(isReference),\n map(getRelationTypeUriFromAttrType)\n )\n ],\n [\n includes('*'),\n pipe(always(relationTypes || []), map(prop('uri')), filter(isRelationSuitableForEntityType))\n ],\n [T, identity]\n ])\n )(cloneAction);\n dispatch(\n profile.entity.actions.entityCloneRequested({\n data: {\n ...pick(['attributeReplacementMapping'], cloneAction),\n relationshipTypesToCopy: modifiedRelationTypes\n },\n entityUri: entity.uri\n })\n );\n }\n onCloneDiscard();\n }, [cloneAction, onCloneDiscard, entityType, relationTypes, entity.uri, isRelationSuitableForEntityType]);\n return cloneAction ? onClone : undefined;\n};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {Box as Box} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {SvgIcon as SvgIcon} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport CreateIcon from '@material-ui/icons/Create';\n\nimport {\n getEntityType,\n Entity,\n checkMetadataPermission,\n isDataTenantEntity,\n isTempUri,\n MetadataPermissions,\n ModeTypes,\n Mode,\n isSuggestMode,\n isEditableMode,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Operation,\n ProfileBandConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n ProfileBand,\n ModeSwitcherSelect,\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ProfileBandNavigation,\n ProfileBandHistory,\n ConfirmationDialog\n} from '@reltio/components';\n\nimport SuggestSvg from './suggest.svg';\nimport CopySvg from './copy.svg';\n\nimport {useStyles} from './styles';\nimport {useCloneAction} from './hooks/useCloneAction';\n\ntype Props = {\n className?: string;\n profileBandConfig?: ProfileBandConfig;\n};\n\nconst SuggestIcon = (props) => (\n <SvgIcon {...props}>\n <SuggestSvg />\n </SvgIcon>\n);\n\nconst CopyIcon = (props) => (\n <SvgIcon {...props}>\n <CopySvg />\n </SvgIcon>\n);\n\ntype Group = {\n label: string;\n value: string;\n description: string;\n icon: React.ElementType;\n permission: string;\n onClick?: (value: string) => void;\n};\n\nconst filterGroupByPermissions = <T extends Group>(\n group: T[],\n entityType,\n isTempEntity: boolean,\n isWorkflowEnabled?: boolean,\n canStartProcessInstanceSearchQuery?: boolean\n): T[] =>\n group.filter(({value, permission}) => {\n if (isTempEntity && !isEditableMode(value)) return false;\n if ((!isWorkflowEnabled || !canStartProcessInstanceSearchQuery) && isSuggestMode(value)) return false;\n return checkMetadataPermission(permission, entityType);\n });\n\nconst hasOnlyReadPermission = (entityType) => {\n return (\n checkMetadataPermission(MetadataPermissions.READ, entityType) &&\n !checkMetadataPermission(MetadataPermissions.UPDATE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.DELETE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.INITIATE_CHANGE_REQUEST, entityType)\n );\n};\n\nexport const PerspectiveProfileBand = ({className, profileBandConfig}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const canStartProcessInstanceSearchQuery = useSelector(mdm.selectors.getCanUserStartProcessFromQuery);\n const entity = useSelector(mdm.selectors.getEntityWithoutDiff) as Entity;\n const modifiedEntity = useSelector((state) => mdm.selectors.getModifiedEntity(state, entity.uri));\n const metadata = useSelector(mdm.selectors.getMetadata);\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const mode = useSelector(mdm.selectors.getMode) as Mode;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode) as boolean;\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const profileOperation = useSelector(mdm.selectors.getProfileOperation);\n const entityTypeUri = entity?.type;\n const entityType = useMemo(() => getEntityType(metadata, entityTypeUri), [entityTypeUri, metadata]);\n const isOperationSaving = profileOperation === Operation.Saving;\n const isOperationCloning = profileOperation === Operation.Cloning;\n const isDisabledButtons = isOperationCloning || isOperationSaving;\n const [openCloneConfirmationDialog, setOpenCloneConfirmationDialog] = useState(false);\n const onCloneDiscard = useCallback(() => {\n setOpenCloneConfirmationDialog(false);\n }, []);\n const onClone = useCloneAction({cloneAction: profileBandConfig?.cloneAction, onCloneDiscard});\n const OPTIONS_GROUP = useMemo(\n () => [\n {\n label: i18n.text('Editing'),\n value: ModeTypes.EDITING,\n description: i18n.text('Edit profile directly'),\n icon: CreateIcon,\n permission: 'UPDATE'\n },\n {\n label: i18n.text('Suggesting'),\n value: ModeTypes.SUGGESTING,\n description: i18n.text('Suggest changes and initiate a workflow review'),\n icon: SuggestIcon,\n permission: 'INITIATE_CHANGE_REQUEST'\n },\n {\n label: i18n.text('Viewing'),\n value: ModeTypes.VIEWING,\n description: i18n.text('Read or print profile'),\n icon: VisibilityIcon,\n permission: 'READ'\n }\n ],\n []\n );\n\n const BUTTONS_GROUP = useMemo(\n () => [\n ...(onClone\n ? [\n {\n label: i18n.text('Clone'),\n value: 'Clone',\n description: i18n.text('Create a copy of the profile'),\n icon: CopyIcon,\n onClick: () => setOpenCloneConfirmationDialog(true),\n permission: 'CREATE'\n }\n ]\n : []),\n {\n label: i18n.text('Delete'),\n value: 'Delete',\n description: i18n.text('Permanently delete profile'),\n icon: DeleteIcon,\n onClick: () => {\n const conf = window.confirm(i18n.text('Are you sure you want to delete this?'));\n if (conf) {\n dispatch(profile.entity.actions.entityRemoveRequested({entityUri: entity.uri}));\n }\n },\n permission: 'DELETE'\n }\n ],\n [dispatch, entity.uri, onClone]\n );\n\n const shouldShowSelect = !isHistoryModeEnabled && !isDataTenantEntity(entity) && !hasOnlyReadPermission(entityType);\n\n const isTempEntity = isTempUri(entity?.uri);\n\n const accessibleOptionsGroup = useMemo(() => {\n return filterGroupByPermissions(\n OPTIONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [OPTIONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n const accessibleButtonsGroup = useMemo(() => {\n return filterGroupByPermissions(\n BUTTONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [BUTTONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n\n const handleChange = useCallback(\n (value: Mode) => {\n dispatch(profile.mode.actions.modeUpdated(value));\n },\n [dispatch]\n );\n\n const onCancel = useCallback(() => {\n dispatch(profile.mode.actions.modeCancelEditing());\n }, [dispatch]);\n\n const handleSave = useCallback(() => {\n dispatch(profile.actions.saveProfile());\n }, [dispatch]);\n\n return (\n <>\n <ProfileBand\n className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)}\n entity={isEditableMode && modifiedEntity ? modifiedEntity : entity}\n >\n <Box display=\"flex\" alignItems=\"center\">\n <Box mr={3}>\n {isEditableMode && (\n <Box className={styles.editingButtons}>\n <Button\n variant=\"outlined\"\n onClick={onCancel}\n data-reltio-id=\"reltio-profile-cancel-editing\"\n disabled={isDisabledButtons}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n data-reltio-id=\"reltio-profile-save-profile\"\n onClick={handleSave}\n disabled={isDisabledButtons}\n >\n {isSuggestMode(mode) ? i18n.text('Suggest') : i18n.text('Save')}\n </Button>\n </Box>\n )}\n {isHistoryModeEnabled && isViewMode ? (\n <ProfileBandHistory />\n ) : (\n isViewMode && <ProfileBandNavigation />\n )}\n </Box>\n {shouldShowSelect && (\n <ModeSwitcherSelect\n optionsGroup={accessibleOptionsGroup}\n buttonsGroup={accessibleButtonsGroup}\n value={mode}\n onChange={handleChange}\n disabled={isDisabledButtons}\n />\n )}\n </Box>\n <Box className={styles.comments}>\n <CommentsContainer\n uri={entity.uri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri: entity.uri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </Box>\n </ProfileBand>\n {!!onClone && (\n <ConfirmationDialog\n open={openCloneConfirmationDialog}\n title={i18n.text('Do you want to create a clone of the profile?')}\n content={i18n.text(\n 'Cloning will create a copy of the current profile. You can modify the cloned profile in the next step. Are you sure you want to proceed?'\n )}\n onSave={onClone}\n onDiscard={onCloneDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n )}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n },\n badge: {\n fontSize: '12px',\n height: '18px',\n minWidth: '18px',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px'\n }\n});\n","import React, {useContext, VFC} from 'react';\nimport {Badge as Badge} from '@material-ui/core';\nimport {WorkflowTasksContext} from '@reltio/components';\nimport InboxIcon from '@material-ui/icons/Inbox';\nimport {useStyles} from '../../styles';\n\nexport const WorkflowButton: VFC = () => {\n const {total} = useContext(WorkflowTasksContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={total}\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <InboxIcon />\n </Badge>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n paddingRight: '12px'\n },\n showMoreLink: {\n display: 'flex',\n margin: '16px'\n },\n showMoreIcon: {\n fontSize: '1rem'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {CollaborationContext, CollaborationItem, EntitiesMapContext, useCommentsEntitiesMap} from '@reltio/components';\nimport {Box as Box} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport {useStyles} from './styles';\n\nexport const CollaborationList = () => {\n const styles = useStyles();\n const {getComments, comments, pageToken} = useContext(CollaborationContext);\n const entityUri = useSelector(mdm.selectors.getEntityUriWithDataTenant);\n\n useEffect(() => {\n getComments(entityUri);\n }, [getComments, entityUri]);\n\n const handleShowMoreComments = () => {\n getComments(entityUri, pageToken);\n };\n\n const entitiesMap = useCommentsEntitiesMap(comments);\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <Box className={styles.wrapper}>\n {comments.map((comment) => {\n const {objectId, relatedObjectUris, objectType, commentId} = comment;\n return (\n <CollaborationItem\n key={commentId}\n uri={objectId}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n })}\n {pageToken && (\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.showMoreLink}\n onClick={handleShowMoreComments}\n underline=\"none\"\n >\n <KeyboardArrowDownIcon className={styles.showMoreIcon} />\n {i18n.text('Show more')}\n </Link>\n )}\n </Box>\n </EntitiesMapContext.Provider>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n position: 'relative',\n height: '100%'\n }\n});\n","import React, {useContext} from 'react';\nimport {LinearLoadIndicator, WorkflowTaskCard, WorkflowTasksContext} from '@reltio/components';\nimport {useStyles} from './styles';\n\nexport const WorkflowList = () => {\n const styles = useStyles();\n const {tasks, loading} = useContext(WorkflowTasksContext);\n\n return (\n <div className={styles.wrapper}>\n {loading && <LinearLoadIndicator />}\n {tasks &&\n tasks.map((task) => {\n return <WorkflowTaskCard key={task.taskId} task={task} />;\n })}\n </div>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M4 17.17L5.17 16H20V4H4v13.17zM20 2c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H6l-4 4V4c0-1.1.9-2 2-2h16zm-3 9H7v2h10v-2zm0-4H7v2h10V7z\",\n id: \"svg2697213709a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", null, React.createElement(\"g\", {\n transform: \"translate(-2 -2)\"\n}, React.createElement(\"mask\", {\n id: \"svg2697213709b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2697213709a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2697213709b)\",\n d: \"M0 0h24v24H0z\"\n}))))));","import React, {useContext, VFC} from 'react';\nimport {Badge as Badge} from '@material-ui/core';\nimport CollaborationIcon from '../../icons/CollaborationIcon.svg';\nimport {CollaborationContext} from '@reltio/components';\nimport {calcTotalCommentItems} from '@reltio/mdm-sdk';\nimport {useStyles} from '../../styles';\n\nexport const CollaborationButton: VFC = () => {\n const {commentsMap} = useContext(CollaborationContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={calcTotalCommentItems(commentsMap)}\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <CollaborationIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst WorkflowPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Ready to go with the flow?')}\n secondaryText={i18n.text(\n 'Suggest a change or submit a match review, and we’ll kick off a workflow task to get things going.'\n )}\n />\n);\n\nexport default WorkflowPanelEmptyState;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst CollaborationPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Care to join the conversation?')}\n secondaryText={i18n.text(\n 'Leave comments for team members anywhere in the Profile page, and we’ll record it here.'\n )}\n />\n);\n\nexport default CollaborationPanelEmptyState;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M14.101 16A5.003 5.003 0 0016 18.987V20H2v-4h12.101zM22 18.987V20v-1.013zM4 17v2h2v-2H4zM16 4v1.013A5.004 5.004 0 0014.101 8H2V4h14zm6 0v1.013V4zM6 7V5H4v2h2zm8 3v4H2v-4h12zM4 11v2h2v-2H4zm12 4v-2h6v2c0 1.3-.84 2.4-2 2.82V22h-2v-4.18c-1.16-.42-2-1.52-2-2.82zm0-6c0-1.3.84-2.4 2-2.82V2h2v4.18c1.16.42 2 1.52 2 2.82v2h-6V9z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexDirection: 'column'\n },\n itemWrapper: {\n paddingLeft: '19px',\n paddingRight: '19px'\n }\n});\n","import React from 'react';\nimport {CustomActionViewConfig} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {CustomView} from '../../../Sandbox/CustomView';\nimport {useStyles} from './styles';\n\nexport const DBConnectorsList = () => {\n const styles = useStyles();\n const dBConnectorSideViews = useSelector(mdm.selectors.getDBConnectorSideViews) as CustomActionViewConfig[];\n\n return (\n <div className={styles.wrapper}>\n {dBConnectorSideViews.map((sideView) => (\n <CustomView key={sideView.id} config={sideView} className={styles.itemWrapper} />\n ))}\n </div>\n );\n};\n","import React, {useCallback, useContext, useEffect, useState} from 'react';\nimport {pipe, propEq, reject, pluck} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {\n CollaborationContext,\n SideButtonsPanel,\n SidePanelContentHeader,\n SidePanel,\n WorkflowTasksContext,\n AddWorkflowButton,\n HistoryView,\n HistoryHeader,\n HistoryPanelEmptyState,\n useHistory,\n useHistoryEnabled\n} from '@reltio/components';\nimport {calcTotalCommentItems, Entity, getEntityType, isTempUri, Metadata} from '@reltio/mdm-sdk';\nimport mdm, {HistoryEvent} from '@reltio/mdm-module';\nimport HistoryIcon from '@material-ui/icons/History';\nimport {WorkflowButton} from './components/WorkflowButton/WorkflowButton';\nimport {CollaborationList} from './components/CollaborationList/CollaborationList';\nimport {WorkflowList} from './components/WorkflowList/WorkflowList';\nimport {CollaborationButton} from './components/CollaborationButton/CollaborationButton';\nimport WorkflowPanelEmptyState from './components/WorkflowPanelEmptyState/WorkflowPanelEmptyState';\nimport CollaborationPanelEmptyState from './components/CollaborationPanelEmptyState/CollaborationPanelEmptyState';\nimport ConnectorsIcon from './icons/ConnectorsIcon.svg';\nimport {DBConnectorsList} from './components/DBConnectorsList/DBConnectorsList';\n\nimport {useStyles} from './styles';\n\nconst DEFAULT_PANEL_WIDTH = 480;\nexport enum ActivePanel {\n Workflow,\n Collaboration,\n History,\n DBConnector\n}\nconst getSecondTitle = (total: number): string => {\n if (total) {\n return total === 1 ? i18n.text('${total} item', {total}) : i18n.text('${total} items', {total});\n }\n};\n\ntype Props = {\n commentId?: string;\n};\n\nexport const RightSidePanel = ({commentId}: Props) => {\n const styles = useStyles();\n const isWorkflowSideViewEnabled = useSelector(mdm.selectors.isWorkflowSideViewEnabled) as boolean;\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const isCollaborationSideViewEnabled = useSelector(mdm.selectors.isCollaborationSideViewEnabled) as boolean;\n const isDBConnectorSideViewEnabled = useSelector(mdm.selectors.isDBConnectorSideViewEnabled) as boolean;\n const isCollaborationEnabled = useSelector(mdm.selectors.isCollaborationEnabled) as boolean;\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n\n const workflowTasksContext = useContext(WorkflowTasksContext);\n const collaborationContext = useContext(CollaborationContext);\n\n const [active, setActive] = useState<ActivePanel>(commentId ? ActivePanel.Collaboration : null);\n const toggleActive = useCallback((newId: ActivePanel): void => {\n setActive((active) => (active === newId ? null : newId));\n }, []);\n const resetActive = useCallback((): void => {\n setActive(null);\n }, []);\n const isOpen = active !== null;\n const isHistoryTabActive = active === ActivePanel.History;\n const {isHistoryEnabled, isProfilePersisted} = useHistoryEnabled({isHistoryTabActive, entity});\n\n const {historyFilter, onApplyFilter, isLoading, historicUris, historyWithTotal, canLoadMore, onLoadMore} =\n useHistory({entity, enabled: isHistoryEnabled});\n\n const enabledWorkflowButton = isWorkflowSideViewEnabled && isWorkflowEnabled && !isTempUri(entity?.uri);\n const enabledCollaborationButton = isCollaborationSideViewEnabled && isCollaborationEnabled;\n const collaborationTotal = calcTotalCommentItems(collaborationContext?.commentsMap);\n\n const elements = [\n {\n buttonProps: {\n id: ActivePanel.Workflow,\n icon: WorkflowButton,\n tooltipTitle: i18n.text('Workflow')\n },\n content: workflowTasksContext?.total ? <WorkflowList /> : <WorkflowPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Workflow'),\n secondTitle: getSecondTitle(workflowTasksContext?.total),\n rightContent: <AddWorkflowButton />\n },\n hidden: !enabledWorkflowButton\n },\n {\n buttonProps: {\n id: ActivePanel.Collaboration,\n icon: CollaborationButton,\n tooltipTitle: i18n.text('Collaboration')\n },\n content: collaborationTotal ? <CollaborationList /> : <CollaborationPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Collaboration'),\n secondTitle: getSecondTitle(collaborationTotal)\n },\n hidden: !enabledCollaborationButton\n },\n {\n buttonProps: {\n id: ActivePanel.History,\n icon: HistoryIcon,\n tooltipTitle: i18n.text('History')\n },\n content: isProfilePersisted ? (\n <HistoryView\n isLoading={isLoading}\n historyWithTotal={historyWithTotal}\n contributorsUris={historicUris}\n entityUri={entity?.uri}\n historyEvent={historyEvent}\n onLoadMore={onLoadMore}\n canLoadMore={canLoadMore}\n />\n ) : (\n <HistoryPanelEmptyState />\n ),\n headerProps: {\n content: (\n <HistoryHeader\n total={isProfilePersisted ? (historicUris?.length || 0) + 1 : undefined}\n entityType={getEntityType(metadata, entity?.type)}\n filter={historyFilter}\n onApplyFilter={onApplyFilter}\n />\n )\n }\n },\n {\n buttonProps: {\n id: ActivePanel.DBConnector,\n icon: ConnectorsIcon,\n tooltipTitle: i18n.text('D&B Connector')\n },\n content: <DBConnectorsList />,\n headerProps: {\n mainTitle: i18n.text('D&B Connector')\n },\n hidden: !isDBConnectorSideViewEnabled\n }\n ];\n\n const visibleElements = reject(propEq('hidden', true))(elements);\n\n useEffect(() => {\n if (elements[active]?.hidden) {\n resetActive();\n }\n }, [active, elements, resetActive, visibleElements]);\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen} width={DEFAULT_PANEL_WIDTH}>\n {!elements[active]?.hidden && (\n <>\n <SidePanelContentHeader {...elements[active]?.headerProps} onClose={resetActive} />\n {elements[active]?.content}\n </>\n )}\n </SidePanel>\n <SideButtonsPanel\n buttonsProps={pipe(reject(propEq('hidden', true)), pluck('buttonProps'))(elements)}\n onButtonClick={toggleActive}\n activeIndexId={active}\n />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst accordionSummaryHeight = '48px';\nconst defaultBorderStyle = '1px solid rgba(0, 0, 0, .125)';\n\nconst useStyles = makeStyles((theme) => ({\n accordion: {\n borderTop: defaultBorderStyle,\n borderBottom: defaultBorderStyle,\n fontSize: '13px',\n boxShadow: 'none',\n '&:not(:first-child)': {\n borderTop: 0\n },\n '&:before': {\n display: 'none'\n },\n '&$accordionExpanded': {\n margin: 'auto'\n }\n },\n accordionExpanded: {},\n accordionSummary: {\n display: 'flex',\n alignItems: 'center',\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight,\n '&$accordionSummaryExpanded': {\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight\n }\n },\n accordionSummaryHeading: {\n flex: 1,\n fontSize: theme.typography.pxToRem(13),\n fontWeight: theme.typography.fontWeightRegular\n },\n accordionSummaryExpanded: {},\n accordionSummaryContent: {\n display: 'flex',\n alignItems: 'center'\n },\n accordionDetails: {\n maxHeight: '21vh',\n overflow: 'auto',\n paddingTop: 0,\n paddingBottom: 0,\n '& ul': {\n paddingLeft: '23px',\n marginTop: '3px'\n },\n '& li': {\n paddingLeft: '9px',\n paddingBottom: '8px'\n }\n },\n parents: {\n color: theme.palette.text.primary\n },\n errorWrapper: {\n lineHeight: '18px',\n display: 'flex',\n flexDirection: 'column'\n },\n errorTitle: {\n display: 'flex',\n alignItems: 'center'\n },\n goToIcon: {\n marginLeft: '4px'\n },\n errorsAccordion: {\n backgroundColor: '#FFF4F6',\n borderColor: '#FFB8B3'\n },\n errorsAccordionDetails: {\n color: '#DD2C00'\n },\n warningsAccordion: {\n backgroundColor: '#FFF9ED',\n borderColor: '#FFDD91'\n },\n warningsAccordionDetails: {\n color: '#CC7500'\n },\n icon: {\n marginRight: '8px'\n },\n errorIcon: {\n fill: '#FF1744'\n },\n warningIcon: {\n fill: '#F9A825'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, ReactNode, ElementType} from 'react';\nimport classnames from 'classnames';\nimport {Accordion as Accordion} from '@material-ui/core';\nimport {AccordionSummary as AccordionSummary} from '@material-ui/core';\nimport {AccordionDetails as AccordionDetails} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport useStyles from '../styles';\n\nimport {AttributeError} from '@reltio/mdm-sdk';\n\ntype Props = {\n panels: {\n id: string;\n title: string;\n icon: ReactNode;\n items: AttributeError[];\n accordionClassName: string;\n accordionDetailsClassName: string;\n }[];\n expandedPanelId: string;\n onToggle: (id: string) => (e, isExpanded: boolean) => void;\n ErrorComponent: ElementType;\n};\n\nexport const ErrorsPanel = memo(({panels, expandedPanelId, onToggle, ErrorComponent}: Props) => {\n const styles = useStyles();\n\n return panels.length > 0 ? (\n <div>\n {panels.map(({id, icon, title, items, accordionClassName, accordionDetailsClassName}) => (\n <Accordion\n key={id}\n square\n expanded={expandedPanelId === id}\n onChange={onToggle(id)}\n className={accordionClassName}\n classes={{root: styles.accordion, expanded: styles.accordionExpanded}}\n >\n <AccordionSummary\n classes={{\n root: styles.accordionSummary,\n expanded: styles.accordionSummaryExpanded,\n content: styles.accordionSummaryContent\n }}\n expandIcon={<ExpandMoreIcon />}\n >\n {icon}\n <Typography className={styles.accordionSummaryHeading}>{title}</Typography>\n </AccordionSummary>\n <AccordionDetails className={classnames(styles.accordionDetails, accordionDetailsClassName)}>\n <ul>\n {items.map((error, i) => (\n <ErrorComponent key={i} error={error} />\n ))}\n </ul>\n </AccordionDetails>\n </Accordion>\n ))}\n </div>\n ) : null;\n});\n\nErrorsPanel.displayName = 'ErrorsPanel';\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.245 12.75c0 .825-.467 1.5-1.045 1.5H4.8c-.583 0-1.05-.675-1.05-1.5v-7.5c0-.832.467-1.5 1.05-1.5h8.4c.578 0 1.05.668 1.05 1.5l-.005 7.5zM9.75 9.96v1.642l3-2.805L9.75 6v1.598c-2.918.404-4.08 2.4-4.5 4.402 1.043-1.402 2.415-2.04 4.5-2.04z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","import {equals, identity, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n AttributeError,\n AttributeType,\n AttributeValuePathItemType,\n ErrorSource,\n ErrorType,\n findAttributeTypeByUri,\n Metadata\n} from '@reltio/mdm-sdk';\n\nconst clearError = omit(['deactivated', 'path']);\nexport const areErrorsEqual = (errors1: AttributeError[] = [], errors2: AttributeError[] = []) =>\n errors1.length === errors2.length && equals(errors1.map(clearError), errors2.map(clearError));\n\nexport const getDisplayedErrorMessage = (\n metadata: Metadata,\n {type, source, message, attributeTypeUri = '', attributeType}: AttributeError\n) => {\n if (type === ErrorType.missed && source === ErrorSource.local) {\n const attrType: AttributeType = attributeType || findAttributeTypeByUri(metadata, attributeTypeUri);\n return attrType ? i18n.text('${attribute} is required', {attribute: attrType.label}) : message;\n }\n return message;\n};\n\nexport const getDisplayedErrorPath = ({path: errorPath, uri}: AttributeError) => {\n return errorPath\n ?.slice(0, uri ? errorPath.length - 1 : errorPath.length)\n .filter(({type}) =>\n [AttributeValuePathItemType.attributeValue, AttributeValuePathItemType.relationConnection].includes(type)\n )\n .map(({label}) => label)\n .filter(identity)\n .join(' / ');\n};\n","import React, {memo, useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeError, Metadata} from '@reltio/mdm-sdk';\nimport HyperlinkIcon from '../icons/hyperlink.svg';\nimport {SmallIconButtonWithTooltip, ScrollToErrorContext} from '@reltio/components';\nimport {getDisplayedErrorMessage, getDisplayedErrorPath} from '../helpers';\n\nimport useStyles from '../styles';\n\ntype Props = {\n error: AttributeError;\n};\n\nexport const Error = memo(({error}: Props) => {\n const styles = useStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const isEditableMode: boolean = useSelector(mdmModule.selectors.getIsEditableMode);\n const displayedMessage = getDisplayedErrorMessage(metadata, error);\n const displayedErrorPath = getDisplayedErrorPath(error);\n const {highlightError} = useContext(ScrollToErrorContext);\n const showLink = error.uri || (error.parentUri && error.attributeTypeUri);\n\n return (\n <li>\n <div className={styles.errorWrapper}>\n <span className={styles.errorTitle}>\n {displayedMessage}\n {showLink && isEditableMode && (\n <SmallIconButtonWithTooltip\n icon={HyperlinkIcon}\n size=\"XXS\"\n onClick={() => highlightError(error)}\n tooltipTitle={i18n.text('Go to error')}\n className={styles.goToIcon}\n />\n )}\n </span>\n {displayedErrorPath && <span className={styles.parents}>{displayedErrorPath}</span>}\n </div>\n </li>\n );\n});\n\nError.displayName = 'Error';\n","import {useRef} from 'react';\nimport {areErrorsEqual} from './helpers';\n\nexport const useCachedErrors = (allErrors) => {\n const cacheForAllErrors = useRef(allErrors);\n const areEqualErrors = areErrorsEqual(allErrors, cacheForAllErrors.current);\n if (!areEqualErrors) {\n cacheForAllErrors.current = allErrors;\n }\n return cacheForAllErrors.current;\n};\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {partition} from 'ramda';\nimport ErrorIcon from '@material-ui/icons/Warning';\nimport WarningIcon from '@material-ui/icons/Error';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeError, isCriticalError} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\n\nimport {ErrorsPanel} from './components/ErrorsPanel';\nimport {Error} from './components/Error';\nimport {useCachedErrors} from './useCachedErrors';\n\nexport const ProfileErrorsPanel = () => {\n const styles = useStyles();\n const allErrors = useSelector(mdmModule.selectors.getProfileErrors);\n const cachedAllErrors = useCachedErrors(allErrors);\n\n const [errors, warnings]: [AttributeError[], AttributeError[]] = useMemo(\n () => partition(isCriticalError, cachedAllErrors),\n [cachedAllErrors]\n );\n const [expandedPanelId, setExpandedPanelId] = useState(null);\n const panels = useMemo(\n () =>\n [\n {\n id: 'errors',\n title: i18n.text('${number} ${errors}', {\n number: errors.length,\n errors: errors.length === 1 ? i18n.text('error') : i18n.text('errors')\n }),\n icon: <ErrorIcon className={classnames(styles.icon, styles.errorIcon)} />,\n items: errors,\n accordionClassName: styles.errorsAccordion,\n accordionDetailsClassName: styles.errorsAccordionDetails\n },\n {\n id: 'warnings',\n title: i18n.text('${number} ${warnings}', {\n number: warnings.length,\n warnings: warnings.length === 1 ? i18n.text('warning') : i18n.text('warnings')\n }),\n icon: <WarningIcon className={classnames(styles.icon, styles.warningIcon)} />,\n items: warnings,\n accordionClassName: styles.warningsAccordion,\n accordionDetailsClassName: styles.warningsAccordionDetails\n }\n ].filter(({items}) => items.length > 0),\n [errors, warnings, styles]\n );\n\n useEffect(() => {\n setExpandedPanelId('errors');\n }, [errors]);\n\n const handleChange = useCallback(\n (panelId: string) => (event, isExpanded: boolean) => {\n setExpandedPanelId(isExpanded ? panelId : null);\n },\n []\n );\n\n return panels.length > 0 ? (\n <ErrorsPanel panels={panels} expandedPanelId={expandedPanelId} onToggle={handleChange} ErrorComponent={Error} />\n ) : null;\n};\n","import {useCallback, useEffect, useMemo, useState} from 'react';\nimport hash from 'object-hash';\nimport {useSavedStateForEntityType, useConfigPermissions} from '@reltio/components';\nimport {\n debounce,\n fixNonUniqViewsIds,\n ProfilePerspectiveConfig,\n ProfileViewConfig,\n ReltioGridLayoutItem,\n removeUnsupportedLayoutItems\n} from '@reltio/mdm-sdk';\nimport {ProfileSavedState, Layout} from '../../../types';\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n entityTypeUri?: string;\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;\nexport const useProfileLayout = ({config: profileConfig, entityTypeUri, saveState, getSavedState}: Props) => {\n const [layout, setLayout] = useState<Layout>([]);\n const [views, setViews] = useState<ProfilePerspectiveConfig['views']>([]);\n\n const {canRead} = useConfigPermissions();\n const config: ProfilePerspectiveConfig = useMemo(() => {\n const validatedViews = profileConfig.views.filter(canRead);\n const validatedLayout = removeUnsupportedLayoutItems(profileConfig.layout, validatedViews);\n return {...profileConfig, views: validatedViews, layout: validatedLayout};\n }, [profileConfig, canRead]);\n\n const configHash = useMemo(() => hash(config), [config]);\n const nestedRoute = config?.nestedRoute ? `/${config.nestedRoute}` : '';\n const savedStateKey = entityTypeUri && config ? entityTypeUri + nestedRoute : null;\n\n const getSavedStateAndFix = useCallback(() => {\n return getSavedState().then((state) => (state.layout ? {} : state));\n }, [getSavedState]);\n const debouncedSaveState = useCallback(debounce(saveState, SAVE_STATE_DEBOUNCE_DELAY), [saveState]) as (\n state: Record<string, ProfileSavedState>\n ) => void;\n const {\n isLoaded,\n savedState = emptyState,\n updateSavedState\n } = useSavedStateForEntityType<ProfileSavedState>({\n getSavedState: getSavedStateAndFix,\n saveState: debouncedSaveState,\n entityTypeUri: savedStateKey\n });\n\n const handleLayoutChange = useCallback(\n (layout: Layout) => {\n updateSavedState({layout, views, configHash});\n setLayout(layout);\n },\n [updateSavedState, configHash, views]\n );\n\n useEffect(() => {\n if (isLoaded) {\n const isConfigChanged = configHash !== savedState.configHash;\n const {views: fixedViews, layout: fixedLayout} = fixNonUniqViewsIds<\n ProfileViewConfig,\n ReltioGridLayoutItem\n >({\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 return {views, layout, isLoaded, handleLayoutChange};\n};\n","import {useWorkflowDefaultActionSuccessHandler, useWorkflowTasks as useCommonWorkflowTasks} from '@reltio/components';\nimport {useMemo} from 'react';\n\nexport const useWorkflowTasks = (workflowConfig: Parameters<typeof useCommonWorkflowTasks>[0]) => {\n const commonWorkflowTasks = useCommonWorkflowTasks(workflowConfig);\n const defaultActionSuccessHandler = useWorkflowDefaultActionSuccessHandler();\n\n return useMemo(\n () => ({\n ...commonWorkflowTasks,\n onActionSuccess: defaultActionSuccessHandler\n }),\n [commonWorkflowTasks, defaultActionSuccessHandler]\n );\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 emptyState: {\n backgroundColor: '#FAFAFA',\n height: '100%'\n },\n profileWrapper: ({maxWidth}: Props) => ({\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n maxWidth: maxWidth ? `${maxWidth}px` : '100%'\n }),\n profileContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import React, {memo, useContext, useMemo, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Entity, getProfileObjectIdsForCollaboration, ProfilePerspectiveConfig} from '@reltio/mdm-sdk';\nimport mdm, {HistoryEvent} from '@reltio/mdm-module';\nimport {\n CollaborationContext,\n WorkflowTasksContext,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n EmptyState,\n LinearLoadIndicator,\n ProfilePerspectiveViewContext,\n SearchValueContext,\n useCollaboration,\n HistoryDiffContext,\n useHistoryDiff,\n useHistorySlice,\n ScrollToErrorProvider,\n CollaborationContextProvider\n} from '@reltio/components';\nimport {ProfileSavedState} from '../../types';\n\nimport {ProfileLayout} from '../ProfileLayout';\nimport {Notifications} from '../Notifications';\nimport {PerspectiveProfileBand} from '../PerspectiveProfileBand';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\nimport {ProfileErrorsPanel} from '../ProfileErrorsPanel';\nimport {useProfileValidation} from '../hooks/useProfileValidation';\nimport {useProfileLayout} from './hooks/useProfileLayout';\nimport {useWorkflowTasks} from './hooks/useWorkflowTasks';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: () => Promise<Record<string, ProfileSavedState>>;\n commentId?: string;\n};\n\nconst ProfilePerspectiveView = memo(({config, saveState, getSavedState, commentId}: Props) => {\n const {maxWidth, profileBand, workflow} = config || {};\n const styles = useStyles({maxWidth});\n\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n const isHistoryActive = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const keywordValue = useSelector(mdm.selectors.getSearchKeyword)?.value || '';\n\n const dispatch = useDispatch();\n const historyDiff = useHistoryDiff();\n const workflowTasks = useWorkflowTasks(workflow);\n\n const {type: entityTypeUri, uri: entityUri} = entity || {};\n const objectIds = useMemo(() => getProfileObjectIdsForCollaboration(entity), [entity]);\n const emptyCollaboration = useContext(CollaborationContext);\n const collaboration = useCollaboration({objectIds});\n\n const {views, layout, isLoaded, handleLayoutChange} = useProfileLayout({\n config,\n entityTypeUri,\n saveState,\n getSavedState\n });\n useHistorySlice({entity, historyEvent});\n useProfileValidation();\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 return (\n <ProfilePerspectiveViewContext.Provider value={true}>\n <CollaborationContextProvider collaboration={isHistoryActive ? emptyCollaboration : collaboration}>\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <HistoryDiffContext.Provider value={historyDiff}>\n <SearchValueContext.Provider value={keywordValue}>\n <ScrollToErrorProvider>\n <div className={styles.perspectiveView}>\n {(!isLoaded || !entityUri) && <LinearLoadIndicator />}\n {isLoaded && entityUri ? (\n <div className={styles.profileContainer}>\n <div className={styles.profileWrapper}>\n <PerspectiveProfileBand profileBandConfig={profileBand} />\n {!isHistoryActive && <ProfileErrorsPanel />}\n <ProfileLayout\n maxWidth={maxWidth}\n views={views}\n layout={layout}\n entityUri={entityUri}\n onLayoutChanged={handleLayoutChange}\n />\n </div>\n <RightSidePanel commentId={commentId} />\n </div>\n ) : (\n <div className={styles.emptyState}>\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.NO_DATA}\n text={i18n.text('No data to display.')}\n variant={EMPTY_STATE_VARIANTS.embedded}\n />\n </div>\n )}\n <Notifications />\n </div>\n </ScrollToErrorProvider>\n </SearchValueContext.Provider>\n </HistoryDiffContext.Provider>\n </WorkflowTasksContext.Provider>\n </CollaborationContextProvider>\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, useContext, 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 {\n ErrorPopup,\n FeaturesContext,\n SandboxAPIContext,\n SnackbarContext,\n useSnackbar,\n ViewIdContext\n} from '@reltio/components';\nimport {\n convertOldProfileConfig,\n ProfilePerspectiveConfig,\n promisifyCallback,\n QxSandboxApi,\n userPreferencesComparator\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {ProfileSavedState} from '../types';\nimport ProfilePerspectiveView from '../components/ProfilePerspectiveView';\nimport {equalsState} from './helpers';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'profilePerspective',\n disableGlobal: true\n});\n\nuserPreferencesComparator.register('profile', equalsState);\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 commentId?: string;\n};\n\nconst ProfilePerspective = ({\n config,\n store,\n onResize = identity,\n saveState,\n getSavedState,\n qxSandboxApi,\n commentId\n}: 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 const featuresContext = useContext(FeaturesContext);\n const showDescription = mdmModule.selectors.getShowAttributeDescription(store.getState());\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\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 <FeaturesContext.Provider value={features}>\n <>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) =>\n onResize(Math.floor(width), Math.floor(height))\n }\n />\n {processedConfig && (\n <ProfilePerspectiveView\n config={processedConfig}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n commentId={commentId}\n />\n )}\n <ErrorPopup showErrorFromStore={true} />\n <SnackbarRenderer />\n </>\n </FeaturesContext.Provider>\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </SandboxAPIContext.Provider>\n </SnackbarContext.Provider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default ProfilePerspective;\n","import {evolve, ifElse, map, omit, pipe, propEq, sort} from 'ramda';\nimport {looseEquals} from '@reltio/mdm-sdk';\nimport {Layout, ProfileSavedState} from '../types';\n\nexport const equalsState = (\n newState: Record<string, ProfileSavedState>,\n savedState: Record<string, ProfileSavedState> | null\n) => {\n const sortLayoutItems = (layout: Layout) =>\n sort((a, b) => (a.x > b.x || (a.x === b.x && a.y > b.y) ? 1 : -1), layout);\n const prepareState = map((item: ProfileSavedState) =>\n evolve(\n {\n layout: pipe(\n sortLayoutItems,\n map(\n ifElse(\n propEq('autosizing', true),\n omit(['y', 'height', 'minHeight', 'maxHeight']),\n omit(['y', 'minHeight', 'maxHeight'])\n )\n )\n )\n },\n item\n )\n );\n return looseEquals(prepareState(newState), prepareState(savedState));\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n titleContainer: {\n overflow: 'hidden',\n fontSize: '16px',\n fontWeight: 'normal',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n alignItems: 'center',\n display: 'flex',\n minHeight: '48px',\n color: theme.palette.text.secondary\n },\n link: {\n fontSize: '16px',\n fontWeight: 'normal'\n },\n icon: {\n height: '18px',\n color: theme.palette.text.secondary\n },\n totalCaption: {\n lineHeight: 'inherit',\n fontSize: '14px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px'\n },\n totalNumber: {\n fontSize: '16px',\n color: 'rgba(0,0,0,0.87)',\n marginRight: '5px',\n fontWeight: 500\n }\n}));\n","import React, {useCallback, useContext} from 'react';\nimport {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {FacetViewHeader, Spacer, ViewIdContext} from '@reltio/components';\nimport {Link as Link} from '@material-ui/core';\nimport ArrowForwardIosRoundedIcon from '@material-ui/icons/ArrowForwardIosRounded';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total?: number;\n};\n\nexport const TagListHeader = ({total = 0}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const viewId = useContext(ViewIdContext);\n\n const switchToProfile = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'profile', viewId}));\n }, [dispatch, viewId]);\n\n return (\n <FacetViewHeader title=\"\">\n <div className={styles.titleContainer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.link}\n onClick={switchToProfile}\n underline=\"none\"\n >\n {i18n.text('Profile')}\n </Link>\n <ArrowForwardIosRoundedIcon className={styles.icon} />\n {i18n.text('Tags')}\n </div>\n <Spacer />\n <Typography className={styles.totalCaption} variant=\"caption\">\n <span className={styles.totalNumber}>{i18n.number(total, '0,0')}</span>\n {i18n.text('total profiles')}\n </Typography>\n </FacetViewHeader>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n toolbar: {\n display: 'flex',\n flexShrink: 0,\n background: 'white',\n borderBottom: '1px solid rgba(0,0,0,0.1)',\n boxSizing: 'border-box',\n paddingLeft: '16px'\n },\n avatar: {\n color: 'rgba(0, 0, 0, 0.38)',\n marginRight: '12px'\n },\n label: {\n fontSize: '20px',\n letterSpacing: '0.25px',\n lineHeight: '1.2',\n fontWeight: 500,\n color: theme.palette.text.primary,\n wordBreak: 'break-word'\n }\n}));\n","import React from 'react';\nimport TagIcon from '@material-ui/icons/LocalOffer';\nimport {Toolbar as Toolbar} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n};\n\nexport const TagProfileBand = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={styles.toolbar}>\n <TagIcon className={styles.avatar} />\n <Typography variant=\"h6\" className={styles.label}>\n {label}\n </Typography>\n </Toolbar>\n );\n};\n","import {useCallback, useMemo} from 'react';\nimport {map} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n Entity,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotals,\n getTotalFromDataTenant,\n TotalResponse,\n SearchFilter,\n GlobalSearchRequestOptions,\n getDataTenantFromEntityUri,\n enrichEntityWithDataTenant\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entityUri: string;\n tag: string;\n};\n\nexport const useTagsProvider = ({entityUri, tag}: Props) => {\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const dtssPath: string = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenant = useMemo(() => getDataTenantFromEntityUri(entityUri), [entityUri]);\n const filters: SearchFilter[] = useMemo(() => {\n return [\n {\n filter: 'equals',\n fieldName: 'tags',\n values: [tag]\n }\n ];\n }, [tag]);\n\n const isDT = !!dataTenant;\n\n const getEntities = useCallback(\n (filters: SearchFilter[] = [], options = {}): Promise<Entity[]> => {\n const requestOptions = {\n select: 'uri,label,type,secondaryLabel,defaultProfilePicValue,startDate,endDate',\n ...options\n };\n return isDT\n ? getFilteredEntitiesFromDataTenant({\n filters,\n options: requestOptions,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n }).then(map(enrichEntityWithDataTenant(dataTenant)))\n : getFilteredEntities(filters, requestOptions);\n },\n [isDT, dataTenant, tenant, dtssPath]\n );\n\n const requestEntities = useCallback(\n (max, offset): Promise<Entity[]> => {\n return getEntities(filters, {offset, max, ...globalSearchRequestOptions});\n },\n [filters, globalSearchRequestOptions, getEntities]\n );\n\n const requestTotal = useCallback((): Promise<number> => {\n const options = globalSearchRequestOptions;\n return (isDT\n ? getTotalFromDataTenant({\n filters,\n options,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n })\n : getTotals(filters, options)\n ).then((json) => (json as TotalResponse).total);\n }, [filters, globalSearchRequestOptions, isDT, dataTenant, tenant, dtssPath]);\n\n return {requestEntities, requestTotal};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n tagsContainer: {\n display: 'flex'\n },\n fullHeight: {\n flexGrow: 1,\n height: 0\n },\n tagsView: {\n margin: '16px',\n width: '100%',\n paddingTop: '4px'\n },\n listContainer: {\n flex: 1,\n display: 'flex',\n overflow: 'hidden',\n position: 'relative',\n flexDirection: 'column',\n minHeight: '4px'\n },\n entitiesList: {\n overflowY: 'auto',\n flexGrow: 1\n },\n pagination: {\n flexGrow: 0\n }\n}));\n","import React, {memo, useEffect, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdmModule from '@reltio/mdm-module';\nimport {GlobalSearchRequestOptions} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, LinearLoadIndicator, ProfilesList} from '@reltio/components';\nimport {TagListHeader} from './components/TagListHeader';\nimport {TagProfileBand} from './components/TagProfileBand';\nimport {useTag} from './hooks/useTag';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [25, 50, 100];\n\ntype Props = {\n tag?: string;\n entityUri?: string;\n};\n\nconst TagPerspectiveView = memo(({tag, entityUri}: Props) => {\n const styles = useStyles();\n\n const [rowsPerPage, setRowsPerPage] = useState(ROWS_PER_PAGE_OPTIONS[0]);\n const [page, setPage] = useState(0);\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n\n useEffect(() => {\n setPage(0);\n }, [tag, entityUri, globalSearchRequestOptions]);\n\n const {isLoading, total, entities} = useTag({tag, entityUri, page, rowsPerPage});\n const refScrollBlock = useRef(null);\n\n useEffect(() => {\n if (refScrollBlock.current) {\n refScrollBlock.current.scrollTop = 0;\n }\n }, [entities]);\n\n const hasPagination = total > ROWS_PER_PAGE_OPTIONS[0];\n\n return (\n <div className={styles.perspectiveView}>\n <TagProfileBand label={tag} />\n <div className={classnames(styles.tagsContainer, {[styles.fullHeight]: hasPagination})}>\n <BasicView className={styles.tagsView}>\n <TagListHeader total={total} />\n <div className={styles.listContainer}>\n {isLoading && <LinearLoadIndicator />}\n {total > 0 && (\n <div className={styles.entitiesList} ref={refScrollBlock}>\n <ProfilesList entities={entities} />\n </div>\n )}\n {hasPagination && (\n <div className={styles.pagination}>\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n onChangeRowsPerPage={setRowsPerPage}\n />\n </div>\n )}\n </div>\n </BasicView>\n </div>\n </div>\n );\n});\n\nTagPerspectiveView.displayName = 'TagPerspectiveView';\n\nexport {TagPerspectiveView};\n","import {useCallback, useEffect, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useDispatch} from 'react-redux';\nimport {useSafePromise} from '@reltio/components';\nimport {ui} from '@reltio/mdm-module';\nimport {Entity, getRequestErrorMessage} from '@reltio/mdm-sdk';\nimport {useTagsProvider} from './useTagsProvider';\n\ntype Props = {\n tag: string;\n entityUri: string;\n page: number;\n rowsPerPage: number;\n};\n\nexport const useTag = ({tag, entityUri, page = 0, rowsPerPage = 50}: Props) => {\n const dispatch = useDispatch();\n\n const safeRequestTotalPromise = useSafePromise();\n const safeRequestEntitiesPromise = useSafePromise();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [total, setTotal] = useState<number>(0);\n const [entities, setEntities] = useState<Entity[]>([]);\n\n const {requestEntities, requestTotal} = useTagsProvider({entityUri, tag});\n\n const onError = useCallback(\n (e) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(e, i18n.text('Something went wrong'))));\n setTotal(0);\n },\n [dispatch]\n );\n\n useEffect(() => {\n safeRequestTotalPromise(requestTotal()).then(setTotal).catch(onError);\n }, [requestTotal, safeRequestTotalPromise, onError]);\n\n useEffect(() => {\n setIsLoading(true);\n safeRequestEntitiesPromise(requestEntities(rowsPerPage, page * rowsPerPage))\n .then(setEntities)\n .catch(onError)\n .finally(() => setIsLoading(false));\n }, [page, rowsPerPage, requestEntities, safeRequestEntitiesPromise, onError]);\n\n return {isLoading, total, entities};\n};\n","import React from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\nimport {identity} from 'ramda';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {TagPerspectiveConfig} from '@reltio/mdm-sdk';\nimport TagPerspectiveView from '../components/TagPerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'tagPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: TagPerspectiveConfig;\n tag?: string;\n entityUri?: string;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n};\n\nconst TagPerspective = ({config, tag, entityUri, store, onResize = identity}: Props) => {\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <TagPerspectiveView tag={tag} entityUri={entityUri} />}\n <ErrorPopup showErrorFromStore={true} />\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default TagPerspective;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n actionsWrapper: {\n display: 'flex',\n '& button + button': {\n width: '88px',\n marginLeft: '8px'\n }\n }\n}));\n","import React, {useContext, useMemo} from 'react';\nimport {ProfileBand, TaskActionButtons, WorkflowTasksContext} from '@reltio/components';\nimport {useSelector} from 'react-redux';\nimport {Entity, getEntityUriFromDCRUri} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\nexport const DCRProfileBand = () => {\n const styles = useStyles();\n\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {tasks} = useContext(WorkflowTasksContext);\n const entityTask = useMemo(() => {\n return tasks?.find((task) => task.objectURIs.includes(getEntityUriFromDCRUri(entity.uri)));\n }, [entity.uri, tasks]);\n\n return (\n <ProfileBand entity={entity}>\n <div className={styles.actionsWrapper}>{entityTask && <TaskActionButtons task={entityTask} />}</div>\n </ProfileBand>\n );\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 perspectiveContainer: {\n display: 'flex',\n flexGrow: 1,\n overflow: 'hidden'\n },\n attributesWrapper: {\n margin: '15px',\n flexGrow: 1,\n overflowY: 'auto',\n backgroundColor: '#FAFAFA'\n },\n contentWrapper: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1\n }\n}));\n","import {useWorkflowTasks as useCommonWorkflowTasks} from '@reltio/components';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getEntityUriFromDCRUri} from '@reltio/mdm-sdk';\nimport {useCallback, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nexport const useWorkflowTasks = (workflowConfig: Parameters<typeof useCommonWorkflowTasks>[0]) => {\n const dispatch = useDispatch();\n const entityUri: string = useSelector(mdmModule.selectors.getEntityUri);\n const commonWorkflowTasks = useCommonWorkflowTasks(workflowConfig);\n\n const actionSuccessHandler = useCallback(\n (action: string) => {\n if (action === 'Reject') {\n dispatch(ui.actions.openPerspective({perspectiveId: null, viewId: null}));\n }\n if (action === 'Approve') {\n dispatch(ui.actions.openEntity({uri: getEntityUriFromDCRUri(entityUri), viewId: null}));\n }\n },\n [dispatch, entityUri]\n );\n\n return useMemo(\n () => ({\n ...commonWorkflowTasks,\n onActionSuccess: actionSuccessHandler\n }),\n [commonWorkflowTasks, actionSuccessHandler]\n );\n};\n","import React, {memo, useEffect} from 'react';\nimport {Entity} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\nimport {DCRProfileBand} from './components/DCRProfileBand/DCRProfileBand';\nimport {\n AttributesView,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n EmptyState,\n LinearLoadIndicator,\n WorkflowTasksContext\n} from '@reltio/components';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\n\nimport {useStyles} from './styles';\nimport {useWorkflowTasks} from './hooks/useWorkflowTasks';\n\nconst workflowConfig = {processTypes: ['dataChangeRequestReview']};\n\nexport const DCRReviewPerspectiveView = memo(() => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const workflowTasks = useWorkflowTasks(workflowConfig);\n\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n\n useEffect(() => {\n dispatch(\n profile.sidePanelViews.actions.sidePanelViewsLoaded([\n {\n id: 'common',\n views: [\n {\n point: 'com.reltio.plugins.ui.view',\n id: 'com.reltio.plugins.entity.side.WorkflowsView',\n class: 'com.reltio.plugins.entity.side.WorkflowsView'\n }\n ]\n }\n ])\n );\n }, [dispatch]);\n\n const isLoaded = !workflowTasks.loading && !!entity.uri;\n\n return (\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <div className={styles.perspectiveView}>\n {!isLoaded && <LinearLoadIndicator />}\n <div className={styles.perspectiveContainer}>\n {isLoaded ? (\n <>\n <div className={styles.contentWrapper}>\n <DCRProfileBand />\n <div className={styles.attributesWrapper}>\n <AttributesView />\n </div>\n </div>\n <RightSidePanel />\n </>\n ) : (\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 )}\n </div>\n </div>\n </WorkflowTasksContext.Provider>\n );\n});\n\nDCRReviewPerspectiveView.displayName = 'DCRReviewPerspectiveView';\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 {DCRReviewPerspectiveConfig} from '@reltio/mdm-sdk';\nimport MomentUtils from '@date-io/moment';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport DCRReviewPerspectiveView from '../components/DCRReviewPerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'dcrReviewPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: DCRReviewPerspectiveConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n};\n\nconst DCRReviewPerspective = ({config, store, onResize = identity}: Props) => {\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\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 <DCRReviewPerspectiveView />\n <ErrorPopup showErrorFromStore={true} />\n </>\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default DCRReviewPerspective;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n addButton: {\n marginLeft: '12px',\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n },\n label: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n }\n});\n","import AddIcon from '@material-ui/icons/Add';\nimport {Button as Button} from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst AddRelationButton = ({onClick}) => {\n const styles = useStyles();\n return (\n <Button color=\"primary\" className={styles.addButton} onClick={onClick}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.label}>{i18n.text('Add')}</div>\n </Button>\n );\n};\n\nAddRelationButton.propTypes = {\n onClick: PropTypes.func\n};\n\nexport default AddRelationButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nconst inactiveStyle = {\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles((theme) => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n entityCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%'\n },\n entityLabel: {\n fontSize: '15px',\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n '$row-cell--removed &': removedStyle,\n '$row-cell--inactive &': inactiveStyle\n },\n entityAvatar: {\n transform: 'scale(0.7)',\n margin: '0 10px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n description: {\n marginLeft: '-22px'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > :not($entityCell)': removedStyle\n },\n 'row-cell--inactive': inactiveStyle\n}));\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classnames from 'classnames';\nimport {checkRemoved, isActiveObject} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst RowCellRenderer = ({cell, CellValueRenderer, rowValue: {connection}, isSorted, ...otherProps}) => {\n const styles = useStyles();\n const isRemoved = checkRemoved(connection);\n const isActive = isActiveObject(connection.relation) && isActiveObject(connection.entity);\n\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved,\n [styles['row-cell--inactive']]: !isActive\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nRowCellRenderer.propTypes = {\n rowValue: PropTypes.object,\n cell: PropTypes.object,\n CellValueRenderer: PropTypes.elementType,\n isSorted: PropTypes.bool\n};\n\nexport default RowCellRenderer;\n","import PropTypes from 'prop-types';\nimport React, {useContext} from 'react';\nimport {ui} from '@reltio/mdm-module';\nimport {always, pipe} from 'ramda';\nimport {useDispatch} from 'react-redux';\nimport {useStyles} from './styles';\nimport {EntityTypeType, getEntityUriForLink, getLabel} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, ExpandedValueTooltip, ViewIdContext} from '@reltio/components';\n\nconst EntityProfileRenderer = ({value: {entityType, entity}}) => {\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const styles = useStyles();\n const entityLabel = getLabel(entity.entityLabel);\n const preparedUri = getEntityUriForLink({uri: entity.entityUri, dataTenant: entity.dataTenant});\n return (\n <div className={styles.entityCell}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <ExpandedValueTooltip value={entityLabel}>\n <span\n className={styles.entityLabel}\n onClick={pipe(always({uri: preparedUri, viewId}), ui.actions.openEntity, dispatch)}\n >\n {entityLabel}\n </span>\n </ExpandedValueTooltip>\n </div>\n );\n};\n\nEntityProfileRenderer.propTypes = {\n value: PropTypes.shape({\n entity: PropTypes.shape({\n entityUri: PropTypes.string,\n entityLabel: PropTypes.string\n }),\n entityType: EntityTypeType\n })\n};\n\nexport default EntityProfileRenderer;\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, DescriptionIcon} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n const {description} = props?.headCellData || {};\n\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n <DescriptionIcon description={description} className={styles.description} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import {getOvAttributeValuesByPath, getReadableAttributesList} from '@reltio/mdm-sdk';\nimport {chain, find, map, path, pipe, propEq, uniq} from 'ramda';\n\nconst getRelationTypes = pipe(\n map((rel) => rel.uri || rel),\n uniq\n);\n\nconst getRelationsAttributesFromMetadata = ({content: {inRelations = [], outRelations = []}}, {relationTypes}) =>\n pipe(\n getRelationTypes,\n chain((relationType) => pipe(find(propEq('uri', relationType)), getReadableAttributesList)(relationTypes))\n )([...inRelations, ...outRelations]);\n\nconst getRelationAttributeValues = (attrPath, relation) =>\n pipe(path(['object', 'attributes']), getOvAttributeValuesByPath(attrPath))(relation);\n\nexport {getRelationsAttributesFromMetadata, getRelationAttributeValues};\n","import EntityProfileRenderer from '../cell-renderers/EntityProfileRenderer';\nimport HeadCellRenderer from '../cell-renderers/HeadCellRenderer';\nimport {DefaultCellValueRenderer} from '@reltio/components';\nimport {assoc, map, pipe, reduce, slice, split} from 'ramda';\nimport {getEntityType, getRelationTypeLabelFromMetadata} from '@reltio/mdm-sdk';\nimport {getRelationAttributeValues} from '../../../core/relations';\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getRowValueByColumnId = (columnId, {entity, relation}, metadata) => {\n switch (columnId) {\n case 'entity.label':\n return {entity, entityType: getEntityType(metadata, entity.entityType)};\n case 'relation.label':\n return relation.relationLabel || getRelationTypeLabelFromMetadata(metadata, relation.relationType);\n case 'relation.activeness.startDate':\n return relation.startDate;\n case 'relation.activeness.endDate':\n return relation.endDate;\n default: {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getRelationAttributeValues(attrPath, relation);\n }\n }\n};\n\nconst getBasicTableRowsData = (connections, columnsData, metadata) =>\n connections.map((connection) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, connection, metadata), acc), {}),\n assoc('connection', connection)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (columnId.startsWith('relation.attributes')) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRenderer = (columnId) => {\n switch (columnId) {\n case 'entity.label':\n return EntityProfileRenderer;\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(columnData.id)\n});\n\nconst getBasicTableColumnsData = map(getColumnDataByColumnId);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n tableContainer: {\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n\n emptyData: {\n marginBottom: '30px'\n },\n\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {IconButton as IconButton} from '@material-ui/core';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport i18n from 'ui-i18n';\n\nexport const EditButtons = ({canUpdate, canRemove, handleEditRelation, handleRemoveRelation}) => (\n <>\n {canUpdate && (\n <Tooltip title={i18n.text('Edit')}>\n <IconButton onClick={handleEditRelation}>\n <EditIcon />\n </IconButton>\n </Tooltip>\n )}\n {canRemove && (\n <Tooltip title={i18n.text('Remove')}>\n <IconButton onClick={handleRemoveRelation}>\n <DeleteIcon />\n </IconButton>\n </Tooltip>\n )}\n </>\n);\nEditButtons.propTypes = {\n canUpdate: PropTypes.bool,\n canRemove: PropTypes.bool,\n handleEditRelation: PropTypes.func,\n handleRemoveRelation: PropTypes.func\n};\n\nexport default EditButtons;\n","import PropTypes from 'prop-types';\nimport React, {useCallback, useMemo, useState} from 'react';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {BasicTable, ColumnFilterType, ColumnsDataType, SortingType} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './helpers/dataHelpers';\nimport {useStyles} from './styles';\nimport {ConnectionType, MetadataType} from '@reltio/mdm-sdk';\nimport {path} from 'ramda';\nimport {checkRelationPermission} from './helpers/buttonsHelper';\nimport EditButtons from './EditButtons';\n\nconst MAX_HEIGHT = 477;\n\nconst RelationsTable = ({\n mode,\n columnsData,\n connections,\n metadata,\n sorting,\n onSort,\n filters,\n onFilter,\n onEditRelation,\n onRemoveRelation,\n basicTableRef,\n allowOnlyCreateNew\n}) => {\n const tableRowsData = useMemo(() => getBasicTableRowsData(connections, columnsData, metadata), [\n connections,\n columnsData,\n metadata\n ]);\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode,\n onRemoveRelation,\n onEditRelation,\n metadata,\n allowOnlyCreateNew,\n connection: path([hoverRowIndex, 'connection'], tableRowsData)\n });\n\n const handleOnRowHover = useCallback((rowIndex) => setHoverRowIndex(rowIndex), []);\n const handleEditRelation = useCallback(() => onEditRelation(path([hoverRowIndex, 'connection'], tableRowsData)), [\n hoverRowIndex,\n onEditRelation,\n tableRowsData\n ]);\n const handleRemoveRelation = useCallback(\n () => onRemoveRelation(path([hoverRowIndex, 'connection', 'relation', 'relationUri'], tableRowsData)),\n [hoverRowIndex, onRemoveRelation, tableRowsData]\n );\n\n const hoveredRowRightContent =\n canRemove || canUpdate ? (\n <EditButtons\n handleEditRelation={handleEditRelation}\n handleRemoveRelation={handleRemoveRelation}\n canRemove={canRemove}\n canUpdate={canUpdate}\n />\n ) : undefined;\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n autosizing\n maxHeight={MAX_HEIGHT}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n renderRowCell={renderRowCell}\n onRowHover={handleOnRowHover}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n ref={basicTableRef}\n resizeDebounceDelay={150}\n />\n </div>\n );\n};\n\nRelationsTable.propTypes = {\n mode: PropTypes.string,\n columnsData: ColumnsDataType,\n connections: PropTypes.arrayOf(ConnectionType),\n metadata: MetadataType,\n filters: PropTypes.objectOf(ColumnFilterType),\n onFilter: PropTypes.func,\n sorting: SortingType,\n onSort: PropTypes.func,\n onEditRelation: PropTypes.func,\n onRemoveRelation: PropTypes.func,\n basicTableRef: PropTypes.shape({current: PropTypes.object}),\n allowOnlyCreateNew: PropTypes.bool\n};\n\nexport default RelationsTable;\n","import {profile} from '@reltio/mdm-module';\nimport {checkMetadataForDelete, checkMetadataForUpdate, checkNew, checkRemoved, getRelationType} from '@reltio/mdm-sdk';\n\nconst checkRelationPermission = ({\n metadata,\n mode,\n connection,\n onRemoveRelation,\n onEditRelation,\n allowOnlyCreateNew\n}) => {\n const isNew = checkNew(connection);\n const isEditableMode = profile.mode.selectors.getIsEditableMode(mode);\n if (isEditableMode && connection && (!allowOnlyCreateNew || isNew)) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n\nexport {checkRelationPermission};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n popupContent: {\n padding: '19px 23px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Popover as Popover} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n showInactive: boolean;\n onShowInactiveChange: (value: boolean) => void;\n};\n\nconst MoreButton = ({className, showInactive, onShowInactiveChange}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n return (\n <>\n <SmallIconButtonWithTooltip\n className={className}\n ref={buttonRef}\n tooltipTitle={i18n.text('More')}\n icon={MoreVertIcon}\n onClick={togglePopup}\n size=\"L\"\n />\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={(e) => onShowInactiveChange(e.target.checked)}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n </Popover>\n </>\n );\n};\n\nexport default MoreButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 4px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n },\n moreButton: {\n marginLeft: '-6px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n FacetViewHeader,\n ColumnsDataType,\n ColumnsSettings,\n FilterButton,\n HideOnShrink,\n VerticalDivider,\n ExpandableSearchInput\n} from '@reltio/components';\nimport MoreButton from './MoreButton/MoreButton';\nimport {useStyles} from './styles';\n\nconst RelationsTableHeader = ({\n title,\n total,\n searchQuery,\n onChangeSearchQuery,\n filtersEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n onChangeColumns,\n showInactive,\n onChangeShowInactive\n}) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <HideOnShrink widthToHide={500}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} entities', {count: total})\n : i18n.text('${count} entity', {count: total})}\n </Typography>\n </HideOnShrink>\n <ExpandableSearchInput query={searchQuery} onChange={onChangeSearchQuery} />\n <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n <MoreButton\n className={styles.moreButton}\n showInactive={showInactive}\n onShowInactiveChange={onChangeShowInactive}\n />\n </FacetViewHeader>\n );\n};\n\nRelationsTableHeader.propTypes = {\n title: PropTypes.string,\n total: PropTypes.number,\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func,\n searchQuery: PropTypes.string,\n onChangeSearchQuery: PropTypes.func,\n filtersEnabled: PropTypes.bool,\n onToggleFilters: PropTypes.func,\n showInactive: PropTypes.bool,\n onChangeShowInactive: PropTypes.func\n};\n\nexport default RelationsTableHeader;\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\nconst CHANGE_SHOW_INACTIVE = 'CHANGE_SHOW_INACTIVE';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY),\n changeShowInactive: createStandardAction(CHANGE_SHOW_INACTIVE)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n case CHANGE_SHOW_INACTIVE:\n return {...state, showInactive: action.payload};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {ActivenessAttrTypes, attributeUriToSearchUri, DataTypes, getAttrDataTypeDefinition} from '@reltio/mdm-sdk';\nimport {concat, map, pipe, prop, subtract, uniqBy} from 'ramda';\nimport {getRelationsAttributesFromMetadata} from '../../core/relations';\nimport i18n from 'ui-i18n';\n\nconst ROWS_PER_PAGE_OPTIONS = [10, 25, 50, 100];\nconst getRowsPerPageOptions = (defaultRowsPerPage) =>\n ROWS_PER_PAGE_OPTIONS.filter((option) => option !== defaultRowsPerPage)\n .concat(defaultRowsPerPage)\n .sort(subtract);\n\nconst DEFAULT_COLUMNS_DATA = [\n {\n id: 'entity.label',\n get label() {\n return i18n.text('Entity label');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false\n },\n {\n id: 'relation.label',\n get label() {\n return i18n.text('Directional label');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n }\n },\n {\n id: 'relation.activeness.startDate',\n get label() {\n return i18n.text('Start date');\n },\n dataTypeDefinition: ActivenessAttrTypes.startDate\n },\n {\n id: 'relation.activeness.endDate',\n get label() {\n return i18n.text('End date');\n },\n dataTypeDefinition: ActivenessAttrTypes.endDate\n }\n];\n\nconst getColumnIdFromAttrUri = pipe(attributeUriToSearchUri, concat('relation.'));\n\nconst getColumnsDataFromRelationAttributes = pipe(\n map((attr) => ({\n id: getColumnIdFromAttrUri(attr.uri),\n label: attr.label,\n description: attr.description,\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n })),\n uniqBy(prop('id'))\n);\n\nconst getColumnsData = pipe(\n getRelationsAttributesFromMetadata,\n getColumnsDataFromRelationAttributes,\n concat(DEFAULT_COLUMNS_DATA)\n);\n\nexport {getRowsPerPageOptions, DEFAULT_COLUMNS_DATA, getColumnsData};\n","import {buildColumnsFilter} from '@reltio/components';\nimport {\n checkMetadataPermission,\n FilterBuilder,\n filterValueToQueryStringWithQuotes,\n Maybe,\n MetadataPermissions\n} from '@reltio/mdm-sdk';\nimport {curry, either, evolve, indexBy, keys, path, pipe, prop, unless} from 'ramda';\n\nconst getUri = (item) => item.uri || item;\nconst containsUri = (uri) => (item) => getUri(item) === uri;\n\nexport const parseUris = curry((metadata, data) => {\n const parseUri = (acc, item) => {\n let uri = getUri(item),\n shouldSkipDescendantUris = false;\n if (uri.startsWith('!')) {\n uri = uri.slice(1);\n shouldSkipDescendantUris = true;\n }\n const hasValidMetadata = metadata[uri] && checkMetadataPermission(MetadataPermissions.READ, metadata[uri]);\n const nextAcc =\n acc.find(containsUri(uri)) || !hasValidMetadata ? acc : acc.concat(item.uri ? {...item, uri} : uri);\n // prettier-ignore\n return shouldSkipDescendantUris\n ? nextAcc\n : keys(metadata).reduce(\n (acc, descUri) =>\n metadata[descUri].extendsTypeURI === uri && !acc.find(containsUri(descUri))\n ? parseUri(acc, descUri)\n : acc,\n nextAcc\n );\n };\n\n return data.reduce(parseUri, []);\n});\n\nexport const deriveEntityTypesFromRelations = curry((relationTypes, content) => {\n const deriveEntitiesFromRelationsMetadata = (objectType, relations = []) =>\n relations.reduce((acc, relation) => {\n const relationTypeUri = getUri(relation);\n const entityTypeUri = path([relationTypeUri, objectType, 'objectTypeUri'], relationTypes);\n return !entityTypeUri || acc.find(containsUri(entityTypeUri)) ? acc : acc.concat(entityTypeUri);\n }, []);\n\n return {\n ...content,\n entityTypes: [\n ...deriveEntitiesFromRelationsMetadata('startObject', content.inRelations),\n ...deriveEntitiesFromRelationsMetadata('endObject', content.outRelations)\n ]\n };\n});\n\nconst indexByUri = indexBy(prop('uri'));\n\nexport const parseRelationsConfigContent = curry((metadata, content) => {\n const relationTypes = indexByUri(metadata.relationTypes);\n const entityTypes = indexByUri(metadata.entityTypes);\n\n const parseEntryUris = (entry) =>\n evolve(\n {\n inRelations: parseUris(relationTypes),\n outRelations: parseUris(relationTypes),\n entityTypes: parseUris(entityTypes),\n nextEntry: parseEntryUris\n },\n entry\n );\n\n return pipe(\n unless(either(prop('nextEntry'), prop('entityTypes')), deriveEntityTypesFromRelations(relationTypes)),\n parseEntryUris\n )(content);\n});\n\nexport const parseRelationsConfig = (metadata, config) =>\n evolve({content: parseRelationsConfigContent(metadata)}, config);\n\nexport const buildRelationsFilter = (searchQuery, filters, columnsData) => {\n const queryClause = Maybe.fromFalsy(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n const filtersClause = buildColumnsFilter(columnsData, filters);\n\n return new FilterBuilder().addClause(queryClause).addClause(filtersClause).build();\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n addArea: {\n display: 'flex',\n alignItems: 'center',\n height: '48px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n marginBottom: '20px',\n marginTop: '10px',\n color: 'rgba(0,0,0,0.54)'\n }\n});\n","import React, {useCallback, useContext, useEffect, useMemo, useReducer, useRef} from 'react';\nimport AddRelationButton from './AddRelationButton/AddRelationButton';\nimport RelationsTable from './RelationsTable/RelationsTable';\nimport RelationsTableHeader from './RelationsTableHeader/RelationsTableHeader';\nimport reducer, {actions} from './stateReducer';\nimport {\n BasicTablePagination,\n BasicView,\n LinearLoadIndicator,\n ProfilePerspectiveViewContext,\n useConfigPermissions,\n useRelationsLoader,\n RelationEditor,\n FeaturesContext\n} from '@reltio/components';\nimport {DEFAULT_COLUMNS_DATA, getColumnsData, getRowsPerPageOptions} from './helpers/tableHelpers';\nimport {pipe, pluck, propEq} from 'ramda';\nimport {buildRelationsFilter} from './helpers/relationsHelpers';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n isTempUri,\n ModeTypes,\n createNewConnectionWithDefaultRelationType,\n RelationsViewConfig,\n Entity,\n Metadata,\n Connection,\n Mode,\n ActivityFilter\n} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {Dispatch} from 'redux';\nimport {useSelector} from 'react-redux';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_COLUMNS_TO_SHOW = pluck('id', DEFAULT_COLUMNS_DATA);\nconst [DEFAULT_SORT_FIELD] = DEFAULT_COLUMNS_TO_SHOW;\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Props = {\n config: RelationsViewConfig;\n entity: Entity;\n metadata: Metadata;\n connections: Connection[];\n total: number;\n mode: Mode;\n className?: string;\n relationToAdd: Connection;\n relationsToEdit: Connection[];\n checkIfCanAddRelations: boolean;\n dispatch: Dispatch;\n readOnlyMode?: boolean;\n};\nconst RelationsTableView = ({\n className,\n config,\n entity,\n metadata,\n connections = [],\n total = 0,\n mode: modeProp,\n relationToAdd,\n relationsToEdit = [],\n checkIfCanAddRelations,\n dispatch: reduxDispatch,\n readOnlyMode\n}: Props) => {\n const initialState = {\n searchQuery: '',\n filters: null,\n visibleColumns: DEFAULT_COLUMNS_TO_SHOW,\n sorting: {\n order: config.sortOrder || DEFAULT_SORT_ORDER,\n field: config.sortColumn || DEFAULT_SORT_FIELD\n },\n page: 0,\n rowsPerPage: config.max || DEFAULT_ROWS_PER_PAGE,\n showInactive: DEFAULT_SHOW_INACTIVE\n };\n\n const styles = useStyles();\n const isProfilePerspectiveView = useContext(ProfilePerspectiveViewContext);\n const mode = isProfilePerspectiveView ? modeProp : ModeTypes.VIEWING;\n\n const [state, dispatch] = useReducer(reducer, initialState);\n const changeSearchQuery = pipe(actions.changeSearchQuery, dispatch);\n const changeShowInactive = pipe(actions.changeShowInactive, dispatch);\n const clearSearchQuery = () => {\n changeSearchQuery('');\n };\n const featuresContext = useContext(FeaturesContext);\n const showDescription = useSelector(mdmModule.selectors.getShowAttributeDescription);\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\n useEffect(clearSearchQuery, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const {visibleColumns, searchQuery, filters, sorting, page, rowsPerPage, showInactive} = state;\n\n const allColumnsData = useMemo(() => getColumnsData(config, metadata), [config, metadata]);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))),\n [visibleColumns, allColumnsData]\n );\n\n const filter = useMemo(\n () => buildRelationsFilter(searchQuery, filters, visibleColumnsData),\n [filters, searchQuery] // eslint-disable-line\n );\n\n const {isLoading} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode: modeProp\n });\n\n const rowsPerPageOptions = useMemo(() => getRowsPerPageOptions(initialState.rowsPerPage), []); // eslint-disable-line\n const {handleRowsPerPageChange, handlePageChange} = useMemo(\n () => ({\n handleRowsPerPageChange: pipe(actions.changeRowsPerPage, dispatch),\n handlePageChange: pipe(actions.changePage, dispatch)\n }),\n []\n );\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({\n config,\n mode,\n metadata,\n parentEntityUri: undefined\n });\n pipe(profile.relations.actions.openRelationEditor(config.id), reduxDispatch)(newConnection);\n }, [config, mode, metadata, reduxDispatch]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n reduxDispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n reduxDispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => profile.relations.selectors.getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = profile.relations.selectors.getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n reduxDispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, reduxDispatch]\n );\n\n const canAddRelations = entity && checkIfCanAddRelations && !readOnlyMode;\n const openedRelations = relationToAdd ? [relationToAdd, ...relationsToEdit] : relationsToEdit;\n const {canUpdate, canDelete} = useConfigPermissions();\n const canEditRelations = canUpdate(config) && !readOnlyMode;\n const canRemoveRelations = canDelete(config) && !readOnlyMode;\n const basicTableRef = useRef(null);\n\n return (\n <FeaturesContext.Provider value={features}>\n <BasicView className={className}>\n <RelationsTableHeader\n title={config.caption}\n total={total}\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={pipe(actions.changeColumns, dispatch)}\n searchQuery={searchQuery}\n onChangeSearchQuery={changeSearchQuery}\n filtersEnabled={!!filters}\n onToggleFilters={pipe(actions.toggleFilters, dispatch)}\n showInactive={showInactive}\n onChangeShowInactive={changeShowInactive}\n />\n {canAddRelations && (\n <div className={styles.addArea}>\n <AddRelationButton onClick={onAddRelation} />\n </div>\n )}\n {openedRelations.map((relation) => (\n <RelationEditor\n key={profile.relations.selectors.getRelationUriFromConnection(relation)}\n connection={relation}\n config={config}\n mode={mode}\n metadata={metadata}\n />\n ))}\n <div style={{position: 'relative'}}>\n <RelationsTable\n mode={mode}\n columnsData={visibleColumnsData}\n connections={connections}\n metadata={metadata}\n filters={filters}\n onFilter={pipe(actions.changeFilter, dispatch)}\n sorting={sorting}\n onSort={pipe(actions.toggleSort, dispatch)}\n onEditRelation={\n canEditRelations\n ? pipe(profile.relations.actions.openRelationEditor(config.id), reduxDispatch)\n : null\n }\n onRemoveRelation={canRemoveRelations ? onRemoveRelation : null}\n basicTableRef={basicTableRef}\n allowOnlyCreateNew={config.allowOnlyCreateNew}\n />\n {connections.length ? (\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={rowsPerPageOptions}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={handleRowsPerPageChange}\n page={page}\n onChangePage={handlePageChange}\n basicTableRef={basicTableRef}\n />\n ) : (\n <Typography className={styles.noData}>{i18n.text('No data found')}</Typography>\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </BasicView>\n </FeaturesContext.Provider>\n );\n};\n\nexport default RelationsTableView;\n","import {memoizeWith} from 'ramda';\nimport {connect} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport RelationsTableView from './RelationsTableView';\nimport {parseRelationsConfig} from './helpers/relationsHelpers';\n\nconst mapStateToProps = (state, ownProps) => {\n const {config} = ownProps;\n\n return {\n connections: mdm.selectors.getConnectionsWithDraftsByViewId(state, config.id),\n total: mdm.selectors.getTotalByViewId(state, config.id),\n entity: mdm.selectors.getEntity(state),\n metadata: mdm.selectors.getMetadata(state),\n mode: mdm.selectors.getMode(state),\n relationToAdd: mdm.selectors.getRelationToAddByViewId(state, config.id),\n relationsToEdit: mdm.selectors.getRelationsToEditByViewId(state, config.id),\n checkIfCanAddRelations: mdm.selectors.getCheckIfCanAddRelations(state, config.content)\n };\n};\n\nconst memoizedParseRelationsConfig = memoizeWith((metadata, config) => config.id, parseRelationsConfig);\n\nconst mergeProps = (stateProps, dispatchProps, ownProps) => ({\n ...stateProps,\n ...dispatchProps,\n ...ownProps,\n config: memoizedParseRelationsConfig(stateProps.metadata, ownProps.config)\n});\n\nexport default connect(mapStateToProps, undefined, mergeProps)(RelationsTableView);\n","import MomentUtils from '@date-io/moment';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport RelationsTableView from './RelationsTableView';\nimport {StylesProvider, createGenerateClassName} from '@material-ui/core/styles';\n\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {Provider} from 'react-redux';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {identity} from 'ramda';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {Store} from 'redux';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'relTable',\n disableGlobal: true\n});\n\ntype Props = {\n config: RelationsViewConfig;\n store: Store;\n onResize?: (width: number, height: number) => void;\n className?: string;\n readOnlyMode?: boolean;\n};\n\nconst StandaloneRelationsTableView = ({config, store, onResize = identity, className, readOnlyMode}: Props) => (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <RelationsTableView config={config} className={className} readOnlyMode={readOnlyMode} />}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n);\n\nexport default StandaloneRelationsTableView;\n"],"names":["SingleAttributeContext","React","displayName","useStyles","makeStyles","triggerButton","minWidth","color","width","popupContent","paddingTop","paddingBottom","paddingLeft","paddingRight","maxWidth","checkboxControlRoot","marginTop","marginLeft","checkboxControlLabel","fontSize","checkboxControlCheckbox","marginRight","className","styles","buttonRef","useRef","isOpen","setIsOpen","useState","showInactive","toggleShowInactive","useContext","togglePopup","open","Button","ref","classes","root","classnames","onClick","Popover","paper","anchorEl","current","onClose","anchorOrigin","vertical","horizontal","transformOrigin","FormControlLabel","label","control","Checkbox","checked","onChange","e","target","i18n","padding","totalCaption","lineHeight","letterSpacing","flexShrink","justifyContent","ovIcon","SingleAttributeHeader","caption","totalVisibleValues","showInactiveValuesMenu","searchQuery","setSearchQuery","setPage","totalNonVisibleValues","nonVisibleValues","attributeType","FacetViewHeader","title","DescriptionIcon","description","HideOnShrink","widthToHide","VerticalDivider","height","margin","Typography","variant","OvIcon","nonOvTotal","nonOvValues","ExpandableSearchInput","query","theme","moreButton","backgroundColor","marginBottom","buttonLabel","fontWeight","icon","divider","ovFalse","inactive","noData","palette","text","secondary","getAttributeNameFromAttributeUri","getLastUriPart","search","value","Object","values","some","utils","String","getPagedLocalEntity","async","metadata","entity","attributeTypeUri","defaultMaxValues","Infinity","offset","pipe","findAttributeValuesByTypeUri","filter","ovValues","isOv","getAttributeSource","slice","paging","totalOvValues","length","totalValues","emptyArray","SingleAttributeEditableContent","parentUri","noDataText","uri","required","isRequired","cardinality","name","dispatch","useDispatch","viewId","ViewIdContext","useSelector","mdmModule","modifiedEntity","state","errors","errorMessage","getAttributePagerActiveTypeErrorMessage","mode","attributeSource","entityValuesUris","pathOr","map","prop","modifiedEntityValues","modifiedEntityValuesUris","showEmptyEditors","isTempUri","emptyEditorValue","useMemo","createNewAttribute","isModifiedEntityValuesEmpty","isEmptyValue","showEmpty","newValues","onAddAttributes","useCallback","params","profile","param","onChangeAttribute","onDeleteAttribute","onDeactivateError","onAdd","attribute","isComplexAttribute","type","canCreate","checkCanCreateAttribute","commonProps","crosswalks","showNonOv","isEmptyAttributeList","isEmpty","CardinalityMessage","ErrorMessage","message","Add","idx","key","attributeValue","lazy","ownError","getAttributeOwnError","Divider","originalValue","modifiedEntityValue","find","propEq","deleted","includes","edited","value1","value2","cleanser","is","over","lensPath","cleanAttributesWith","valueTransformer","unless","omit","deleteEmptyComplex","identity","equals","areValuesEqual","cond","always","SingleAttributeReadableContent","display","flexDirection","content","position","overflow","flexGrow","pagination","DEFAULT_ROWS_PER_PAGE","SingleAttributeView","config","max","page","isLoading","hasPaging","entityUri","mdm","isViewMode","isEditableMode","pivotingAttributes","hasValues","PivotingAttributeContext","BasicView","Box","LinearLoadIndicator","props","renderContent","BasicTablePagination","count","rowsPerPage","rowsPerPageOptions","onChangePage","useSingleAttributeLoader","attributeUri","setValues","setPaging","setIsLoading","safePromise","useSafePromise","attributeValuesRef","apiPath","tenant","isHistoryModeEnabled","diff","attributeTypeName","attributeTypeSource","findAttributeValues","findAttributeTypeByUri","globalFilter","loadAttributes","isReadableAttribute","isFirstLevelAttributeUri","rest","request","isDataTenantEntity","getPagedEntity","options","undefined","then","response","attributes","path","loadedValue","finally","useEffect","useDidUpdateEffect","partitionByOv","partition","totalProp","ifElse","has","RelationsViewStateContext","button","sortControls","alignItems","sortSelectorRoot","flex","sortSelectorMenuItem","sortOrderButton","FilterButton","sortOrder","toggleSortOrder","sortOption","changeSortOption","sortOptions","hasSortOptions","isAsc","DropDownEditor","entries","TextFieldProps","menuItem","fullWidth","disableUnderline","MenuProps","getContentAnchorEl","SmallIconButton","tooltipTitle","ArrowUpwardIcon","ArrowDownwardIcon","size","header","ImportDTContext","MAX","Math","pow","cursor","top","left","userSelect","zIndex","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","error","ui","getRequestErrorMessage","useImportFromDTLoader","oneTenant","labelOnButton","indexOf","CloudDownloadIcon","DropDownMenuButton","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","menuItems","ConfirmationDialog","discardCaption","saveCaption","onDiscard","onSave","total","changeSearchQuery","tooltip","tooltipContent","secondaryLabel","progress","children","tooltipProps","setSecondaryLabel","onOpen","isNil","getDataTenantEntitySecondaryLabel","getEntitySecondaryLabel","CircularProgress","colorPrimary","Tooltip","disableFocusListener","useRelationInfo","connection","relation","entityType","getEntityType","entityLabel","getLabel","preparedUri","getEntityUriForLink","relationLabel","getRelationTypeLabelFromMetadata","relationType","container","SuggestedButtons","acceptRelation","ignoreRelation","style","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","concat","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","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","pluck","mean","defaultTo","calcAverageRating","toFixed","ThumbUp","ThumbDown","textTransform","likeButton","RatingsButtons","onAgree","onDisagree","username","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","headCell","rowCell","blobWrapper","overflowY","overflowX","whiteSpace","maxHeight","boxSizing","defaultWrapper","textOverflow","updateAttribute","historyPalettes","HistoryOperations","insertAttribute","deleteAttribute","pointerEvents","withFilterAtBottom","headCellData","DefaultHeadCellRenderer","historyClassName","onScroll","stopPropagation","columnData","dataTypeDefinition","simpleValue","appearance","HistoryDiffContext","getHistoryAppearanceByUri","getHistoryAttributeClassName","DataTypes","dataTypeValue","DataTypeValue","ExpandedValueTooltip","getColumnsDataFromAttributeNode","attrNode","parents","reject","attributeUriToSearchUri","getAttrDataTypeDefinition","childNode","getAttrPathFromColumnId","split","getNestedPathByColumnId","columnId","isAttributeSearchUri","attrPath","getBasicTableColumnsData","sortable","resizable","nestedPath","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","DefaultCellValueRenderer","onChangeSearchQuery","filtersEnabled","onToggleFilters","columnsData","selectedColumns","onChangeColumns","enabled","ColumnsSettings","withTableContext","deletedUris","rowValue","Boolean","cell","CellValueRenderer","isSorted","otherProps","index","tableContainer","fontFamily","transform","onEdit","onRemove","onSort","filters","onFilter","tableRowsData","reduce","acc","assoc","getOvAttributeValuesByPathWithUri","getAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","checkIsEditableMode","renderRowCell","hoverRowIndex","setHoverRowIndex","canDelete","useConfigPermissions","hideRightContent","checkCanDeleteAttribute","isReltioCrosswalk","canEdit","checkCanEditAttribute","checkCanEdit","handleEditAttribute","handleRemoveAttribute","hoveredRowRightContent","context","BasicTable","autosizing","rowsData","hoverStateEnabled","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","resizeDebounceDelay","onRowHover","hoveredRowRightContentWrapper","hoveredRowRightContentContainer","actionButtons","AttributeEditing","onCancel","onApply","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","push","link","selected","avatar","treeContainer","tree","buttonsContainer","ConfigContext","onImageLoadFail","src","DEFAULT_ICON","Node","absoluteImagePath","uiPath","generateEntityUrl","UrlGeneratorsContext","entityLink","isSelected","entityTypeGraphIcon","getPropWithInheritance","getAbsoluteImageUrl","onTitleClick","Avatar","onError","Link","to","getNodeKey","lineBlock","lineChildren","bottom","treeTheme","verticalLine","horizontalLineRight","textAlign","nodeContent","rowContents","borderLeft","verticalAlign","buttonWrapper","collapsedButton","expandedButton","transition","borderRight","borderTop","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","this","viewBox","version","xmlns","stroke","strokeWidth","fill","fillRule","fillOpacity","d","onGraphOpen","ShowGraphIcon","getCacheKey","bodyWrapper","CustomView","basicViewRef","dialogRef","showModal","setShowModal","defaultTooltip","html","visible","updatedTooltip","customStyles","popup","useAPI","innerHTML","Array","from","childNodes","child","appendChild","Dialog","dragHandleContainer","dragHandleVisibilityArea","visibility","dragHandle","dragIcon","Component","WithDragHandle","DragIndicator","WithErrorBoundary","ErrorBoundary","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","ActionButtons","match","onStartRequest","onFinishRequest","canMerge","canMark","getActionPermissionForMatch","matchRules","actionButtonProps","ActionButtonMode","onMergeFinish","MergeButton","NotMatchButton","MatchCard","ProfileMatchCard","createObjectIdForPM","matchEntityUri","matchesContainer","footer","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","hidden","useTableAttribute","WrappedProfileRelationsView","relationsState","Number","setSortOrder","setSortOption","option","useRelationsState","WrappedCustomView","WrappedHierarchyPathView","graph","graphType","treeData","setTreeData","graphUri","setErrorMessage","forest","newTrees","updateTreesWithNewEntity","updatedTime","getPathsTree","console","warn","useLoadPaths","onResize","getRowHeight","clearHeightsCache","heightsCache","setHeightsCache","_","prevCache","useDynamicNodesHeights","openGraph","generateNodeProps","rowInfo","handleHeight","refreshMode","refreshRate","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","item","basicView","fixedSizeContainer","omittingProps","ProfileLayoutItem","layoutItemConfig","views","ResizeComponent","AutosizeComponent","ReactReduxContext","isCustomView","class","platform","CustomScriptPlatform","reltioClass","getViewTypeByClass","scrollWrapper","scrollableContent","scrollbarWidth","ProfileLayout","layout","onLayoutChanged","scrollWrapperRef","element","offsetWidth","clientWidth","boundariesElement","popupBoundariesValue","priority","scrollTop","PopupBoundariesContext","ReltioGridLayout","LayoutItem","draggableHandle","closeIcon","snackbar","flexWrap","Notification","notification","autoCloseInterval","autoHideDuration","setAction","setShow","closeSnackbar","_e","reason","cancelAction","onConfirm","applyAction","needConfirmation","CloseIcon","Portal","document","body","Snackbar","confirmationText","confirmationDescription","Notifications","notifications","n","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","propOr","either","modifiedRelationTypes","isReference","getRelationTypeUriFromAttrType","T","data","relationshipTypesToCopy","useCloneAction","OPTIONS_GROUP","ModeTypes","CreateIcon","VisibilityIcon","BUTTONS_GROUP","window","confirm","shouldShowSelect","MetadataPermissions","hasOnlyReadPermission","accessibleOptionsGroup","accessibleButtonsGroup","handleChange","handleSave","ProfileBand","mr","ProfileBandHistory","ProfileBandNavigation","ModeSwitcherSelect","optionsGroup","buttonsGroup","WorkflowButton","WorkflowTasksContext","Inbox","showMoreLink","showMoreIcon","CollaborationList","getComments","pageToken","useCommentsEntitiesMap","objectId","commentId","CollaborationItem","KeyboardArrowDown","WorkflowList","tasks","task","WorkflowTaskCard","taskId","CollaborationButton","commentsMap","calcTotalCommentItems","CollaborationIcon","SidePanelEmptyState","itemWrapper","DBConnectorsList","dBConnectorSideViews","sideView","ActivePanel","getSecondTitle","RightSidePanel","isWorkflowSideViewEnabled","isCollaborationSideViewEnabled","isDBConnectorSideViewEnabled","isCollaborationEnabled","historyEvent","workflowTasksContext","collaborationContext","active","setActive","Collaboration","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","HistoryIcon","HistoryView","contributorsUris","HistoryPanelEmptyState","HistoryHeader","DBConnector","ConnectorsIcon","visibleElements","SidePanel","SidePanelContentHeader","SideButtonsPanel","buttonsProps","onButtonClick","activeIndexId","accordionSummaryHeight","defaultBorderStyle","accordion","borderBottom","accordionExpanded","accordionSummary","accordionSummaryHeading","typography","pxToRem","fontWeightRegular","accordionSummaryExpanded","accordionSummaryContent","accordionDetails","errorWrapper","errorTitle","goToIcon","errorsAccordion","borderColor","errorsAccordionDetails","warningsAccordion","warningsAccordionDetails","errorIcon","warningIcon","ErrorsPanel","panels","expandedPanelId","ErrorComponent","items","accordionClassName","accordionDetailsClassName","Accordion","square","AccordionSummary","expandIcon","ExpandMore","AccordionDetails","clipRule","clearError","Error","displayedMessage","ErrorType","ErrorSource","attrType","getDisplayedErrorMessage","displayedErrorPath","errorPath","AttributeValuePathItemType","join","getDisplayedErrorPath","highlightError","ScrollToErrorContext","showLink","HyperlinkIcon","ProfileErrorsPanel","cachedAllErrors","allErrors","cacheForAllErrors","errors1","errors2","areErrorsEqual","useCachedErrors","warnings","isCriticalError","setExpandedPanelId","number","panelId","event","isExpanded","emptyState","perspectiveView","profileWrapper","profileContainer","ProfilePerspectiveView","saveState","getSavedState","profileBand","workflow","isHistoryActive","keywordValue","historyDiff","useHistoryDiff","workflowTasks","workflowConfig","commonWorkflowTasks","useCommonWorkflowTasks","defaultActionSuccessHandler","useWorkflowDefaultActionSuccessHandler","onActionSuccess","useWorkflowTasks","getProfileObjectIdsForCollaboration","emptyCollaboration","collaboration","useCollaboration","isLoaded","handleLayoutChange","profileConfig","setLayout","setViews","canRead","validatedViews","validatedLayout","removeUnsupportedLayoutItems","configHash","hash","nestedRoute","savedStateKey","getSavedStateAndFix","debouncedSaveState","debounce","savedState","updateSavedState","useSavedStateForEntityType","isConfigChanged","fixedViews","fixedLayout","fixNonUniqViewsIds","useProfileLayout","useHistorySlice","isValidateReadMode","isDTEntity","profileViews","hasProfileViews","validate","needDispatch","useProfileValidation","sidePanelViews","ProfilePerspectiveViewContext","SearchValueContext","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","userPreferencesComparator","newState","sortLayoutItems","sort","a","b","x","y","prepareState","looseEquals","qxSandboxApi","getSavedStatePromisified","promisifyCallback","SnackbarRenderer","showSnackbarMessage","useSnackbar","processedConfig","convertOldProfileConfig","featuresContext","FeaturesContext","showDescription","getState","features","SnackbarContext","S","SandboxAPIContext","StylesProvider","MuiPickersUtilsProvider","MomentUtils","floor","ErrorPopup","showErrorFromStore","titleContainer","totalNumber","TagListHeader","switchToProfile","ArrowForwardIosRounded","Spacer","toolbar","TagProfileBand","Toolbar","tagsContainer","tagsView","listContainer","entitiesList","ROWS_PER_PAGE_OPTIONS","TagPerspectiveView","tag","setRowsPerPage","globalSearchRequestOptions","safeRequestTotalPromise","safeRequestEntitiesPromise","setTotal","setEntities","requestEntities","requestTotal","getDataTenantFromEntityUri","fieldName","isDT","getEntities","requestOptions","select","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","getTotalFromDataTenant","getTotals","json","useTagsProvider","useTag","refScrollBlock","hasPagination","ProfilesList","onChangeRowsPerPage","actionsWrapper","DCRProfileBand","entityTask","objectURIs","getEntityUriFromDCRUri","TaskActionButtons","perspectiveContainer","attributesWrapper","contentWrapper","processTypes","DCRReviewPerspectiveView","actionSuccessHandler","point","AddRelationButton","propTypes","PropTypes","inactiveStyle","entityCell","RowCellRenderer","EntityProfileRenderer","EntityTypeType","getRelationTypes","rel","uniq","startsWith","emptyData","EditButtons","IconButton","Edit","Delete","basicTableRef","getOvAttributeValuesByPath","getRelationAttributeValues","isNew","handleOnRowHover","rowIndex","ColumnsDataType","ConnectionType","MetadataType","ColumnFilterType","SortingType","onShowInactiveChange","MoreVertIcon","RelationsTableHeader","onChangeShowInactive","CHANGE_SHOW_INACTIVE","changeShowInactive","DEFAULT_COLUMNS_DATA","hideable","ActivenessAttrTypes","getColumnIdFromAttrUri","getColumnsDataFromRelationAttributes","attr","getReadableAttributesList","getUri","containsUri","parseUris","curry","parseUri","shouldSkipDescendantUris","hasValidMetadata","nextAcc","keys","descUri","extendsTypeURI","deriveEntityTypesFromRelations","deriveEntitiesFromRelationsMetadata","relationTypeUri","entityTypes","indexByUri","indexBy","parseRelationsConfigContent","parseEntryUris","entry","nextEntry","addArea","DEFAULT_COLUMNS_TO_SHOW","DEFAULT_SORT_FIELD","memoizedParseRelationsConfig","memoizeWith","connect","ownProps","stateProps","dispatchProps","modeProp","reduxDispatch","readOnlyMode","sortColumn","filtersClause","buildColumnsFilter","getRowsPerPageOptions","defaultRowsPerPage","subtract","handleRowsPerPageChange","handlePageChange","changeRowsPerPage","openedRelations","canEditRelations","canRemoveRelations"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"8213.js","mappings":"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","sources":["webpack://@reltio/remotes/../profile/src/components/ProfileAttributesView/ProfileAttributesView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/contexts/SingleAttributeContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/SingleAttributeHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/hooks/helpers/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/SingleAttributeEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/SingleAttributeReadableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/SingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useSingleAttributeLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/RelationsViewStateContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/ImportDTContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/hooks/useImportFromDTLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/MultipleImportIcon.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/ImportFromDT.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/RelationsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/RelationTooltip.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationInfo.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/SuggestedButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/EditableRelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/permissions.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/relation.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/RelationArrowButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/SecondLevelWrapper.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSecondLevelConnections.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/RelationsEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/RelationAttributes.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/ShowDetailsButton/ShowDetailsButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/RelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/ratings.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/Ratings.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/RatingsButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/RelationComplexItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationsList.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSuggestedRelations.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/RelationsContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/RelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/filters.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationsState.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/contexts/TableAttributeContext.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/reducer.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/BlobRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/helpers/tableAttributeHelpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/AttributeTableHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/EditButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/AttributeTable.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/AttributeEditing.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/hooks/useEditableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/TableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useLoadPaths.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/ConfigContext.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/Node.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/helpers.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/node-content-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/index.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/tree-node-data-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/icons/ShowGraph.svg","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useDynamicNodesHeights.ts","webpack://@reltio/remotes/../profile/src/components/Sandbox/styles.ts","webpack://@reltio/remotes/../profile/src/components/Sandbox/CustomView.tsx","webpack://@reltio/remotes/../profile/src/components/views/HOCs/styles.ts","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withDragHandle.tsx","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withErrorBoundary.tsx","webpack://@reltio/remotes/../profile/src/components/views/styles.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/useMarkers.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/ImageLineCaption.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeViewEditableContent/ImageAttributeViewEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ActionButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/MatchCard.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ProfilePotentialMatchesView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewsFactory.tsx","webpack://@reltio/remotes/../profile/src/components/views/StubView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/ProfileSingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/hooks/useSingleAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/ProfileTableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/useTableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/ProfileRelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsView.tsx","webpack://@reltio/remotes/../profile/src/components/EntityMapView/EntityMapView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewComponent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/ProfileLayoutItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayout/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileLayout/ProfileLayout.tsx","webpack://@reltio/remotes/../profile/src/components/Notifications/styles.ts","webpack://@reltio/remotes/../profile/src/components/Notifications/Notification.tsx","webpack://@reltio/remotes/../profile/src/components/Notifications/Notifications.tsx","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/suggest.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/copy.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/hooks/useCloneAction.ts","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/PerspectiveProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowButton/WorkflowButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/CollaborationList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/WorkflowList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/icons/CollaborationIcon.svg","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationButton/CollaborationButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowPanelEmptyState/WorkflowPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationPanelEmptyState/CollaborationPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/icons/ConnectorsIcon.svg","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/DBConnectorsList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/DBConnectorsList/DBConnectorsList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/components/ErrorsPanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/icons/hyperlink.svg","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/components/Error.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/useCachedErrors.ts","webpack://@reltio/remotes/../profile/src/components/ProfileErrorsPanel/ProfileErrorsPanel.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/useProfileLayout.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/ProfilePerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useProfileValidation.ts","webpack://@reltio/remotes/../profile/src/perspectives/ProfilePerspective.tsx","webpack://@reltio/remotes/../profile/src/perspectives/helpers.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/TagListHeader.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/TagProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTagsProvider.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/TagPerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTag.ts","webpack://@reltio/remotes/../profile/src/perspectives/TagPerspective.tsx","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/components/DCRProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/components/DCRProfileBand/DCRProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/DCRReviewPerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/perspectives/DCRReviewPerspective.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/AddRelationButton/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/AddRelationButton/AddRelationButton.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/RowCellRenderer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/EntityProfileRenderer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/HeadCellRenderer.js","webpack://@reltio/remotes/../relations-table/src/core/relations.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/helpers/dataHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/EditButtons.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/RelationsTable.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/helpers/buttonsHelper.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/MoreButton/styles.ts","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/MoreButton/MoreButton.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/RelationsTableHeader.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/stateReducer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/helpers/tableHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/helpers/relationsHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableView.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/index.js","webpack://@reltio/remotes/../relations-table/src/index.tsx"],"sourcesContent":["import 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 {\n FacetViewHeader,\n HideOnShrink,\n ExpandableSearchInput,\n VerticalDivider,\n OvIcon,\n DescriptionIcon\n} 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} =\n useContext(SingleAttributeContext);\n\n const handleChangeSearchQuery = (query: string) => {\n setSearchQuery(query);\n setPage(0);\n };\n\n return (\n <FacetViewHeader title={caption} className={styles.root}>\n <DescriptionIcon description={attributeType?.description} />\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, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, cond, isEmpty, 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: AttributeValue = useMemo(\n () =>\n createNewAttribute({\n parentUri,\n attributeType\n }),\n [parentUri, attributeType]\n );\n\n const isModifiedEntityValuesEmpty = isEmptyValue(modifiedEntityValues);\n const showEmpty = isRequired && isModifiedEntityValuesEmpty;\n\n const newValues = showEmpty ? [emptyEditorValue] : 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 !isEmpty(modifiedEntity) && (\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 =\n entityValuesUris.includes(value.uri) && !modifiedEntityValuesUris.includes(value.uri);\n const edited =\n !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};\n","import React from 'react';\nimport {ReadOnlyAttribute} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n showInactive: boolean;\n};\n\nexport const SingleAttributeReadableContent = ({values, attributeType, showInactive}: Props) => {\n return (\n <>\n {values.map((value) => {\n return (\n <ReadOnlyAttribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showInactive}\n />\n );\n })}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n },\n pagination: {\n flexGrow: 0,\n flexShrink: 0\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {PivotingAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {BasicView, BasicTablePagination, LinearLoadIndicator, PivotingAttributeContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SingleAttributeHeader} from '../SingleAttributeHeader/SingleAttributeHeader';\nimport {SingleAttributeEditableContent} from '../SingleAttributeEditableContent/SingleAttributeEditableContent';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {SingleAttributeReadableContent} from '../SingleAttributeReadableContent/SingleAttributeReadableContent';\nimport {useStyles} from './styles';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const SingleAttributeView = ({config, className}: Props) => {\n const {caption, max = DEFAULT_ROWS_PER_PAGE, showInactiveValuesMenu} = config;\n\n const styles = useStyles();\n\n const {values, totalVisibleValues, page, setPage, isLoading, hasPaging, attributeType, showInactive} =\n useContext(SingleAttributeContext);\n\n const entityUri = useSelector(mdm.selectors.getEntityUri);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n const pivotingAttributes: PivotingAttribute[] = useSelector(mdm.selectors.getPivotingAttributes);\n\n const hasValues = values.length !== 0;\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const renderContent = () => {\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (attributeType) {\n if (isViewMode && hasValues) {\n const props = {\n values,\n attributeType,\n showInactive\n };\n return <SingleAttributeReadableContent {...props} />;\n } else if (isEditableMode) {\n const props = {\n values,\n attributeType,\n parentUri: entityUri,\n showInactive,\n noDataText\n };\n return <SingleAttributeEditableContent {...props} />;\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n\n return (\n <PivotingAttributeContext.Provider value={pivotingAttributes}>\n <BasicView className={classnames(styles.root, className)}>\n <SingleAttributeHeader\n totalVisibleValues={totalVisibleValues}\n caption={caption}\n showInactiveValuesMenu={showInactiveValuesMenu}\n />\n <Box className={styles.content}>{renderContent()}</Box>\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n page={page}\n rowsPerPage={max}\n rowsPerPageOptions={[]}\n onChangePage={setPage}\n classes={{root: styles.pagination}}\n />\n )}\n </BasicView>\n </PivotingAttributeContext.Provider>\n );\n};\n","import {useCallback, useState, useEffect, useMemo, useRef} from 'react';\nimport {ifElse, prop, always, has, pathOr, path, partition, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n isDataTenantEntity,\n getPagedEntity,\n getAttributeSource,\n AttributeValue,\n SearchFilter,\n findAttributeTypeByUri,\n isReadableAttribute,\n isTempUri,\n isOv,\n findAttributeValues,\n isFirstLevelAttributeUri,\n SingleAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useSafePromise, useDidUpdateEffect} from '@reltio/components';\nimport {getPagedLocalEntity, getAttributeNameFromAttributeUri} from './helpers';\n\ntype Params = {\n filters?: SearchFilter[];\n searchQuery?: string;\n sorting?: {\n field: string;\n order: string;\n };\n page: number;\n showInactive: boolean;\n};\n\nexport const useSingleAttributeLoader = (config: SingleAttributeViewConfig, params: Params) => {\n const {attributeUri, max = 15} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const [values, setValues] = useState([]);\n const [paging, setPaging] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n const attributeValuesRef = useRef<AttributeValue[]>(null);\n\n const dispatch = useDispatch();\n const apiPath = useSelector(mdm.selectors.getApiPath);\n const tenant = useSelector(mdm.selectors.getTenant);\n const entity = useSelector(mdm.selectors.getEntityWithDiff);\n\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const diff = useSelector(mdm.selectors.getHistoryDiff);\n\n const parentUri = entity.uri;\n const attributeTypeName = getAttributeNameFromAttributeUri(attributeUri);\n const attributeTypeSource = getAttributeSource(attributeUri);\n attributeValuesRef.current = findAttributeValues(entity, parentUri, attributeTypeName);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const {globalFilter} = useSelector(mdm.selectors.getGlobalSearchRequestOptions);\n const {showInactive} = params;\n const loadAttributes = useCallback(() => {\n if (\n attributeType &&\n isReadableAttribute(attributeType) &&\n !isTempUri(parentUri) &&\n isFirstLevelAttributeUri(attributeUri)\n ) {\n setIsLoading(true);\n const {page, showInactive, ...rest} = params;\n const request = isDataTenantEntity(entity) || isHistoryModeEnabled ? getPagedLocalEntity : getPagedEntity;\n safePromise(\n request({\n metadata,\n entity,\n apiPath,\n tenant,\n parentUri,\n defaultMaxValues: max,\n attributeTypeUri: attributeUri,\n offset: max * page,\n globalFilter,\n options: showInactive ? '' : undefined,\n ...rest\n })\n )\n .then((response) => {\n const attributes = path([attributeTypeSource], response);\n const values: AttributeValue[] = pathOr([], [attributeTypeName], attributes);\n if (!isHistoryModeEnabled) {\n dispatch(\n profile.actions.processNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeUri,\n attributeTypeName,\n values\n })\n );\n }\n setValues(\n values.map((loadedValue) => {\n const valueFromEntity = attributeValuesRef.current?.find(propEq('uri', loadedValue.uri));\n return valueFromEntity || loadedValue;\n })\n );\n setPaging(path(['paging', attributeUri], attributes));\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n setValues([]);\n setPaging(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiPath,\n parentUri,\n tenant,\n attributeUri,\n max,\n metadata,\n params,\n globalFilter,\n attributeType,\n isHistoryModeEnabled,\n diff\n ]);\n\n useEffect(() => {\n loadAttributes();\n }, [loadAttributes]);\n\n useDidUpdateEffect(() => {\n if (isViewMode) {\n loadAttributes();\n }\n }, [isViewMode]);\n const partitionByOv = partition(isOv);\n const [, nonOvValues] = partitionByOv(attributeValuesRef.current || []);\n const nonVisibleValues = showInactive ? [] : nonOvValues;\n const totalProp = showInactive ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues = ifElse(has(totalProp), prop(totalProp), always(values.length))(paging);\n const hasPaging = max < totalVisibleValues;\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n return {\n values,\n isLoading,\n hasPaging,\n totalVisibleValues,\n attributeType,\n totalNonVisibleValues,\n nonVisibleValues\n };\n};\n","import React from 'react';\nimport {RelationsViewState} from '../hooks/useRelationsState';\n\nexport const RelationsViewStateContext = React.createContext<RelationsViewState>(null);\n\nRelationsViewStateContext.displayName = 'RelationsViewStateContext';\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nconst popupHorizontalPadding = '23px';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n button: {\n color: theme.palette.text.secondary,\n width: '36px',\n minWidth: '36px'\n },\n popupContent: {\n padding: `19px ${popupHorizontalPadding}`\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n },\n divider: {\n backgroundColor: 'rgba(0,0,0,0.1)',\n margin: `19px -${popupHorizontalPadding}`\n },\n title: {\n marginBottom: '30px'\n },\n sortControls: {\n display: 'flex',\n alignItems: 'center'\n },\n sortSelectorRoot: {\n flex: 1,\n padding: '13px 16px',\n fontSize: '0.85rem'\n },\n sortSelectorMenuItem: {\n fontSize: '0.85rem'\n },\n sortOrderButton: {\n flexShrink: 0,\n margin: '0 8px 0 7px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {DropDownEditor, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {Popover as Popover} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport {Button as Button} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\nimport {RelationsViewStateContext} from '../../../contexts/RelationsViewStateContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const {\n showInactive,\n toggleShowInactive,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions\n } = useContext(RelationsViewStateContext);\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n const hasSortOptions = !isEmptyValue(sortOptions);\n\n const isAsc = sortOrder === 'asc';\n\n return (\n <>\n <Button\n ref={buttonRef}\n classes={{\n root: classnames(styles.button, className)\n }}\n onClick={togglePopup}\n >\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={toggleShowInactive}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n {hasSortOptions && (\n <>\n <Divider className={styles.divider} />\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Sort by')}\n </Typography>\n <div className={styles.sortControls}>\n <DropDownEditor\n entries={sortOptions}\n TextFieldProps={{variant: 'filled'}}\n classes={{\n root: styles.sortSelectorRoot,\n menuItem: styles.sortSelectorMenuItem\n }}\n fullWidth\n disableUnderline\n value={sortOption}\n onChange={changeSortOption}\n MenuProps={{\n getContentAnchorEl: null,\n anchorOrigin: {vertical: 'bottom', horizontal: 'left'}\n }}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isAsc ? i18n.text('Ascending') : i18n.text('Descending')}\n icon={isAsc ? ArrowUpwardIcon : ArrowDownwardIcon}\n onClick={toggleSortOrder}\n className={styles.sortOrderButton}\n size=\"L\"\n />\n </div>\n </>\n )}\n </Popover>\n </>\n );\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport default FilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 6px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n }\n});\n","import React from 'react';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\nexport const ImportDTContext = React.createContext<{\n reloadRelations: () => void;\n config: Pick<RelationsViewConfig, 'content' | 'importFromDT' | 'maxDtssImport'>;\n }>(null);\n","import {useSelector, useDispatch} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {useCallback, useContext, useEffect, useState} from 'react';\nimport {getRequestErrorMessage, hasNonImportedRelations, importDTConnections, isTempUri} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {ImportDTContext} from '../../../../contexts/ImportDTContext';\nimport i18n from 'ui-i18n';\n\nconst MAX = Math.pow(2, 31) - 1;\ntype Tenant = {id: string; label: string};\n\nexport const useImportFromDTLoader = () => {\n const dataTenants: Array<Tenant> = useSelector(mdmModule.selectors.getDataTenants);\n const dispatch = useDispatch();\n const {config, reloadRelations} = useContext(ImportDTContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const [tenants, setTenants] = useState<Array<Tenant>>([]);\n const [selectedTenant, setSelectedTenant] = useState<Tenant>(null);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const customerTenant = useSelector(mdmModule.selectors.getTenant);\n const content = [{...config.content, offset: 0, max: config.maxDtssImport ?? MAX}];\n\n const checkHasNonImportedConnections = useCallback(() => {\n setTenants([]);\n if (config.importFromDT && !isTempUri(entityUri)) {\n Promise.all(\n (dataTenants || []).map((tenant) =>\n hasNonImportedRelations({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: tenant.id\n }).then(({hasNonImportedConnections}) => ({\n ...tenant,\n hasNonImportedConnections\n }))\n )\n )\n .then((modifiedTenants) => modifiedTenants.filter((tenant) => tenant.hasNonImportedConnections))\n .then(setTenants);\n }\n }, [entityUri, dtssPath, customerTenant, config, dataTenants]);\n\n const onConfirmImport = useCallback(() => {\n importDTConnections({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: selectedTenant.id\n })\n .then(() => {\n reloadRelations();\n checkHasNonImportedConnections();\n })\n .catch((error) =>\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))))\n );\n setSelectedTenant(null);\n }, [\n entityUri,\n dtssPath,\n customerTenant,\n config,\n checkHasNonImportedConnections,\n reloadRelations,\n selectedTenant,\n setSelectedTenant\n ]);\n\n useEffect(() => {\n checkHasNonImportedConnections();\n }, [checkHasNonImportedConnections]);\n const onCancelConfirmation = useCallback(() => setSelectedTenant(null), []);\n const onImportClick = useCallback((tenant: Tenant) => setSelectedTenant(tenant), []);\n return {\n tenants,\n selectedTenant,\n onConfirmImport,\n onCancelConfirmation,\n onImportClick\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n tenant: {\n backgroundColor: '#0000EE',\n cursor: 'pointer',\n position: 'absolute',\n top: '8px',\n left: '22px',\n width: '10px',\n height: '10px',\n color: 'white',\n fontSize: '10px',\n fontWeight: 'bold',\n userSelect: 'text',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n button: {\n position: 'relative'\n },\n badge: {\n fontSize: '10px',\n height: '14px',\n minWidth: '14px',\n width: '14px',\n fontWeight: 'bold',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px',\n top: '4px'\n }\n}));\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {Badge as Badge} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ninterface Props {\n label: number | string;\n}\n\nexport const MultipleImportIcon = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Badge\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n badgeContent={label}\n >\n <CloudDownloadIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {useImportFromDTLoader} from './hooks/useImportFromDTLoader';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {ConfirmationDialog} from '@reltio/components';\nimport {MultipleImportIcon} from './MultipleImportIcon';\n\nexport const ImportFromDT = () => {\n const {tenants, selectedTenant, onConfirmImport, onCancelConfirmation, onImportClick} = useImportFromDTLoader();\n const styles = useStyles();\n const oneTenant = tenants.length === 1;\n const labelOnButton = oneTenant\n ? tenants[0].label.indexOf('DT:') === 0\n ? tenants[0].label[3]\n : tenants[0].label[0]\n : tenants.length;\n return (\n <>\n {!!tenants.length && (\n <>\n {oneTenant ? (\n <div className={styles.button}>\n <SmallIconButtonWithTooltip\n size={'L'}\n icon={CloudDownloadIcon}\n tooltipTitle={i18n.text('Import connections from ${label}', {label: tenants[0].label})}\n onClick={() => onImportClick(tenants[0])}\n />\n <div className={classnames(styles.tenant)}>{labelOnButton}</div>\n </div>\n ) : (\n <DropDownMenuButton\n menuId={'importDT-table-actions'}\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n tooltipTitle: i18n.text('Import connections'),\n size: 'L',\n // eslint-disable-next-line react/display-name\n icon: () => <MultipleImportIcon label={labelOnButton} />\n }}\n menuItems={tenants.map((tenant) => ({\n onClick: () => {\n onImportClick(tenant);\n },\n text: tenant.label\n }))}\n />\n )}\n <ConfirmationDialog\n open={!!selectedTenant}\n title={i18n.text('Confirmation')}\n content={i18n.text('Import connections from ${label}?', {label: selectedTenant?.label})}\n discardCaption={i18n.text('Cancel')}\n saveCaption={i18n.text('Import')}\n onDiscard={onCancelConfirmation}\n onSave={onConfirmImport}\n />\n </>\n )}\n </>\n );\n};\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {ExpandableSearchInput, FacetViewHeader, HideOnShrink, VerticalDivider} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport FilterButton from './FilterButton/FilterButton';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {useStyles} from './styles';\nimport {ImportFromDT} from './ImportFromDT/ImportFromDT';\n\ntype Props = {\n title?: string;\n total?: number;\n};\n\nconst RelationsHeader = ({title, total}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, changeSearchQuery} = useContext(RelationsViewStateContext);\n\n return (\n <FacetViewHeader title={title || ''} className={styles.header}>\n {total > 0 && (\n <HideOnShrink widthToHide={400}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} items', {count: total})\n : i18n.text('${count} item', {count: total})}\n </Typography>\n </HideOnShrink>\n )}\n <ExpandableSearchInput query={searchQuery} onChange={changeSearchQuery} />\n <ImportFromDT />\n <FilterButton />\n </FacetViewHeader>\n );\n};\n\nexport default RelationsHeader;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n tooltip: theme.tooltip,\n tooltipContent: {\n minWidth: '165px',\n padding: '4px 2px 2px'\n },\n label: {\n fontSize: '11px',\n lineHeight: '13px',\n fontWeight: 500,\n margin: 0,\n color: 'white'\n },\n secondaryLabel: {\n color: 'rgba(255, 255, 255, 0.7)',\n fontSize: '10px',\n marginTop: '4px',\n fontWeight: 500,\n lineHeight: '11px'\n },\n progress: {\n marginTop: '4px',\n color: '#FFFFFF'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {isNil, ifElse} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n ConnectionEntity,\n getDataTenantEntitySecondaryLabel,\n getEntitySecondaryLabel,\n isDataTenantEntity,\n isTempUri\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useSafePromise} from '@reltio/components';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nconst PROGRESS_ICON_SIZE = 16;\n\ntype Props = {\n label: string;\n entity?: ConnectionEntity;\n children: React.ReactElement;\n};\n\nconst RelationTooltip = ({label, entity, children, ...tooltipProps}: Props) => {\n const styles = useStyles();\n const safePromise = useSafePromise();\n const tenant = useSelector(mdm.selectors.getTenant);\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const [isLoading, setIsLoading] = useState(false);\n const [secondaryLabel, setSecondaryLabel] = useState<string>(null);\n\n useEffect(() => {\n setSecondaryLabel(null);\n }, [entity]);\n\n const onOpen = useCallback(() => {\n if (entity?.entityUri && !isTempUri(entity?.entityUri) && isNil(secondaryLabel)) {\n const request = ifElse(\n isDataTenantEntity,\n (entity: ConnectionEntity) =>\n getDataTenantEntitySecondaryLabel({\n entityUri: entity.entityUri,\n dataTenant: entity.dataTenant,\n customerTenant: tenant,\n dtssPath\n }),\n (entity: ConnectionEntity) => getEntitySecondaryLabel(entity.entityUri)\n );\n\n setIsLoading(true);\n safePromise(request(entity))\n .then(({secondaryLabel}) => {\n setSecondaryLabel(secondaryLabel);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [dtssPath, entity, tenant, safePromise, secondaryLabel]);\n\n const tooltipContent = (\n <div className={styles.tooltipContent}>\n <div className={styles.label}>{label}</div>\n {isLoading && <CircularProgress size={PROGRESS_ICON_SIZE} classes={{colorPrimary: styles.progress}} />}\n {secondaryLabel && <div className={styles.secondaryLabel}>{secondaryLabel}</div>}\n </div>\n );\n\n return (\n <Tooltip\n onOpen={onOpen}\n title={tooltipContent}\n disableFocusListener\n classes={{tooltip: styles.tooltip}}\n {...tooltipProps}\n >\n {children}\n </Tooltip>\n );\n};\n\nexport default RelationTooltip;\n","import {\n Connection,\n Metadata,\n getEntityType,\n getLabel,\n getEntityUriForLink,\n getRelationTypeLabelFromMetadata,\n TEntityType\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 TEntityType;\n const entityLabel = getLabel(entity?.entityLabel) as string;\n const preparedUri = getEntityUriForLink({uri: entity?.entityUri, dataTenant: entity?.dataTenant}) as string;\n const relationLabel =\n relation?.relationLabel || (getRelationTypeLabelFromMetadata(metadata, relation?.relationType) as string);\n\n return {\n entityType,\n entityLabel,\n preparedUri,\n relationLabel\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button, {ButtonProps} from '@material-ui/core/Button';\nimport {useStyles} from './styles';\n\ntype Props = {\n acceptRelation: () => void;\n ignoreRelation: () => void;\n};\n\nexport const SuggestedButtons = ({acceptRelation, ignoreRelation, ...props}: Props & ButtonProps) => {\n const styles = useStyles();\n return (\n <div className={styles.container}>\n <Button onClick={acceptRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Accept')}\n </Button>\n <Button onClick={ignoreRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Ignore')}\n </Button>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n\n marginBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '24px',\n padding: '0 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n editButtonsContent: {\n marginLeft: 'auto',\n flex: '0 0 40px'\n },\n editButtons: {\n padding: 0\n },\n removed: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary,\n margin: '0 5px'\n }\n}));\n","import React, {memo, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport {Typography as Typography} from '@material-ui/core';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {Connection, Metadata, isActiveObject, checkRemoved, checkEdited, checkIgnored} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, EntityUriLink, SmallIconButtonWithTooltip} from '@reltio/components';\nimport RelationTooltip from '../RelationTooltip/RelationTooltip';\nimport {useRelationInfo} from '../../hooks/useRelationInfo';\nimport {checkRelationPermission} from '../../helpers/permissions';\nimport {SuggestedButtons} from '../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n onRemoveRelation: (relationUri: string) => void;\n onEditRelation: (connection: Connection) => void;\n onAcceptRelation?: (connection: Connection) => void;\n onIgnoreRelation?: (connection: Connection) => void;\n metadata: Metadata;\n showControls: boolean;\n renderRelationArrowButton?: () => React.ReactNode;\n};\n\nconst EditableRelationItem = memo(\n ({\n connection,\n metadata,\n showControls,\n onRemoveRelation,\n onEditRelation,\n onAcceptRelation,\n onIgnoreRelation,\n renderRelationArrowButton\n }: Props) => {\n const styles = useStyles();\n\n const {entity, relation} = connection;\n const removed = checkRemoved(connection);\n const edited = checkEdited(connection);\n const ignored = checkIgnored(connection);\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n const mode = useSelector(mdm.selectors.getMode);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode,\n onRemoveRelation,\n onEditRelation,\n metadata,\n connection\n });\n\n const handleRemoveRelation = useCallback(\n () => onRemoveRelation(connection.relation.relationUri),\n [onRemoveRelation, connection]\n );\n\n const handleEditRelation = useCallback(() => onEditRelation(connection), [onEditRelation, connection]);\n\n const handleAcceptRelation = useCallback(() => {\n onAcceptRelation(connection);\n }, [onAcceptRelation, connection]);\n\n const handleIgnoreRelation = useCallback(() => onIgnoreRelation(connection), [onIgnoreRelation, connection]);\n\n const editButtonsContent =\n (canRemove || canUpdate) && showControls && !connection.suggested ? (\n <>\n {canUpdate && (\n <SmallIconButtonWithTooltip\n icon={EditIcon}\n size=\"XS\"\n onClick={handleEditRelation}\n tooltipTitle={i18n.text('Edit')}\n />\n )}\n {canRemove && (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n size=\"XS\"\n onClick={handleRemoveRelation}\n tooltipTitle={i18n.text('Remove')}\n />\n )}\n </>\n ) : undefined;\n\n const suggustedButtonsContent = connection.suggested ? (\n <SuggestedButtons\n acceptRelation={handleAcceptRelation}\n ignoreRelation={handleIgnoreRelation}\n size=\"small\"\n disabled={ignored}\n />\n ) : undefined;\n const captionText = ignored ? i18n.text('ignored') : i18n.text('edited');\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.removed]: removed || ignored}\n )}\n >\n <div className={styles.row}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {(edited || ignored) && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({captionText})\n </Typography>\n )}\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n\n <div className={styles.editButtonsContent}>{editButtonsContent}</div>\n {suggustedButtonsContent}\n </div>\n </div>\n );\n }\n);\n\nEditableRelationItem.displayName = 'EditableRelationItem';\n\nexport default EditableRelationItem;\n","import {checkMetadataForDelete, checkMetadataForUpdate, checkRemoved, getRelationType, Mode} from '@reltio/mdm-sdk';\n\nexport const checkRelationPermission = ({metadata, mode, connection, onRemoveRelation, onEditRelation}) => {\n const isEditableMode = mode === Mode.Editing || mode === Mode.Suggesting;\n if (isEditableMode && connection) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n","import {prop, when} from 'ramda';\nimport {Directions, wrapInArrayIfNeeded, InOutRelation, isObject} from '@reltio/mdm-sdk';\n\nconst getUri = when(isObject, prop('uri'));\n\nexport const getFirstRelationTypeObject = (inRelations: InOutRelation, outRelations: InOutRelation) => {\n const prepareRelation = (direction: string, relations: InOutRelation) => {\n const relationsArr = relations ? wrapInArrayIfNeeded(relations) : [];\n return relationsArr.map((relation) => ({\n type: getUri(relation),\n direction: direction === Directions.IN ? Directions.IN : Directions.OUT\n }));\n };\n return prepareRelation(Directions.IN, inRelations).concat(prepareRelation(Directions.OUT, outRelations))[0];\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n arrowIcon: {\n fontSize: '16px',\n marginRight: '6px'\n }\n});\n","import React from 'react';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {checkNew, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n connection: Connection;\n config: RelationsViewConfig;\n showSecondLevel: boolean;\n};\n\nexport const RelationArrowButton = ({onClick, connection, config, showSecondLevel}: Props) => {\n const styles = useStyles();\n const {parentEntityUri} = connection;\n const {contentSecondLevel} = config;\n\n const props = {\n onClick,\n className: styles.arrowIcon\n };\n\n if (parentEntityUri || !contentSecondLevel || checkNew(connection)) {\n return null;\n }\n\n return showSecondLevel ? <ArrowDropDownIcon {...props} /> : <ArrowRightIcon {...props} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n row: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n secondLevelContent: {\n paddingLeft: '24px'\n }\n});\n","import React, {useContext, useMemo} from 'react';\nimport {Connection, ActivityFilter, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useSecondLevelConnections} from '../../hooks/useSecondLevelConnections';\nimport {RelationArrowButton} from '../RelationArrowButton/RelationArrowButton';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {useStyles} from './styles';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {EntitiesMapContext} from '@reltio/components';\n\ntype Props = {\n config: RelationsViewConfig;\n connection: Connection;\n children: (render: () => React.ReactNode) => React.ReactNode;\n};\n\nexport const SecondLevelWrapper = ({config, connection, children}: Props) => {\n const styles = useStyles();\n\n const {showInactive} = useContext(RelationsViewStateContext);\n\n const {\n connections,\n showSecondLevel,\n toggleShowSecondLevel,\n loadRelations,\n loading,\n total\n } = useSecondLevelConnections({\n config,\n connection,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const renderRelationArrowButton = () => {\n return (\n <RelationArrowButton\n onClick={toggleShowSecondLevel}\n connection={connection}\n config={config}\n showSecondLevel={showSecondLevel}\n />\n );\n };\n\n return (\n <>\n {children(renderRelationArrowButton)}\n {showSecondLevel && (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.secondLevelContent}>\n <RelationsContent\n isLoading={loading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n parentEntityUri={connection.entity.entityUri}\n />\n </div>\n </EntitiesMapContext.Provider>\n )}\n </>\n );\n};\n","import {useState, useCallback} from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {\n Connection,\n getRelationsForEntity,\n ActivityFilter,\n GlobalSearchRequestOptions,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\ntype Params = {\n config: RelationsViewConfig;\n connection: Connection;\n relationActivityFilter: ActivityFilter;\n};\n\nexport const useSecondLevelConnections = ({config, connection, relationActivityFilter}: Params) => {\n const dispatch = useDispatch();\n\n const [showSecondLevel, setShowSecondLevel] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const {contentSecondLevel} = config;\n const {entity} = connection;\n\n const connections =\n (useSelector((state) =>\n mdmModule.selectors.getConnectionsWithDraftsByViewId(state, config.id, entity.entityUri)\n ) as Connection[]) || [];\n\n const total = useSelector((state) => mdmModule.selectors.getTotalByViewId(state, config.id, entity.entityUri));\n const {activityFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n\n const loadRelations = useCallback(() => {\n const requestConfig = {\n ...contentSecondLevel,\n returnObjects: true,\n returnDates: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n }\n };\n\n setLoading(true);\n\n getRelationsForEntity(entity.entityUri, [requestConfig]).then((response) => {\n const {connections, total} = response[0];\n\n if (connections) {\n dispatch(\n profile.relations.actions.secondLevelRelationsLoaded({\n connections,\n parentEntityUri: entity.entityUri,\n id: config.id,\n total\n })\n );\n }\n\n setLoading(false);\n });\n }, [config.id, contentSecondLevel, dispatch, entity.entityUri, activityFilter, relationActivityFilter]);\n\n const toggleShowSecondLevel = useCallback(() => {\n if (!showSecondLevel && !connection.connections) {\n loadRelations();\n }\n\n setShowSecondLevel((show) => !show);\n }, [loadRelations, connection.connections, showSecondLevel]);\n\n return {connections, showSecondLevel, toggleShowSecondLevel, loadRelations, loading, total};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px',\n marginLeft: '16px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 0 8px',\n backgroundColor: 'rgba(0,0,0,0.12)'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, partition, evolve, always, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n Connection,\n isTempUri,\n Mode,\n createNewConnectionWithDefaultRelationType,\n checkNew,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {RelationEditor} from '@reltio/components';\nimport EditableRelationItem from '../EditableRelationItem/EditableRelationItem';\nimport {getFirstRelationTypeObject} from '../../helpers/relation';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n noDataText: string;\n connections: Array<Connection>;\n config: RelationsViewConfig;\n mode: Mode;\n parentEntityUri?: string;\n};\n\nconst RelationsEditableContent = ({className, connections = [], config, mode, noDataText, parentEntityUri}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationToAdd = useSelector((state) => mdmModule.selectors.getRelationToAddByViewId(state, config.id));\n const relationsToEdit = useSelector((state) => mdmModule.selectors.getRelationsToEditByViewId(state, config.id));\n const entity = useSelector(mdmModule.selectors.getEntity);\n const checkIfCanAddRelations = useSelector((state) =>\n mdmModule.selectors.getCheckIfCanAddRelations(state, config.content)\n );\n\n const dispatch = useDispatch();\n const styles = useStyles();\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({config, mode, metadata, parentEntityUri});\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n }, [config, mode, metadata, dispatch, parentEntityUri]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n dispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n dispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => profile.relations.selectors.getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = profile.relations.selectors.getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n dispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, dispatch]\n );\n const content = config.content;\n const defaultRelationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const onAcceptRelation = useCallback(\n (connection) => {\n const connectionWithDefaultRelationType = pipe(\n omit(['suggested']),\n evolve({\n relation: {\n relationType: always(defaultRelationTypeObject.type),\n object: evolve({type: always(defaultRelationTypeObject.type), attributes: always(null)})\n }\n })\n )(connection);\n dispatch(profile.relations.actions.addRelation(config.id, connectionWithDefaultRelationType));\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const onIgnoreRelation = useCallback(\n (connection) => {\n dispatch(\n profile.relations.actions.ignoreRelation(config.id, {\n relationType: defaultRelationTypeObject.type,\n relationDirection: defaultRelationTypeObject.direction,\n entityUri: connection.entity.entityUri,\n relationUri: connection.relation.relationUri\n })\n );\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const [newConnections, currentConnections] = partition(checkNew, connections);\n const canAddRelations = entity && checkIfCanAddRelations;\n\n const isEmptyRelationList = newConnections.length === 0 && currentConnections.length === 0;\n\n const getRelationEditableContent = (connection: Connection) => {\n const openedRelation = relationsToEdit.find(\n (openedRelation) => openedRelation?.relation?.relationUri === connection?.relation?.relationUri\n );\n const showControls = !config.allowOnlyCreateNew || checkNew(connection);\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n return openedRelation ? (\n <RelationEditor connection={openedRelation} config={config} mode={mode} metadata={metadata} />\n ) : (\n <EditableRelationItem\n renderRelationArrowButton={renderRelationArrowButton}\n connection={connection}\n metadata={metadata}\n showControls={showControls}\n onRemoveRelation={onRemoveRelation}\n onEditRelation={pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)}\n onAcceptRelation={onAcceptRelation}\n onIgnoreRelation={onIgnoreRelation}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n };\n\n const shouldShowAddRelationButton =\n canAddRelations && (!relationToAdd || (relationToAdd && relationToAdd.parentEntityUri === parentEntityUri));\n\n const shouldShowRelationEditorToAdd = relationToAdd && relationToAdd.parentEntityUri === parentEntityUri;\n\n return (\n <div className={className}>\n {shouldShowAddRelationButton && (\n <Button color=\"primary\" onClick={onAddRelation} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {shouldShowRelationEditorToAdd && (\n <RelationEditor connection={relationToAdd} config={config} mode={mode} metadata={metadata} />\n )}\n {newConnections.map(getRelationEditableContent)}\n {newConnections.length > 0 && currentConnections.length > 0 && <Divider className={styles.divider} />}\n {currentConnections.map(getRelationEditableContent)}\n {isEmptyRelationList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n\nexport default RelationsEditableContent;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n attributesList: {\n paddingLeft: '46px',\n paddingRight: '16px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n }\n}));\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n CollaborationObjectTypes,\n Connection,\n createRelatedObjectUris,\n Entity,\n getActivenessAttributes,\n getAttributesListForReadMode,\n getAttributeValuesUris,\n getRelationAttributesList,\n isEmptyValue,\n Metadata\n} from '@reltio/mdm-sdk';\nimport {CollaborationContext, ReadOnlyAttributesList, RelatedObjectUrisContext} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {isEmpty} from 'ramda';\n\ntype Props = {\n connection: Connection;\n className?: string;\n};\n\nexport const RelationAttributes = ({connection, className}: Props) => {\n const styles = useStyles();\n\n const {relation} = connection;\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n\n const firstLevelRelationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relation?.relationType) as AttributeType[],\n [relation?.relationType, metadata]\n );\n\n const attributeListEntity = useMemo(\n () => ({\n attributes: {\n ...profile.relations.selectors.getRelationAttributesFromConnection(connection)\n },\n ...getActivenessAttributes(connection?.relation || {})\n }),\n [connection]\n );\n\n const attributesList = useMemo(\n () => getAttributesListForReadMode(firstLevelRelationAttrTypes, attributeListEntity as Entity),\n [firstLevelRelationAttrTypes, attributeListEntity]\n );\n\n const showAttributesList = attributesList.filter(({values}) => !isEmptyValue(values)).length > 0;\n\n const objectIds = useMemo(() => getAttributeValuesUris(attributeListEntity.attributes), [attributeListEntity]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n !isEmpty(objectIds) && getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const additionalRelatedObjectUris = useMemo(\n () => createRelatedObjectUris(CollaborationObjectTypes.RELATION, {entityUri: currentEntityUri, connection}),\n [connection, currentEntityUri]\n );\n\n return showAttributesList ? (\n <RelatedObjectUrisContext.Provider value={additionalRelatedObjectUris}>\n <ReadOnlyAttributesList\n className={classnames(styles.attributesList, className)}\n entity={attributeListEntity}\n attrTypes={firstLevelRelationAttrTypes}\n />\n </RelatedObjectUrisContext.Provider>\n ) : (\n <div className={classnames(styles.attributesList, className)}>{i18n.text('No attributes')}</div>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport InfoIconSelected from '@material-ui/icons/InfoRounded';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\n\ntype Props = {\n show: boolean;\n onToggle: () => void;\n className?: string;\n};\n\nexport const ShowDetailsButton = ({show, onToggle, className}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n className={className}\n tooltipTitle={\n show\n ? i18n.text('Hide attributes of the relationship')\n : i18n.text('Show attributes of the relationship')\n }\n tooltipPlacement=\"bottom-end\"\n size=\"XXS\"\n icon={show ? InfoIconSelected : InfoIcon}\n onClick={onToggle}\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string; suggested: string}) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '16px',\n padding: '3px 11px 3px 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n wordBreak: 'break-all',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n showDetails: {\n marginLeft: 'auto',\n paddingRight: '5px'\n },\n attributesList: {\n paddingLeft: '46px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n },\n suggestedWrapper: {\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n marginLeft: 'auto',\n alignItems: 'center',\n '& + $showDetails': {\n marginLeft: '4px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n },\n labelWrapper: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {\n Connection,\n Metadata,\n isActiveObject,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {useStyles} from './styles';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\n\ntype Props = {\n connection: Connection;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nconst RelationItem = memo(({connection, renderRelationArrowButton, acceptRelation, ignoreRelation}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n const {entity, relation} = connection;\n const [showDetails, setShowDetails] = useState(false);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.suggestedWrapper]: isSuggested}\n )}\n >\n <div className={classnames(styles.row, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <div className={styles.labelWrapper}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n </div>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n size=\"small\"\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetails}\n />\n )}\n </div>\n </div>\n {showDetails && <RelationAttributes connection={connection} />}\n </div>\n );\n});\n\nRelationItem.displayName = 'RelationItem';\n\nexport default RelationItem;\n","import {pluck, mean, pipe, defaultTo} from 'ramda';\nimport {Rating} from '@reltio/mdm-sdk';\n\nexport const calcAverageRating = (ratings: Rating[]) => {\n return pipe(pluck('value'), mean, defaultTo(0))(ratings);\n};\n\nexport const getCountOfLikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 5).length;\n};\n\nexport const getCountOfDislikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 1).length;\n};\n\nexport const calcWidthOfLikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfLikes(ratings) / ratings.length) * 100 + '%';\n};\n\nexport const calcWidthOfDislikesScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return '0%';\n }\n\n return (getCountOfDislikes(ratings) / ratings.length) * 100 + '%';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end'\n },\n averageRating: {\n marginBottom: '7px',\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '19px',\n color: theme.palette.text.primary\n },\n scale: {\n display: 'flex',\n marginBottom: '6px',\n width: '128px',\n height: '4px'\n },\n likesScale: {\n height: '100%',\n backgroundColor: '#8CC152'\n },\n dislikesScale: {\n height: '100%',\n backgroundColor: 'rgb(255, 112, 112)'\n },\n counts: {\n display: 'flex'\n },\n likesCount: {\n marginRight: '32px'\n },\n count: {\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n icon: {\n marginRight: '4px',\n width: '14px',\n height: '14px',\n color: 'rgba(0,0,0,0.38)'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport ThumbUpIcon from '@material-ui/icons/ThumbUp';\nimport ThumbDownIcon from '@material-ui/icons/ThumbDown';\nimport {\n calcAverageRating,\n calcWidthOfDislikesScale,\n calcWidthOfLikesScale,\n getCountOfDislikes,\n getCountOfLikes\n} from '../../../helpers/ratings';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n className?: string;\n};\n\nexport const Ratings = ({ratings, className}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, className)}>\n <Typography className={styles.averageRating}>{calcAverageRating(ratings).toFixed(1)}</Typography>\n <div className={styles.scale}>\n <div className={styles.likesScale} style={{width: calcWidthOfLikesScale(ratings)}} />\n <div className={styles.dislikesScale} style={{width: calcWidthOfDislikesScale(ratings)}} />\n </div>\n <div className={styles.counts}>\n <div className={classnames(styles.likesCount, styles.count)}>\n <ThumbUpIcon className={styles.icon} />\n {getCountOfLikes(ratings)}\n </div>\n <div className={styles.count}>\n <ThumbDownIcon className={styles.icon} />\n {getCountOfDislikes(ratings)}\n </div>\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex'\n },\n button: {\n fontSize: '14px',\n textTransform: 'none',\n color: theme.palette.text.secondary\n },\n likeButton: {\n marginLeft: '-12px',\n marginRight: '8px'\n },\n isActive: {\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {DropDownMenuButton} from '@reltio/components';\nimport {Button as Button} from '@material-ui/core';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n onAgree: () => void;\n onDisagree: (comment: string) => void;\n};\n\nexport const RatingsButtons = ({ratings, onAgree, onDisagree}: Props) => {\n const styles = useStyles();\n\n const username = useSelector(mdmModule.selectors.getUserName) as string;\n const ratingOfCurrentUser = ratings.find(({user}) => user === username);\n\n const menuItems = [\n {\n text: i18n.text('Has left the practice'),\n onClick: () => onDisagree(i18n.text('Has left the practice'))\n },\n {\n text: i18n.text('Has moved away'),\n onClick: () => onDisagree(i18n.text('Has moved away'))\n },\n {\n text: i18n.text('Has passed away'),\n onClick: () => onDisagree(i18n.text('Has passed away'))\n },\n {\n text: i18n.text('Has retired'),\n onClick: () => onDisagree(i18n.text('Has retired'))\n },\n {\n text: i18n.text('Other'),\n onClick: () => onDisagree(i18n.text('Other'))\n }\n ];\n\n return (\n <div className={styles.wrapper}>\n <Button\n onClick={onAgree}\n variant=\"text\"\n size=\"small\"\n className={classnames(styles.button, styles.likeButton, {\n [styles.isActive]: ratingOfCurrentUser?.value === 5\n })}\n >\n Agree\n </Button>\n <DropDownMenuButton\n buttonProps={{\n endIcon: <ArrowDropDownIcon />,\n variant: 'text',\n size: 'small',\n className: classnames(styles.button, {\n [styles.isActive]: ratingOfCurrentUser?.value === 1\n })\n }}\n buttonContent={ratingOfCurrentUser?.value === 1 ? ratingOfCurrentUser.comment : 'Disagree'}\n menuItems={menuItems}\n menuId=\"disagree-dropdown-menu-button\"\n />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {suggested: string}) => ({\n wrapper: {\n padding: '6px 16px 6px'\n },\n entityTypeIcon: {\n marginRight: '16px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '14px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n entityLabelContainer: {\n wordBreak: 'break-all',\n textDecoration: 'none'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n ratings: {\n marginLeft: 'auto'\n },\n showDetailsButton: {\n marginLeft: '16px',\n marginTop: '18px'\n },\n relationAttributes: {\n paddingLeft: '60px'\n },\n suggestedWrapper: {\n padding: '6px 8px 6px 16px',\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n alignSelf: 'center',\n '& + $ratings': {\n marginLeft: '16px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n }\n}));\n","import React, {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n Metadata,\n Connection,\n rateRelation,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {Box as Box} from '@material-ui/core';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {Ratings} from '../Ratings/Ratings';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {RatingsButtons} from '../RatingsButtons/RatingsButtons';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n loadRelations: () => void;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nexport const RelationComplexItem = ({\n connection,\n loadRelations,\n renderRelationArrowButton,\n acceptRelation,\n ignoreRelation\n}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n\n const [showDetails, setShowDetails] = useState(false);\n\n const {entity, relation} = connection;\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityLabel, entityType, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const ratings = relation?.ratings || [];\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n\n const handleAgree = () => {\n rateRelation(relation?.relationUri, {\n comment: '',\n value: 5\n }).then(loadRelations);\n };\n\n const handleDisagree = (comment: string) => {\n rateRelation(relation?.relationUri, {\n comment,\n value: 1\n }).then(loadRelations);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n\n return (\n <div className={classnames(styles.wrapper, {[styles.suggestedWrapper]: isSuggested})}>\n <Box display=\"flex\" minHeight=\"44px\" className={COMMENTS_CONTAINER_VISIBILITY_AREA}>\n <Box display=\"flex\" alignItems=\"center\">\n <Box display=\"flex\" alignItems=\"center\">\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon entityType={entityType} className={styles.entityTypeIcon} />\n </Box>\n <Box display=\"flex\" flexDirection=\"column\">\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n </EntityUriLink>\n {relationLabel && <span className={styles.relationLabel}>{relationLabel}</span>}\n {!isSuggested && (\n <RatingsButtons ratings={ratings} onAgree={handleAgree} onDisagree={handleDisagree} />\n )}\n </Box>\n </Box>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <>\n <Ratings ratings={ratings} className={styles.ratings} />\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetailsButton}\n />\n </>\n )}\n </div>\n </Box>\n {showDetails && <RelationAttributes connection={connection} className={styles.relationAttributes} />}\n </div>\n );\n};\n","import React, {useMemo, useContext, useEffect} from 'react';\nimport {Connection, getRelationshipsObjectIdsForCollaboration, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {CollaborationContext} from '@reltio/components';\nimport RelationItem from './RelationItem/RelationItem';\nimport {RelationComplexItem} from './RelationCompexItem/RelationComplexItem';\nimport {useSuggestedRelations} from '../../hooks/useSuggestedRelations';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\n\ntype Props = {\n className?: string;\n connections: Array<Connection>;\n loadRelations: () => void;\n config?: RelationsViewConfig;\n mainEnityUri?: string;\n};\n\nconst RelationsList = ({className, connections = [], loadRelations, config, mainEnityUri}: Props) => {\n const {isComplex, content} = config;\n const {ignoreRelation, acceptRelation} = useSuggestedRelations(content, loadRelations, mainEnityUri);\n\n const objectIds = useMemo(() => {\n return getRelationshipsObjectIdsForCollaboration(connections);\n }, [connections]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n return (\n <div className={className}>\n {connections.map((connection) => {\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n if (isComplex) {\n return (\n <RelationComplexItem\n loadRelations={loadRelations}\n connection={connection}\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }\n\n return (\n <RelationItem\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n connection={connection}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n })}\n </div>\n );\n};\n\nRelationsList.displayName = 'RelationsList';\n\nexport default RelationsList;\n","import {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n Connection,\n ignoreSuggestedRelation,\n createRelation,\n getRequestErrorMessage,\n Directions,\n RelationsContent\n} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {getFirstRelationTypeObject} from '../helpers/relation';\n\nexport const useSuggestedRelations = (content: RelationsContent, loadRelations: () => void, mainEnityUri: string) => {\n const relationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const dispatch = useDispatch();\n const ignoreRelation = (connection: Connection) => () => {\n const {entity} = connection;\n ignoreSuggestedRelation(mainEnityUri, {\n relatedEntityUri: entity.entityUri,\n relationType: relationTypeObject.type,\n relationDirection: relationTypeObject.direction\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n const acceptRelation = (connection: Connection) => () => {\n const {entity, relation} = connection;\n const {startDate, endDate} = relation;\n const isInDirection = relationTypeObject.direction === Directions.IN;\n const startEntityUri = isInDirection ? entity.entityUri : mainEnityUri;\n const endEntityUri = isInDirection ? mainEnityUri : entity.entityUri;\n createRelation({\n startEntityUri,\n endEntityUri,\n relationType: relationTypeObject.type,\n attributes: null,\n startDate,\n endDate\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n return {\n ignoreRelation,\n acceptRelation\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n list: {\n paddingTop: '8px',\n paddingBottom: '10px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {isEditableMode, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport RelationsEditableContent from '../RelationsEditableContent/RelationsEditableContent';\nimport RelationsList from '../RelationsList/RelationsList';\nimport {useStyles} from './styles';\n\ntype Props = {\n isLoading: boolean;\n config: RelationsViewConfig;\n loadRelations: () => void;\n connections: Connection[];\n total: number;\n parentEntityUri?: string;\n};\n\nexport const RelationsContent = ({isLoading, config, loadRelations, connections, total, parentEntityUri}: Props) => {\n const styles = useStyles();\n\n const {selectors} = mdmModule;\n const entity = useSelector(selectors.getEntity);\n const mode = useSelector(selectors.getMode);\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (isEditableMode(mode)) {\n return (\n <RelationsEditableContent\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n config={config}\n mode={mode}\n noDataText={noDataText}\n parentEntityUri={parentEntityUri}\n />\n );\n }\n\n if (total > 0) {\n return (\n <RelationsList\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n mainEnityUri={entity.uri}\n />\n );\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0\n },\n content: {\n position: 'relative',\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: 0\n },\n pagination: {\n height: '52px',\n flexGrow: 0,\n flexShrink: 0\n }\n});\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {ActivityFilter, Connection, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, EntitiesMapContext, useRelationsLoader} from '@reltio/components';\nimport RelationsHeader from '../RelationsHeader/RelationsHeader';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {ImportDTContext} from '../../contexts/ImportDTContext';\nimport {buildRelationsFilter} from '../../helpers/filters';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {pick} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationsViewConfig;\n className?: string;\n};\n\nconst RelationsView = ({config, className}: Props) => {\n const styles = useStyles();\n\n const {\n page,\n setPage,\n rowsPerPage,\n sortOrder,\n sortOption,\n showInactive,\n searchQuery,\n changeSearchQuery\n } = useContext(RelationsViewStateContext);\n const {selectors} = mdmModule;\n const connections = useSelector((state) =>\n selectors.getConnectionsWithDraftsByViewId(state, config.id)\n ) as Connection[];\n const entity = useSelector(selectors.getEntity);\n const total = useSelector((state) => selectors.getTotalByViewId(state, config.id));\n const mode = useSelector(selectors.getMode);\n const sorting = useMemo(\n () => ({\n order: sortOrder,\n field: sortOption\n }),\n [sortOrder, sortOption]\n );\n\n useEffect(() => {\n changeSearchQuery('');\n }, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const filter = useMemo(() => buildRelationsFilter(searchQuery), [searchQuery]);\n\n const {isLoading, reload: loadRelations} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const importDTContextValue = useMemo(\n () => ({\n reloadRelations: loadRelations,\n config: pick(['content', 'importFromDT', 'maxDtssImport'], config)\n }),\n [loadRelations, config]\n );\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={className}>\n <div className={styles.container}>\n <ImportDTContext.Provider value={importDTContextValue}>\n <RelationsHeader title={config.caption} total={total} />\n </ImportDTContext.Provider>\n <div className={styles.content}>\n <RelationsContent\n isLoading={isLoading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n />\n {total > rowsPerPage && (\n <BasicTablePagination\n classes={{root: styles.pagination}}\n count={total}\n rowsPerPageOptions={[]}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n />\n )}\n </div>\n </div>\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n\nRelationsView.displayName = 'RelationsView';\n\nexport {RelationsView};\n","import {FilterBuilder, Maybe, filterValueToQueryStringWithQuotes} from '@reltio/mdm-sdk';\n\nconst buildRelationsFilter = (searchQuery) => {\n const queryClause = Maybe.fromFalsy(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n return new FilterBuilder().addClause(queryClause).build();\n};\n\nexport {buildRelationsFilter};\n","import {useCallback, useMemo, useState} from 'react';\nimport {RelationsViewConfig, SortOrder} from '@reltio/mdm-sdk';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Option = {\n value: string;\n label: string;\n};\n\nexport type RelationsViewState = {\n searchQuery: string;\n changeSearchQuery: (value: string) => void;\n sortOrder: SortOrder;\n toggleSortOrder: () => void;\n sortOption?: string;\n changeSortOption: (option: string) => void;\n sortOptions: Option[];\n page: number;\n setPage: (page: number) => void;\n rowsPerPage: number;\n showInactive: boolean;\n toggleShowInactive: () => void;\n};\n\nconst useRelationsState = (config: RelationsViewConfig): RelationsViewState => {\n const sortOptions = useMemo(\n () =>\n Object.entries(config.sortOptions || {}).map(([key, value]) => ({\n value: key,\n label: value\n })),\n [config.sortOptions]\n );\n\n const rowsPerPage = Number(config.max) || DEFAULT_ROWS_PER_PAGE;\n const [page, setPage] = useState(0);\n const [sortOrder, setSortOrder] = useState(config.sortOrder || DEFAULT_SORT_ORDER);\n const [sortOption, setSortOption] = useState(sortOptions[0]?.value);\n const [searchQuery, setSearchQuery] = useState('');\n const [showInactive, setShowInactive] = useState(DEFAULT_SHOW_INACTIVE);\n\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n const toggleSortOrder = useCallback(() => {\n setPage(0);\n setSortOrder((order) => {\n return order === 'asc' ? 'desc' : 'asc';\n });\n }, []);\n\n const changeSortOption = useCallback((option: string) => {\n setPage(0);\n setSortOption(option);\n }, []);\n\n const changeSearchQuery = useCallback((value: string) => {\n setPage(0);\n setSearchQuery(value);\n }, []);\n\n return {\n searchQuery,\n changeSearchQuery,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions,\n page,\n setPage,\n rowsPerPage,\n showInactive,\n toggleShowInactive\n };\n};\n\nexport default useRelationsState;\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../components/types';\n\nexport const TableAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n visibleColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n onToggleFilters: () => void;\n onSort: (payload) => void;\n onFilter: (payload) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n showTable: boolean;\n filters: {\n [key: string]: {\n filter: string;\n values: [string];\n };\n };\n sorting: {\n order: 'desc' | 'asc';\n field: string;\n };\n attributeType: AttributeType;\n allColumnsData: ColumnsDataType;\n }>(null);\n\nTableAttributeContext.displayName = 'TableAttributeContext';\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nconst BLOB_HEIGHT = 100;\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles(() => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n blobWrapper: {\n position: 'relative',\n overflowY: 'auto',\n overflowX: 'hidden',\n whiteSpace: 'pre',\n maxHeight: `${BLOB_HEIGHT}px`,\n boxSizing: 'border-box',\n padding: '15px 25px 0 25px'\n },\n defaultWrapper: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n padding: '15px 25px 0 25px'\n },\n updateAttribute: {\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n padding: '0 4px',\n marginLeft: '-4px',\n textDecoration: 'line-through',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n },\n description: {\n marginLeft: '-22px'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > div': removedStyle\n }\n}));\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, DescriptionIcon} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n const {description} = props?.headCellData || {};\n\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n <DescriptionIcon description={description} className={styles.description} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport {stopPropagation} from '@reltio/components';\nimport {PrimitiveValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: PrimitiveValue;\n historyClassName?: string;\n};\n\nconst BlobRenderer = ({value, historyClassName}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.blobWrapper} onScroll={stopPropagation}>\n <span className={styles[historyClassName]}>{value}</span>\n </div>\n );\n};\n\nexport default BlobRenderer;\n","import React, {useContext} from 'react';\nimport {pipe} from 'ramda';\nimport {DataTypes, getHistoryAppearanceByUri, getHistoryAttributeClassName, PrimitiveValue} from '@reltio/mdm-sdk';\nimport {DataTypeValue, ExpandedValueTooltip, HistoryDiffContext} from '@reltio/components';\nimport BlobRenderer from './BlobRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n value: PrimitiveValue;\n uri: string;\n };\n columnData: {\n dataTypeDefinition: {\n type: DataTypes;\n };\n };\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const styles = useStyles();\n\n const {value: simpleValue, uri} = value;\n const {appearance} = useContext(HistoryDiffContext);\n const historyClassName = pipe(getHistoryAppearanceByUri, getHistoryAttributeClassName)(uri, appearance);\n\n switch (dataTypeDefinition.type) {\n case DataTypes.TYPE_BLOB:\n return <BlobRenderer value={simpleValue} historyClassName={historyClassName} />;\n default: {\n const dataTypeValue = <DataTypeValue value={simpleValue} dataTypeDefinition={dataTypeDefinition} />;\n return (\n <ExpandedValueTooltip value={dataTypeValue}>\n <div className={styles.defaultWrapper}>\n <span className={styles[historyClassName]}>{dataTypeValue}</span>\n </div>\n </ExpandedValueTooltip>\n );\n }\n }\n};\n\nexport default DefaultCellValueRenderer;\n","import {assoc, chain, isNil, map, path, pipe, prop, reduce, reject, slice, split, uniqBy} from 'ramda';\nimport {\n AttributeNode,\n AttributeType,\n attributeUriToSearchUri,\n flatAttributeTreeNode,\n getAttrDataTypeDefinition,\n getAttributeTypesTree,\n getOvAttributeValuesByPathWithUri,\n isAttributeSearchUri,\n Metadata,\n SearchParent\n} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from '../components/AttributeTable/cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from '../components/AttributeTable/cell-renderers/DefaultCellValueRenderer';\n\nexport const getColumnsDataFromAttributeNode = (attrNode: AttributeNode, parents: SearchParent[]) => {\n const {uri, label, children, name, description} = attrNode;\n return reject(isNil, {\n id: attributeUriToSearchUri(uri, parents),\n label,\n description,\n dataTypeDefinition: getAttrDataTypeDefinition(attrNode),\n children: children?.map((childNode) => getColumnsDataFromAttributeNode(childNode, parents.concat({name})))\n });\n};\n\nexport const getColumnsData = (metadata: Metadata, attributeType: AttributeType) =>\n pipe(\n (metadata: Metadata, attributeType: AttributeType) => getAttributeTypesTree(metadata, attributeType),\n map((attrNode: AttributeNode) => getColumnsDataFromAttributeNode(attrNode, [attributeType])),\n chain(flatAttributeTreeNode),\n uniqBy(prop('id'))\n )(metadata, attributeType);\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getAttributeValues = (attrPath, value) =>\n pipe(path(['value']), getOvAttributeValuesByPathWithUri(attrPath))(value);\n\nconst getRowValueByColumnId = (columnId, value) => {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getAttributeValues(attrPath, value);\n};\n\nexport const getBasicTableRowsData = (values, columnsData) =>\n values.map((value) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, value), acc), {}),\n assoc('value', value)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (isAttributeSearchUri(columnId)) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: DefaultCellValueRenderer\n});\n\nexport const getBasicTableColumnsData = map(getColumnDataByColumnId);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n header: {\n padding: '0 4px 0 16px'\n }\n}));\n","import React, {useContext} from 'react';\nimport {\n FacetViewHeader,\n ColumnsSettings,\n FilterButton,\n VerticalDivider,\n ExpandableSearchInput,\n DescriptionIcon\n} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {ColumnsDataType} from '../types';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\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 const {attributeType} = useContext(TableAttributeContext);\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <DescriptionIcon description={attributeType?.description} />\n <ExpandableSearchInput query={searchQuery} onChange={onChangeSearchQuery} />\n <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </FacetViewHeader>\n );\n};\n\nexport default AttributeTableHeader;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport {withTableContext} from '@reltio/components';\n\ntype Props = {\n cell: {values: string[]};\n isSorted: boolean;\n CellValueRenderer: React.ElementType;\n isRemoved: boolean;\n};\nconst RowCellRenderer = ({cell, CellValueRenderer, isRemoved, isSorted, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({deletedUris}, {rowValue: {value}}) => ({\n isRemoved: Boolean(deletedUris.find((uri) => value.uri === uri))\n}))(RowCellRenderer);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n tableContainer: {\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)',\n marginBottom: '15px'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n }\n}));\n","import React from 'react';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\ntype Props = {\n onEdit?: () => void;\n onRemove?: () => void;\n};\n\nexport const EditButtons = ({onEdit, onRemove}: Props) => (\n <>\n {onEdit && (\n <SmallIconButtonWithTooltip tooltipTitle={i18n.text('Edit')} icon={EditIcon} size=\"L\" onClick={onEdit} />\n )}\n {onRemove && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Remove')}\n icon={DeleteIcon}\n size=\"L\"\n onClick={onRemove}\n />\n )}\n </>\n);\n\nexport default EditButtons;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {BasicTable, useConfigPermissions} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from '../../helpers/tableAttributeHelpers';\nimport {useStyles} from './styles';\nimport {\n AttributeValue,\n checkCanEditAttribute,\n checkCanDeleteAttribute,\n SearchFilter,\n isReltioCrosswalk,\n Entity,\n isEditableMode as checkIsEditableMode,\n AttributeItem,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../types';\nimport EditButtons from './EditButtons';\nimport {useSelector} from 'react-redux';\nimport {path, prop, pipe} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport mdmModule from '@reltio/mdm-module';\n\nconst MAX_HEIGHT = 477;\n\ntype Props = {\n columnsData: ColumnsDataType;\n values: AttributeValue[];\n filters?: {\n [key: string]: SearchFilter;\n };\n onFilter?: (payload) => void;\n sorting?:\n | {\n field: string;\n order: string;\n }\n | undefined;\n onSort?: (payload) => void;\n config: TableAttributeViewConfig;\n onEdit: React.Dispatch<AttributeValue>;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n deletedUris: string[];\n};\n\nconst AttributeTable = ({\n columnsData,\n values,\n sorting,\n onSort,\n filters,\n onFilter,\n config,\n onEdit,\n onDeleteAttribute,\n deletedUris\n}: Props) => {\n const tableRowsData = useMemo(() => getBasicTableRowsData(values, columnsData), [values, columnsData]);\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const {attributeType} = useContext(TableAttributeContext);\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n\n const {canUpdate, canDelete} = useConfigPermissions();\n\n const checkCanEdit = (attributeValue: AttributeValue) =>\n canUpdate(config) &&\n checkCanEditAttribute({\n attributeType,\n mode,\n attributeValue,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n const checkCanRemove = (attributeValue: AttributeValue) =>\n canDelete(config) &&\n checkCanDeleteAttribute({\n attributeType,\n mode,\n attributeValue,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n\n const hideRightContent = useMemo(\n () =>\n typeof hoverRowIndex === 'number' && isEditableMode\n ? deletedUris.includes(pipe(path([hoverRowIndex]), prop('uri'))(values))\n : true,\n [hoverRowIndex, deletedUris, values, isEditableMode]\n );\n const canRemove = typeof hoverRowIndex === 'number' && checkCanRemove(path([hoverRowIndex], values));\n const canEdit = typeof hoverRowIndex === 'number' && checkCanEdit(path([hoverRowIndex], values));\n\n const handleEditAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canEdit) return;\n onEdit(attributeValue);\n }, [onEdit, hoverRowIndex, values, canEdit]);\n\n const handleRemoveAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canRemove) return;\n const attribute: AttributeItem = {\n parentUri: entityUri,\n attributeType,\n uri: attributeValue.uri,\n value: attributeValue\n };\n onDeleteAttribute(attribute);\n setHoverRowIndex(null);\n }, [hoverRowIndex, values, onDeleteAttribute, canRemove, attributeType, entityUri]);\n\n const hoveredRowRightContent =\n !hideRightContent && (canRemove || canEdit) ? (\n <EditButtons\n onEdit={canEdit ? handleEditAttribute : undefined}\n onRemove={canRemove ? handleRemoveAttribute : undefined}\n />\n ) : undefined;\n const context = useMemo(() => ({deletedUris}), [deletedUris]);\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n autosizing\n maxHeight={MAX_HEIGHT}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n resizeDebounceDelay={150}\n renderRowCell={renderRowCell}\n onRowHover={setHoverRowIndex}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n context={context}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n />\n </div>\n );\n};\n\nexport default AttributeTable;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: '0 8px 10px',\n\n '& > button': {\n fontSize: '14px',\n lineHeight: '16px',\n marginLeft: '8px',\n padding: '10px 8px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n }\n }\n}));\n","import {Button as Button} from '@material-ui/core';\nimport React, {useCallback, useContext} from 'react';\nimport {useStyles} from './styles';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {AttributeValue, Entity, isTempUri, getAttributeOwnError, AttributeItem} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {EditableAttribute, ViewIdContext} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n hasChanges: boolean;\n onChangeAttribute: (attribute: AttributeItem) => void;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n onCancel: (attributeValue: AttributeValue) => void;\n onApply: (attributeValue: AttributeValue) => void;\n attributeValue: AttributeValue;\n};\n\nexport const AttributeEditing = ({\n onChangeAttribute,\n onCancel,\n onApply,\n onDeleteAttribute,\n hasChanges,\n attributeValue\n}: Props) => {\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const {attributeType} = useContext(TableAttributeContext);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const showEmptyEditors = isTempUri(entityUri);\n\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, entityUri, attributeType)\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n return (\n <>\n <EditableAttribute\n expanded\n attributeValue={attributeValue}\n showEmptyEditors={showEmptyEditors}\n onDeleteAttribute={onDeleteAttribute}\n onDeactivateError={onDeactivateError}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n mode={mode}\n crosswalks={modifiedEntity.crosswalks}\n errors={errors}\n attributeType={attributeType}\n ownError={getAttributeOwnError(attributeValue, null, attributeType.uri, errors)}\n />\n <div className={styles.actionButtons}>\n <Button\n onClick={() => {\n onCancel(attributeValue);\n }}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n color=\"primary\"\n disabled={!hasChanges}\n onClick={() => {\n onApply(attributeValue);\n }}\n >\n {i18n.text('Apply')}\n </Button>\n </div>\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n flex: 1,\n overflow: 'auto'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n color: 'rgba(0,0,0,0.54)'\n },\n\n tableContainer: {\n height: '477px',\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n\n header: {\n padding: '0 4px 0 16px'\n },\n\n addButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n padding: '4px 16px'\n }\n}));\n","import {useCallback, useContext, useState, useMemo, useEffect} from 'react';\nimport {\n AttributeValue,\n createNewAttribute,\n Entity,\n getAttributeSource,\n isEditableMode as checkIsEditableMode,\n NestedAttributeValue,\n AttributeItem\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, pathOr, pipe, map, prop, equals, both, not, without, filter} from 'ramda';\nimport {TableAttributeContext} from '../../../contexts/TableAttributeContext';\nimport {isTempUri, createDefaultValues} from '@reltio/mdm-sdk';\n\nconst emptyArray = [];\n\nexport const useEditableAttribute = () => {\n const [newAttributeUri, setNewAttributeUri] = useState<string>();\n const [originalValues, setOriginalValues] = useState<AttributeValue[]>([]);\n const mode = useSelector(mdmModule.selectors.getMode);\n\n useEffect(() => {\n setOriginalValues([]);\n setNewAttributeUri(null);\n }, [mode]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const {attributeType, values} = useContext(TableAttributeContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => {\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n },\n [viewId, dispatch]\n );\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onAdd = useCallback(() => {\n const newAttribute = createNewAttribute({\n parentUri: entityUri,\n attributeType\n });\n setNewAttributeUri(newAttribute.uri);\n onChangeAttribute({\n ...newAttribute,\n value: createDefaultValues({\n attributeTypes: attributeType.attributes,\n parentUri: newAttribute.uri,\n mode,\n metadata\n }),\n attributeType\n });\n }, [entityUri, attributeType]);\n\n const onStartEditing = useCallback(\n (attributeValue: AttributeValue) => {\n setOriginalValues((prev) => {\n if (!prev.find(propEq('uri', attributeValue.uri))) {\n return [...prev, attributeValue];\n }\n return prev;\n });\n },\n [setOriginalValues]\n );\n\n const onCancel = useCallback(\n (attributeValue: AttributeValue) => {\n const editingValueOriginal = originalValues.find(propEq('uri', attributeValue.uri));\n if (editingValueOriginal) {\n const attributeItem = {\n ...attributeValue,\n value: editingValueOriginal,\n attributeType,\n uri: attributeValue.uri\n };\n setOriginalValues((prev) => without([editingValueOriginal], prev));\n onChangeAttribute(attributeItem);\n } else {\n const attributeItem = {\n value: attributeValue,\n attributeType,\n uri: attributeValue.uri\n };\n setNewAttributeUri(null);\n onDeleteAttribute(attributeItem);\n }\n },\n [onDeleteAttribute, onChangeAttribute, setOriginalValues, originalValues]\n );\n\n const onApply = useCallback(\n (attributeValue: AttributeValue) => {\n setNewAttributeUri(null);\n setOriginalValues((prev) => {\n const original = prev.find(propEq('uri', attributeValue.uri));\n return original ? without([original], prev) : prev;\n });\n },\n [setOriginalValues, setNewAttributeUri]\n );\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const isEditableMode = checkIsEditableMode(mode);\n const attributeSource = getAttributeSource(attributeType);\n\n const modifiedEntityValues: NestedAttributeValue[] = pathOr(\n emptyArray,\n [attributeSource, attributeType?.name],\n modifiedEntity\n );\n\n const modifiedValues = useMemo(() => {\n const newValues = modifiedEntityValues.filter(\n pipe(prop('uri'), both(isTempUri, pipe(equals(newAttributeUri), not)))\n );\n\n const oldValues = map(\n (originalValue) => modifiedEntityValues.find(propEq('uri', originalValue.uri)) || originalValue\n )(values);\n return [...newValues, ...oldValues].map((value) => originalValues.find(propEq('uri', value.uri)) ?? value);\n }, [modifiedEntityValues, originalValues, newAttributeUri, values]);\n\n const deletedUris = useMemo(\n () =>\n isEditableMode\n ? pipe(\n map(prop('uri')),\n filter((uri) => !modifiedEntityValues.find(propEq('uri', uri)))\n )(values)\n : [],\n [modifiedEntityValues, values]\n );\n\n const editingValues = modifiedEntityValues.filter(\n ({uri}) => uri === newAttributeUri || originalValues.find(propEq('uri', uri))\n );\n\n const checkHasChanges = (value) => originalValues.find(propEq('uri', value.uri)) !== value;\n\n return {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n };\n};\n","import React, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n BasicView,\n BasicTablePagination,\n LinearLoadIndicator,\n FacetViewHeader,\n useConfigPermissions,\n DescriptionIcon\n} from '@reltio/components';\nimport {propEq} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport AttributeTableHeader from '../AttributeTableHeader/AttributeTableHeader';\nimport AttributeTable from '../AttributeTable/AttributeTable';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {AttributeEditing} from '../AttributeEditing/AttributeEditing';\n\nimport {useStyles} from './styles';\nimport {\n checkCanCreateAttribute,\n isEditableMode as checkIsEditableMode,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Button as Button} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport {useEditableAttribute} from './hooks/useEditableAttribute';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const TableAttributeView = ({config, className}: Props) => {\n const {caption, max = DEFAULT_ROWS_PER_PAGE} = config;\n const styles = useStyles();\n\n const {\n values,\n page,\n setPage,\n isLoading,\n searchQuery,\n setSearchQuery,\n visibleColumns,\n onFilter,\n onSort,\n onToggleFilters,\n onChangeColumns,\n filters,\n sorting,\n totalVisibleValues,\n hasPaging,\n attributeType,\n showTable,\n allColumnsData\n } = useContext(TableAttributeContext);\n\n const {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n modifiedValues,\n editingValues,\n deletedUris\n } = useEditableAttribute();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n\n const preparedValues = isEditableMode ? modifiedValues : values;\n\n const {canCreate: hasConfigToCreate} = useConfigPermissions();\n\n const canCreate =\n hasConfigToCreate(config) &&\n attributeType &&\n checkCanCreateAttribute({attributeType, mode}) &&\n !editingValues.length;\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))),\n [visibleColumns, allColumnsData]\n );\n\n return (\n <BasicView className={classnames(styles.root, className)}>\n {showTable ? (\n <>\n <AttributeTableHeader\n title={caption}\n total={totalVisibleValues}\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n searchQuery={searchQuery}\n onChangeSearchQuery={setSearchQuery}\n filtersEnabled={!!filters}\n onToggleFilters={onToggleFilters}\n />\n <div style={{position: 'relative'}}>\n {isEditableMode && (\n <div className={styles.editor}>\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.addButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {editingValues.map((value) => (\n <AttributeEditing\n key={value.uri}\n attributeValue={value}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n onCancel={onCancel}\n onApply={onApply}\n hasChanges={checkHasChanges(value)}\n />\n ))}\n </div>\n )}\n {visibleColumnsData.length > 0 && (\n <AttributeTable\n columnsData={visibleColumnsData}\n config={config}\n values={preparedValues}\n filters={filters}\n onFilter={onFilter}\n sorting={sorting}\n onSort={onSort}\n onEdit={onStartEditing}\n onDeleteAttribute={onDeleteAttribute}\n deletedUris={deletedUris}\n />\n )}\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n rowsPerPageOptions={[]}\n rowsPerPage={max}\n page={page}\n onChangePage={setPage}\n />\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </>\n ) : (\n <>\n <FacetViewHeader title={caption} className={styles.header}>\n <DescriptionIcon description={attributeType?.description} />\n </FacetViewHeader>\n <Typography className={styles.noData}>{i18n.text('No data')}</Typography>\n </>\n )}\n </BasicView>\n );\n};\n","import {useEffect, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {pick, prop} from 'ramda';\nimport {Entity, getPathsTree, getRequestErrorMessage, 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 [errorMessage, setErrorMessage] = useState<string>(null);\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 setErrorMessage(null);\n safePromise(getPathsTree({uri: entityUri, graphUri}))\n .then(processResponse)\n .then(setTreeData)\n .catch((e) => {\n console.warn(e);\n setErrorMessage(getRequestErrorMessage(e, i18n.text('Something went wrong')));\n });\n }\n return () => {\n setTreeData([]);\n };\n }, [entityUri, graphUri, safePromise]);\n return {treeData, setTreeData, errorMessage};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n fontSize: '13px',\n display: 'flex',\n paddingTop: '6px',\n position: 'relative'\n },\n title: {\n flexGrow: 1,\n minHeight: '15px',\n color: theme.palette.primary.main,\n lineHeight: '15px'\n },\n link: {\n cursor: 'pointer',\n color: theme.palette.primary.main,\n lineHeight: '15px',\n wordBreak: 'break-word'\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 errorMessage: {\n fontSize: '13px',\n margin: '0 16px 0',\n lineHeight: '1.4',\n color: theme.palette.text.secondary\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} from '@reltio/mdm-sdk';\nimport {Link, UrlGeneratorsContext} 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 {\n entity: {label: title, uri},\n nodeId\n } = node;\n\n const styles = useStyles();\n const dispatch = useDispatch();\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const uiPath = useSelector(mdm.selectors.getUIPath);\n const {uri: currentEntityUri} = useSelector(mdm.selectors.getEntity);\n\n const config = useContext(ConfigContext);\n const {generateEntityUrl} = useContext(UrlGeneratorsContext);\n\n const entityLink = generateEntityUrl({uiPath, uri});\n const isSelected = uri === currentEntityUri;\n const entityType = getEntityType(metadata, node.entity.type) || {};\n const entityTypeGraphIcon = getPropWithInheritance(metadata, entityType, 'typeGraphIcon');\n const icon = entityTypeGraphIcon && getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n\n const onTitleClick = useCallback(() => {\n dispatch(ui.actions.openEntity({uri, viewId: config.id}));\n }, [dispatch, config, uri]);\n\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","import {Node} from './types';\n\nexport const getNodeKey = ({node}: {node: Node}) => node.nodeId;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {theme as treeTheme} from '../theme';\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 '&:after': {\n content: \"''\",\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)',\n width: '1px',\n left: '50%',\n bottom: '0',\n height: `calc(100% - ${treeTheme.rowHeight}px)`\n }\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: 'calc(50% - 1px)',\n top: 0,\n height: `${treeTheme.rowHeight / 2}px`,\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)'\n },\n horizontalLineRight: {\n height: '1px',\n top: `${treeTheme.rowHeight / 2}px`,\n left: 'calc(50% - 1px)',\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 {useCallback, useState} from 'react';\nimport {assoc} from 'ramda';\n\nimport {theme} from '../theme';\nimport {Node} from '../types';\nimport {getNodeKey} from '../helpers';\n\ntype HeightsCache = {[nodeId: Node['nodeId']]: number};\n\nconst getCacheKey = (node: Node) => getNodeKey({node});\n\nexport const useDynamicNodesHeights = () => {\n const [heightsCache, setHeightsCache] = useState<HeightsCache>({});\n const clearHeightsCache = useCallback(() => {\n setHeightsCache({});\n }, []);\n const onResize = useCallback(\n (node: Node) => (_, height) => {\n setHeightsCache((prevCache) =>\n prevCache[getCacheKey(node)] !== height ? assoc(getCacheKey(node), height, prevCache) : prevCache\n );\n },\n []\n );\n const getRowHeight = useCallback(\n ({node}: {node: Node}): number =>\n heightsCache[getCacheKey(node)]\n ? Math.max(heightsCache[getCacheKey(node)], theme.rowHeight)\n : theme.rowHeight,\n [heightsCache]\n );\n return {onResize, getRowHeight, clearHeightsCache};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative'\n },\n bodyWrapper: {\n paddingTop: '21px'\n }\n}));\n","import React, {useRef, useEffect, useState} from 'react';\nimport {useAPI} from '@reltio/components';\nimport {CustomActionViewConfig} from '@reltio/mdm-sdk';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {isNil, reject} from 'ramda';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: CustomActionViewConfig;\n className?: string;\n};\n\nexport const CustomView = ({config, className}: Props) => {\n const basicViewRef = useRef<HTMLDivElement>();\n const dialogRef = useRef<HTMLDivElement>();\n const [showModal, setShowModal] = useState<boolean>(false);\n const {height, width, tooltip: defaultTooltip} = config;\n const {html, visible, tooltip: updatedTooltip, customStyles, popup} = useAPI(config);\n const styles = useStyles();\n const tooltip = updatedTooltip || defaultTooltip;\n useEffect(() => {\n if (basicViewRef.current && html) {\n basicViewRef.current.innerHTML = '';\n Array.from(html.childNodes).forEach((child) => {\n basicViewRef.current.appendChild(child);\n });\n }\n }, [html]);\n useEffect(() => {\n setShowModal(!!popup);\n }, [popup]);\n\n useEffect(() => {\n if (showModal && dialogRef.current) {\n dialogRef.current.innerHTML = '';\n if (popup) {\n Array.from(popup.childNodes).forEach((child) => {\n dialogRef.current.appendChild(child);\n });\n }\n }\n }, [showModal, popup]);\n\n const style: {width?: number; height?: number} = reject(isNil, {width, height});\n return visible ? (\n <div className={styles.bodyWrapper}>\n <Dialog ref={dialogRef} open={!!popup} />\n <Tooltip title={tooltip || ''}>\n <div\n ref={basicViewRef}\n style={{...style, ...customStyles}}\n className={classnames(styles.root, className)}\n />\n </Tooltip>\n </div>\n ) : null;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n dragHandleContainer: {\n position: 'relative',\n width: '100%',\n height: 'inherit'\n },\n dragHandleVisibilityArea: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '24px',\n zIndex: 11,\n '&:hover $dragHandle': {\n visibility: 'visible'\n },\n '.react-grid-item.static &:hover $dragHandle': {\n visibility: 'hidden'\n }\n },\n dragHandle: {\n position: 'absolute',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n top: '-3px',\n zIndex: 11,\n cursor: 'move',\n visibility: 'hidden'\n },\n dragIcon: {\n transform: 'translateX(-50%) rotate(90deg)',\n color: 'rgba(0, 0, 0, 0.3)'\n }\n});\n","import React, {ComponentType} from 'react';\nimport classnames from 'classnames';\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\n\nimport {useStyles} from './styles';\n\nconst withDragHandle = <P extends Record<string, unknown>>(Component: ComponentType<P>) => {\n const WithDragHandle = (props: P) => {\n const styles = useStyles();\n return (\n <div className={styles.dragHandleContainer}>\n <div className={styles.dragHandleVisibilityArea}>\n <div className={classnames('viewDraggableHandle', styles.dragHandle)}>\n <DragIndicatorIcon className={styles.dragIcon} />\n </div>\n </div>\n <Component {...props} />\n </div>\n );\n };\n\n WithDragHandle.displayName = 'WithDragHandle';\n return WithDragHandle;\n};\n\nexport default withDragHandle;\n","import React, {ComponentType} from 'react';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, ErrorBoundary} from '@reltio/components';\n\nconst withErrorBoundary = <P extends Record<string, unknown>>(Component: ComponentType<P>) => {\n const WithErrorBoundary = (props: P) => {\n return (\n <ErrorBoundary\n error={\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.ERROR}\n text=\"\"\n secondaryText={i18n.text('Something went wrong')}\n variant={EMPTY_STATE_VARIANTS.small}\n />\n }\n >\n <Component {...props} />\n </ErrorBoundary>\n );\n };\n\n WithErrorBoundary.displayName = 'WithErrorBoundary';\n return WithErrorBoundary;\n};\n\nexport default withErrorBoundary;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n stubView: {\n padding: '20px'\n },\n fullHeight: {\n height: '100%'\n },\n component: {\n boxSizing: 'border-box',\n overflow: 'auto',\n boxShadow: 'none',\n borderRadius: 'unset'\n }\n});\n","import {useEffect, useState} from 'react';\nimport {both, gt, lt, path, pipe} from 'ramda';\nimport {Entity, GeoPoint, Metadata, resolve} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nconst filterWrongLat = pipe(path(['point', 'lat']), both(gt(90), lt(-90)));\n\nexport const useMarkers = (entity: Entity, metadata: Metadata, mapKey: string) => {\n const [markers, setMarkers] = useState<GeoPoint[]>([]);\n const [loading, setLoading] = useState(true);\n const safePromise = useSafePromise();\n useEffect(() => {\n setLoading(true);\n safePromise(resolve(metadata, [entity], mapKey))\n .then((markers) => {\n setMarkers(markers.filter(filterWrongLat));\n })\n .catch(() => {\n setMarkers([]);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [entity, metadata, mapKey, safePromise]);\n\n return {markers, loading};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n fullHeight: {\n height: '100%'\n },\n fullscreenBtn: {\n position: 'absolute',\n right: '5px',\n top: '5px',\n zIndex: 100\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n caption: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport useStyles from './styles';\n\ntype ImageLineCaptionProps = {\n totalImages: number;\n};\n\nexport const ImageLineCaption = ({totalImages}: ImageLineCaptionProps) => {\n const styles = useStyles();\n const photoWord = totalImages > 1 ? i18n.text('photos') : i18n.text('photo');\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {`${totalImages} ${photoWord}`}\n </Typography>\n );\n};\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, pathOr} from 'ramda';\nimport {EditableImageAttributesLine} from '@reltio/components';\nimport {AttributeType, Entity, Paging, AttributeItem, ImageAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdmModule, {profile, RequestNextPageOfAttributeValuesPayload} from '@reltio/mdm-module';\nimport {IMAGE_SIZE} from '../ImageAttributeView';\nimport {ImageLineCaption} from '../ImageLineCaption/ImageLineCaption';\n\ntype ImageAttributeViewEditableContentProps = {\n config: ImageAttributeViewConfig;\n attributeType: AttributeType;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nexport const ImageAttributeViewEditableContent = ({\n config,\n attributeType,\n paging,\n requestNextPageOfAttributeValues\n}: ImageAttributeViewEditableContentProps) => {\n const dispatch = useDispatch();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const modifiedEntityValues = pathOr([], ['attributes', attributeType.name], modifiedEntity);\n const viewId = config.id;\n\n const onChangeAttribute = (params: AttributeItem) =>\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n\n const onDeleteAttribute = (params: AttributeItem) =>\n pipe(profile.actions.removeAttribute, dispatch)({...params, viewId});\n\n return (\n <>\n <EditableImageAttributesLine\n attributeValues={modifiedEntityValues}\n attributeType={attributeType}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={modifiedEntity.uri}\n onChangeAttribute={onChangeAttribute}\n imageSize={IMAGE_SIZE}\n paging={paging}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n />\n <ImageLineCaption totalImages={modifiedEntityValues.length} />\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: '8px 16px'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pathOr, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {BasicView, DescriptionIcon, 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 <DescriptionIcon description={attributeType?.description} />\n </FacetViewHeader>\n <div className={styles.container}>{renderContent()}</div>\n </BasicView>\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 {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '52px'\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 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 {MatchCard} from './MatchCard';\nimport {useStyles} from './styles';\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} = 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 = !isEmpty(matches);\n const getComponentState = () => {\n if (isLoading) {\n return ComponentStates.Loading;\n }\n if (isEmpty(matches)) {\n return ComponentStates.NoData;\n }\n return ComponentStates.Loaded;\n };\n const state = getComponentState();\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={classnames(styles.root, className)}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.matchesContainer}>\n {state === ComponentStates.Loading && <LinearLoadIndicator />}\n {state === ComponentStates.NoData && (\n <Typography className={styles.noData}>{i18n.text('No matches found')}</Typography>\n )}\n {state === ComponentStates.Loaded &&\n matches.map((match) => (\n <MatchCard\n config={config}\n entitiesMap={entitiesMap}\n match={match}\n onFinishRequest={onFinishMatchAction}\n onStartRequest={turnOnDisableSpinner}\n key={match.object.uri}\n />\n ))}\n </div>\n {showSeeAll && (\n <>\n <div className={styles.footer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n onClick={openPotentialMatchPerspective}\n underline=\"none\"\n >\n {i18n.text('See all')}\n </Link>\n </div>\n </>\n )}\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n","import React, {lazy} from 'react';\nimport {Store} from 'redux';\nimport {\n ProfileViewConfig,\n ProfileViewTypes,\n AttributeViewConfig,\n EntityMapViewConfig,\n ProfilePotentialMatchesViewConfig,\n RelationsViewConfig,\n ImageAttributeViewConfig,\n SingleAttributeViewConfig,\n HierarchyPathsViewConfig,\n HierarchyTreeViewConfig,\n CustomActionViewConfig\n} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {ProfileAttributesView} from '../ProfileAttributesView/ProfileAttributesView';\nimport {ProfileSingleAttributeView} from '../ProfileSingleAttributeView/ProfileSingleAttributeView';\nimport {ProfileRelationsView} from '../ProfileRelationsView/ProfileRelationsView';\nimport {ProfileTableAttributeView} from '../ProfileTableAttributeView/ProfileTableAttributeView';\nimport {HierarchyPathsView} from '../HierarchyPathsView';\nimport {CustomView} from '../Sandbox/CustomView';\nimport withDragHandle from './HOCs/withDragHandle';\nimport withErrorBoundary from './HOCs/withErrorBoundary';\nimport {StubView} from './StubView';\nimport EntityMapView from '../EntityMapView/EntityMapView';\nimport {ImageAttributeView} from '../ImageAttributeView/ImageAttributeView';\nimport {ProfilePotentialMatchesView} from '../ProfilePotentialMatchesView/ProfilePotentialMatchesView';\n\nconst wrapView = <P extends unknown>(component: P): P => pipe(withErrorBoundary, withDragHandle)(component);\n\nconst WrappedStubView = wrapView(StubView);\nexport const WrappedProfileAttributesView = wrapView(ProfileAttributesView);\nexport const WrappedProfileSingleAttributeView = wrapView(ProfileSingleAttributeView);\nexport const WrappedProfileTableAttributeView = wrapView(ProfileTableAttributeView);\nexport const WrappedProfileRelationsView = wrapView(ProfileRelationsView);\nexport const WrappedCustomView = wrapView(CustomView);\nexport const WrappedHierarchyPathView = wrapView(HierarchyPathsView);\nexport const WrappedProfilePotentialMatchesView = wrapView(ProfilePotentialMatchesView);\n\nexport const WrappedHierarchyTreeView = lazy(() =>\n import(/* webpackMode: \"eager\" */ '@reltio/hierarchy-tree').then((importedModule) => ({\n default: wrapView(importedModule.HierarchyTreeView)\n }))\n);\n\nexport const WrappedRelationshipsTableView = lazy(() =>\n import(/* webpackMode: \"eager\" */ '@reltio/relations-table').then((importedModule) => ({\n default: wrapView(importedModule.RelationshipsTableView)\n }))\n);\nexport const WrappedEntityMapView = wrapView(EntityMapView);\nexport const WrappedImageAttributeView = wrapView(ImageAttributeView);\n\nexport type ViewComponentProps = {\n store: Store<unknown>;\n config:\n | ProfileViewConfig\n | AttributeViewConfig\n | SingleAttributeViewConfig\n | RelationsViewConfig\n | EntityMapViewConfig\n | ImageAttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n isAutosize?: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nclass ViewsFactory {\n static ViewTypes = ProfileViewTypes;\n static getComponentBy = (\n propName: string,\n {store, config, className, isFullscreen, onToggleFullscreen}: ViewComponentProps\n ) => {\n switch (config[propName]) {\n case ViewsFactory.ViewTypes.HierarchyTree:\n return (\n <WrappedHierarchyTreeView\n config={config as HierarchyTreeViewConfig}\n store={store}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.HierarchyPaths:\n return <WrappedHierarchyPathView config={config as HierarchyPathsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.RelationsTable:\n return (\n <WrappedRelationshipsTableView\n config={config as RelationsViewConfig}\n store={store}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Relations:\n return <WrappedProfileRelationsView config={config as RelationsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.Attributes:\n return <WrappedProfileAttributesView className={className} config={config as AttributeViewConfig} />;\n case ViewsFactory.ViewTypes.SingleAttribute:\n return (\n <WrappedProfileSingleAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.AttributeTable:\n return (\n <WrappedProfileTableAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Map:\n return (\n <WrappedEntityMapView\n config={config as EntityMapViewConfig}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Custom:\n return <WrappedCustomView config={config as CustomActionViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.ImageAttribute:\n return <WrappedImageAttributeView config={config as ImageAttributeViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.PotentialMatches:\n return (\n <WrappedProfilePotentialMatchesView\n config={config as ProfilePotentialMatchesViewConfig}\n className={className}\n />\n );\n }\n };\n static getComponent = (props: ViewComponentProps) => {\n return (\n ViewsFactory.getComponentBy('class', props) ||\n ViewsFactory.getComponentBy('react-class', props) || <WrappedStubView className={props.className} />\n );\n };\n}\n\nexport default ViewsFactory;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {BasicView} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst StubView = ({className}: Props) => {\n const styles = useStyles();\n return (\n <BasicView className={classnames(styles.stubView, 'viewDraggableHandle', className)}>NOT IMPLEMENTED</BasicView>\n );\n};\n\nexport {StubView};\n","import React from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {SingleAttributeContext} from './contexts/SingleAttributeContext';\nimport {SingleAttributeView} from './components/SingleAttributeView/SingleAttributeView';\nimport {useSingleAttribute} from './hooks/useSingleAttribute';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileSingleAttributeView = ({className, config}: Props) => {\n const singleAttribute = useSingleAttribute(config);\n\n return (\n <SingleAttributeContext.Provider value={singleAttribute}>\n <SingleAttributeView config={config} className={className} />\n </SingleAttributeContext.Provider>\n );\n};\n","import {useState, useMemo, useCallback} from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\n\nexport const useSingleAttribute = (config: SingleAttributeViewConfig) => {\n const [searchQuery, setSearchQuery] = useState('');\n const [page, setPage] = useState(0);\n const [showInactive, setShowInactive] = useState(false);\n const params = useMemo(() => ({page, searchQuery, showInactive}), [page, searchQuery, showInactive]);\n const attribute = useSingleAttributeLoader(config, params);\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n return {\n setSearchQuery,\n searchQuery,\n setPage,\n page,\n toggleShowInactive,\n showInactive,\n ...attribute\n };\n};\n","import React from 'react';\nimport {TableAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {TableAttributeContext} from './contexts/TableAttributeContext';\nimport {useTableAttribute} from './hooks/useTableAttribute';\nimport {TableAttributeView} from './components/TableAttributeView/TableAttributeView';\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileTableAttributeView = ({config, className}: Props) => {\n const tableAttribute = useTableAttribute(config);\n\n return (\n <TableAttributeContext.Provider value={tableAttribute}>\n {config && <TableAttributeView config={config} className={className} />}\n </TableAttributeContext.Provider>\n );\n};\n","import {useMemo, useReducer} from 'react';\nimport {reject, isNil, pipe, not, prop} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {findAttributeTypeByUri, isComplexAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useActions} from '@reltio/components';\nimport reducer, {actions} from './reducer';\nimport {getColumnsData} from '../helpers/tableAttributeHelpers';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\nimport {buildMDMFilters} from './helpers';\n\nconst DEFAULT_COUNT_COLUMN = 5;\n\nexport const useTableAttribute = (config: SingleAttributeViewConfig) => {\n const {attributeUri} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const allColumnsData = useMemo(\n () => (attributeType ? getColumnsData(metadata, attributeType) : []),\n [metadata, attributeType]\n );\n const initialState = useMemo(\n () => ({\n searchQuery: '',\n filters: null,\n sorting: undefined,\n visibleColumns: allColumnsData\n .filter(pipe(prop('dataTypeDefinition'), isComplexAttribute, not))\n .map(({id}) => id)\n .slice(0, DEFAULT_COUNT_COLUMN),\n page: 0\n }),\n [allColumnsData]\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const {searchQuery, filters, sorting, page} = state;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n const requestFilters = useMemo(() => {\n const mdmFilters = buildMDMFilters(allColumnsData, filters);\n return mdmFilters.length ? mdmFilters : null;\n }, [filters, allColumnsData]);\n\n const params = useMemo(\n () => reject(isNil, {filters: requestFilters, page, sorting, searchQuery}),\n [requestFilters, page, sorting, searchQuery]\n );\n const {changeSearchQuery, changePage, toggleSort, changeFilter, toggleFilters, changeColumns} = useActions({\n actions,\n dispatch\n });\n const attribute = useSingleAttributeLoader(config, params);\n const showTable = Boolean(\n (attribute?.values?.length || requestFilters || searchQuery || isEditableMode) &&\n attributeType &&\n !attributeType.hidden\n );\n return {\n ...state,\n setSearchQuery: changeSearchQuery,\n setPage: changePage,\n onSort: toggleSort,\n onFilter: changeFilter,\n onToggleFilters: toggleFilters,\n onChangeColumns: changeColumns,\n showTable,\n allColumnsData,\n ...attribute\n };\n};\n","import {propEq} from 'ramda';\nimport {Maybe} from '@reltio/mdm-sdk';\nimport {ColumnData, ColumnFilter, columnFilterToMdmFilter} from '@reltio/components';\n\nexport const buildMDMFilters = (columnsData: ColumnData[], filters: {[key: string]: ColumnFilter}) =>\n Maybe.fromNull(filters)\n .map((filters) =>\n Object.entries(filters).map(([columnId, columnFilter]) => {\n const columnData = columnsData.find(propEq('id', columnId));\n return columnFilterToMdmFilter(columnData, columnFilter);\n })\n )\n .orSome([]);\n","import React from 'react';\nimport RelationsView from './components/RelationsView';\nimport {RelationsViewStateContext} from './contexts/RelationsViewStateContext';\nimport useRelationsState from './hooks/useRelationsState';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\ntype Props = {\n config: RelationsViewConfig;\n onResize?: (width: number, height: number) => void;\n className?: string;\n};\n\nexport const ProfileRelationsView = ({config, className}: Props) => {\n const relationsState = useRelationsState(config);\n return (\n <RelationsViewStateContext.Provider value={relationsState}>\n <RelationsView config={config} className={className} />\n </RelationsViewStateContext.Provider>\n );\n};\n","import React, {useCallback, useEffect} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {BasicView, ReactSortableTree} from '@reltio/components';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {Typography as Typography} from '@material-ui/core';\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';\nimport {useDynamicNodesHeights} from './hooks/useDynamicNodesHeights';\n\ntype Props = {\n className?: string;\n config: HierarchyPathsViewConfig;\n};\n\nexport const HierarchyPathsView = ({config, className}: Props) => {\n const {id, caption, graph} = config;\n const graphType = graph?.type;\n\n const styles = useStyles();\n const dispatch = useDispatch();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const {treeData, setTreeData, errorMessage} = useLoadPaths(entityUri, graphType);\n const {onResize, getRowHeight, clearHeightsCache} = useDynamicNodesHeights();\n\n const openGraph = useCallback(() => {\n dispatch(ui.actions.openGraph({viewId: id, graphType, entityUri}));\n }, [dispatch, id, graphType, entityUri]);\n\n const generateNodeProps = useCallback(\n (rowInfo) => ({\n title: (\n <ReactResizeDetector\n handleHeight\n refreshMode=\"debounce\"\n refreshRate={100}\n onResize={onResize(rowInfo.node)}\n >\n <Node node={rowInfo.node} />\n </ReactResizeDetector>\n )\n }),\n [onResize]\n );\n\n useEffect(() => {\n clearHeightsCache();\n }, [clearHeightsCache, entityUri]);\n\n return (\n <BasicView className={className}>\n <HierarchyPathsHeader onGraphOpen={openGraph} title={caption} />\n <ConfigContext.Provider value={config}>\n <div className={styles.treeContainer}>\n <div className={styles.tree}>\n {!errorMessage ? (\n <ReactSortableTree\n isVirtualized={false}\n treeData={treeData}\n canDrag={false}\n theme={theme}\n generateNodeProps={generateNodeProps}\n onChange={setTreeData}\n getNodeKey={getNodeKey}\n rowHeight={getRowHeight}\n />\n ) : (\n <Typography className={styles.errorMessage}>{errorMessage}</Typography>\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 {makeStyles} from '@material-ui/core/styles';\n\nconst DEFAULT_MIN_WIDTH = 1024;\n\ntype Props = {\n maxWidth?: number;\n scrollbarWidth?: number;\n};\n\nexport const useStyles = makeStyles({\n scrollWrapper: {\n flexGrow: 1,\n overflow: 'auto'\n },\n scrollableContent: ({maxWidth, scrollbarWidth}: Props) => ({\n minWidth: maxWidth && maxWidth < DEFAULT_MIN_WIDTH ? maxWidth - scrollbarWidth : DEFAULT_MIN_WIDTH\n })\n});\n","import React, {useEffect, useMemo, useRef} from 'react';\nimport {PopupBoundariesContext, ReltioGridLayout} from '@reltio/components';\nimport {ProfileViewConfig} from '@reltio/mdm-sdk';\nimport {ProfileLayoutItem} from '../ProfileLayoutItem';\nimport {Layout} from '../../types';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n views: ProfileViewConfig[];\n layout?: Layout;\n entityUri?: string;\n maxWidth?: number;\n onLayoutChanged: (layout: Layout) => void;\n};\n\nconst calcScrollbarWidth = (element: HTMLDivElement) => (element ? element.offsetWidth - element.clientWidth : 0);\n\nconst ProfileLayout = ({views, layout, entityUri, maxWidth, onLayoutChanged}: Props) => {\n const scrollWrapperRef = useRef<HTMLDivElement>();\n const scrollbarWidth = calcScrollbarWidth(scrollWrapperRef.current);\n const boundariesElement = scrollWrapperRef.current;\n\n const styles = useStyles({maxWidth, scrollbarWidth});\n\n const popupBoundariesValue = useMemo(\n () => ({element: boundariesElement, priority: ['left', 'right', 'top', 'bottom']}),\n [boundariesElement]\n );\n\n useEffect(() => {\n if (scrollWrapperRef.current) {\n scrollWrapperRef.current.scrollTop = 0;\n }\n }, [entityUri]);\n\n return (\n <div ref={scrollWrapperRef} className={styles.scrollWrapper}>\n <div className={styles.scrollableContent}>\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ReltioGridLayout\n LayoutItem={ProfileLayoutItem}\n views={views}\n layout={layout}\n onLayoutChanged={onLayoutChanged}\n draggableHandle=\".viewDraggableHandle\"\n />\n </PopupBoundariesContext.Provider>\n </div>\n </div>\n );\n};\n\nexport {ProfileLayout};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n closeIcon: {\n paddingRight: '12px',\n boxSizing: 'content-box',\n '& path': {\n fill: '#fff'\n }\n },\n snackbar: {\n '& > div': {\n flexWrap: 'nowrap',\n alignItems: 'baseline'\n }\n }\n}));\n","import {Snackbar as Snackbar} from '@material-ui/core';\nimport {Portal as Portal} from '@material-ui/core';\nimport React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {ConfirmationDialog, SmallIconButton} from '@reltio/components';\nimport {NotificationItem, Action} from './types';\nimport {useStyles} from './styles';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\n\ntype Props = {\n notification: NotificationItem;\n};\n\nconst AUTO_HIDE_DURATION = 5000;\n\nexport const Notification = ({notification}: Props) => {\n const styles = useStyles({});\n const dispatch = useDispatch();\n const autoCloseInterval: number = useSelector(mdmModule.selectors.getAutoCloseInterval);\n const autoHideDuration =\n notification.autoHideDuration || (autoCloseInterval && autoCloseInterval * 1000) || AUTO_HIDE_DURATION;\n const [action, setAction] = useState<Action>();\n const [show, setShow] = useState(true);\n const closeSnackbar = useCallback(\n (_e?: unknown, reason?: string) => {\n if (reason !== 'clickaway') {\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n setShow(false);\n }\n },\n [notification]\n );\n const onDiscard = useCallback(() => {\n action.cancelAction && dispatch(action.cancelAction);\n setAction(undefined);\n }, [action]);\n const onConfirm = useCallback(() => {\n dispatch(action.applyAction);\n setAction(undefined);\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n }, [action, notification]);\n\n const actions = (\n <>\n {notification.actions.map((action) => (\n <Button\n key={action.label}\n color=\"primary\"\n size=\"small\"\n onClick={() => {\n if (action.needConfirmation) {\n setAction(action);\n } else {\n dispatch(action.applyAction);\n }\n setShow(false);\n }}\n >\n {action.label}\n </Button>\n ))}\n </>\n );\n const message = (\n <>\n <SmallIconButton className={styles.closeIcon} size=\"S\" icon={CloseIcon} onClick={closeSnackbar} />\n {notification.text}\n </>\n );\n\n return (\n <>\n <Portal container={document.body}>\n <Snackbar\n autoHideDuration={autoHideDuration}\n open={show}\n classes={{root: styles.snackbar}}\n action={actions}\n onClose={closeSnackbar}\n anchorOrigin={{vertical: 'bottom', horizontal: 'center'}}\n message={message}\n />\n </Portal>\n <ConfirmationDialog\n open={!!action}\n title={action?.confirmationText}\n content={action?.confirmationDescription}\n onSave={onConfirm}\n onDiscard={onDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n </>\n );\n};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {NotificationItem} from './types';\nimport {Notification} from './Notification';\n\nexport const Notifications = () => {\n const notifications: NotificationItem[] = useSelector(mdm.selectors.getNotifications);\n if (!notifications) return null;\n return (\n <>\n {notifications.slice(-1).map((n) => (\n <Notification key={n.id} notification={n} />\n ))}\n </>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"19\",\n height: \"17\",\n viewBox: \"0 0 19 17\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M14 17v2H4v-2h10zm6-4v2H4v-2l12.884.001H17l.116-.002L20 13zm-8.457-2H4V9h5.82a8.465 8.465 0 001.723 2zM9.139 6.178l-.289.733.035.088L4 7V5l5.713-.002c-.22.375-.412.768-.574 1.18zM17 2.82a6.451 6.451 0 00-6 4.09 6.451 6.451 0 006 4.092 6.451 6.451 0 006-4.091 6.451 6.451 0 00-6-4.091zm0 6.815a2.728 2.728 0 010-5.455 2.728 2.728 0 010 5.455zm0-4.365c-.905 0-1.636.73-1.636 1.636 0 .906.73 1.637 1.636 1.637.905 0 1.636-.731 1.636-1.637 0-.905-.73-1.636-1.636-1.636z\",\n id: \"svg1467685497a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", {\n transform: \"translate(-4 -2.5)\"\n}, React.createElement(\"mask\", {\n id: \"svg1467685497b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1467685497a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg1467685497b)\",\n d: \"M0 0h24v24H0z\"\n})))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M20.222 6C21.21 6 22 6.8 22 7.778v12.444C22 21.2 21.209 22 20.222 22H7.778C6.79 22 6 21.2 6 20.222V7.778C6 6.8 6.791 6 7.778 6h12.444zM20 8H8v12h12V8zM4 18H2V4c0-1.1.9-2 2-2h14v2H4v14z\",\n id: \"svg2383396984a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2383396984b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2383396984a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2383396984b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n editingButtons: {\n display: 'flex',\n '& button + button': {\n minWidth: '88px',\n marginLeft: '8px'\n }\n },\n searchResults: {\n width: '150px',\n height: '25px',\n backgroundColor: '#ccc'\n },\n comments: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '10px'\n }\n});\n","import {useCallback, useMemo} from 'react';\nimport {\n includes,\n pipe,\n isNil,\n propOr,\n filter,\n map,\n prop,\n cond,\n identity,\n omit,\n find,\n complement,\n when,\n either,\n pick,\n always,\n T\n} from 'ramda';\nimport {\n BaseCloneAction,\n CloneAction,\n Entity,\n getEntityType,\n isReference,\n isRelationWithEntityType,\n getRelationTypeUriFromAttrType\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\n\ntype Props = {\n cloneAction?: CloneAction[];\n onCloneDiscard: () => void;\n};\n\nexport const useCloneAction = ({cloneAction: cloneActionProp, onCloneDiscard}: Props) => {\n const entity: Entity = useSelector(mdm.selectors.getEntityWithoutDiff);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const dispatch = useDispatch();\n const entityTypeUri = entity?.type;\n const relationTypes = metadata.relationTypes;\n const isRelationSuitableForEntityType = useCallback(isRelationWithEntityType(metadata, entityTypeUri), [\n metadata,\n entityTypeUri\n ]);\n const entityType = getEntityType(metadata, entityTypeUri);\n const cloneAction = useMemo<BaseCloneAction>(\n () =>\n when(\n complement(isNil),\n pipe(\n find(pipe(propOr([], 'entityTypeUris'), either(includes(entityTypeUri), includes('*')))),\n when(complement(isNil), omit(['entityTypeUris']))\n )\n )(cloneActionProp),\n [cloneActionProp, entityTypeUri]\n );\n const onClone = useCallback(() => {\n if (cloneAction) {\n const modifiedRelationTypes: string[] = pipe(\n prop('relationshipTypesToCopy'),\n cond([\n [\n isNil,\n pipe(\n always(entityType),\n propOr([], 'attributes'),\n filter(isReference),\n map(getRelationTypeUriFromAttrType)\n )\n ],\n [\n includes('*'),\n pipe(always(relationTypes || []), map(prop('uri')), filter(isRelationSuitableForEntityType))\n ],\n [T, identity]\n ])\n )(cloneAction);\n dispatch(\n profile.entity.actions.entityCloneRequested({\n data: {\n ...pick(['attributeReplacementMapping'], cloneAction),\n relationshipTypesToCopy: modifiedRelationTypes\n },\n entityUri: entity.uri\n })\n );\n }\n onCloneDiscard();\n }, [cloneAction, onCloneDiscard, entityType, relationTypes, entity.uri, isRelationSuitableForEntityType]);\n return cloneAction ? onClone : undefined;\n};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {Box as Box} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {SvgIcon as SvgIcon} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport CreateIcon from '@material-ui/icons/Create';\n\nimport {\n getEntityType,\n Entity,\n checkMetadataPermission,\n isDataTenantEntity,\n isTempUri,\n MetadataPermissions,\n ModeTypes,\n Mode,\n isSuggestMode,\n isEditableMode,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Operation,\n ProfileBandConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n ProfileBand,\n ModeSwitcherSelect,\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ProfileBandNavigation,\n ProfileBandHistory,\n ConfirmationDialog\n} from '@reltio/components';\n\nimport SuggestSvg from './suggest.svg';\nimport CopySvg from './copy.svg';\n\nimport {useStyles} from './styles';\nimport {useCloneAction} from './hooks/useCloneAction';\n\ntype Props = {\n className?: string;\n profileBandConfig?: ProfileBandConfig;\n};\n\nconst SuggestIcon = (props) => (\n <SvgIcon {...props}>\n <SuggestSvg />\n </SvgIcon>\n);\n\nconst CopyIcon = (props) => (\n <SvgIcon {...props}>\n <CopySvg />\n </SvgIcon>\n);\n\ntype Group = {\n label: string;\n value: string;\n description: string;\n icon: React.ElementType;\n permission: string;\n onClick?: (value: string) => void;\n};\n\nconst filterGroupByPermissions = <T extends Group>(\n group: T[],\n entityType,\n isTempEntity: boolean,\n isWorkflowEnabled?: boolean,\n canStartProcessInstanceSearchQuery?: boolean\n): T[] =>\n group.filter(({value, permission}) => {\n if (isTempEntity && !isEditableMode(value)) return false;\n if ((!isWorkflowEnabled || !canStartProcessInstanceSearchQuery) && isSuggestMode(value)) return false;\n return checkMetadataPermission(permission, entityType);\n });\n\nconst hasOnlyReadPermission = (entityType) => {\n return (\n checkMetadataPermission(MetadataPermissions.READ, entityType) &&\n !checkMetadataPermission(MetadataPermissions.UPDATE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.DELETE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.INITIATE_CHANGE_REQUEST, entityType)\n );\n};\n\nexport const PerspectiveProfileBand = ({className, profileBandConfig}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const canStartProcessInstanceSearchQuery = useSelector(mdm.selectors.getCanUserStartProcessFromQuery);\n const entity = useSelector(mdm.selectors.getEntityWithoutDiff) as Entity;\n const modifiedEntity = useSelector((state) => mdm.selectors.getModifiedEntity(state, entity.uri));\n const metadata = useSelector(mdm.selectors.getMetadata);\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const mode = useSelector(mdm.selectors.getMode) as Mode;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode) as boolean;\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const profileOperation = useSelector(mdm.selectors.getProfileOperation);\n const entityTypeUri = entity?.type;\n const entityType = useMemo(() => getEntityType(metadata, entityTypeUri), [entityTypeUri, metadata]);\n const isOperationSaving = profileOperation === Operation.Saving;\n const isOperationCloning = profileOperation === Operation.Cloning;\n const isDisabledButtons = isOperationCloning || isOperationSaving;\n const [openCloneConfirmationDialog, setOpenCloneConfirmationDialog] = useState(false);\n const onCloneDiscard = useCallback(() => {\n setOpenCloneConfirmationDialog(false);\n }, []);\n const onClone = useCloneAction({cloneAction: profileBandConfig?.cloneAction, onCloneDiscard});\n const OPTIONS_GROUP = useMemo(\n () => [\n {\n label: i18n.text('Editing'),\n value: ModeTypes.EDITING,\n description: i18n.text('Edit profile directly'),\n icon: CreateIcon,\n permission: 'UPDATE'\n },\n {\n label: i18n.text('Suggesting'),\n value: ModeTypes.SUGGESTING,\n description: i18n.text('Suggest changes and initiate a workflow review'),\n icon: SuggestIcon,\n permission: 'INITIATE_CHANGE_REQUEST'\n },\n {\n label: i18n.text('Viewing'),\n value: ModeTypes.VIEWING,\n description: i18n.text('Read or print profile'),\n icon: VisibilityIcon,\n permission: 'READ'\n }\n ],\n []\n );\n\n const BUTTONS_GROUP = useMemo(\n () => [\n ...(onClone\n ? [\n {\n label: i18n.text('Clone'),\n value: 'Clone',\n description: i18n.text('Create a copy of the profile'),\n icon: CopyIcon,\n onClick: () => setOpenCloneConfirmationDialog(true),\n permission: 'CREATE'\n }\n ]\n : []),\n {\n label: i18n.text('Delete'),\n value: 'Delete',\n description: i18n.text('Permanently delete profile'),\n icon: DeleteIcon,\n onClick: () => {\n const conf = window.confirm(i18n.text('Are you sure you want to delete this?'));\n if (conf) {\n dispatch(profile.entity.actions.entityRemoveRequested({entityUri: entity.uri}));\n }\n },\n permission: 'DELETE'\n }\n ],\n [dispatch, entity.uri, onClone]\n );\n\n const shouldShowSelect = !isHistoryModeEnabled && !isDataTenantEntity(entity) && !hasOnlyReadPermission(entityType);\n\n const isTempEntity = isTempUri(entity?.uri);\n\n const accessibleOptionsGroup = useMemo(() => {\n return filterGroupByPermissions(\n OPTIONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [OPTIONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n const accessibleButtonsGroup = useMemo(() => {\n return filterGroupByPermissions(\n BUTTONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [BUTTONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n\n const handleChange = useCallback(\n (value: Mode) => {\n dispatch(profile.mode.actions.modeUpdated(value));\n },\n [dispatch]\n );\n\n const onCancel = useCallback(() => {\n dispatch(profile.mode.actions.modeCancelEditing());\n }, [dispatch]);\n\n const handleSave = useCallback(() => {\n dispatch(profile.actions.saveProfile());\n }, [dispatch]);\n\n return (\n <>\n <ProfileBand\n className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)}\n entity={isEditableMode && modifiedEntity ? modifiedEntity : entity}\n >\n <Box display=\"flex\" alignItems=\"center\">\n <Box mr={3}>\n {isEditableMode && (\n <Box className={styles.editingButtons}>\n <Button\n variant=\"outlined\"\n onClick={onCancel}\n data-reltio-id=\"reltio-profile-cancel-editing\"\n disabled={isDisabledButtons}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n data-reltio-id=\"reltio-profile-save-profile\"\n onClick={handleSave}\n disabled={isDisabledButtons}\n >\n {isSuggestMode(mode) ? i18n.text('Suggest') : i18n.text('Save')}\n </Button>\n </Box>\n )}\n {isHistoryModeEnabled && isViewMode ? (\n <ProfileBandHistory />\n ) : (\n isViewMode && <ProfileBandNavigation />\n )}\n </Box>\n {shouldShowSelect && (\n <ModeSwitcherSelect\n optionsGroup={accessibleOptionsGroup}\n buttonsGroup={accessibleButtonsGroup}\n value={mode}\n onChange={handleChange}\n disabled={isDisabledButtons}\n />\n )}\n </Box>\n <Box className={styles.comments}>\n <CommentsContainer\n uri={entity.uri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri: entity.uri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </Box>\n </ProfileBand>\n {!!onClone && (\n <ConfirmationDialog\n open={openCloneConfirmationDialog}\n title={i18n.text('Do you want to create a clone of the profile?')}\n content={i18n.text(\n 'Cloning will create a copy of the current profile. You can modify the cloned profile in the next step. Are you sure you want to proceed?'\n )}\n onSave={onClone}\n onDiscard={onCloneDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n )}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n },\n badge: {\n fontSize: '12px',\n height: '18px',\n minWidth: '18px',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px'\n }\n});\n","import React, {useContext, VFC} from 'react';\nimport {Badge as Badge} from '@material-ui/core';\nimport {WorkflowTasksContext} from '@reltio/components';\nimport InboxIcon from '@material-ui/icons/Inbox';\nimport {useStyles} from '../../styles';\n\nexport const WorkflowButton: VFC = () => {\n const {total} = useContext(WorkflowTasksContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={total}\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <InboxIcon />\n </Badge>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n paddingRight: '12px'\n },\n showMoreLink: {\n display: 'flex',\n margin: '16px'\n },\n showMoreIcon: {\n fontSize: '1rem'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {CollaborationContext, CollaborationItem, EntitiesMapContext, useCommentsEntitiesMap} from '@reltio/components';\nimport {Box as Box} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport {useStyles} from './styles';\n\nexport const CollaborationList = () => {\n const styles = useStyles();\n const {getComments, comments, pageToken} = useContext(CollaborationContext);\n const entityUri = useSelector(mdm.selectors.getEntityUriWithDataTenant);\n\n useEffect(() => {\n getComments(entityUri);\n }, [getComments, entityUri]);\n\n const handleShowMoreComments = () => {\n getComments(entityUri, pageToken);\n };\n\n const entitiesMap = useCommentsEntitiesMap(comments);\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <Box className={styles.wrapper}>\n {comments.map((comment) => {\n const {objectId, relatedObjectUris, objectType, commentId} = comment;\n return (\n <CollaborationItem\n key={commentId}\n uri={objectId}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n })}\n {pageToken && (\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.showMoreLink}\n onClick={handleShowMoreComments}\n underline=\"none\"\n >\n <KeyboardArrowDownIcon className={styles.showMoreIcon} />\n {i18n.text('Show more')}\n </Link>\n )}\n </Box>\n </EntitiesMapContext.Provider>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n position: 'relative',\n height: '100%'\n }\n});\n","import React, {useContext} from 'react';\nimport {LinearLoadIndicator, WorkflowTaskCard, WorkflowTasksContext} from '@reltio/components';\nimport {useStyles} from './styles';\n\nexport const WorkflowList = () => {\n const styles = useStyles();\n const {tasks, loading} = useContext(WorkflowTasksContext);\n\n return (\n <div className={styles.wrapper}>\n {loading && <LinearLoadIndicator />}\n {tasks &&\n tasks.map((task) => {\n return <WorkflowTaskCard key={task.taskId} task={task} />;\n })}\n </div>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M4 17.17L5.17 16H20V4H4v13.17zM20 2c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H6l-4 4V4c0-1.1.9-2 2-2h16zm-3 9H7v2h10v-2zm0-4H7v2h10V7z\",\n id: \"svg2697213709a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", null, React.createElement(\"g\", {\n transform: \"translate(-2 -2)\"\n}, React.createElement(\"mask\", {\n id: \"svg2697213709b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2697213709a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2697213709b)\",\n d: \"M0 0h24v24H0z\"\n}))))));","import React, {useContext, VFC} from 'react';\nimport {Badge as Badge} from '@material-ui/core';\nimport CollaborationIcon from '../../icons/CollaborationIcon.svg';\nimport {CollaborationContext} from '@reltio/components';\nimport {calcTotalCommentItems} from '@reltio/mdm-sdk';\nimport {useStyles} from '../../styles';\n\nexport const CollaborationButton: VFC = () => {\n const {commentsMap} = useContext(CollaborationContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={calcTotalCommentItems(commentsMap)}\n classes={{\n anchorOriginTopRightRectangle: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <CollaborationIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst WorkflowPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Ready to go with the flow?')}\n secondaryText={i18n.text(\n 'Suggest a change or submit a match review, and we’ll kick off a workflow task to get things going.'\n )}\n />\n);\n\nexport default WorkflowPanelEmptyState;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst CollaborationPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Care to join the conversation?')}\n secondaryText={i18n.text(\n 'Leave comments for team members anywhere in the Profile page, and we’ll record it here.'\n )}\n />\n);\n\nexport default CollaborationPanelEmptyState;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M14.101 16A5.003 5.003 0 0016 18.987V20H2v-4h12.101zM22 18.987V20v-1.013zM4 17v2h2v-2H4zM16 4v1.013A5.004 5.004 0 0014.101 8H2V4h14zm6 0v1.013V4zM6 7V5H4v2h2zm8 3v4H2v-4h12zM4 11v2h2v-2H4zm12 4v-2h6v2c0 1.3-.84 2.4-2 2.82V22h-2v-4.18c-1.16-.42-2-1.52-2-2.82zm0-6c0-1.3.84-2.4 2-2.82V2h2v4.18c1.16.42 2 1.52 2 2.82v2h-6V9z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexDirection: 'column'\n },\n itemWrapper: {\n paddingLeft: '19px',\n paddingRight: '19px'\n }\n});\n","import React from 'react';\nimport {CustomActionViewConfig} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {CustomView} from '../../../Sandbox/CustomView';\nimport {useStyles} from './styles';\n\nexport const DBConnectorsList = () => {\n const styles = useStyles();\n const dBConnectorSideViews = useSelector(mdm.selectors.getDBConnectorSideViews) as CustomActionViewConfig[];\n\n return (\n <div className={styles.wrapper}>\n {dBConnectorSideViews.map((sideView) => (\n <CustomView key={sideView.id} config={sideView} className={styles.itemWrapper} />\n ))}\n </div>\n );\n};\n","import React, {useCallback, useContext, useEffect, useState} from 'react';\nimport {pipe, propEq, reject, pluck} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {\n CollaborationContext,\n SideButtonsPanel,\n SidePanelContentHeader,\n SidePanel,\n WorkflowTasksContext,\n AddWorkflowButton,\n HistoryView,\n HistoryHeader,\n HistoryPanelEmptyState,\n useHistory,\n useHistoryEnabled\n} from '@reltio/components';\nimport {calcTotalCommentItems, Entity, getEntityType, isTempUri, Metadata} from '@reltio/mdm-sdk';\nimport mdm, {HistoryEvent} from '@reltio/mdm-module';\nimport HistoryIcon from '@material-ui/icons/History';\nimport {WorkflowButton} from './components/WorkflowButton/WorkflowButton';\nimport {CollaborationList} from './components/CollaborationList/CollaborationList';\nimport {WorkflowList} from './components/WorkflowList/WorkflowList';\nimport {CollaborationButton} from './components/CollaborationButton/CollaborationButton';\nimport WorkflowPanelEmptyState from './components/WorkflowPanelEmptyState/WorkflowPanelEmptyState';\nimport CollaborationPanelEmptyState from './components/CollaborationPanelEmptyState/CollaborationPanelEmptyState';\nimport ConnectorsIcon from './icons/ConnectorsIcon.svg';\nimport {DBConnectorsList} from './components/DBConnectorsList/DBConnectorsList';\n\nimport {useStyles} from './styles';\n\nconst DEFAULT_PANEL_WIDTH = 480;\nexport enum ActivePanel {\n Workflow,\n Collaboration,\n History,\n DBConnector\n}\nconst getSecondTitle = (total: number): string => {\n if (total) {\n return total === 1 ? i18n.text('${total} item', {total}) : i18n.text('${total} items', {total});\n }\n};\n\ntype Props = {\n commentId?: string;\n};\n\nexport const RightSidePanel = ({commentId}: Props) => {\n const styles = useStyles();\n const isWorkflowSideViewEnabled = useSelector(mdm.selectors.isWorkflowSideViewEnabled) as boolean;\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const isCollaborationSideViewEnabled = useSelector(mdm.selectors.isCollaborationSideViewEnabled) as boolean;\n const isDBConnectorSideViewEnabled = useSelector(mdm.selectors.isDBConnectorSideViewEnabled) as boolean;\n const isCollaborationEnabled = useSelector(mdm.selectors.isCollaborationEnabled) as boolean;\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n\n const workflowTasksContext = useContext(WorkflowTasksContext);\n const collaborationContext = useContext(CollaborationContext);\n\n const [active, setActive] = useState<ActivePanel>(commentId ? ActivePanel.Collaboration : null);\n const toggleActive = useCallback((newId: ActivePanel): void => {\n setActive((active) => (active === newId ? null : newId));\n }, []);\n const resetActive = useCallback((): void => {\n setActive(null);\n }, []);\n const isOpen = active !== null;\n const isHistoryTabActive = active === ActivePanel.History;\n const {isHistoryEnabled, isProfilePersisted} = useHistoryEnabled({isHistoryTabActive, entity});\n\n const {historyFilter, onApplyFilter, isLoading, historicUris, historyWithTotal, canLoadMore, onLoadMore} =\n useHistory({entity, enabled: isHistoryEnabled});\n\n const enabledWorkflowButton = isWorkflowSideViewEnabled && isWorkflowEnabled && !isTempUri(entity?.uri);\n const enabledCollaborationButton = isCollaborationSideViewEnabled && isCollaborationEnabled;\n const collaborationTotal = calcTotalCommentItems(collaborationContext?.commentsMap);\n\n const elements = [\n {\n buttonProps: {\n id: ActivePanel.Workflow,\n icon: WorkflowButton,\n tooltipTitle: i18n.text('Workflow')\n },\n content: workflowTasksContext?.total ? <WorkflowList /> : <WorkflowPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Workflow'),\n secondTitle: getSecondTitle(workflowTasksContext?.total),\n rightContent: <AddWorkflowButton />\n },\n hidden: !enabledWorkflowButton\n },\n {\n buttonProps: {\n id: ActivePanel.Collaboration,\n icon: CollaborationButton,\n tooltipTitle: i18n.text('Collaboration')\n },\n content: collaborationTotal ? <CollaborationList /> : <CollaborationPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Collaboration'),\n secondTitle: getSecondTitle(collaborationTotal)\n },\n hidden: !enabledCollaborationButton\n },\n {\n buttonProps: {\n id: ActivePanel.History,\n icon: HistoryIcon,\n tooltipTitle: i18n.text('History')\n },\n content: isProfilePersisted ? (\n <HistoryView\n isLoading={isLoading}\n historyWithTotal={historyWithTotal}\n contributorsUris={historicUris}\n entityUri={entity?.uri}\n historyEvent={historyEvent}\n onLoadMore={onLoadMore}\n canLoadMore={canLoadMore}\n />\n ) : (\n <HistoryPanelEmptyState />\n ),\n headerProps: {\n content: (\n <HistoryHeader\n total={isProfilePersisted ? (historicUris?.length || 0) + 1 : undefined}\n entityType={getEntityType(metadata, entity?.type)}\n filter={historyFilter}\n onApplyFilter={onApplyFilter}\n />\n )\n }\n },\n {\n buttonProps: {\n id: ActivePanel.DBConnector,\n icon: ConnectorsIcon,\n tooltipTitle: i18n.text('D&B Connector')\n },\n content: <DBConnectorsList />,\n headerProps: {\n mainTitle: i18n.text('D&B Connector')\n },\n hidden: !isDBConnectorSideViewEnabled\n }\n ];\n\n const visibleElements = reject(propEq('hidden', true))(elements);\n\n useEffect(() => {\n if (elements[active]?.hidden) {\n resetActive();\n }\n }, [active, elements, resetActive, visibleElements]);\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen} width={DEFAULT_PANEL_WIDTH}>\n {!elements[active]?.hidden && (\n <>\n <SidePanelContentHeader {...elements[active]?.headerProps} onClose={resetActive} />\n {elements[active]?.content}\n </>\n )}\n </SidePanel>\n <SideButtonsPanel\n buttonsProps={pipe(reject(propEq('hidden', true)), pluck('buttonProps'))(elements)}\n onButtonClick={toggleActive}\n activeIndexId={active}\n />\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst accordionSummaryHeight = '48px';\nconst defaultBorderStyle = '1px solid rgba(0, 0, 0, .125)';\n\nconst useStyles = makeStyles((theme) => ({\n accordion: {\n borderTop: defaultBorderStyle,\n borderBottom: defaultBorderStyle,\n fontSize: '13px',\n boxShadow: 'none',\n '&:not(:first-child)': {\n borderTop: 0\n },\n '&:before': {\n display: 'none'\n },\n '&$accordionExpanded': {\n margin: 'auto'\n }\n },\n accordionExpanded: {},\n accordionSummary: {\n display: 'flex',\n alignItems: 'center',\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight,\n '&$accordionSummaryExpanded': {\n height: accordionSummaryHeight,\n minHeight: accordionSummaryHeight\n }\n },\n accordionSummaryHeading: {\n flex: 1,\n fontSize: theme.typography.pxToRem(13),\n fontWeight: theme.typography.fontWeightRegular\n },\n accordionSummaryExpanded: {},\n accordionSummaryContent: {\n display: 'flex',\n alignItems: 'center'\n },\n accordionDetails: {\n maxHeight: '21vh',\n overflow: 'auto',\n paddingTop: 0,\n paddingBottom: 0,\n '& ul': {\n paddingLeft: '23px',\n marginTop: '3px'\n },\n '& li': {\n paddingLeft: '9px',\n paddingBottom: '8px'\n }\n },\n parents: {\n color: theme.palette.text.primary\n },\n errorWrapper: {\n lineHeight: '18px',\n display: 'flex',\n flexDirection: 'column'\n },\n errorTitle: {\n display: 'flex',\n alignItems: 'center'\n },\n goToIcon: {\n marginLeft: '4px'\n },\n errorsAccordion: {\n backgroundColor: '#FFF4F6',\n borderColor: '#FFB8B3'\n },\n errorsAccordionDetails: {\n color: '#DD2C00'\n },\n warningsAccordion: {\n backgroundColor: '#FFF9ED',\n borderColor: '#FFDD91'\n },\n warningsAccordionDetails: {\n color: '#CC7500'\n },\n icon: {\n marginRight: '8px'\n },\n errorIcon: {\n fill: '#FF1744'\n },\n warningIcon: {\n fill: '#F9A825'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, ReactNode, ElementType} from 'react';\nimport classnames from 'classnames';\nimport {Accordion as Accordion} from '@material-ui/core';\nimport {AccordionSummary as AccordionSummary} from '@material-ui/core';\nimport {AccordionDetails as AccordionDetails} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport useStyles from '../styles';\n\nimport {AttributeError} from '@reltio/mdm-sdk';\n\ntype Props = {\n panels: {\n id: string;\n title: string;\n icon: ReactNode;\n items: AttributeError[];\n accordionClassName: string;\n accordionDetailsClassName: string;\n }[];\n expandedPanelId: string;\n onToggle: (id: string) => (e, isExpanded: boolean) => void;\n ErrorComponent: ElementType;\n};\n\nexport const ErrorsPanel = memo(({panels, expandedPanelId, onToggle, ErrorComponent}: Props) => {\n const styles = useStyles();\n\n return panels.length > 0 ? (\n <div>\n {panels.map(({id, icon, title, items, accordionClassName, accordionDetailsClassName}) => (\n <Accordion\n key={id}\n square\n expanded={expandedPanelId === id}\n onChange={onToggle(id)}\n className={accordionClassName}\n classes={{root: styles.accordion, expanded: styles.accordionExpanded}}\n >\n <AccordionSummary\n classes={{\n root: styles.accordionSummary,\n expanded: styles.accordionSummaryExpanded,\n content: styles.accordionSummaryContent\n }}\n expandIcon={<ExpandMoreIcon />}\n >\n {icon}\n <Typography className={styles.accordionSummaryHeading}>{title}</Typography>\n </AccordionSummary>\n <AccordionDetails className={classnames(styles.accordionDetails, accordionDetailsClassName)}>\n <ul>\n {items.map((error, i) => (\n <ErrorComponent key={i} error={error} />\n ))}\n </ul>\n </AccordionDetails>\n </Accordion>\n ))}\n </div>\n ) : null;\n});\n\nErrorsPanel.displayName = 'ErrorsPanel';\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.245 12.75c0 .825-.467 1.5-1.045 1.5H4.8c-.583 0-1.05-.675-1.05-1.5v-7.5c0-.832.467-1.5 1.05-1.5h8.4c.578 0 1.05.668 1.05 1.5l-.005 7.5zM9.75 9.96v1.642l3-2.805L9.75 6v1.598c-2.918.404-4.08 2.4-4.5 4.402 1.043-1.402 2.415-2.04 4.5-2.04z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","import {equals, identity, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n AttributeError,\n AttributeType,\n AttributeValuePathItemType,\n ErrorSource,\n ErrorType,\n findAttributeTypeByUri,\n Metadata\n} from '@reltio/mdm-sdk';\n\nconst clearError = omit(['deactivated', 'path']);\nexport const areErrorsEqual = (errors1: AttributeError[] = [], errors2: AttributeError[] = []) =>\n errors1.length === errors2.length && equals(errors1.map(clearError), errors2.map(clearError));\n\nexport const getDisplayedErrorMessage = (\n metadata: Metadata,\n {type, source, message, attributeTypeUri = '', attributeType}: AttributeError\n) => {\n if (type === ErrorType.missed && source === ErrorSource.local) {\n const attrType: AttributeType = attributeType || findAttributeTypeByUri(metadata, attributeTypeUri);\n return attrType ? i18n.text('${attribute} is required', {attribute: attrType.label}) : message;\n }\n return message;\n};\n\nexport const getDisplayedErrorPath = ({path: errorPath, uri}: AttributeError) => {\n return errorPath\n ?.slice(0, uri ? errorPath.length - 1 : errorPath.length)\n .filter(({type}) =>\n [AttributeValuePathItemType.attributeValue, AttributeValuePathItemType.relationConnection].includes(type)\n )\n .map(({label}) => label)\n .filter(identity)\n .join(' / ');\n};\n","import React, {memo, useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeError, Metadata} from '@reltio/mdm-sdk';\nimport HyperlinkIcon from '../icons/hyperlink.svg';\nimport {SmallIconButtonWithTooltip, ScrollToErrorContext} from '@reltio/components';\nimport {getDisplayedErrorMessage, getDisplayedErrorPath} from '../helpers';\n\nimport useStyles from '../styles';\n\ntype Props = {\n error: AttributeError;\n};\n\nexport const Error = memo(({error}: Props) => {\n const styles = useStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const isEditableMode: boolean = useSelector(mdmModule.selectors.getIsEditableMode);\n const displayedMessage = getDisplayedErrorMessage(metadata, error);\n const displayedErrorPath = getDisplayedErrorPath(error);\n const {highlightError} = useContext(ScrollToErrorContext);\n const showLink = error.uri || (error.parentUri && error.attributeTypeUri);\n\n return (\n <li>\n <div className={styles.errorWrapper}>\n <span className={styles.errorTitle}>\n {displayedMessage}\n {showLink && isEditableMode && (\n <SmallIconButtonWithTooltip\n icon={HyperlinkIcon}\n size=\"XXS\"\n onClick={() => highlightError(error)}\n tooltipTitle={i18n.text('Go to error')}\n className={styles.goToIcon}\n />\n )}\n </span>\n {displayedErrorPath && <span className={styles.parents}>{displayedErrorPath}</span>}\n </div>\n </li>\n );\n});\n\nError.displayName = 'Error';\n","import {useRef} from 'react';\nimport {areErrorsEqual} from './helpers';\n\nexport const useCachedErrors = (allErrors) => {\n const cacheForAllErrors = useRef(allErrors);\n const areEqualErrors = areErrorsEqual(allErrors, cacheForAllErrors.current);\n if (!areEqualErrors) {\n cacheForAllErrors.current = allErrors;\n }\n return cacheForAllErrors.current;\n};\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {partition} from 'ramda';\nimport ErrorIcon from '@material-ui/icons/Warning';\nimport WarningIcon from '@material-ui/icons/Error';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeError, isCriticalError} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\n\nimport {ErrorsPanel} from './components/ErrorsPanel';\nimport {Error} from './components/Error';\nimport {useCachedErrors} from './useCachedErrors';\n\nexport const ProfileErrorsPanel = () => {\n const styles = useStyles();\n const allErrors = useSelector(mdmModule.selectors.getProfileErrors);\n const cachedAllErrors = useCachedErrors(allErrors);\n\n const [errors, warnings]: [AttributeError[], AttributeError[]] = useMemo(\n () => partition(isCriticalError, cachedAllErrors),\n [cachedAllErrors]\n );\n const [expandedPanelId, setExpandedPanelId] = useState(null);\n const panels = useMemo(\n () =>\n [\n {\n id: 'errors',\n title: i18n.text('${number} ${errors}', {\n number: errors.length,\n errors: errors.length === 1 ? i18n.text('error') : i18n.text('errors')\n }),\n icon: <ErrorIcon className={classnames(styles.icon, styles.errorIcon)} />,\n items: errors,\n accordionClassName: styles.errorsAccordion,\n accordionDetailsClassName: styles.errorsAccordionDetails\n },\n {\n id: 'warnings',\n title: i18n.text('${number} ${warnings}', {\n number: warnings.length,\n warnings: warnings.length === 1 ? i18n.text('warning') : i18n.text('warnings')\n }),\n icon: <WarningIcon className={classnames(styles.icon, styles.warningIcon)} />,\n items: warnings,\n accordionClassName: styles.warningsAccordion,\n accordionDetailsClassName: styles.warningsAccordionDetails\n }\n ].filter(({items}) => items.length > 0),\n [errors, warnings, styles]\n );\n\n useEffect(() => {\n setExpandedPanelId('errors');\n }, [errors]);\n\n const handleChange = useCallback(\n (panelId: string) => (event, isExpanded: boolean) => {\n setExpandedPanelId(isExpanded ? panelId : null);\n },\n []\n );\n\n return panels.length > 0 ? (\n <ErrorsPanel panels={panels} expandedPanelId={expandedPanelId} onToggle={handleChange} ErrorComponent={Error} />\n ) : null;\n};\n","import {useCallback, useEffect, useMemo, useState} from 'react';\nimport hash from 'object-hash';\nimport {useSavedStateForEntityType, useConfigPermissions} from '@reltio/components';\nimport {\n debounce,\n fixNonUniqViewsIds,\n ProfilePerspectiveConfig,\n ProfileViewConfig,\n ReltioGridLayoutItem,\n removeUnsupportedLayoutItems\n} from '@reltio/mdm-sdk';\nimport {ProfileSavedState, Layout} from '../../../types';\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n entityTypeUri?: string;\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;\nexport const useProfileLayout = ({config: profileConfig, entityTypeUri, saveState, getSavedState}: Props) => {\n const [layout, setLayout] = useState<Layout>([]);\n const [views, setViews] = useState<ProfilePerspectiveConfig['views']>([]);\n\n const {canRead} = useConfigPermissions();\n const config: ProfilePerspectiveConfig = useMemo(() => {\n const validatedViews = profileConfig.views.filter(canRead);\n const validatedLayout = removeUnsupportedLayoutItems(profileConfig.layout, validatedViews);\n return {...profileConfig, views: validatedViews, layout: validatedLayout};\n }, [profileConfig, canRead]);\n\n const configHash = useMemo(() => hash(config), [config]);\n const nestedRoute = config?.nestedRoute ? `/${config.nestedRoute}` : '';\n const savedStateKey = entityTypeUri && config ? entityTypeUri + nestedRoute : null;\n\n const getSavedStateAndFix = useCallback(() => {\n return getSavedState().then((state) => (state.layout ? {} : state));\n }, [getSavedState]);\n const debouncedSaveState = useCallback(debounce(saveState, SAVE_STATE_DEBOUNCE_DELAY), [saveState]) as (\n state: Record<string, ProfileSavedState>\n ) => void;\n const {\n isLoaded,\n savedState = emptyState,\n updateSavedState\n } = useSavedStateForEntityType<ProfileSavedState>({\n getSavedState: getSavedStateAndFix,\n saveState: debouncedSaveState,\n entityTypeUri: savedStateKey\n });\n\n const handleLayoutChange = useCallback(\n (layout: Layout) => {\n updateSavedState({layout, views, configHash});\n setLayout(layout);\n },\n [updateSavedState, configHash, views]\n );\n\n useEffect(() => {\n if (isLoaded) {\n const isConfigChanged = configHash !== savedState.configHash;\n const {views: fixedViews, layout: fixedLayout} = fixNonUniqViewsIds<\n ProfileViewConfig,\n ReltioGridLayoutItem\n >({\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 return {views, layout, isLoaded, handleLayoutChange};\n};\n","import {useWorkflowDefaultActionSuccessHandler, useWorkflowTasks as useCommonWorkflowTasks} from '@reltio/components';\nimport {useMemo} from 'react';\n\nexport const useWorkflowTasks = (workflowConfig: Parameters<typeof useCommonWorkflowTasks>[0]) => {\n const commonWorkflowTasks = useCommonWorkflowTasks(workflowConfig);\n const defaultActionSuccessHandler = useWorkflowDefaultActionSuccessHandler();\n\n return useMemo(\n () => ({\n ...commonWorkflowTasks,\n onActionSuccess: defaultActionSuccessHandler\n }),\n [commonWorkflowTasks, defaultActionSuccessHandler]\n );\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 emptyState: {\n backgroundColor: '#FAFAFA',\n height: '100%'\n },\n profileWrapper: ({maxWidth}: Props) => ({\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n maxWidth: maxWidth ? `${maxWidth}px` : '100%'\n }),\n profileContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import React, {memo, useContext, useMemo, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Entity, getProfileObjectIdsForCollaboration, ProfilePerspectiveConfig} from '@reltio/mdm-sdk';\nimport mdm, {HistoryEvent} from '@reltio/mdm-module';\nimport {\n CollaborationContext,\n WorkflowTasksContext,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n EmptyState,\n LinearLoadIndicator,\n ProfilePerspectiveViewContext,\n SearchValueContext,\n useCollaboration,\n HistoryDiffContext,\n useHistoryDiff,\n useHistorySlice,\n ScrollToErrorProvider,\n CollaborationContextProvider\n} from '@reltio/components';\nimport {ProfileSavedState} from '../../types';\n\nimport {ProfileLayout} from '../ProfileLayout';\nimport {Notifications} from '../Notifications';\nimport {PerspectiveProfileBand} from '../PerspectiveProfileBand';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\nimport {ProfileErrorsPanel} from '../ProfileErrorsPanel';\nimport {useProfileValidation} from '../hooks/useProfileValidation';\nimport {useProfileLayout} from './hooks/useProfileLayout';\nimport {useWorkflowTasks} from './hooks/useWorkflowTasks';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: () => Promise<Record<string, ProfileSavedState>>;\n commentId?: string;\n};\n\nconst ProfilePerspectiveView = memo(({config, saveState, getSavedState, commentId}: Props) => {\n const {maxWidth, profileBand, workflow} = config || {};\n const styles = useStyles({maxWidth});\n\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n const isHistoryActive = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const keywordValue = useSelector(mdm.selectors.getSearchKeyword)?.value || '';\n\n const dispatch = useDispatch();\n const historyDiff = useHistoryDiff();\n const workflowTasks = useWorkflowTasks(workflow);\n\n const {type: entityTypeUri, uri: entityUri} = entity || {};\n const objectIds = useMemo(() => getProfileObjectIdsForCollaboration(entity), [entity]);\n const emptyCollaboration = useContext(CollaborationContext);\n const collaboration = useCollaboration({objectIds});\n\n const {views, layout, isLoaded, handleLayoutChange} = useProfileLayout({\n config,\n entityTypeUri,\n saveState,\n getSavedState\n });\n useHistorySlice({entity, historyEvent});\n useProfileValidation();\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 return (\n <ProfilePerspectiveViewContext.Provider value={true}>\n <CollaborationContextProvider collaboration={isHistoryActive ? emptyCollaboration : collaboration}>\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <HistoryDiffContext.Provider value={historyDiff}>\n <SearchValueContext.Provider value={keywordValue}>\n <ScrollToErrorProvider>\n <div className={styles.perspectiveView}>\n {(!isLoaded || !entityUri) && <LinearLoadIndicator />}\n {isLoaded && entityUri ? (\n <div className={styles.profileContainer}>\n <div className={styles.profileWrapper}>\n <PerspectiveProfileBand profileBandConfig={profileBand} />\n {!isHistoryActive && <ProfileErrorsPanel />}\n <ProfileLayout\n maxWidth={maxWidth}\n views={views}\n layout={layout}\n entityUri={entityUri}\n onLayoutChanged={handleLayoutChange}\n />\n </div>\n <RightSidePanel commentId={commentId} />\n </div>\n ) : (\n <div className={styles.emptyState}>\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.NO_DATA}\n text={i18n.text('No data to display.')}\n variant={EMPTY_STATE_VARIANTS.embedded}\n />\n </div>\n )}\n <Notifications />\n </div>\n </ScrollToErrorProvider>\n </SearchValueContext.Provider>\n </HistoryDiffContext.Provider>\n </WorkflowTasksContext.Provider>\n </CollaborationContextProvider>\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, useContext, 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 {\n ErrorPopup,\n FeaturesContext,\n SandboxAPIContext,\n SnackbarContext,\n useSnackbar,\n ViewIdContext\n} from '@reltio/components';\nimport {\n convertOldProfileConfig,\n ProfilePerspectiveConfig,\n promisifyCallback,\n QxSandboxApi,\n userPreferencesComparator\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {ProfileSavedState} from '../types';\nimport ProfilePerspectiveView from '../components/ProfilePerspectiveView';\nimport {equalsState} from './helpers';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'profilePerspective',\n disableGlobal: true\n});\n\nuserPreferencesComparator.register('profile', equalsState);\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 commentId?: string;\n};\n\nconst ProfilePerspective = ({\n config,\n store,\n onResize = identity,\n saveState,\n getSavedState,\n qxSandboxApi,\n commentId\n}: 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 const featuresContext = useContext(FeaturesContext);\n const showDescription = mdmModule.selectors.getShowAttributeDescription(store.getState());\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\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 <FeaturesContext.Provider value={features}>\n <>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) =>\n onResize(Math.floor(width), Math.floor(height))\n }\n />\n {processedConfig && (\n <ProfilePerspectiveView\n config={processedConfig}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n commentId={commentId}\n />\n )}\n <ErrorPopup showErrorFromStore={true} />\n <SnackbarRenderer />\n </>\n </FeaturesContext.Provider>\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </SandboxAPIContext.Provider>\n </SnackbarContext.Provider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default ProfilePerspective;\n","import {evolve, ifElse, map, omit, pipe, propEq, sort} from 'ramda';\nimport {looseEquals} from '@reltio/mdm-sdk';\nimport {Layout, ProfileSavedState} from '../types';\n\nexport const equalsState = (\n newState: Record<string, ProfileSavedState>,\n savedState: Record<string, ProfileSavedState> | null\n) => {\n const sortLayoutItems = (layout: Layout) =>\n sort((a, b) => (a.x > b.x || (a.x === b.x && a.y > b.y) ? 1 : -1), layout);\n const prepareState = map((item: ProfileSavedState) =>\n evolve(\n {\n layout: pipe(\n sortLayoutItems,\n map(\n ifElse(\n propEq('autosizing', true),\n omit(['y', 'height', 'minHeight', 'maxHeight']),\n omit(['y', 'minHeight', 'maxHeight'])\n )\n )\n )\n },\n item\n )\n );\n return looseEquals(prepareState(newState), prepareState(savedState));\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n titleContainer: {\n overflow: 'hidden',\n fontSize: '16px',\n fontWeight: 'normal',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n alignItems: 'center',\n display: 'flex',\n minHeight: '48px',\n color: theme.palette.text.secondary\n },\n link: {\n fontSize: '16px',\n fontWeight: 'normal'\n },\n icon: {\n height: '18px',\n color: theme.palette.text.secondary\n },\n totalCaption: {\n lineHeight: 'inherit',\n fontSize: '14px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px'\n },\n totalNumber: {\n fontSize: '16px',\n color: 'rgba(0,0,0,0.87)',\n marginRight: '5px',\n fontWeight: 500\n }\n}));\n","import React, {useCallback, useContext} from 'react';\nimport {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {FacetViewHeader, Spacer, ViewIdContext} from '@reltio/components';\nimport {Link as Link} from '@material-ui/core';\nimport ArrowForwardIosRoundedIcon from '@material-ui/icons/ArrowForwardIosRounded';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total?: number;\n};\n\nexport const TagListHeader = ({total = 0}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const viewId = useContext(ViewIdContext);\n\n const switchToProfile = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'profile', viewId}));\n }, [dispatch, viewId]);\n\n return (\n <FacetViewHeader title=\"\">\n <div className={styles.titleContainer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.link}\n onClick={switchToProfile}\n underline=\"none\"\n >\n {i18n.text('Profile')}\n </Link>\n <ArrowForwardIosRoundedIcon className={styles.icon} />\n {i18n.text('Tags')}\n </div>\n <Spacer />\n <Typography className={styles.totalCaption} variant=\"caption\">\n <span className={styles.totalNumber}>{i18n.number(total, '0,0')}</span>\n {i18n.text('total profiles')}\n </Typography>\n </FacetViewHeader>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n toolbar: {\n display: 'flex',\n flexShrink: 0,\n background: 'white',\n borderBottom: '1px solid rgba(0,0,0,0.1)',\n boxSizing: 'border-box',\n paddingLeft: '16px'\n },\n avatar: {\n color: 'rgba(0, 0, 0, 0.38)',\n marginRight: '12px'\n },\n label: {\n fontSize: '20px',\n letterSpacing: '0.25px',\n lineHeight: '1.2',\n fontWeight: 500,\n color: theme.palette.text.primary,\n wordBreak: 'break-word'\n }\n}));\n","import React from 'react';\nimport TagIcon from '@material-ui/icons/LocalOffer';\nimport {Toolbar as Toolbar} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n};\n\nexport const TagProfileBand = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={styles.toolbar}>\n <TagIcon className={styles.avatar} />\n <Typography variant=\"h6\" className={styles.label}>\n {label}\n </Typography>\n </Toolbar>\n );\n};\n","import {useCallback, useMemo} from 'react';\nimport {map} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n Entity,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotals,\n getTotalFromDataTenant,\n TotalResponse,\n SearchFilter,\n GlobalSearchRequestOptions,\n getDataTenantFromEntityUri,\n enrichEntityWithDataTenant\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entityUri: string;\n tag: string;\n};\n\nexport const useTagsProvider = ({entityUri, tag}: Props) => {\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const dtssPath: string = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenant = useMemo(() => getDataTenantFromEntityUri(entityUri), [entityUri]);\n const filters: SearchFilter[] = useMemo(() => {\n return [\n {\n filter: 'equals',\n fieldName: 'tags',\n values: [tag]\n }\n ];\n }, [tag]);\n\n const isDT = !!dataTenant;\n\n const getEntities = useCallback(\n (filters: SearchFilter[] = [], options = {}): Promise<Entity[]> => {\n const requestOptions = {\n select: 'uri,label,type,secondaryLabel,defaultProfilePicValue,startDate,endDate',\n ...options\n };\n return isDT\n ? getFilteredEntitiesFromDataTenant({\n filters,\n options: requestOptions,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n }).then(map(enrichEntityWithDataTenant(dataTenant)))\n : getFilteredEntities(filters, requestOptions);\n },\n [isDT, dataTenant, tenant, dtssPath]\n );\n\n const requestEntities = useCallback(\n (max, offset): Promise<Entity[]> => {\n return getEntities(filters, {offset, max, ...globalSearchRequestOptions});\n },\n [filters, globalSearchRequestOptions, getEntities]\n );\n\n const requestTotal = useCallback((): Promise<number> => {\n const options = globalSearchRequestOptions;\n return (isDT\n ? getTotalFromDataTenant({\n filters,\n options,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n })\n : getTotals(filters, options)\n ).then((json) => (json as TotalResponse).total);\n }, [filters, globalSearchRequestOptions, isDT, dataTenant, tenant, dtssPath]);\n\n return {requestEntities, requestTotal};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n tagsContainer: {\n display: 'flex'\n },\n fullHeight: {\n flexGrow: 1,\n height: 0\n },\n tagsView: {\n margin: '16px',\n width: '100%',\n paddingTop: '4px'\n },\n listContainer: {\n flex: 1,\n display: 'flex',\n overflow: 'hidden',\n position: 'relative',\n flexDirection: 'column',\n minHeight: '4px'\n },\n entitiesList: {\n overflowY: 'auto',\n flexGrow: 1\n },\n pagination: {\n flexGrow: 0\n }\n}));\n","import React, {memo, useEffect, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdmModule from '@reltio/mdm-module';\nimport {GlobalSearchRequestOptions} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, LinearLoadIndicator, ProfilesList} from '@reltio/components';\nimport {TagListHeader} from './components/TagListHeader';\nimport {TagProfileBand} from './components/TagProfileBand';\nimport {useTag} from './hooks/useTag';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [25, 50, 100];\n\ntype Props = {\n tag?: string;\n entityUri?: string;\n};\n\nconst TagPerspectiveView = memo(({tag, entityUri}: Props) => {\n const styles = useStyles();\n\n const [rowsPerPage, setRowsPerPage] = useState(ROWS_PER_PAGE_OPTIONS[0]);\n const [page, setPage] = useState(0);\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n\n useEffect(() => {\n setPage(0);\n }, [tag, entityUri, globalSearchRequestOptions]);\n\n const {isLoading, total, entities} = useTag({tag, entityUri, page, rowsPerPage});\n const refScrollBlock = useRef(null);\n\n useEffect(() => {\n if (refScrollBlock.current) {\n refScrollBlock.current.scrollTop = 0;\n }\n }, [entities]);\n\n const hasPagination = total > ROWS_PER_PAGE_OPTIONS[0];\n\n return (\n <div className={styles.perspectiveView}>\n <TagProfileBand label={tag} />\n <div className={classnames(styles.tagsContainer, {[styles.fullHeight]: hasPagination})}>\n <BasicView className={styles.tagsView}>\n <TagListHeader total={total} />\n <div className={styles.listContainer}>\n {isLoading && <LinearLoadIndicator />}\n {total > 0 && (\n <div className={styles.entitiesList} ref={refScrollBlock}>\n <ProfilesList entities={entities} />\n </div>\n )}\n {hasPagination && (\n <div className={styles.pagination}>\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n onChangeRowsPerPage={setRowsPerPage}\n />\n </div>\n )}\n </div>\n </BasicView>\n </div>\n </div>\n );\n});\n\nTagPerspectiveView.displayName = 'TagPerspectiveView';\n\nexport {TagPerspectiveView};\n","import {useCallback, useEffect, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useDispatch} from 'react-redux';\nimport {useSafePromise} from '@reltio/components';\nimport {ui} from '@reltio/mdm-module';\nimport {Entity, getRequestErrorMessage} from '@reltio/mdm-sdk';\nimport {useTagsProvider} from './useTagsProvider';\n\ntype Props = {\n tag: string;\n entityUri: string;\n page: number;\n rowsPerPage: number;\n};\n\nexport const useTag = ({tag, entityUri, page = 0, rowsPerPage = 50}: Props) => {\n const dispatch = useDispatch();\n\n const safeRequestTotalPromise = useSafePromise();\n const safeRequestEntitiesPromise = useSafePromise();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [total, setTotal] = useState<number>(0);\n const [entities, setEntities] = useState<Entity[]>([]);\n\n const {requestEntities, requestTotal} = useTagsProvider({entityUri, tag});\n\n const onError = useCallback(\n (e) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(e, i18n.text('Something went wrong'))));\n setTotal(0);\n },\n [dispatch]\n );\n\n useEffect(() => {\n safeRequestTotalPromise(requestTotal()).then(setTotal).catch(onError);\n }, [requestTotal, safeRequestTotalPromise, onError]);\n\n useEffect(() => {\n setIsLoading(true);\n safeRequestEntitiesPromise(requestEntities(rowsPerPage, page * rowsPerPage))\n .then(setEntities)\n .catch(onError)\n .finally(() => setIsLoading(false));\n }, [page, rowsPerPage, requestEntities, safeRequestEntitiesPromise, onError]);\n\n return {isLoading, total, entities};\n};\n","import React from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\nimport {identity} from 'ramda';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {TagPerspectiveConfig} from '@reltio/mdm-sdk';\nimport TagPerspectiveView from '../components/TagPerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'tagPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: TagPerspectiveConfig;\n tag?: string;\n entityUri?: string;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n};\n\nconst TagPerspective = ({config, tag, entityUri, store, onResize = identity}: Props) => {\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <TagPerspectiveView tag={tag} entityUri={entityUri} />}\n <ErrorPopup showErrorFromStore={true} />\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default TagPerspective;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n actionsWrapper: {\n display: 'flex',\n '& button + button': {\n width: '88px',\n marginLeft: '8px'\n }\n }\n}));\n","import React, {useContext, useMemo} from 'react';\nimport {ProfileBand, TaskActionButtons, WorkflowTasksContext} from '@reltio/components';\nimport {useSelector} from 'react-redux';\nimport {Entity, getEntityUriFromDCRUri} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\nexport const DCRProfileBand = () => {\n const styles = useStyles();\n\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {tasks} = useContext(WorkflowTasksContext);\n const entityTask = useMemo(() => {\n return tasks?.find((task) => task.objectURIs.includes(getEntityUriFromDCRUri(entity.uri)));\n }, [entity.uri, tasks]);\n\n return (\n <ProfileBand entity={entity}>\n <div className={styles.actionsWrapper}>{entityTask && <TaskActionButtons task={entityTask} />}</div>\n </ProfileBand>\n );\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 perspectiveContainer: {\n display: 'flex',\n flexGrow: 1,\n overflow: 'hidden'\n },\n attributesWrapper: {\n margin: '15px',\n flexGrow: 1,\n overflowY: 'auto',\n backgroundColor: '#FAFAFA'\n },\n contentWrapper: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1\n }\n}));\n","import {useWorkflowTasks as useCommonWorkflowTasks} from '@reltio/components';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getEntityUriFromDCRUri} from '@reltio/mdm-sdk';\nimport {useCallback, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nexport const useWorkflowTasks = (workflowConfig: Parameters<typeof useCommonWorkflowTasks>[0]) => {\n const dispatch = useDispatch();\n const entityUri: string = useSelector(mdmModule.selectors.getEntityUri);\n const commonWorkflowTasks = useCommonWorkflowTasks(workflowConfig);\n\n const actionSuccessHandler = useCallback(\n (action: string) => {\n if (action === 'Reject') {\n dispatch(ui.actions.openPerspective({perspectiveId: null, viewId: null}));\n }\n if (action === 'Approve') {\n dispatch(ui.actions.openEntity({uri: getEntityUriFromDCRUri(entityUri), viewId: null}));\n }\n },\n [dispatch, entityUri]\n );\n\n return useMemo(\n () => ({\n ...commonWorkflowTasks,\n onActionSuccess: actionSuccessHandler\n }),\n [commonWorkflowTasks, actionSuccessHandler]\n );\n};\n","import React, {memo, useEffect} from 'react';\nimport {Entity} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\nimport {DCRProfileBand} from './components/DCRProfileBand/DCRProfileBand';\nimport {\n AttributesView,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n EmptyState,\n LinearLoadIndicator,\n WorkflowTasksContext\n} from '@reltio/components';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\n\nimport {useStyles} from './styles';\nimport {useWorkflowTasks} from './hooks/useWorkflowTasks';\n\nconst workflowConfig = {processTypes: ['dataChangeRequestReview']};\n\nexport const DCRReviewPerspectiveView = memo(() => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const workflowTasks = useWorkflowTasks(workflowConfig);\n\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n\n useEffect(() => {\n dispatch(\n profile.sidePanelViews.actions.sidePanelViewsLoaded([\n {\n id: 'common',\n views: [\n {\n point: 'com.reltio.plugins.ui.view',\n id: 'com.reltio.plugins.entity.side.WorkflowsView',\n class: 'com.reltio.plugins.entity.side.WorkflowsView'\n }\n ]\n }\n ])\n );\n }, [dispatch]);\n\n const isLoaded = !workflowTasks.loading && !!entity.uri;\n\n return (\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <div className={styles.perspectiveView}>\n {!isLoaded && <LinearLoadIndicator />}\n <div className={styles.perspectiveContainer}>\n {isLoaded ? (\n <>\n <div className={styles.contentWrapper}>\n <DCRProfileBand />\n <div className={styles.attributesWrapper}>\n <AttributesView />\n </div>\n </div>\n <RightSidePanel />\n </>\n ) : (\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 )}\n </div>\n </div>\n </WorkflowTasksContext.Provider>\n );\n});\n\nDCRReviewPerspectiveView.displayName = 'DCRReviewPerspectiveView';\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 {DCRReviewPerspectiveConfig} from '@reltio/mdm-sdk';\nimport MomentUtils from '@date-io/moment';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport DCRReviewPerspectiveView from '../components/DCRReviewPerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'dcrReviewPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: DCRReviewPerspectiveConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n};\n\nconst DCRReviewPerspective = ({config, store, onResize = identity}: Props) => {\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\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 <DCRReviewPerspectiveView />\n <ErrorPopup showErrorFromStore={true} />\n </>\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default DCRReviewPerspective;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n addButton: {\n marginLeft: '12px',\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n },\n label: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n }\n});\n","import AddIcon from '@material-ui/icons/Add';\nimport {Button as Button} from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst AddRelationButton = ({onClick}) => {\n const styles = useStyles();\n return (\n <Button color=\"primary\" className={styles.addButton} onClick={onClick}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.label}>{i18n.text('Add')}</div>\n </Button>\n );\n};\n\nAddRelationButton.propTypes = {\n onClick: PropTypes.func\n};\n\nexport default AddRelationButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nconst inactiveStyle = {\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles((theme) => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n entityCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%'\n },\n entityLabel: {\n fontSize: '15px',\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n '$row-cell--removed &': removedStyle,\n '$row-cell--inactive &': inactiveStyle\n },\n entityAvatar: {\n transform: 'scale(0.7)',\n margin: '0 10px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n description: {\n marginLeft: '-22px'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > :not($entityCell)': removedStyle\n },\n 'row-cell--inactive': inactiveStyle\n}));\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classnames from 'classnames';\nimport {checkRemoved, isActiveObject} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst RowCellRenderer = ({cell, CellValueRenderer, rowValue: {connection}, isSorted, ...otherProps}) => {\n const styles = useStyles();\n const isRemoved = checkRemoved(connection);\n const isActive = isActiveObject(connection.relation) && isActiveObject(connection.entity);\n\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved,\n [styles['row-cell--inactive']]: !isActive\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nRowCellRenderer.propTypes = {\n rowValue: PropTypes.object,\n cell: PropTypes.object,\n CellValueRenderer: PropTypes.elementType,\n isSorted: PropTypes.bool\n};\n\nexport default RowCellRenderer;\n","import PropTypes from 'prop-types';\nimport React, {useContext} from 'react';\nimport {ui} from '@reltio/mdm-module';\nimport {always, pipe} from 'ramda';\nimport {useDispatch} from 'react-redux';\nimport {useStyles} from './styles';\nimport {EntityTypeType, getEntityUriForLink, getLabel} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, ExpandedValueTooltip, ViewIdContext} from '@reltio/components';\n\nconst EntityProfileRenderer = ({value: {entityType, entity}}) => {\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const styles = useStyles();\n const entityLabel = getLabel(entity.entityLabel);\n const preparedUri = getEntityUriForLink({uri: entity.entityUri, dataTenant: entity.dataTenant});\n return (\n <div className={styles.entityCell}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <ExpandedValueTooltip value={entityLabel}>\n <span\n className={styles.entityLabel}\n onClick={pipe(always({uri: preparedUri, viewId}), ui.actions.openEntity, dispatch)}\n >\n {entityLabel}\n </span>\n </ExpandedValueTooltip>\n </div>\n );\n};\n\nEntityProfileRenderer.propTypes = {\n value: PropTypes.shape({\n entity: PropTypes.shape({\n entityUri: PropTypes.string,\n entityLabel: PropTypes.string\n }),\n entityType: EntityTypeType\n })\n};\n\nexport default EntityProfileRenderer;\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, DescriptionIcon} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n const {description} = props?.headCellData || {};\n\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n <DescriptionIcon description={description} className={styles.description} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import {getOvAttributeValuesByPath, getReadableAttributesList} from '@reltio/mdm-sdk';\nimport {chain, find, map, path, pipe, propEq, uniq} from 'ramda';\n\nconst getRelationTypes = pipe(\n map((rel) => rel.uri || rel),\n uniq\n);\n\nconst getRelationsAttributesFromMetadata = ({content: {inRelations = [], outRelations = []}}, {relationTypes}) =>\n pipe(\n getRelationTypes,\n chain((relationType) => pipe(find(propEq('uri', relationType)), getReadableAttributesList)(relationTypes))\n )([...inRelations, ...outRelations]);\n\nconst getRelationAttributeValues = (attrPath, relation) =>\n pipe(path(['object', 'attributes']), getOvAttributeValuesByPath(attrPath))(relation);\n\nexport {getRelationsAttributesFromMetadata, getRelationAttributeValues};\n","import EntityProfileRenderer from '../cell-renderers/EntityProfileRenderer';\nimport HeadCellRenderer from '../cell-renderers/HeadCellRenderer';\nimport {DefaultCellValueRenderer} from '@reltio/components';\nimport {assoc, map, pipe, reduce, slice, split} from 'ramda';\nimport {getEntityType, getRelationTypeLabelFromMetadata} from '@reltio/mdm-sdk';\nimport {getRelationAttributeValues} from '../../../core/relations';\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getRowValueByColumnId = (columnId, {entity, relation}, metadata) => {\n switch (columnId) {\n case 'entity.label':\n return {entity, entityType: getEntityType(metadata, entity.entityType)};\n case 'relation.label':\n return relation.relationLabel || getRelationTypeLabelFromMetadata(metadata, relation.relationType);\n case 'relation.activeness.startDate':\n return relation.startDate;\n case 'relation.activeness.endDate':\n return relation.endDate;\n default: {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getRelationAttributeValues(attrPath, relation);\n }\n }\n};\n\nconst getBasicTableRowsData = (connections, columnsData, metadata) =>\n connections.map((connection) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, connection, metadata), acc), {}),\n assoc('connection', connection)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (columnId.startsWith('relation.attributes')) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRenderer = (columnId) => {\n switch (columnId) {\n case 'entity.label':\n return EntityProfileRenderer;\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(columnData.id)\n});\n\nconst getBasicTableColumnsData = map(getColumnDataByColumnId);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n tableContainer: {\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n\n emptyData: {\n marginBottom: '30px'\n },\n\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {IconButton as IconButton} from '@material-ui/core';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport i18n from 'ui-i18n';\n\nexport const EditButtons = ({canUpdate, canRemove, handleEditRelation, handleRemoveRelation}) => (\n <>\n {canUpdate && (\n <Tooltip title={i18n.text('Edit')}>\n <IconButton onClick={handleEditRelation}>\n <EditIcon />\n </IconButton>\n </Tooltip>\n )}\n {canRemove && (\n <Tooltip title={i18n.text('Remove')}>\n <IconButton onClick={handleRemoveRelation}>\n <DeleteIcon />\n </IconButton>\n </Tooltip>\n )}\n </>\n);\nEditButtons.propTypes = {\n canUpdate: PropTypes.bool,\n canRemove: PropTypes.bool,\n handleEditRelation: PropTypes.func,\n handleRemoveRelation: PropTypes.func\n};\n\nexport default EditButtons;\n","import PropTypes from 'prop-types';\nimport React, {useCallback, useMemo, useState} from 'react';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {BasicTable, ColumnFilterType, ColumnsDataType, SortingType} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './helpers/dataHelpers';\nimport {useStyles} from './styles';\nimport {ConnectionType, MetadataType} from '@reltio/mdm-sdk';\nimport {path} from 'ramda';\nimport {checkRelationPermission} from './helpers/buttonsHelper';\nimport EditButtons from './EditButtons';\n\nconst MAX_HEIGHT = 477;\n\nconst RelationsTable = ({\n mode,\n columnsData,\n connections,\n metadata,\n sorting,\n onSort,\n filters,\n onFilter,\n onEditRelation,\n onRemoveRelation,\n basicTableRef,\n allowOnlyCreateNew\n}) => {\n const tableRowsData = useMemo(() => getBasicTableRowsData(connections, columnsData, metadata), [\n connections,\n columnsData,\n metadata\n ]);\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode,\n onRemoveRelation,\n onEditRelation,\n metadata,\n allowOnlyCreateNew,\n connection: path([hoverRowIndex, 'connection'], tableRowsData)\n });\n\n const handleOnRowHover = useCallback((rowIndex) => setHoverRowIndex(rowIndex), []);\n const handleEditRelation = useCallback(() => onEditRelation(path([hoverRowIndex, 'connection'], tableRowsData)), [\n hoverRowIndex,\n onEditRelation,\n tableRowsData\n ]);\n const handleRemoveRelation = useCallback(\n () => onRemoveRelation(path([hoverRowIndex, 'connection', 'relation', 'relationUri'], tableRowsData)),\n [hoverRowIndex, onRemoveRelation, tableRowsData]\n );\n\n const hoveredRowRightContent =\n canRemove || canUpdate ? (\n <EditButtons\n handleEditRelation={handleEditRelation}\n handleRemoveRelation={handleRemoveRelation}\n canRemove={canRemove}\n canUpdate={canUpdate}\n />\n ) : undefined;\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n autosizing\n maxHeight={MAX_HEIGHT}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n renderRowCell={renderRowCell}\n onRowHover={handleOnRowHover}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n ref={basicTableRef}\n resizeDebounceDelay={150}\n />\n </div>\n );\n};\n\nRelationsTable.propTypes = {\n mode: PropTypes.string,\n columnsData: ColumnsDataType,\n connections: PropTypes.arrayOf(ConnectionType),\n metadata: MetadataType,\n filters: PropTypes.objectOf(ColumnFilterType),\n onFilter: PropTypes.func,\n sorting: SortingType,\n onSort: PropTypes.func,\n onEditRelation: PropTypes.func,\n onRemoveRelation: PropTypes.func,\n basicTableRef: PropTypes.shape({current: PropTypes.object}),\n allowOnlyCreateNew: PropTypes.bool\n};\n\nexport default RelationsTable;\n","import {profile} from '@reltio/mdm-module';\nimport {checkMetadataForDelete, checkMetadataForUpdate, checkNew, checkRemoved, getRelationType} from '@reltio/mdm-sdk';\n\nconst checkRelationPermission = ({\n metadata,\n mode,\n connection,\n onRemoveRelation,\n onEditRelation,\n allowOnlyCreateNew\n}) => {\n const isNew = checkNew(connection);\n const isEditableMode = profile.mode.selectors.getIsEditableMode(mode);\n if (isEditableMode && connection && (!allowOnlyCreateNew || isNew)) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n\nexport {checkRelationPermission};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n popupContent: {\n padding: '19px 23px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Popover as Popover} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n showInactive: boolean;\n onShowInactiveChange: (value: boolean) => void;\n};\n\nconst MoreButton = ({className, showInactive, onShowInactiveChange}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n return (\n <>\n <SmallIconButtonWithTooltip\n className={className}\n ref={buttonRef}\n tooltipTitle={i18n.text('More')}\n icon={MoreVertIcon}\n onClick={togglePopup}\n size=\"L\"\n />\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={(e) => onShowInactiveChange(e.target.checked)}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n </Popover>\n </>\n );\n};\n\nexport default MoreButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 4px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n },\n moreButton: {\n marginLeft: '-6px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n FacetViewHeader,\n ColumnsDataType,\n ColumnsSettings,\n FilterButton,\n HideOnShrink,\n VerticalDivider,\n ExpandableSearchInput\n} from '@reltio/components';\nimport MoreButton from './MoreButton/MoreButton';\nimport {useStyles} from './styles';\n\nconst RelationsTableHeader = ({\n title,\n total,\n searchQuery,\n onChangeSearchQuery,\n filtersEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n onChangeColumns,\n showInactive,\n onChangeShowInactive\n}) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <HideOnShrink widthToHide={500}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} entities', {count: total})\n : i18n.text('${count} entity', {count: total})}\n </Typography>\n </HideOnShrink>\n <ExpandableSearchInput query={searchQuery} onChange={onChangeSearchQuery} />\n <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n <MoreButton\n className={styles.moreButton}\n showInactive={showInactive}\n onShowInactiveChange={onChangeShowInactive}\n />\n </FacetViewHeader>\n );\n};\n\nRelationsTableHeader.propTypes = {\n title: PropTypes.string,\n total: PropTypes.number,\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func,\n searchQuery: PropTypes.string,\n onChangeSearchQuery: PropTypes.func,\n filtersEnabled: PropTypes.bool,\n onToggleFilters: PropTypes.func,\n showInactive: PropTypes.bool,\n onChangeShowInactive: PropTypes.func\n};\n\nexport default RelationsTableHeader;\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\nconst CHANGE_SHOW_INACTIVE = 'CHANGE_SHOW_INACTIVE';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY),\n changeShowInactive: createStandardAction(CHANGE_SHOW_INACTIVE)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n case CHANGE_SHOW_INACTIVE:\n return {...state, showInactive: action.payload};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {ActivenessAttrTypes, attributeUriToSearchUri, DataTypes, getAttrDataTypeDefinition} from '@reltio/mdm-sdk';\nimport {concat, map, pipe, prop, subtract, uniqBy} from 'ramda';\nimport {getRelationsAttributesFromMetadata} from '../../core/relations';\nimport i18n from 'ui-i18n';\n\nconst ROWS_PER_PAGE_OPTIONS = [10, 25, 50, 100];\nconst getRowsPerPageOptions = (defaultRowsPerPage) =>\n ROWS_PER_PAGE_OPTIONS.filter((option) => option !== defaultRowsPerPage)\n .concat(defaultRowsPerPage)\n .sort(subtract);\n\nconst DEFAULT_COLUMNS_DATA = [\n {\n id: 'entity.label',\n get label() {\n return i18n.text('Entity label');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false\n },\n {\n id: 'relation.label',\n get label() {\n return i18n.text('Directional label');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n }\n },\n {\n id: 'relation.activeness.startDate',\n get label() {\n return i18n.text('Start date');\n },\n dataTypeDefinition: ActivenessAttrTypes.startDate\n },\n {\n id: 'relation.activeness.endDate',\n get label() {\n return i18n.text('End date');\n },\n dataTypeDefinition: ActivenessAttrTypes.endDate\n }\n];\n\nconst getColumnIdFromAttrUri = pipe(attributeUriToSearchUri, concat('relation.'));\n\nconst getColumnsDataFromRelationAttributes = pipe(\n map((attr) => ({\n id: getColumnIdFromAttrUri(attr.uri),\n label: attr.label,\n description: attr.description,\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n })),\n uniqBy(prop('id'))\n);\n\nconst getColumnsData = pipe(\n getRelationsAttributesFromMetadata,\n getColumnsDataFromRelationAttributes,\n concat(DEFAULT_COLUMNS_DATA)\n);\n\nexport {getRowsPerPageOptions, DEFAULT_COLUMNS_DATA, getColumnsData};\n","import {buildColumnsFilter} from '@reltio/components';\nimport {\n checkMetadataPermission,\n FilterBuilder,\n filterValueToQueryStringWithQuotes,\n Maybe,\n MetadataPermissions\n} from '@reltio/mdm-sdk';\nimport {curry, either, evolve, indexBy, keys, path, pipe, prop, unless} from 'ramda';\n\nconst getUri = (item) => item.uri || item;\nconst containsUri = (uri) => (item) => getUri(item) === uri;\n\nexport const parseUris = curry((metadata, data) => {\n const parseUri = (acc, item) => {\n let uri = getUri(item),\n shouldSkipDescendantUris = false;\n if (uri.startsWith('!')) {\n uri = uri.slice(1);\n shouldSkipDescendantUris = true;\n }\n const hasValidMetadata = metadata[uri] && checkMetadataPermission(MetadataPermissions.READ, metadata[uri]);\n const nextAcc =\n acc.find(containsUri(uri)) || !hasValidMetadata ? acc : acc.concat(item.uri ? {...item, uri} : uri);\n // prettier-ignore\n return shouldSkipDescendantUris\n ? nextAcc\n : keys(metadata).reduce(\n (acc, descUri) =>\n metadata[descUri].extendsTypeURI === uri && !acc.find(containsUri(descUri))\n ? parseUri(acc, descUri)\n : acc,\n nextAcc\n );\n };\n\n return data.reduce(parseUri, []);\n});\n\nexport const deriveEntityTypesFromRelations = curry((relationTypes, content) => {\n const deriveEntitiesFromRelationsMetadata = (objectType, relations = []) =>\n relations.reduce((acc, relation) => {\n const relationTypeUri = getUri(relation);\n const entityTypeUri = path([relationTypeUri, objectType, 'objectTypeUri'], relationTypes);\n return !entityTypeUri || acc.find(containsUri(entityTypeUri)) ? acc : acc.concat(entityTypeUri);\n }, []);\n\n return {\n ...content,\n entityTypes: [\n ...deriveEntitiesFromRelationsMetadata('startObject', content.inRelations),\n ...deriveEntitiesFromRelationsMetadata('endObject', content.outRelations)\n ]\n };\n});\n\nconst indexByUri = indexBy(prop('uri'));\n\nexport const parseRelationsConfigContent = curry((metadata, content) => {\n const relationTypes = indexByUri(metadata.relationTypes);\n const entityTypes = indexByUri(metadata.entityTypes);\n\n const parseEntryUris = (entry) =>\n evolve(\n {\n inRelations: parseUris(relationTypes),\n outRelations: parseUris(relationTypes),\n entityTypes: parseUris(entityTypes),\n nextEntry: parseEntryUris\n },\n entry\n );\n\n return pipe(\n unless(either(prop('nextEntry'), prop('entityTypes')), deriveEntityTypesFromRelations(relationTypes)),\n parseEntryUris\n )(content);\n});\n\nexport const parseRelationsConfig = (metadata, config) =>\n evolve({content: parseRelationsConfigContent(metadata)}, config);\n\nexport const buildRelationsFilter = (searchQuery, filters, columnsData) => {\n const queryClause = Maybe.fromFalsy(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n const filtersClause = buildColumnsFilter(columnsData, filters);\n\n return new FilterBuilder().addClause(queryClause).addClause(filtersClause).build();\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n addArea: {\n display: 'flex',\n alignItems: 'center',\n height: '48px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n marginBottom: '20px',\n marginTop: '10px',\n color: 'rgba(0,0,0,0.54)'\n }\n});\n","import React, {useCallback, useContext, useEffect, useMemo, useReducer, useRef} from 'react';\nimport AddRelationButton from './AddRelationButton/AddRelationButton';\nimport RelationsTable from './RelationsTable/RelationsTable';\nimport RelationsTableHeader from './RelationsTableHeader/RelationsTableHeader';\nimport reducer, {actions} from './stateReducer';\nimport {\n BasicTablePagination,\n BasicView,\n LinearLoadIndicator,\n ProfilePerspectiveViewContext,\n useConfigPermissions,\n useRelationsLoader,\n RelationEditor,\n FeaturesContext\n} from '@reltio/components';\nimport {DEFAULT_COLUMNS_DATA, getColumnsData, getRowsPerPageOptions} from './helpers/tableHelpers';\nimport {pipe, pluck, propEq} from 'ramda';\nimport {buildRelationsFilter} from './helpers/relationsHelpers';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n isTempUri,\n ModeTypes,\n createNewConnectionWithDefaultRelationType,\n RelationsViewConfig,\n Entity,\n Metadata,\n Connection,\n Mode,\n ActivityFilter\n} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\nimport {Typography as Typography} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {Dispatch} from 'redux';\nimport {useSelector} from 'react-redux';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_COLUMNS_TO_SHOW = pluck('id', DEFAULT_COLUMNS_DATA);\nconst [DEFAULT_SORT_FIELD] = DEFAULT_COLUMNS_TO_SHOW;\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Props = {\n config: RelationsViewConfig;\n entity: Entity;\n metadata: Metadata;\n connections: Connection[];\n total: number;\n mode: Mode;\n className?: string;\n relationToAdd: Connection;\n relationsToEdit: Connection[];\n checkIfCanAddRelations: boolean;\n dispatch: Dispatch;\n readOnlyMode?: boolean;\n};\nconst RelationsTableView = ({\n className,\n config,\n entity,\n metadata,\n connections = [],\n total = 0,\n mode: modeProp,\n relationToAdd,\n relationsToEdit = [],\n checkIfCanAddRelations,\n dispatch: reduxDispatch,\n readOnlyMode\n}: Props) => {\n const initialState = {\n searchQuery: '',\n filters: null,\n visibleColumns: DEFAULT_COLUMNS_TO_SHOW,\n sorting: {\n order: config.sortOrder || DEFAULT_SORT_ORDER,\n field: config.sortColumn || DEFAULT_SORT_FIELD\n },\n page: 0,\n rowsPerPage: config.max || DEFAULT_ROWS_PER_PAGE,\n showInactive: DEFAULT_SHOW_INACTIVE\n };\n\n const styles = useStyles();\n const isProfilePerspectiveView = useContext(ProfilePerspectiveViewContext);\n const mode = isProfilePerspectiveView ? modeProp : ModeTypes.VIEWING;\n\n const [state, dispatch] = useReducer(reducer, initialState);\n const changeSearchQuery = pipe(actions.changeSearchQuery, dispatch);\n const changeShowInactive = pipe(actions.changeShowInactive, dispatch);\n const clearSearchQuery = () => {\n changeSearchQuery('');\n };\n const featuresContext = useContext(FeaturesContext);\n const showDescription = useSelector(mdmModule.selectors.getShowAttributeDescription);\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\n useEffect(clearSearchQuery, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const {visibleColumns, searchQuery, filters, sorting, page, rowsPerPage, showInactive} = state;\n\n const allColumnsData = useMemo(() => getColumnsData(config, metadata), [config, metadata]);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))),\n [visibleColumns, allColumnsData]\n );\n\n const filter = useMemo(\n () => buildRelationsFilter(searchQuery, filters, visibleColumnsData),\n [filters, searchQuery] // eslint-disable-line\n );\n\n const {isLoading} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode: modeProp\n });\n\n const rowsPerPageOptions = useMemo(() => getRowsPerPageOptions(initialState.rowsPerPage), []); // eslint-disable-line\n const {handleRowsPerPageChange, handlePageChange} = useMemo(\n () => ({\n handleRowsPerPageChange: pipe(actions.changeRowsPerPage, dispatch),\n handlePageChange: pipe(actions.changePage, dispatch)\n }),\n []\n );\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({\n config,\n mode,\n metadata,\n parentEntityUri: undefined\n });\n pipe(profile.relations.actions.openRelationEditor(config.id), reduxDispatch)(newConnection);\n }, [config, mode, metadata, reduxDispatch]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n reduxDispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n reduxDispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => profile.relations.selectors.getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = profile.relations.selectors.getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n reduxDispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, reduxDispatch]\n );\n\n const canAddRelations = entity && checkIfCanAddRelations && !readOnlyMode;\n const openedRelations = relationToAdd ? [relationToAdd, ...relationsToEdit] : relationsToEdit;\n const {canUpdate, canDelete} = useConfigPermissions();\n const canEditRelations = canUpdate(config) && !readOnlyMode;\n const canRemoveRelations = canDelete(config) && !readOnlyMode;\n const basicTableRef = useRef(null);\n\n return (\n <FeaturesContext.Provider value={features}>\n <BasicView className={className}>\n <RelationsTableHeader\n title={config.caption}\n total={total}\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={pipe(actions.changeColumns, dispatch)}\n searchQuery={searchQuery}\n onChangeSearchQuery={changeSearchQuery}\n filtersEnabled={!!filters}\n onToggleFilters={pipe(actions.toggleFilters, dispatch)}\n showInactive={showInactive}\n onChangeShowInactive={changeShowInactive}\n />\n {canAddRelations && (\n <div className={styles.addArea}>\n <AddRelationButton onClick={onAddRelation} />\n </div>\n )}\n {openedRelations.map((relation) => (\n <RelationEditor\n key={profile.relations.selectors.getRelationUriFromConnection(relation)}\n connection={relation}\n config={config}\n mode={mode}\n metadata={metadata}\n />\n ))}\n <div style={{position: 'relative'}}>\n <RelationsTable\n mode={mode}\n columnsData={visibleColumnsData}\n connections={connections}\n metadata={metadata}\n filters={filters}\n onFilter={pipe(actions.changeFilter, dispatch)}\n sorting={sorting}\n onSort={pipe(actions.toggleSort, dispatch)}\n onEditRelation={\n canEditRelations\n ? pipe(profile.relations.actions.openRelationEditor(config.id), reduxDispatch)\n : null\n }\n onRemoveRelation={canRemoveRelations ? onRemoveRelation : null}\n basicTableRef={basicTableRef}\n allowOnlyCreateNew={config.allowOnlyCreateNew}\n />\n {connections.length ? (\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={rowsPerPageOptions}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={handleRowsPerPageChange}\n page={page}\n onChangePage={handlePageChange}\n basicTableRef={basicTableRef}\n />\n ) : (\n <Typography className={styles.noData}>{i18n.text('No data found')}</Typography>\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </BasicView>\n </FeaturesContext.Provider>\n );\n};\n\nexport default RelationsTableView;\n","import {memoizeWith} from 'ramda';\nimport {connect} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport RelationsTableView from './RelationsTableView';\nimport {parseRelationsConfig} from './helpers/relationsHelpers';\n\nconst mapStateToProps = (state, ownProps) => {\n const {config} = ownProps;\n\n return {\n connections: mdm.selectors.getConnectionsWithDraftsByViewId(state, config.id),\n total: mdm.selectors.getTotalByViewId(state, config.id),\n entity: mdm.selectors.getEntity(state),\n metadata: mdm.selectors.getMetadata(state),\n mode: mdm.selectors.getMode(state),\n relationToAdd: mdm.selectors.getRelationToAddByViewId(state, config.id),\n relationsToEdit: mdm.selectors.getRelationsToEditByViewId(state, config.id),\n checkIfCanAddRelations: mdm.selectors.getCheckIfCanAddRelations(state, config.content)\n };\n};\n\nconst memoizedParseRelationsConfig = memoizeWith((metadata, config) => config.id, parseRelationsConfig);\n\nconst mergeProps = (stateProps, dispatchProps, ownProps) => ({\n ...stateProps,\n ...dispatchProps,\n ...ownProps,\n config: memoizedParseRelationsConfig(stateProps.metadata, ownProps.config)\n});\n\nexport default connect(mapStateToProps, undefined, mergeProps)(RelationsTableView);\n","import MomentUtils from '@date-io/moment';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport RelationsTableView from './RelationsTableView';\nimport {StylesProvider, createGenerateClassName} from '@material-ui/core/styles';\n\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {Provider} from 'react-redux';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {identity} from 'ramda';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {Store} from 'redux';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'relTable',\n disableGlobal: true\n});\n\ntype Props = {\n config: RelationsViewConfig;\n store: Store;\n onResize?: (width: number, height: number) => void;\n className?: string;\n readOnlyMode?: boolean;\n};\n\nconst StandaloneRelationsTableView = ({config, store, onResize = identity, className, readOnlyMode}: Props) => (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <RelationsTableView config={config} className={className} readOnlyMode={readOnlyMode} />}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n);\n\nexport default StandaloneRelationsTableView;\n"],"names":["SingleAttributeContext","React","displayName","useStyles","makeStyles","triggerButton","minWidth","color","width","popupContent","paddingTop","paddingBottom","paddingLeft","paddingRight","maxWidth","checkboxControlRoot","marginTop","marginLeft","checkboxControlLabel","fontSize","checkboxControlCheckbox","marginRight","className","styles","buttonRef","useRef","isOpen","setIsOpen","useState","showInactive","toggleShowInactive","useContext","togglePopup","open","Button","ref","classes","root","classnames","onClick","Popover","paper","anchorEl","current","onClose","anchorOrigin","vertical","horizontal","transformOrigin","FormControlLabel","label","control","Checkbox","checked","onChange","e","target","i18n","padding","totalCaption","lineHeight","letterSpacing","flexShrink","justifyContent","ovIcon","SingleAttributeHeader","caption","totalVisibleValues","showInactiveValuesMenu","searchQuery","setSearchQuery","setPage","totalNonVisibleValues","nonVisibleValues","attributeType","FacetViewHeader","title","DescriptionIcon","description","HideOnShrink","widthToHide","VerticalDivider","height","margin","Typography","variant","OvIcon","nonOvTotal","nonOvValues","ExpandableSearchInput","query","theme","moreButton","backgroundColor","marginBottom","buttonLabel","fontWeight","icon","divider","ovFalse","inactive","noData","palette","text","secondary","getAttributeNameFromAttributeUri","getLastUriPart","search","value","Object","values","some","utils","String","getPagedLocalEntity","async","metadata","entity","attributeTypeUri","defaultMaxValues","Infinity","offset","pipe","findAttributeValuesByTypeUri","filter","ovValues","isOv","getAttributeSource","slice","paging","totalOvValues","length","totalValues","emptyArray","SingleAttributeEditableContent","parentUri","noDataText","uri","required","isRequired","cardinality","name","dispatch","useDispatch","viewId","ViewIdContext","useSelector","mdmModule","modifiedEntity","state","errors","errorMessage","getAttributePagerActiveTypeErrorMessage","mode","attributeSource","entityValuesUris","pathOr","map","prop","modifiedEntityValues","modifiedEntityValuesUris","showEmptyEditors","isTempUri","emptyEditorValue","useMemo","createNewAttribute","isModifiedEntityValuesEmpty","isEmptyValue","showEmpty","newValues","onAddAttributes","useCallback","params","profile","param","onChangeAttribute","onDeleteAttribute","onDeactivateError","onAdd","attribute","isComplexAttribute","type","canCreate","checkCanCreateAttribute","commonProps","crosswalks","showNonOv","isEmptyAttributeList","isEmpty","CardinalityMessage","ErrorMessage","message","Add","idx","key","attributeValue","lazy","ownError","getAttributeOwnError","Divider","originalValue","modifiedEntityValue","find","propEq","deleted","includes","edited","value1","value2","cleanser","is","over","lensPath","cleanAttributesWith","valueTransformer","unless","omit","deleteEmptyComplex","identity","equals","areValuesEqual","cond","always","SingleAttributeReadableContent","display","flexDirection","content","position","overflow","flexGrow","pagination","DEFAULT_ROWS_PER_PAGE","SingleAttributeView","config","max","page","isLoading","hasPaging","entityUri","mdm","isViewMode","isEditableMode","pivotingAttributes","hasValues","PivotingAttributeContext","BasicView","Box","LinearLoadIndicator","props","renderContent","BasicTablePagination","count","rowsPerPage","rowsPerPageOptions","onChangePage","useSingleAttributeLoader","attributeUri","setValues","setPaging","setIsLoading","safePromise","useSafePromise","attributeValuesRef","apiPath","tenant","isHistoryModeEnabled","diff","attributeTypeName","attributeTypeSource","findAttributeValues","findAttributeTypeByUri","globalFilter","loadAttributes","isReadableAttribute","isFirstLevelAttributeUri","rest","request","isDataTenantEntity","getPagedEntity","options","undefined","then","response","attributes","path","loadedValue","finally","useEffect","useDidUpdateEffect","partitionByOv","partition","totalProp","ifElse","has","RelationsViewStateContext","button","sortControls","alignItems","sortSelectorRoot","flex","sortSelectorMenuItem","sortOrderButton","FilterButton","sortOrder","toggleSortOrder","sortOption","changeSortOption","sortOptions","hasSortOptions","isAsc","DropDownEditor","entries","TextFieldProps","menuItem","fullWidth","disableUnderline","MenuProps","getContentAnchorEl","SmallIconButton","tooltipTitle","ArrowUpwardIcon","ArrowDownwardIcon","size","header","ImportDTContext","MAX","Math","pow","cursor","top","left","userSelect","zIndex","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","error","ui","getRequestErrorMessage","useImportFromDTLoader","oneTenant","labelOnButton","indexOf","CloudDownloadIcon","DropDownMenuButton","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","menuItems","ConfirmationDialog","discardCaption","saveCaption","onDiscard","onSave","total","changeSearchQuery","tooltip","tooltipContent","secondaryLabel","progress","children","tooltipProps","setSecondaryLabel","onOpen","isNil","getDataTenantEntitySecondaryLabel","getEntitySecondaryLabel","CircularProgress","colorPrimary","Tooltip","disableFocusListener","useRelationInfo","connection","relation","entityType","getEntityType","entityLabel","getLabel","preparedUri","getEntityUriForLink","relationLabel","getRelationTypeLabelFromMetadata","relationType","container","SuggestedButtons","acceptRelation","ignoreRelation","style","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","getUri","when","isObject","getFirstRelationTypeObject","inRelations","outRelations","prepareRelation","direction","relations","wrapInArrayIfNeeded","Directions","concat","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","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","pluck","mean","defaultTo","calcAverageRating","toFixed","ThumbUp","ThumbDown","textTransform","likeButton","RatingsButtons","onAgree","onDisagree","username","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","headCell","rowCell","blobWrapper","overflowY","overflowX","whiteSpace","maxHeight","boxSizing","defaultWrapper","textOverflow","updateAttribute","historyPalettes","HistoryOperations","insertAttribute","deleteAttribute","pointerEvents","withFilterAtBottom","headCellData","DefaultHeadCellRenderer","historyClassName","onScroll","stopPropagation","columnData","dataTypeDefinition","simpleValue","appearance","HistoryDiffContext","getHistoryAppearanceByUri","getHistoryAttributeClassName","DataTypes","dataTypeValue","DataTypeValue","ExpandedValueTooltip","getColumnsDataFromAttributeNode","attrNode","parents","reject","attributeUriToSearchUri","getAttrDataTypeDefinition","childNode","getAttrPathFromColumnId","split","getNestedPathByColumnId","columnId","isAttributeSearchUri","attrPath","getBasicTableColumnsData","sortable","resizable","nestedPath","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","DefaultCellValueRenderer","onChangeSearchQuery","filtersEnabled","onToggleFilters","columnsData","selectedColumns","onChangeColumns","enabled","ColumnsSettings","withTableContext","deletedUris","rowValue","Boolean","cell","CellValueRenderer","isSorted","otherProps","index","tableContainer","fontFamily","transform","onEdit","onRemove","onSort","filters","onFilter","tableRowsData","reduce","acc","assoc","getOvAttributeValuesByPathWithUri","getAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","checkIsEditableMode","renderRowCell","hoverRowIndex","setHoverRowIndex","canDelete","useConfigPermissions","hideRightContent","checkCanDeleteAttribute","isReltioCrosswalk","canEdit","checkCanEditAttribute","checkCanEdit","handleEditAttribute","handleRemoveAttribute","hoveredRowRightContent","context","BasicTable","autosizing","rowsData","hoverStateEnabled","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","resizeDebounceDelay","onRowHover","hoveredRowRightContentWrapper","hoveredRowRightContentContainer","actionButtons","AttributeEditing","onCancel","onApply","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","push","link","selected","avatar","treeContainer","tree","buttonsContainer","ConfigContext","onImageLoadFail","src","DEFAULT_ICON","Node","absoluteImagePath","uiPath","generateEntityUrl","UrlGeneratorsContext","entityLink","isSelected","entityTypeGraphIcon","getPropWithInheritance","getAbsoluteImageUrl","onTitleClick","Avatar","onError","Link","to","getNodeKey","lineBlock","lineChildren","bottom","treeTheme","verticalLine","horizontalLineRight","textAlign","nodeContent","rowContents","borderLeft","verticalAlign","buttonWrapper","collapsedButton","expandedButton","transition","borderRight","borderTop","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","this","viewBox","version","xmlns","stroke","strokeWidth","fill","fillRule","fillOpacity","d","onGraphOpen","ShowGraphIcon","getCacheKey","bodyWrapper","CustomView","basicViewRef","dialogRef","showModal","setShowModal","defaultTooltip","html","visible","updatedTooltip","customStyles","popup","useAPI","innerHTML","Array","from","childNodes","child","appendChild","Dialog","dragHandleContainer","dragHandleVisibilityArea","visibility","dragHandle","dragIcon","Component","WithDragHandle","DragIndicator","WithErrorBoundary","ErrorBoundary","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","ActionButtons","match","onStartRequest","onFinishRequest","canMerge","canMark","getActionPermissionForMatch","matchRules","actionButtonProps","ActionButtonMode","onMergeFinish","MergeButton","NotMatchButton","MatchCard","ProfileMatchCard","createObjectIdForPM","matchEntityUri","matchesContainer","footer","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","hidden","useTableAttribute","WrappedProfileRelationsView","relationsState","Number","setSortOrder","setSortOption","option","useRelationsState","WrappedCustomView","WrappedHierarchyPathView","graph","graphType","treeData","setTreeData","graphUri","setErrorMessage","forest","newTrees","updateTreesWithNewEntity","updatedTime","getPathsTree","console","warn","useLoadPaths","onResize","getRowHeight","clearHeightsCache","heightsCache","setHeightsCache","_","prevCache","useDynamicNodesHeights","openGraph","generateNodeProps","rowInfo","handleHeight","refreshMode","refreshRate","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","item","basicView","fixedSizeContainer","omittingProps","ProfileLayoutItem","layoutItemConfig","views","ResizeComponent","AutosizeComponent","ReactReduxContext","isCustomView","class","platform","CustomScriptPlatform","reltioClass","getViewTypeByClass","scrollWrapper","scrollableContent","scrollbarWidth","ProfileLayout","layout","onLayoutChanged","scrollWrapperRef","element","offsetWidth","clientWidth","boundariesElement","popupBoundariesValue","priority","scrollTop","PopupBoundariesContext","ReltioGridLayout","LayoutItem","draggableHandle","closeIcon","snackbar","flexWrap","Notification","notification","autoCloseInterval","autoHideDuration","setAction","setShow","closeSnackbar","_e","reason","cancelAction","onConfirm","applyAction","needConfirmation","CloseIcon","Portal","document","body","Snackbar","confirmationText","confirmationDescription","Notifications","notifications","n","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","complement","propOr","either","modifiedRelationTypes","isReference","getRelationTypeUriFromAttrType","T","data","relationshipTypesToCopy","useCloneAction","OPTIONS_GROUP","ModeTypes","CreateIcon","VisibilityIcon","BUTTONS_GROUP","window","confirm","shouldShowSelect","MetadataPermissions","hasOnlyReadPermission","accessibleOptionsGroup","accessibleButtonsGroup","handleChange","handleSave","ProfileBand","mr","ProfileBandHistory","ProfileBandNavigation","ModeSwitcherSelect","optionsGroup","buttonsGroup","WorkflowButton","WorkflowTasksContext","Inbox","showMoreLink","showMoreIcon","CollaborationList","getComments","pageToken","useCommentsEntitiesMap","objectId","commentId","CollaborationItem","KeyboardArrowDown","WorkflowList","tasks","task","WorkflowTaskCard","taskId","CollaborationButton","commentsMap","calcTotalCommentItems","CollaborationIcon","SidePanelEmptyState","itemWrapper","DBConnectorsList","dBConnectorSideViews","sideView","ActivePanel","getSecondTitle","RightSidePanel","isWorkflowSideViewEnabled","isCollaborationSideViewEnabled","isDBConnectorSideViewEnabled","isCollaborationEnabled","historyEvent","workflowTasksContext","collaborationContext","active","setActive","Collaboration","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","HistoryIcon","HistoryView","contributorsUris","HistoryPanelEmptyState","HistoryHeader","DBConnector","ConnectorsIcon","visibleElements","SidePanel","SidePanelContentHeader","SideButtonsPanel","buttonsProps","onButtonClick","activeIndexId","accordionSummaryHeight","defaultBorderStyle","accordion","borderBottom","accordionExpanded","accordionSummary","accordionSummaryHeading","typography","pxToRem","fontWeightRegular","accordionSummaryExpanded","accordionSummaryContent","accordionDetails","errorWrapper","errorTitle","goToIcon","errorsAccordion","borderColor","errorsAccordionDetails","warningsAccordion","warningsAccordionDetails","errorIcon","warningIcon","ErrorsPanel","panels","expandedPanelId","ErrorComponent","items","accordionClassName","accordionDetailsClassName","Accordion","square","AccordionSummary","expandIcon","ExpandMore","AccordionDetails","clipRule","clearError","Error","displayedMessage","ErrorType","ErrorSource","attrType","getDisplayedErrorMessage","displayedErrorPath","errorPath","AttributeValuePathItemType","join","getDisplayedErrorPath","highlightError","ScrollToErrorContext","showLink","HyperlinkIcon","ProfileErrorsPanel","cachedAllErrors","allErrors","cacheForAllErrors","errors1","errors2","areErrorsEqual","useCachedErrors","warnings","isCriticalError","setExpandedPanelId","number","panelId","event","isExpanded","emptyState","perspectiveView","profileWrapper","profileContainer","ProfilePerspectiveView","saveState","getSavedState","profileBand","workflow","isHistoryActive","keywordValue","historyDiff","useHistoryDiff","workflowTasks","workflowConfig","commonWorkflowTasks","useCommonWorkflowTasks","defaultActionSuccessHandler","useWorkflowDefaultActionSuccessHandler","onActionSuccess","useWorkflowTasks","getProfileObjectIdsForCollaboration","emptyCollaboration","collaboration","useCollaboration","isLoaded","handleLayoutChange","profileConfig","setLayout","setViews","canRead","validatedViews","validatedLayout","removeUnsupportedLayoutItems","configHash","hash","nestedRoute","savedStateKey","getSavedStateAndFix","debouncedSaveState","debounce","savedState","updateSavedState","useSavedStateForEntityType","isConfigChanged","fixedViews","fixedLayout","fixNonUniqViewsIds","useProfileLayout","useHistorySlice","isValidateReadMode","isDTEntity","profileViews","hasProfileViews","validate","needDispatch","useProfileValidation","sidePanelViews","ProfilePerspectiveViewContext","SearchValueContext","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","userPreferencesComparator","newState","sortLayoutItems","sort","a","b","x","y","prepareState","looseEquals","qxSandboxApi","getSavedStatePromisified","promisifyCallback","SnackbarRenderer","showSnackbarMessage","useSnackbar","processedConfig","convertOldProfileConfig","featuresContext","FeaturesContext","showDescription","getState","features","SnackbarContext","S","SandboxAPIContext","StylesProvider","MuiPickersUtilsProvider","MomentUtils","floor","ErrorPopup","showErrorFromStore","titleContainer","totalNumber","TagListHeader","switchToProfile","ArrowForwardIosRounded","Spacer","toolbar","TagProfileBand","Toolbar","tagsContainer","tagsView","listContainer","entitiesList","ROWS_PER_PAGE_OPTIONS","TagPerspectiveView","tag","setRowsPerPage","globalSearchRequestOptions","safeRequestTotalPromise","safeRequestEntitiesPromise","setTotal","setEntities","requestEntities","requestTotal","getDataTenantFromEntityUri","fieldName","isDT","getEntities","requestOptions","select","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","getTotalFromDataTenant","getTotals","json","useTagsProvider","useTag","refScrollBlock","hasPagination","ProfilesList","onChangeRowsPerPage","actionsWrapper","DCRProfileBand","entityTask","objectURIs","getEntityUriFromDCRUri","TaskActionButtons","perspectiveContainer","attributesWrapper","contentWrapper","processTypes","DCRReviewPerspectiveView","actionSuccessHandler","point","AddRelationButton","propTypes","PropTypes","inactiveStyle","entityCell","RowCellRenderer","EntityProfileRenderer","EntityTypeType","getRelationTypes","rel","uniq","startsWith","emptyData","EditButtons","IconButton","Edit","Delete","basicTableRef","getOvAttributeValuesByPath","getRelationAttributeValues","isNew","handleOnRowHover","rowIndex","ColumnsDataType","ConnectionType","MetadataType","ColumnFilterType","SortingType","onShowInactiveChange","MoreVertIcon","RelationsTableHeader","onChangeShowInactive","CHANGE_SHOW_INACTIVE","changeShowInactive","DEFAULT_COLUMNS_DATA","hideable","ActivenessAttrTypes","getColumnIdFromAttrUri","getColumnsDataFromRelationAttributes","attr","getReadableAttributesList","containsUri","parseUris","curry","parseUri","shouldSkipDescendantUris","hasValidMetadata","nextAcc","keys","descUri","extendsTypeURI","deriveEntityTypesFromRelations","deriveEntitiesFromRelationsMetadata","relationTypeUri","entityTypes","indexByUri","indexBy","parseRelationsConfigContent","parseEntryUris","entry","nextEntry","addArea","DEFAULT_COLUMNS_TO_SHOW","DEFAULT_SORT_FIELD","memoizedParseRelationsConfig","memoizeWith","connect","ownProps","stateProps","dispatchProps","modeProp","reduxDispatch","readOnlyMode","sortColumn","filtersClause","buildColumnsFilter","getRowsPerPageOptions","defaultRowsPerPage","subtract","handleRowsPerPageChange","handlePageChange","changeRowsPerPage","openedRelations","canEditRelations","canRemoveRelations"],"sourceRoot":""}
|