@reltio/remotes 1.4.1569 → 1.4.1571
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/1032.js +1 -1
- package/1032.js.map +1 -1
- package/122.js +1 -1
- package/122.js.map +1 -1
- package/2125.js +1 -1
- package/2125.js.map +1 -1
- package/2890.js +1 -1
- package/2890.js.map +1 -1
- package/2982.js +2 -0
- package/2982.js.map +1 -0
- package/3094.js +1 -1
- package/3094.js.map +1 -1
- package/3118.js +1 -1
- package/3118.js.map +1 -1
- package/3346.js +1 -1
- package/3346.js.map +1 -1
- package/3468.js +1 -1
- package/3468.js.map +1 -1
- package/3469.js +1 -1
- package/3515.js +1 -1
- package/3515.js.map +1 -1
- package/3540.js +1 -1
- package/3540.js.map +1 -1
- package/3726.js +1 -1
- package/3726.js.map +1 -1
- package/3749.js +1 -1
- package/3749.js.map +1 -1
- package/4120.js +1 -1
- package/4120.js.map +1 -1
- package/4183.js +1 -1
- package/4183.js.map +1 -1
- package/4469.js +1 -1
- package/4469.js.map +1 -1
- package/4701.js +1 -1
- package/4701.js.map +1 -1
- package/4748.js +1 -1
- package/4748.js.map +1 -1
- package/5232.js +1 -1
- package/5232.js.map +1 -1
- package/5400.js +1 -1
- package/5400.js.map +1 -1
- package/5605.js +1 -1
- package/5605.js.map +1 -1
- package/5706.js +1 -1
- package/5706.js.map +1 -1
- package/5709.js +1 -1
- package/5709.js.map +1 -1
- package/5756.js +1 -1
- package/5756.js.map +1 -1
- package/6051.js +1 -1
- package/6051.js.map +1 -1
- package/638.js +1 -1
- package/638.js.map +1 -1
- package/705.js +1 -1
- package/705.js.map +1 -1
- package/769.js +1 -1
- package/769.js.map +1 -1
- package/7762.js +1 -1
- package/7762.js.map +1 -1
- package/7818.js +1 -1
- package/7818.js.map +1 -1
- package/8723.js +1 -1
- package/8723.js.map +1 -1
- package/9216.js +1 -1
- package/9216.js.map +1 -1
- package/9260.js +1 -1
- package/9260.js.map +1 -1
- package/962.js +1 -1
- package/962.js.map +1 -1
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
- package/remoteEntry.js.map +1 -1
- package/6396.js +0 -2
- package/6396.js.map +0 -1
package/1032.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1032.js","mappings":"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","sources":["webpack://@reltio/remotes/../hierarchy-tree/src/icons/SelectNode.svg","webpack://@reltio/remotes/../hierarchy-tree/src/icons/ShowGraph.svg","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyViewHeader/styles.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyViewHeader/HierarchyViewHeader.tsx","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyPanel/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/theme/utils.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/theme/node-content-renderer.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/treeThemeContext.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/theme/tree-node-renderer.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/theme/index.js","webpack://@reltio/remotes/../hierarchy-tree/src/constants/prop-types.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/measureHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/nodeHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/Tree.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/commonStyles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/LoadingNode/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/LoadingNode/LoadingNode.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/multiParentOverlap.svg","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlockItem/parentIcon.svg","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlockItem/styles.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlockItem/MultiParentBlockItem.tsx","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlock/styles.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlock/MultiParentBlock.tsx","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/RelationDetails/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/helpers/treeDataProvider.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/treeHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/nodeHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/RelationDetails/RelationDetails.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/ActionsBlock/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/ActionsBlock/ActionsBlock.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/configHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/helpers/nodeMappingHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/nodeContext.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/RegularNode.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/NodeRelationTypeSelector/NodeRelationTypeSelector.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/EditorNode/helpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/EditorNode/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/EditorNode/EditorNode.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/NodesFactory.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/Node.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyPanel/HierarchyPanel.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/useTreeLoader.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/GraphTypeSelector/GraphTypeSelector.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/ActivenessDateControl/ActivenessDateControl.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/FilterSortButton/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/FilterSortButton/FilterSortButton.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Breadcrumbs/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Breadcrumbs/Breadcrumbs.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/saveStateHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/useNewEntityTree.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyView.tsx","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/index.js","webpack://@reltio/remotes/../hierarchy-tree/src/index.tsx"],"sourcesContent":["function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M12 7c2.762 0 5 2.238 5 5s-2.238 5-5 5-5-2.238-5-5 2.238-5 5-5zm0 2a3 3 0 100 6 3 3 0 100-6zm8.94 2A8.994 8.994 0 0013 3.06V1h-2v2.06A8.994 8.994 0 003.06 11H1v2h2.06A8.994 8.994 0 0011 20.94V23h2v-2.06A8.994 8.994 0 0020.94 13H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\",\n id: \"svg2250934887a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2250934887b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2250934887a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2250934887b)\",\n d: \"M0 0h24v24H0z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\",\n fillOpacity: \".54\"\n}, React.createElement(\"path\", {\n d: \"M14.5 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm4 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm-17 1a1.5 1.5 0 110-3 1.5 1.5 0 010 3zM4 4a2 2 0 110-4 2 2 0 010 4zm1 16a2 2 0 110-4 2 2 0 010 4zm4.5-6a4.5 4.5 0 110-9 4.5 4.5 0 010 9zm0-2a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm6 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3z\",\n fill: \"#000\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n header: {\n padding: '0 4px 0 16px'\n },\n buttonsContainer: {\n flexShrink: 0,\n marginLeft: 'auto',\n '& > * + *': {\n marginLeft: '-4px'\n }\n },\n button: {\n padding: '8px'\n },\n icon: {\n width: '24px',\n height: '24px'\n },\n disabledIcon: {\n opacity: 0.54\n }\n}));\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {IconButton as IconButton} from '@material-ui/core';\nimport {FacetViewHeader, FeaturesContext, withTooltip} from '@reltio/components';\nimport SelectNodeIcon from '../../icons/SelectNode.svg';\nimport ShowGraphIcon from '../../icons/ShowGraph.svg';\nimport {useStyles} from './styles';\n\nconst IconButtonWithTooltip = withTooltip(IconButton);\n\ntype Props = {\n title: string;\n entityLabel?: string;\n onScrollToCurrentEntity: () => void;\n onGraphOpen: () => void;\n disabled?: boolean;\n isGraphView?: boolean;\n};\n\nconst HierarchyViewHeader = ({\n title,\n entityLabel = '',\n onScrollToCurrentEntity,\n onGraphOpen,\n disabled = false,\n isGraphView = false\n}: Props) => {\n const styles = useStyles();\n const {showNavigateToGraph} = useContext(FeaturesContext);\n const iconClassName = classnames(styles.icon, {[styles.disabledIcon]: disabled});\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <div className={styles.buttonsContainer}>\n {!isGraphView && showNavigateToGraph && (\n <IconButtonWithTooltip\n tooltipTitle={i18n.text('Show Graph')}\n onClick={onGraphOpen}\n classes={{root: styles.button, label: iconClassName}}\n disabled={disabled}\n showForDisabled\n >\n <ShowGraphIcon />\n </IconButtonWithTooltip>\n )}\n <IconButtonWithTooltip\n tooltipTitle={i18n.text('Scroll to ${node}', {node: entityLabel})}\n tooltipPlacement=\"bottom-end\"\n onClick={onScrollToCurrentEntity}\n classes={{root: styles.button, label: iconClassName}}\n disabled={disabled}\n showForDisabled\n >\n <SelectNodeIcon />\n </IconButtonWithTooltip>\n </div>\n </FacetViewHeader>\n );\n};\n\nexport default HierarchyViewHeader;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n textField: {\n marginLeft: theme.spacing(),\n marginRight: theme.spacing(),\n width: 200\n },\n panel: ({isGraphView}) => ({\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: isGraphView ? undefined : '372px',\n maxHeight: isGraphView ? undefined : '507px',\n height: isGraphView ? '100%' : undefined\n }),\n treeWrapper: {\n flexGrow: 1,\n height: 0,\n marginTop: 7\n },\n checkedNode: {\n backgroundColor: 'rgba(0,114,206, 0.12)'\n },\n editorNode: {\n overflow: 'hidden',\n '&:hover': {\n backgroundColor: 'transparent !important'\n },\n '&:hover div.rst__moveHandle': {\n visibility: 'hidden'\n },\n '& div.rst__rowLabel': {\n paddingRight: 0\n }\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%'\n },\n root: {\n minHeight: '28px',\n display: 'flex',\n padding: '0 18px',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.06)'\n },\n wordBreak: 'break-all'\n },\n tree: {\n flexGrow: 1,\n height: 0\n }\n}));\n","export function classnames(...classes) {\n // Use Boolean constructor as a filter callback\n // Allows for loose type truthy/falsey checks\n // Boolean(\"\") === false;\n // Boolean(false) === false;\n // Boolean(undefined) === false;\n // Boolean(null) === false;\n // Boolean(0) === false;\n // Boolean(\"classname\") === true;\n return classes.filter(Boolean).join(' ');\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport './node-content.css';\nimport {classnames} from './utils';\nimport {ReactSortableTreeUtils} from '@reltio/components';\n\nclass NodeRendererDefault extends Component {\n render() {\n const {\n scaffoldBlockPxWidth,\n toggleChildrenVisibility,\n connectDragPreview,\n connectDragSource,\n isDragging,\n canDrop,\n canDrag,\n node,\n title,\n subtitle,\n draggedNode,\n path,\n treeIndex,\n isSearchMatch,\n isSearchFocus,\n buttons,\n className,\n style,\n didDrop,\n //eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n treeId,\n //eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isOver, // Not needed, but preserved for other renderers\n //eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n parentNode, // Needed for dndManager\n rowDirection,\n ...otherProps\n } = this.props;\n const nodeTitle = title || node.title;\n const nodeSubtitle = subtitle || node.subtitle;\n const rowDirectionClass = rowDirection === 'rtl' ? 'rst__rtl' : null;\n let handle;\n if (canDrag) {\n if (typeof node.children === 'function' && node.expanded) {\n // Show a loading symbol on the handle when the children are expanded\n // and yet still defined by a function (a callback to fetch the children)\n handle = (\n <div className=\"rst__loadingHandle\">\n <div className=\"rst__loadingCircle\">\n {[...new Array(12)].map((_, index) => (\n <div\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n className={classnames('rst__loadingCirclePoint', rowDirectionClass)}\n />\n ))}\n </div>\n </div>\n );\n } else {\n // Show the handle used to initiate a drag-and-drop\n handle = connectDragSource(\n <div className=\"rst__moveHandle\">\n <Tooltip title={i18n.text('Drag node')}>\n <DragIndicatorIcon />\n </Tooltip>\n </div>,\n {\n dropEffect: 'copy'\n }\n );\n }\n }\n\n const isDraggedDescendant = draggedNode && ReactSortableTreeUtils.isDescendant(draggedNode, node);\n const isLandingPadActive = !didDrop && isDragging;\n\n const showToggleChildrenButton =\n toggleChildrenVisibility &&\n !node.root &&\n !node.cycled &&\n ((node.children && node.children.length > 0) || node.pending);\n\n const onToggle = () => {\n toggleChildrenVisibility({\n node,\n path,\n treeIndex\n });\n };\n\n return (\n <div style={{height: '100%'}} {...otherProps} key={node.nodeId}>\n {showToggleChildrenButton && node.expanded && !isDragging && (\n <div\n style={{width: scaffoldBlockPxWidth - 2}}\n className={classnames('rst__lineChildren', rowDirectionClass)}\n />\n )}\n\n <div className={classnames('rst__rowWrapper', rowDirectionClass)}>\n {/* Set the row preview to be used during drag and drop */}\n {connectDragPreview(\n <div\n className={classnames(\n 'rst__row',\n isLandingPadActive && 'rst__rowLandingPad',\n isLandingPadActive && !canDrop && 'rst__rowCancelPad',\n isSearchMatch && 'rst__rowSearchMatch',\n isSearchFocus && 'rst__rowSearchFocus',\n rowDirectionClass,\n className\n )}\n style={{\n opacity: isDraggedDescendant ? 0.5 : 1,\n ...style\n }}\n >\n {handle}\n\n <div\n className={classnames(\n 'rst__rowContents',\n !canDrag && 'rst__rowContentsDragDisabled',\n rowDirectionClass\n )}\n >\n {showToggleChildrenButton ? (\n <div className=\"rst__buttonWrapper\" onClick={onToggle}>\n <div\n aria-label={node.expanded ? 'Collapse' : 'Expand'}\n className={classnames(\n node.expanded ? 'rst__collapseButton' : 'rst__expandButton',\n rowDirectionClass\n )}\n />\n </div>\n ) : (\n <div className={classnames('rst__buttonWrapper', 'rst__noButton')} />\n )}\n <div className={classnames('rst__rowLabel', rowDirectionClass)}>\n <div\n className={classnames(\n 'rst__rowTitle',\n node.subtitle && 'rst__rowTitleWithSubtitle'\n )}\n >\n {typeof nodeTitle === 'function'\n ? nodeTitle({\n node,\n path,\n treeIndex\n })\n : nodeTitle}\n </div>\n\n {nodeSubtitle && (\n <span className=\"rst__rowSubtitle\">\n {typeof nodeSubtitle === 'function'\n ? nodeSubtitle({\n node,\n path,\n treeIndex\n })\n : nodeSubtitle}\n </span>\n )}\n </div>\n\n <div className=\"rst__rowToolbar\">\n {buttons.map((btn, index) => (\n <div\n key={index} // eslint-disable-line react/no-array-index-key\n className=\"rst__toolbarButton\"\n >\n {btn}\n </div>\n ))}\n </div>\n </div>\n </div>,\n {offsetX: 0, offsetY: 0}\n )}\n </div>\n </div>\n );\n }\n}\n\nNodeRendererDefault.defaultProps = {\n isSearchMatch: false,\n isSearchFocus: false,\n canDrag: false,\n toggleChildrenVisibility: null,\n buttons: [],\n className: '',\n style: {},\n parentNode: null,\n draggedNode: null,\n canDrop: false,\n title: null,\n subtitle: null,\n rowDirection: 'ltr'\n};\n\nNodeRendererDefault.propTypes = {\n node: PropTypes.shape({}).isRequired,\n title: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n subtitle: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n path: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])).isRequired,\n treeIndex: PropTypes.number.isRequired,\n treeId: PropTypes.string.isRequired,\n isSearchMatch: PropTypes.bool,\n isSearchFocus: PropTypes.bool,\n canDrag: PropTypes.bool,\n scaffoldBlockPxWidth: PropTypes.number.isRequired,\n toggleChildrenVisibility: PropTypes.func,\n buttons: PropTypes.arrayOf(PropTypes.node),\n className: PropTypes.string,\n style: PropTypes.shape({}),\n\n // Drag and drop API functions\n // Drag source\n connectDragPreview: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n parentNode: PropTypes.shape({}), // Needed for dndManager\n isDragging: PropTypes.bool.isRequired,\n didDrop: PropTypes.bool.isRequired,\n draggedNode: PropTypes.shape({}),\n // Drop target\n isOver: PropTypes.bool.isRequired,\n canDrop: PropTypes.bool,\n\n // rtl support\n rowDirection: PropTypes.string\n};\n\nexport default NodeRendererDefault;\n","import {createContext} from 'react';\n\nexport const TreeThemeContext = createContext({\n generateTreeNodeProps: undefined\n});\n\nTreeThemeContext.displayName = 'TreeThemeContext';\n","import React, {Component, Children, cloneElement} from 'react';\nimport PropTypes from 'prop-types';\n\nimport './tree-node.css';\nimport {classnames} from './utils';\nimport {MIN_NODE_CONTENT_WIDTH} from '.';\nimport {TreeThemeContext} from '../treeThemeContext';\n\nclass TreeNode extends Component {\n static contextType = TreeThemeContext;\n\n render() {\n const {\n children,\n listIndex,\n swapFrom,\n swapLength,\n swapDepth,\n scaffoldBlockPxWidth,\n lowerSiblingCounts,\n connectDropTarget,\n isOver,\n draggedNode,\n canDrop,\n treeIndex,\n // eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n treeId, // Delete from otherProps\n // eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getPrevRow, // Delete from otherProps\n // eslint-disable-next-line no-unused-vars\n node, // Delete from otherProps\n // eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n path, // Delete from otherProps\n rowDirection,\n ...otherProps\n } = this.props;\n\n const rowDirectionClass = rowDirection === 'rtl' ? 'rst__rtl' : null;\n\n // Construct the scaffold representing the structure of the tree\n const scaffoldBlockCount = lowerSiblingCounts.length;\n const scaffold = [];\n lowerSiblingCounts.forEach((lowerSiblingCount, i) => {\n let lineClass = '';\n if (lowerSiblingCount > 0) {\n // At this level in the tree, the nodes had sibling nodes further down\n\n /*if (listIndex === 0) {\n // Top-left corner of the tree\n // +-----+\n // | |\n // | +--+\n // | | |\n // +--+--+\n lineClass =\n 'rst__lineHalfHorizontalRight rst__lineHalfVerticalBottom';\n } else*/ if (\n i ===\n scaffoldBlockCount - 1\n ) {\n // Last scaffold block in the row, right before the row content\n // +--+--+\n // | | |\n // | +--+\n // | | |\n // +--+--+\n lineClass = 'rst__lineHalfHorizontalRight rst__lineFullVertical';\n } else {\n // Simply connecting the line extending down to the next sibling on this level\n // +--+--+\n // | | |\n // | | |\n // | | |\n // +--+--+\n lineClass = 'rst__lineFullVertical';\n }\n } /*else if (listIndex === 0) {\n // Top-left corner of the tree, but has no siblings\n // +-----+\n // | |\n // | +--+\n // | |\n // +-----+\n lineClass = 'rst__lineHalfHorizontalRight';\n }*/ else if (\n i ===\n scaffoldBlockCount - 1\n ) {\n // The last or only node in this level of the tree\n // +--+--+\n // | | |\n // | +--+\n // | |\n // +-----+\n lineClass = 'rst__lineHalfVerticalTop rst__lineHalfHorizontalRight';\n }\n\n scaffold.push(\n <div\n key={`pre_${1 + i}`}\n style={{width: scaffoldBlockPxWidth}}\n className={classnames('rst__lineBlock', lineClass, rowDirectionClass)}\n />\n );\n\n if (treeIndex !== listIndex && i === swapDepth) {\n // This row has been shifted, and is at the depth of\n // the line pointing to the new destination\n let highlightLineClass = '';\n\n if (listIndex === swapFrom + swapLength - 1) {\n // This block is on the bottom (target) line\n // This block points at the target block (where the row will go when released)\n highlightLineClass = 'rst__highlightBottomLeftCorner';\n } else if (treeIndex === swapFrom) {\n // This block is on the top (source) line\n highlightLineClass = 'rst__highlightTopLeftCorner';\n } else {\n // This block is between the bottom and top\n highlightLineClass = 'rst__highlightLineVertical';\n }\n\n let style;\n if (rowDirection === 'rtl') {\n style = {\n width: scaffoldBlockPxWidth,\n right: scaffoldBlockPxWidth * i\n };\n } else {\n // Default ltr\n style = {\n width: scaffoldBlockPxWidth,\n left: scaffoldBlockPxWidth * i\n };\n }\n\n scaffold.push(\n <div\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n style={style}\n className={classnames('rst__absoluteLineBlock', highlightLineClass, rowDirectionClass)}\n />\n );\n }\n });\n\n let style;\n const scaffoldWidth = scaffoldBlockPxWidth * scaffoldBlockCount;\n if (rowDirection === 'rtl') {\n style = {right: scaffoldWidth};\n } else {\n // Default ltr\n style = {left: scaffoldWidth};\n }\n style = {...style, width: `calc(100% - ${scaffoldWidth}px`};\n const width = `${scaffoldWidth + MIN_NODE_CONTENT_WIDTH}px`;\n const nodeStyle = {...otherProps.style, width};\n const treeNodeProps =\n this.context && this.context.generateTreeNodeProps && this.context.generateTreeNodeProps(this.props);\n return connectDropTarget(\n <div\n {...otherProps}\n className={classnames(\n 'rst__node',\n node.root && 'rst__root',\n rowDirectionClass,\n treeNodeProps && treeNodeProps.treeNodeClassName,\n !!draggedNode && draggedNode.nodeId !== node.nodeId && 'rst_node_hover_disabled'\n )}\n style={nodeStyle}\n >\n {scaffold}\n\n <div className=\"rst__nodeContent\" style={style}>\n {Children.map(children, (child) =>\n cloneElement(child, {\n isOver,\n canDrop,\n draggedNode\n })\n )}\n </div>\n </div>\n );\n }\n}\n\nTreeNode.defaultProps = {\n swapFrom: null,\n swapDepth: null,\n swapLength: null,\n canDrop: false,\n draggedNode: null,\n rowDirection: 'ltr'\n};\n\nTreeNode.propTypes = {\n treeIndex: PropTypes.number.isRequired,\n treeId: PropTypes.string.isRequired,\n swapFrom: PropTypes.number,\n swapDepth: PropTypes.number,\n swapLength: PropTypes.number,\n scaffoldBlockPxWidth: PropTypes.number.isRequired,\n lowerSiblingCounts: PropTypes.arrayOf(PropTypes.number).isRequired,\n\n listIndex: PropTypes.number.isRequired,\n children: PropTypes.node.isRequired,\n\n // Drop target\n connectDropTarget: PropTypes.func.isRequired,\n isOver: PropTypes.bool.isRequired,\n canDrop: PropTypes.bool,\n draggedNode: PropTypes.shape({}),\n\n // used in dndManager\n getPrevRow: PropTypes.func.isRequired,\n node: PropTypes.shape({}).isRequired,\n path: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])).isRequired,\n\n // rtl support\n rowDirection: PropTypes.string\n};\n\nexport default TreeNode;\n","// Can override the following:\n//\n// style: PropTypes.shape({}),\n// innerStyle: PropTypes.shape({}),\n// reactVirtualizedListProps: PropTypes.shape({}),\n// scaffoldBlockPxWidth: PropTypes.number,\n// slideRegionSize: PropTypes.number,\n// rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n// treeNodeRenderer: PropTypes.func,\n// nodeContentRenderer: PropTypes.func,\n// placeholderRenderer: PropTypes.func,\n\nimport nodeContentRenderer from './node-content-renderer';\nimport treeNodeRenderer from './tree-node-renderer';\n\nexport const MIN_NODE_CONTENT_WIDTH = 250;\nconst scaffoldBlockPxWidth = 16;\nconst rowHeight = 28;\nconst slideRegionSize = 50;\nexport {nodeContentRenderer, treeNodeRenderer, scaffoldBlockPxWidth, rowHeight, slideRegionSize};\n","import PropTypes from 'prop-types';\nimport {EntityType, RelationType} from '@reltio/mdm-sdk';\n\nconst lazyGenericNodeType = () => GenericNodeType;\nconst lazyHierarchyNodeType = () => HierarchyNodeType;\n\nconst GenericNodeType = PropTypes.shape({\n nodeId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n children: PropTypes.arrayOf(lazyGenericNodeType),\n showParents: PropTypes.bool,\n expanded: PropTypes.bool,\n pending: PropTypes.bool,\n cycled: PropTypes.bool\n});\n\nconst HierarchyNodeType = PropTypes.shape({\n nodeId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n entity: EntityType,\n relation: RelationType,\n relations: PropTypes.arrayOf(RelationType),\n total: PropTypes.number,\n parent: PropTypes.arrayOf(PropTypes.string),\n directParentUri: PropTypes.string,\n children: PropTypes.arrayOf(lazyHierarchyNodeType),\n loading: PropTypes.bool,\n expanded: PropTypes.bool,\n showParents: PropTypes.bool,\n cycled: PropTypes.bool,\n pending: PropTypes.bool\n});\n\nconst ActivenessDateType = PropTypes.number;\n\nconst TreeType = PropTypes.shape({\n root: HierarchyNodeType,\n graphTypes: PropTypes.string,\n entitiesMap: PropTypes.object,\n title: PropTypes.string,\n activenessDate: ActivenessDateType,\n scrollTo: HierarchyNodeType,\n loading: PropTypes.bool\n});\n\nexport {ActivenessDateType, GenericNodeType, HierarchyNodeType, TreeType};\n","import React, {useCallback, useEffect, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {GenericNodeType} from '../../constants/prop-types';\nimport {ReactSortableTreeUtils} from '@reltio/components';\nimport * as hierarchyTheme from './theme';\nimport {propOr} from 'ramda';\nimport {CellMeasurerCache} from 'react-virtualized';\n\nconst MeasuredNode = ({measure, registerChild, NodeRenderer, node, treeIndex}) => {\n useEffect(measure, [treeIndex]);\n return <NodeRenderer measure={measure} registerChild={registerChild} node={node} />;\n};\n\nMeasuredNode.propTypes = {\n measure: PropTypes.func,\n registerChild: PropTypes.func,\n NodeRenderer: PropTypes.func,\n node: GenericNodeType,\n treeIndex: PropTypes.number\n};\n\n// eslint-disable-next-line react/prop-types,react/display-name\nconst getMeasuredNode = ({NodeRenderer, node, treeIndex}) => ({measure, registerChild}) => (\n <MeasuredNode\n NodeRenderer={NodeRenderer}\n node={node}\n treeIndex={treeIndex}\n measure={measure}\n registerChild={registerChild}\n />\n);\n\nconst useRefreshableMeasurerCache = (treeDataRef, getNodeKey) => {\n const keyMapper = useCallback(\n (rawIndex) => {\n const nodeInfo = ReactSortableTreeUtils.getVisibleNodeInfoAtIndex({\n treeData: treeDataRef.current,\n index: rawIndex,\n getNodeKey\n });\n return getNodeKey({node: propOr({nodeId: -1}, 'node', nodeInfo)});\n },\n [getNodeKey, treeDataRef]\n );\n const [measurerCache] = useState(\n new CellMeasurerCache({\n fixedWidth: true,\n defaultHeight: hierarchyTheme.rowHeight,\n minHeight: hierarchyTheme.rowHeight,\n keyMapper\n })\n );\n const clearCache = () => {\n measurerCache.clearAll();\n };\n\n const onWindowResize = useCallback(clearCache, []);\n useEffect(() => {\n window.addEventListener('resize', onWindowResize);\n return () => {\n window.removeEventListener('resize', onWindowResize);\n };\n }, [onWindowResize]);\n return measurerCache;\n};\n\nexport {getMeasuredNode, useRefreshableMeasurerCache};\n","const getElementByNodeId = (nodeId) => {\n return document.querySelector(`[data-node-id=\"${nodeId}\"]`);\n};\n\nconst scrollToContainerElementByNodeId = (nodeId, scrollingContainer) => {\n const element = getElementByNodeId(nodeId);\n if (element) {\n const elementRect = element.getBoundingClientRect();\n const scrollingContainerRect = scrollingContainer.getBoundingClientRect();\n if (elementRect.right > scrollingContainerRect.right) {\n scrollingContainer.scrollLeft = elementRect.right - scrollingContainerRect.right;\n } else if (scrollingContainer.scrollLeft > 0 && elementRect.left < scrollingContainerRect.left) {\n scrollingContainer.scrollLeft =\n scrollingContainer.scrollLeft + elementRect.left - scrollingContainerRect.left;\n }\n } else {\n setTimeout(() => scrollToContainerElementByNodeId(nodeId, scrollingContainer), 0);\n }\n};\n\nconst getNodeKey = ({node}) => node.nodeId;\n\nconst DefaultNodeRenderer = ({node}) => node.title || null;\n\nexport {scrollToContainerElementByNodeId, getNodeKey, DefaultNodeRenderer};\n","import React, {useCallback, useEffect, useMemo, useRef} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport PropTypes from 'prop-types';\nimport {assoc, identity, omit, path, pick, pipe} from 'ramda';\nimport {CellMeasurer} from 'react-virtualized';\nimport {useStyles} from './styles';\nimport {\n ReactSortableTree,\n ReactSortableTreeUtils,\n usePrevious,\n useRunOnceAfterValueInitialization\n} from '@reltio/components';\nimport * as hierarchyTheme from './theme';\nimport {GenericNodeType} from '../../constants/prop-types';\nimport {getMeasuredNode, useRefreshableMeasurerCache} from './measureHelpers';\nimport {DefaultNodeRenderer, getNodeKey, scrollToContainerElementByNodeId} from './nodeHelpers';\n\nconst theme = pick(\n ['nodeContentRenderer', 'treeNodeRenderer', 'scaffoldBlockPxWidth', 'rowHeight', 'slideRegionSize'],\n hierarchyTheme\n);\n\nconst Tree = ({\n NodeRenderer = DefaultNodeRenderer,\n root,\n scrollToNode,\n onChange,\n onRequestChildren,\n canDrag = false,\n canDrop,\n onScroll = identity,\n onNodeMoved = identity,\n inlineRoot\n}) => {\n const styles = useStyles();\n\n const treeData = useMemo(() => {\n const rootChildren = (root && root.children) || [];\n if (inlineRoot) {\n const inlinedRoot = pipe(omit(['children']), assoc('root', true))(root);\n return [inlinedRoot, ...rootChildren];\n } else {\n return rootChildren;\n }\n }, [root, inlineRoot]);\n\n const virtualizedListRef = useRef(null);\n const treeDataRef = useRef(null);\n const scrollTimerRef = useRef(null);\n treeDataRef.current = treeData;\n\n const getVirtualizedListInstance = useCallback(\n () => path(['current', 'wrappedInstance', 'current'], virtualizedListRef),\n []\n );\n\n const measurerCache = useRefreshableMeasurerCache(treeDataRef, getNodeKey);\n useRunOnceAfterValueInitialization(() => {\n // force applying of rows measurements after first grid render\n setTimeout(() => {\n const vList = getVirtualizedListInstance();\n vList && vList.forceUpdateGrid();\n }, 0);\n }, root);\n\n const getScrollingContainer = useCallback(\n () => path(['Grid', '_scrollingContainer'], getVirtualizedListInstance()),\n [getVirtualizedListInstance]\n );\n\n useEffect(() => {\n if (root && scrollToNode) {\n const results = ReactSortableTreeUtils.find({\n treeData,\n getNodeKey: getNodeKey,\n searchFocusOffset: 0,\n searchQuery: '',\n searchMethod: ({node}) => node === scrollToNode\n });\n const treeIndex = path(['matches', 0, 'treeIndex'], results);\n const vList = getVirtualizedListInstance();\n if (vList && treeIndex != null) {\n vList.scrollToRow(treeIndex);\n scrollTimerRef.current = setTimeout(() => {\n const scrollingContainer = getScrollingContainer();\n scrollToContainerElementByNodeId(scrollToNode.nodeId, scrollingContainer);\n }, 500);\n }\n }\n\n return () => {\n clearTimeout(scrollTimerRef.current);\n };\n }, [root, treeData, scrollToNode, getVirtualizedListInstance, getScrollingContainer]);\n\n const onSortableTreeChange = useCallback(\n (treeData) => {\n onChange && onChange({...root, children: inlineRoot ? treeData.slice(1) : treeData});\n },\n [onChange, root, inlineRoot]\n );\n\n //eslint-disable-next-line\n const nodeRenderWithMeasure = useCallback(\n ({node, treeIndex}) => (\n <CellMeasurer\n cache={measurerCache}\n columnIndex={0}\n key={getNodeKey({node})}\n rowIndex={treeIndex}\n parent={getVirtualizedListInstance()}\n >\n {getMeasuredNode({NodeRenderer, node, treeIndex})}\n </CellMeasurer>\n ),\n [NodeRenderer, measurerCache]\n );\n\n const generateNodeProps = useCallback(\n (rowInfo) => ({\n title: nodeRenderWithMeasure(rowInfo)\n }),\n [nodeRenderWithMeasure]\n );\n const previousTreeData = usePrevious(treeData);\n const onMoveNode = useCallback(\n (movedNodeInfo) => {\n const {prevPath, nextParentNode} = movedNodeInfo;\n let prevParentNode;\n if (prevPath.length > 1) {\n const parentPath = prevPath.slice(0, -1);\n const result = ReactSortableTreeUtils.getNodeAtPath({\n treeData: previousTreeData,\n getNodeKey: getNodeKey,\n path: parentPath\n });\n if (result) {\n prevParentNode = result.node;\n }\n } else {\n prevParentNode = root;\n }\n onNodeMoved({prevParentNode, ...movedNodeInfo, nextParentNode: nextParentNode || root});\n },\n [onNodeMoved, root, previousTreeData]\n );\n\n const handleOnLazyLoadChildren = useCallback(\n ({node}) => {\n onRequestChildren(node);\n },\n [onRequestChildren]\n );\n const handleResize = useCallback(() => {\n measurerCache.clearAll();\n }, [measurerCache]);\n\n return root ? (\n <ReactResizeDetector skipOnMount handleWidth onResize={handleResize}>\n <div className={styles.container}>\n {!inlineRoot && (\n <div className={styles.root}>\n <NodeRenderer node={root} isRoot={true} />\n </div>\n )}\n <div className={styles.tree}>\n <ReactSortableTree\n isVirtualized={true}\n canDrag={canDrag}\n canDrop={canDrop}\n treeData={treeData}\n theme={theme}\n generateNodeProps={generateNodeProps}\n rowHeight={measurerCache.rowHeight}\n reactVirtualizedListProps={{\n ref: virtualizedListRef,\n scrollToAlignment: 'end',\n onScroll\n }}\n onMoveNode={onMoveNode}\n onChange={onSortableTreeChange}\n onLazyLoadChildren={handleOnLazyLoadChildren}\n getNodeKey={getNodeKey}\n />\n </div>\n </div>\n </ReactResizeDetector>\n ) : null;\n};\n\nTree.propTypes = {\n NodeRenderer: PropTypes.elementType,\n root: GenericNodeType,\n canDrag: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n canDrop: PropTypes.func,\n scrollToNode: PropTypes.object,\n onChange: PropTypes.func,\n onRequestChildren: PropTypes.func,\n onNodeMoved: PropTypes.func,\n onScroll: PropTypes.func,\n inlineRoot: PropTypes.bool,\n getNodeKey: PropTypes.func\n};\n\nexport default Tree;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useCommonStyles = makeStyles(() => ({\n container: {\n fontSize: '13px',\n display: 'flex',\n paddingTop: '6px',\n position: 'relative'\n },\n title: {\n flexGrow: 1,\n width: 0,\n minHeight: '15px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n loadingSpinner: {\n alignSelf: 'center',\n maxHeight: '16px',\n marginRight: '16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {useCommonStyles} from '../commonStyles';\nimport {useStyles} from './styles';\n\nimport {LoadingSpinner} from '@reltio/components';\n\nexport const LoadingNode = ({className, registerChild}) => {\n const commonStyles = useCommonStyles();\n const styles = useStyles();\n return (\n <div className={classnames(commonStyles.container, className)} ref={registerChild}>\n <LoadingSpinner className={styles.loadingSpinner} />\n <div className={commonStyles.title}>{i18n.text('Loading...')}</div>\n </div>\n );\n};\n\nLoadingNode.propTypes = {\n className: PropTypes.string,\n registerChild: PropTypes.func\n};\n\nexport default LoadingNode;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n wrapper: {\n width: '100%'\n },\n avatar: {\n height: '16px',\n width: '16px',\n marginRight: '8px'\n },\n avatarWithMultiParent: {\n cursor: 'pointer'\n },\n number: {\n color: 'rgba(0,0,0,0.54)',\n marginLeft: '13px'\n },\n multiParentIcon: {\n position: 'absolute',\n top: '15px',\n left: '-3px',\n cursor: 'pointer'\n },\n actionsBlock: {\n position: 'absolute',\n right: '0',\n top: '2px',\n backgroundColor: 'rgb(240,240,240)',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: '-40px',\n top: 0,\n width: '40px',\n height: '100%',\n background: 'linear-gradient(to right, rgba(240,240,240, 0.2), rgba(240,240,240, 1) 100%)',\n pointerEvents: 'none'\n }\n },\n actionsBlockWithOpenMenu: {\n backgroundColor: 'white',\n '&::after': {\n background: 'linear-gradient(to right, rgba(255,255,255, 0.2), rgba(255,255,255, 1) 100%)'\n }\n },\n actionsBlockForCheckedNode: {\n backgroundColor: 'rgb(224,238,249)',\n '&::after': {\n background: 'linear-gradient(to right, rgba(224,238,249, 0.2), rgba(224,238,249, 1) 100%)'\n }\n },\n regularNodeCheckbox: {\n padding: 0,\n marginRight: '16px',\n marginTop: '-4px',\n marginLeft: '-4px'\n },\n subtitle: {\n fontSize: '11px',\n letterSpacing: 0,\n lineHeight: '13px',\n paddingLeft: '24px',\n paddingTop: '2px',\n paddingBottom: '4px',\n wordBreak: 'break-word'\n }\n}));\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"11\",\n height: \"11\",\n viewBox: \"0 0 12 12\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"circle\", {\n strokeOpacity: \".54\",\n stroke: \"#000\",\n fill: \"#FFF\",\n cx: \"6\",\n cy: \"6\",\n r: \"5.5\"\n}), React.createElement(\"path\", {\n d: \"M5.536 4.641L4.505 3.61H8v3.495L6.874 5.98 5.509 7.344a1.995 1.995 0 00-.581 1.548l-.407-.408a2 2 0 010-2.828l1.015-1.015z\",\n fillOpacity: \".87\",\n fill: \"#000\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"10\",\n height: \"10\",\n viewBox: \"0 0 10 10\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\",\n fillOpacity: \".38\"\n}, React.createElement(\"path\", {\n d: \"M4.536 3.641L3.505 2.61H7v3.495L5.874 4.98 4.509 6.344a1.995 1.995 0 00-.581 1.548l-.407-.408a2 2 0 010-2.828l1.015-1.015z\",\n fill: \"#000\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n fontSize: '13px',\n lineHeight: '16px',\n display: 'flex',\n marginBottom: '12px',\n alignItems: 'center',\n '&:last-child': {\n marginBottom: 0\n }\n },\n avatar: {\n height: '16px',\n width: '16px',\n marginRight: '6px',\n flexShrink: 0\n },\n loadingNode: {\n paddingTop: 0,\n width: '100%'\n }\n}));\n","import React, {useState} from 'react';\nimport {HierarchyNodeTitle} from '@reltio/components';\nimport LoadingNode from '../../LoadingNode/LoadingNode';\nimport ParentIcon from './parentIcon.svg';\nimport {useStyles} from './styles';\n\ntype Node = {\n pending: boolean;\n title?: string;\n viewId?: string;\n entityUri?: string;\n};\n\ntype Props = {\n node: Node;\n};\n\nexport const MultiParentBlockItem = ({node}: Props) => {\n const styles = useStyles();\n const [popperAnchor, setPopperAnchor] = useState<HTMLElement>();\n\n return (\n <div ref={setPopperAnchor} className={styles.root}>\n {node.pending ? (\n <LoadingNode className={styles.loadingNode} />\n ) : (\n <>\n <ParentIcon className={styles.avatar} />\n <HierarchyNodeTitle\n title={node.title}\n entityUri={node.entityUri}\n viewId={node.viewId}\n anchorEl={popperAnchor}\n />\n </>\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n multiParent: {\n position: 'relative',\n background: '#ffffff',\n border: '1px solid rgba(0,0,0,0.12)',\n marginLeft: '-5px',\n marginTop: '10px',\n padding: '10px 11px 9px 6px',\n '&:after,&:before': {\n bottom: '100%',\n left: '12px',\n border: 'solid transparent',\n content: \"' '\",\n height: 0,\n width: 0,\n position: 'absolute',\n 'pointer-events': 'none'\n },\n '&:after': {\n borderColor: 'rgba(255, 255, 255, 0)',\n borderBottomColor: '#ffffff',\n borderWidth: '6px',\n marginLeft: '-6px'\n },\n '&:before': {\n borderColor: 'rgba(220, 216, 245, 0)',\n borderBottomColor: 'rgba(0,0,0,0.12)',\n borderWidth: '7px',\n marginLeft: '-7px'\n }\n }\n}));\n","import React from 'react';\nimport {MultiParentBlockItem} from '../MultiParentBlockItem/MultiParentBlockItem';\nimport {useStyles} from './styles';\n\ntype Node = {\n pending: boolean;\n title?: string;\n viewId?: string;\n entityUri?: string;\n};\n\ntype Props = {\n showParents: boolean;\n additionalParents: Array<Node>;\n};\n\nconst MultiParentBlock = ({showParents, additionalParents}: Props) => {\n const styles = useStyles();\n\n return showParents && additionalParents.length > 0 ? (\n <div className={styles.multiParent}>\n {additionalParents.map((parent, i) => (\n <MultiParentBlockItem key={i} node={parent} />\n ))}\n </div>\n ) : null;\n};\n\nexport default MultiParentBlock;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n details: {\n margin: '1px 0 8px 24px'\n },\n loadingNode: {\n paddingTop: 0\n },\n detailLine: {\n display: 'flex'\n },\n detail: {\n flexGrow: 1,\n width: 0,\n wordWrap: 'break-word',\n lineHeight: '16px',\n paddingLeft: '8px',\n textIndent: '-8px'\n },\n detailLabel: {\n color: 'rgba(0, 0, 0, 0.6)',\n whiteSpace: 'nowrap',\n lineHeight: '16px',\n letterSpacing: 0,\n marginRight: '5px'\n },\n detailValue: {\n fontSize: '0.75rem',\n letterSpacing: 0\n }\n}));\n","import {assoc, both, complement, curry, equals, findIndex, has, path, pipe, prop, when} from 'ramda';\nimport {nanoid} from 'nanoid';\nimport {\n getGraphType,\n generateNewRelationUri,\n mapTree,\n sortTreeChildren,\n createRelationTypesLabelsMap,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\n\nexport const prepareTree = (tree, metadata) => {\n const {sortField, sortOrder, graphTypes} = tree;\n const root = mapTree(tree.root, {\n childrenProcessing: sortTreeChildren({\n sortField,\n sortOrder,\n typesLabelsMap: createRelationTypesLabelsMap(metadata)\n }),\n nodeProcessing: pipe(formatNodeFromTreeResponse, addSelfRelatedNode, expandNode)\n });\n const entitiesMap = buildEntitiesMapFromTree(root);\n const title = (getGraphType(metadata, graphTypes) || {}).label;\n return {...tree, root, entitiesMap, title};\n};\n\nexport const buildTreeFromHops = ({json, parentUri, sortField, sortOrder, metadata, isReversed}) => {\n const entitiesMap = processHopsResponse(json, isReversed);\n const rawSubTree = entitiesMap && breakCycles(entitiesMap[parentUri]);\n return mapTree(rawSubTree, {\n nodeProcessing: pipe(formatNodeFromHopResponse, addSelfRelatedNode),\n childrenProcessing: sortTreeChildren({\n sortField,\n sortOrder,\n typesLabelsMap: createRelationTypesLabelsMap(metadata)\n })\n });\n};\n\nlet nodeCounter = 0;\nexport const generateId = () => nodeCounter++;\n\nconst convertParentProp = (parent) => (parent ? [].concat(parent) : []);\n\nconst getNodeUri = (node) => path(['entity', 'uri'], node);\n\nconst getRelationsProp = (relations) => (relations ? wrapInArrayIfNeeded(relations) : []);\n\nconst getRelationProp = (node, directParentUri) => {\n const relations = prop('relation', node);\n if (Array.isArray(relations)) {\n const parents = convertParentProp(node.parent);\n const parentIndex = findIndex(equals(directParentUri), parents);\n return path([parentIndex], relations);\n } else {\n return relations;\n }\n};\n\nexport const formatNodeFromTreeResponse = (node, directParent = {}) =>\n node.formatted\n ? node\n : {\n ...node,\n nodeId: generateId(),\n parent: convertParentProp(node.parent),\n directParentUri: getNodeUri(directParent),\n pending: !node.children && node.total > 0,\n formatted: true,\n relations: getRelationsProp(node.relation),\n relation: getRelationProp(node, getNodeUri(directParent))\n };\n\nconst formatNodeFromHopResponse = (node, directParent = {}) => {\n const {children, parent, traversedRelations, untraversedRelations, cycled, formatted, relation, ...entity} = node;\n if (formatted) {\n return node;\n }\n const total = traversedRelations + untraversedRelations - 1;\n const directParentUri = getNodeUri(directParent);\n const formattedNode = {\n nodeId: generateId(),\n cycled,\n entity,\n parent: convertParentProp(parent),\n directParentUri,\n total,\n pending: !cycled && !children && total > 0,\n formatted: true,\n relations: getRelationsProp(relation),\n relation: getRelationProp(node, directParentUri)\n };\n if (children) {\n formattedNode.children = children;\n formattedNode.pending = !cycled && total > children.length;\n }\n return formattedNode;\n};\n\nconst addSelfRelatedNode = (node) => {\n const children = node.children || [];\n const alreadyHasSelfRelatedNode = children.some(\n (child) => path(['entity', 'uri'], child) === node.entity.uri || child.uri === node.entity.uri\n );\n if (!alreadyHasSelfRelatedNode && !node.cycled && node.parent.includes(node.entity.uri)) {\n return {\n ...node,\n children: children.concat({\n ...node,\n nodeId: generateId(),\n directParentUri: node.entity.uri,\n total: 0,\n children: [],\n cycled: true\n })\n };\n }\n return node;\n};\n\nconst expandNode = when(both(has('children'), complement(prop('pending'))), assoc('expanded', true));\n\n/* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\nconst clearNodeForEntityMap = ({\n nodeId,\n relation,\n formatted,\n directParentUri,\n pending,\n children,\n total,\n ...clearedNode\n}) => clearedNode;\n/* eslint-enable */\n\nconst buildEntitiesMapFromTree = (node, result = {}) => {\n const key = getNodeUri(node);\n if (key) {\n result[key] = clearNodeForEntityMap(node);\n }\n if (node.children) {\n node.children.forEach((child) => buildEntitiesMapFromTree(child, result));\n }\n return result;\n};\n\nconst buildEntitiesMapFromHopsEntities = (entitiesMap) => {\n return Object.keys(entitiesMap).reduce((result, entityUri) => {\n const entity = formatNodeFromHopResponse(entitiesMap[entityUri]);\n result[entityUri] = clearNodeForEntityMap(entity);\n return result;\n }, {});\n};\n\nconst processHopsResponse = ({entities, relations}, isReversed) => {\n if (Array.isArray(entities)) {\n const entitiesMap = entities.reduce((result, entity) => {\n result[entity.uri] = entity;\n return result;\n }, {});\n (relations || []).forEach((relation) => {\n const parentObjectKey = isReversed ? 'endObject' : 'startObject';\n const childObjectKey = isReversed ? 'startObject' : 'endObject';\n const parent = entitiesMap[relation[parentObjectKey].objectURI];\n const child = entitiesMap[relation[childObjectKey].objectURI];\n parent.children = parent.children || [];\n if (!parent.children.includes(child)) {\n parent.children.push(child);\n }\n child.parent = child.parent || [];\n if (!child.relation) {\n child.relation = relation;\n }\n if (!child.parent.includes(parent.uri)) {\n child.parent.push(parent.uri);\n }\n });\n return entitiesMap;\n }\n};\n\nconst breakCycles = (root) => {\n /*\n Example of hierarchy with cycles:\n\n node\n |\n child\n |\n N-grand-child\n |\n [N-grand-child | child | node]\n\n Break the cycle by cloning the lowest-level node that causes cycle without its children\n */\n\n const queue = [\n {\n node: root,\n parent: null\n }\n ];\n const visitedNodes = [];\n for (const current of queue) {\n const {node, parent} = current;\n if (visitedNodes.includes(node)) {\n parent.children = parent.children.map((child) => {\n if (child === node) {\n return {\n ...node,\n cycled: true,\n children: []\n };\n } else {\n return child;\n }\n });\n } else {\n visitedNodes.push(node);\n if (node.children) {\n queue.push(...node.children.map((child) => ({node: child, parent: node})));\n }\n }\n }\n return root;\n};\n\nexport const buildEntitiesMapFromHops = curry((isReversed, json) =>\n pipe(processHopsResponse, buildEntitiesMapFromHopsEntities)(json, isReversed)\n);\n\nexport const isLoadingNode = (node) => node.loading;\nexport const isSelectedNode = (node, currentEntityUri) => getNodeUri(node) === currentEntityUri;\nexport const createLoadingNode = () => ({\n entity: {},\n loading: true,\n nodeId: nanoid()\n});\n\nexport const createNewTreeNode = () => ({\n nodeId: generateId(),\n relation: {\n uri: generateNewRelationUri(),\n attributes: {}\n }\n});\n","import {buildEntitiesMapFromHops, buildTreeFromHops, generateId} from '../../helpers/treeDataProvider';\nimport i18n from 'ui-i18n';\nimport {any, path, pipe, prop} from 'ramda';\nimport mdm, {profile, ui} from '@reltio/mdm-module';\nimport {getAllEntityTypesForGraphType, getHops, getRequestErrorMessage, isAbortError} from '@reltio/mdm-sdk';\n\nconst treeActions = profile.trees.actions;\n\nexport const expandNodeCommand =\n ({id, nodeId}) =>\n (dispatch) => {\n dispatch(treeActions.nodeExpandedEvent({id, nodeId}));\n };\n\nexport const loadChildren =\n ({parentUri, parentId, graphTypes, activenessDate, id, isReversed, signal}) =>\n (dispatch, getState) => {\n const {sortField, sortOrder} = mdm.selectors.getTree(getState(), id);\n const metadata = mdm.selectors.getMetadata(getState());\n dispatch(treeActions.childrenLoading({id, parentId, nodeId: generateId()}));\n return getHops({uri: parentUri, graphTypes, activenessDate, signal})\n .then((json) => {\n const {children} = buildTreeFromHops({json, parentUri, sortField, sortOrder, metadata, isReversed});\n const entitiesSubMap = buildEntitiesMapFromHops(isReversed, json);\n dispatch(treeActions.childrenLoaded({id, children, parentId}));\n dispatch(treeActions.entitiesMappingLoaded({id, entitiesSubMap}));\n })\n .catch((error) => {\n if (!isAbortError(error)) {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n }\n dispatch(treeActions.cancelChildrenLoading({id, parentId}));\n });\n };\n\nexport const loadParents =\n ({uri, graphTypes, activenessDate, id, isReversed, nodeId, signal}) =>\n (dispatch) => {\n const createSubTreeEntitiesLoadedEvent = (entitiesSubMap) =>\n treeActions.entitiesMappingLoaded({id, entitiesSubMap});\n const parentsProcessing = pipe(\n buildEntitiesMapFromHops(isReversed),\n createSubTreeEntitiesLoadedEvent,\n dispatch\n );\n return getHops({uri, graphTypes, activenessDate, signal})\n .then(parentsProcessing)\n .catch((error) => {\n if (!isAbortError(error)) {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n }\n dispatch(treeActions.treeNodeChanged({id, node: {nodeId, showParents: false}}));\n });\n };\n\nexport const showCurrentEntity =\n ({id, uri}) =>\n (dispatch) => {\n dispatch(treeActions.currentEntityShownInTree({id, uri}));\n setTimeout(() => {\n dispatch(treeActions.resetScrollToNode(id));\n }, 0);\n };\n\nexport const scrollToTreeTop = (id) => (dispatch, getState) => {\n const tree = mdm.selectors.getTree(getState(), id);\n const uri = path(['root', 'children', 0, 'entity', 'uri'], tree);\n if (uri) {\n dispatch(showCurrentEntity({id, uri}));\n }\n};\n\nexport const hasEntityTypesWithSecondaryLabelPattern = pipe(\n getAllEntityTypesForGraphType,\n any(prop('secondaryLabelPattern'))\n);\n","import {always, cond, equals, has} from 'ramda';\nimport {profile} from '@reltio/mdm-module';\nimport {getRelation, NODE_EDITING_MODES, getPayloadForNodeApplyEditing} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {loadChildren} from './treeHelpers';\n\nconst treeActions = profile.trees.actions;\n\nexport const isRelationLoaded = has('attributes');\nexport const isNodeChecked = ({node, checkedNodes}) => has(node.nodeId, checkedNodes);\nexport const isEditorNode = has('editingMode');\n\nexport const hasEditorNode = (node = {}) => {\n return isEditorNode(node) || (has('children', node) && node.children.some(hasEditorNode));\n};\n\nconst loadRelationDetails =\n ({id, node}) =>\n (dispatch) => {\n const {nodeId, relation} = node;\n const currentRelation = Array.isArray(relation) ? relation[0] : relation;\n return isRelationLoaded(currentRelation)\n ? Promise.resolve(relation)\n : getRelation(currentRelation.uri).then((relationDetails) => {\n const detailedRelation = {...currentRelation, ...relationDetails};\n dispatch(\n treeActions.treeNodeChanged({\n id,\n node: {\n nodeId,\n relation: detailedRelation\n }\n })\n );\n return Promise.resolve(detailedRelation);\n });\n };\n\nexport const toggleRelationDetails =\n ({id, node}) =>\n (dispatch) => {\n const {nodeId, showDetails, relation} = node;\n const updatedNode = {\n nodeId,\n showDetails: !showDetails\n };\n dispatch(treeActions.treeNodeChanged({id, node: updatedNode}));\n\n const needDetails = !showDetails && !isRelationLoaded(relation) && relation;\n if (needDetails) {\n dispatch(loadRelationDetails({id, node}));\n }\n };\n\nexport const nodeStartEditing =\n ({id, node}) =>\n (dispatch) => {\n const {nodeId} = node;\n dispatch(treeActions.treeNodeChanged({id, node: {nodeId, loading: true}}));\n dispatch(loadRelationDetails({id, node})).then(() => {\n dispatch(treeActions.treeNodeEditingStarted({id, node}));\n });\n };\n\nexport const nodeStartAddingChild =\n ({id, node, newNode, isReversed, signal}) =>\n (dispatch, getState) => {\n dispatch(treeActions.treeNodeNewChildEditingStarted({id, node, newNode}));\n if (node.pending) {\n const store = getState();\n const {activenessDate, graphTypes} = mdm.selectors.getTree(store, id);\n dispatch(\n loadChildren({\n parentUri: node.entity.uri,\n parentId: node.nodeId,\n graphTypes,\n activenessDate,\n id,\n isReversed,\n signal\n })\n );\n }\n };\n\nexport const nodeCancelEditing =\n ({id, node}) =>\n (dispatch) => {\n const action = cond([\n [equals(NODE_EDITING_MODES.addingParent), always(treeActions.treeNodeNewParentEditingCanceled)],\n [equals(NODE_EDITING_MODES.addingChild), always(treeActions.treeNodeNewChildEditingCanceled)],\n [equals(NODE_EDITING_MODES.editing), always(treeActions.treeNodeEditingCanceled)]\n ])(node.editingMode);\n dispatch(action({id, node}));\n };\n\nexport const nodeApplyEditing =\n ({id, node, isReversed}) =>\n (dispatch, getState) => {\n const connection = mdm.selectors.getTreeEditingConnection(getState(), id, node.relation.uri);\n let dataAction;\n\n switch (node.editingMode) {\n case NODE_EDITING_MODES.addingParent:\n case NODE_EDITING_MODES.addingChild:\n dataAction = treeActions.treeRelationCreated;\n break;\n case NODE_EDITING_MODES.editing: {\n dataAction = treeActions.treeRelationChanged;\n break;\n }\n }\n dispatch(dataAction(getPayloadForNodeApplyEditing({node, connection, isReversed})));\n\n const treeAppearanceChangeActionCreator = cond([\n [equals(NODE_EDITING_MODES.addingParent), always(treeActions.treeNodeNewParentEditingApplied)],\n [equals(NODE_EDITING_MODES.addingChild), always(treeActions.treeNodeNewChildEditingApplied)],\n [equals(NODE_EDITING_MODES.editing), always(treeActions.treeNodeEditingApplied)]\n ])(node.editingMode);\n dispatch(treeAppearanceChangeActionCreator({id, node}));\n };\n\nexport const hasLoadingNode = (node) => {\n return node.loading || (has('children', node) && node.children.some(hasLoadingNode));\n};\n\nexport const getShowSecondaryLabelValue = (showSecondaryLabel = true, enabled) => enabled && showSecondaryLabel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {pick, prop} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\nimport LoadingNode from '../../LoadingNode/LoadingNode';\nimport {ACTIVENESS_ATTR_TYPES, DataTypes, getRelationType, MetadataType, RelationType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {DataTypeValue} from '@reltio/components';\nimport {isRelationLoaded} from '../../../helpers/nodeHelpers';\n\nconst getRelationDetails = pick(['startDate', 'endDate']);\nconst attrTypes = [\n {\n uri: 'typeName',\n type: DataTypes.TYPE_STRING,\n label: i18n.text('Relationship')\n },\n ...ACTIVENESS_ATTR_TYPES\n];\n\nconst RelationDetails = ({showDetails, metadata, relation = {}}) => {\n const styles = useStyles();\n const relationshipData = getRelationDetails(relation);\n relationshipData.typeName = prop('label', getRelationType(metadata, relation.type));\n\n return showDetails && relation ? (\n <div className={styles.details}>\n {isRelationLoaded(relation) ? (\n attrTypes.map(\n (attrType) =>\n relationshipData[attrType.uri] && (\n <div key={attrType.uri} className={styles.detailLine}>\n <div className={styles.detail}>\n <Typography variant=\"caption\" gutterBottom className={styles.detailLabel}>\n {attrType.label + ': '}\n </Typography>\n <span className={styles.detailValue}>\n <DataTypeValue\n value={relationshipData[attrType.uri]}\n dataTypeDefinition={attrType}\n />\n </span>\n </div>\n </div>\n )\n )\n ) : (\n <LoadingNode key=\"loading-details\" className={styles.loadingNode} />\n )}\n </div>\n ) : null;\n};\n\nRelationDetails.propTypes = {\n showDetails: PropTypes.bool,\n relation: RelationType,\n metadata: MetadataType\n};\n\nexport default RelationDetails;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n addButton: {\n marginRight: '11px'\n },\n editButton: {\n marginRight: '13px'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {identity} from 'ramda';\nimport EditIcon from '@material-ui/icons/Edit';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\nimport InfoIconSelected from '@material-ui/icons/InfoRounded';\n\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst ActionsBlock = ({\n className,\n show,\n showDetails,\n onToggleRelationDetails,\n onMenuOpen,\n onMenuClose,\n onStartEditing,\n onAddParent,\n onAddChild,\n onDelete\n}) => {\n const styles = useStyles();\n const menuItems = [\n onAddParent && {\n text: i18n.text('Add Parent'),\n onClick: onAddParent\n },\n onAddChild && {\n text: i18n.text('Add Child'),\n onClick: onAddChild\n }\n ].filter(identity);\n\n return show && (onToggleRelationDetails || onStartEditing || onAddParent || onAddChild || onDelete) ? (\n <div className={className}>\n {onToggleRelationDetails && (\n <SmallIconButtonWithTooltip\n tooltipTitle={showDetails ? i18n.text('Hide details') : i18n.text('View details')}\n tooltipPlacement=\"bottom-end\"\n size=\"S\"\n icon={showDetails ? InfoIconSelected : InfoIcon}\n onClick={onToggleRelationDetails}\n />\n )}\n {menuItems.length > 0 && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: AddCircleIcon,\n size: 'S',\n tooltipTitle: i18n.text('Add node'),\n className: styles.addButton\n }}\n menuId={'tree-node-actions'}\n menuItems={menuItems}\n onMenuOpen={onMenuOpen}\n onMenuClose={onMenuClose}\n />\n )}\n {onStartEditing && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Edit node')}\n size=\"S\"\n icon={EditIcon}\n onClick={onStartEditing}\n className={styles.editButton}\n />\n )}\n {onDelete && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Delete node')}\n size=\"S\"\n icon={DeleteIcon}\n onClick={onDelete}\n />\n )}\n </div>\n ) : null;\n};\n\nActionsBlock.propTypes = {\n show: PropTypes.bool,\n showDetails: PropTypes.bool,\n className: PropTypes.string,\n onMenuOpen: PropTypes.func,\n onMenuClose: PropTypes.func,\n onStartEditing: PropTypes.func,\n onAddParent: PropTypes.func,\n onAddChild: PropTypes.func,\n onDelete: PropTypes.func,\n onToggleRelationDetails: PropTypes.func\n};\n\nexport default ActionsBlock;\n","import {defaultTo, includes, path, pipe, prop} from 'ramda';\nimport {getValidatedSortField, getValidatedSortOrder} from '@reltio/mdm-sdk';\n\nexport const getGraphConfig = prop('graph');\nexport const getReverseRelationsConfig = pipe(getGraphConfig, path(['options', 'reverseRelations']));\nexport const getGraphTypeConfig = pipe(getGraphConfig, prop('type'));\n\nexport const getValidatedSortOrderFromConfig = pipe(prop('sortOrder'), getValidatedSortOrder);\n\nexport const getValidatedSortFieldFromConfig = pipe(prop('sortBy'), getValidatedSortField);\n\nexport const getIsSecondaryLabelEnabledFromConfig = pipe(prop('attributes'), defaultTo([]), includes('secondaryLabel'));\n","import {__, both, curry, isNil, path, pathOr, prop, reject} from 'ramda';\nimport {\n checkMetadataForCreate,\n checkMetadataForDelete,\n checkMetadataForUpdate,\n getAbsoluteImageUrl,\n getEndObjectTypeUri,\n getEntityType,\n getGraphType,\n getLabel,\n getPropWithInheritance,\n getRelationshipTypeUrisFromGraphType,\n getRelationType,\n getStartObjectTypeUri,\n isEditableMode as checkIsEditableMode,\n isInHierarchy\n} from '@reltio/mdm-sdk';\n\nimport {createNewTreeNode, isSelectedNode} from '../../../../helpers/treeDataProvider';\nimport {getGraphTypeConfig, getReverseRelationsConfig} from '../../../helpers/configHelpers';\nimport {profile} from '@reltio/mdm-module';\nimport {nodeStartAddingChild, nodeStartEditing, toggleRelationDetails} from '../../../helpers/nodeHelpers';\n\nconst treeActions = profile.trees.actions;\n\nconst getTypeGraphIcon = (absoluteImagePath, metadata, entityTypeUri) => {\n const entityType = getEntityType(metadata, entityTypeUri) || {};\n const entityTypeGraphIcon = getPropWithInheritance(metadata, entityType, 'typeGraphIcon');\n return entityTypeGraphIcon && getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n};\n\nconst canEditNode = ({relation}, metadata, mode) =>\n relation ? checkMetadataForUpdate(mode, getRelationType(metadata, relation.type)) : false;\n\nconst canAddRelative = curry((direction, config, metadata, node, mode) => {\n const {entity = {}} = node;\n const isReversed = getReverseRelationsConfig(config) || false;\n const isChild = isReversed ? direction === 'parent' : direction === 'child';\n const nodeEntityTypeUri = entity.type;\n const graphTypeUri = getGraphTypeConfig(config);\n if (graphTypeUri) {\n const graphType = getGraphType(metadata, graphTypeUri);\n const relationTypeUris = getRelationshipTypeUrisFromGraphType(graphType) || [];\n const isNodeEntityInstanceOf = isInHierarchy(metadata, __, nodeEntityTypeUri);\n return relationTypeUris\n .map(getRelationType(metadata))\n .filter(both(checkMetadataForCreate(mode), checkMetadataForUpdate(mode)))\n .map(isChild ? getStartObjectTypeUri : getEndObjectTypeUri)\n .some(isNodeEntityInstanceOf);\n }\n return true;\n});\n\nconst canAddParentForNode = canAddRelative('parent');\nconst canAddChildForNode = canAddRelative('child');\n\nconst canDeleteNode = ({relation}, metadata, mode) =>\n relation ? checkMetadataForDelete(mode, getRelationType(metadata, relation.type)) : false;\n\nconst simpleNodePropsMapping = ({\n node,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config = {},\n showSecondaryLabel,\n onParentsRequested,\n dispatch,\n signal\n}) => {\n const {entity, children, total, pending, showParents, nodeId} = node;\n const {id} = config;\n const isSelected = isSelectedNode(node, currentEntityUri);\n const isEditable = checkIsEditableMode(mode);\n const handleOnDelete = () => {\n const relationUri = path(['relation', 'uri'], node);\n relationUri && dispatch(treeActions.treeRelationRemoved({relationUri}));\n dispatch(treeActions.treeNodeRemoved({id, nodeId}));\n };\n\n const commonActionHandlers = {\n onToggleShowParents: (needLoadAdditionalParents) => {\n dispatch(treeActions.treeNodeChanged({id, node: {nodeId, showParents: !showParents}}));\n needLoadAdditionalParents && onParentsRequested(node);\n }\n };\n\n const actionHandlers = isEditable\n ? {\n onStartEditing: canEditNode(node, metadata, mode) ? () => dispatch(nodeStartEditing({id, node})) : null,\n onAddParent: canAddParentForNode(config, metadata, node, mode)\n ? () =>\n dispatch(treeActions.treeNodeNewParentEditingStarted({id, node, newNode: createNewTreeNode()}))\n : null,\n onAddChild: canAddChildForNode(config, metadata, node, mode)\n ? () =>\n dispatch(\n nodeStartAddingChild({\n id,\n isReversed: getReverseRelationsConfig(config),\n node,\n newNode: createNewTreeNode(),\n signal\n })\n )\n : null,\n onDelete: canDeleteNode(node, metadata, mode) ? handleOnDelete : null,\n ...commonActionHandlers\n }\n : {\n onToggleRelationDetails: () => dispatch(toggleRelationDetails({id, node})),\n ...commonActionHandlers\n };\n return {\n title: getLabel(entity.label),\n subtitle: showSecondaryLabel ? entity.secondaryLabel : undefined,\n number: children && !pending ? children.length : total,\n icon: getTypeGraphIcon(absoluteImagePath, metadata, entity.type),\n isSelectedNode: isSelected,\n entityUri: entity.uri,\n viewId: id,\n showDetails: node.showDetails && !isEditable,\n ...reject(isNil, actionHandlers)\n };\n};\nconst getAdditionalParents = ({node, entitiesMap, metadata, config, absoluteImagePath}) => {\n const {entity, directParentUri} = node;\n return pathOr([], [entity.uri, 'parent'], entitiesMap)\n .filter((parentUri) => parentUri !== directParentUri)\n .map((parentUri) => {\n const mapEntry = prop(parentUri, entitiesMap);\n return mapEntry\n ? simpleNodePropsMapping({node: mapEntry, config, metadata, absoluteImagePath})\n : {pending: true};\n });\n};\n\nconst nodePropsMapping = ({\n node,\n entitiesMap,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config,\n showSecondaryLabel,\n onParentsRequested,\n signal,\n dispatch\n}) => ({\n ...node,\n relation: Array.isArray(node.relation) ? node.relation[0] : node.relation,\n ...simpleNodePropsMapping({\n node,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config,\n showSecondaryLabel,\n onParentsRequested,\n signal,\n dispatch\n }),\n additionalParents: getAdditionalParents({\n node,\n config,\n entitiesMap,\n metadata,\n absoluteImagePath\n })\n});\n\nexport {nodePropsMapping, canDeleteNode, canAddChildForNode};\n","import {createContext} from 'react';\n\nexport const NodeContext = createContext({\n config: {},\n entitiesMap: {},\n onToggleNodeCheckbox: () => {},\n onParentsRequested: () => {},\n checkedNodes: {},\n canSelect: false\n});\n\nNodeContext.displayName = 'NodeContext';\n","import React, {memo, useCallback, useContext, useEffect, useState} from 'react';\nimport classnames from 'classnames';\nimport {Avatar as Avatar} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {HierarchyNodeTitle, PageRequestsAbortingContext} from '@reltio/components';\nimport {identity} from 'ramda';\n\nimport {useStyles} from './styles';\nimport {useCommonStyles} from '../commonStyles';\nimport DEFAULT_ICON from './defaultTypeIcon.png';\nimport MultiParentIcon from './multiParentOverlap.svg';\n\nimport {HierarchyNodeType} from '../../../constants/prop-types';\nimport MultiParentBlock from '../components/MultiParentBlock/MultiParentBlock';\nimport RelationDetails from '../components/RelationDetails/RelationDetails';\nimport ActionsBlock from '../components/ActionsBlock/ActionsBlock';\nimport {nodePropsMapping} from './helpers/nodeMappingHelpers';\nimport {NodeContext} from '../nodeContext';\nimport {isNodeChecked, isRelationLoaded} from '../../helpers/nodeHelpers';\nimport PropTypes from 'prop-types';\n\nconst onImageLoadFail = (e) => {\n e.target.src = DEFAULT_ICON;\n};\n\nexport const RegularNode = ({node = {}, isRoot, registerChild, measure = identity}) => {//NOSONAR\n const styles = useStyles();\n const [popperAnchor, setPopperAnchor] = useState();\n const commonStyles = useCommonStyles();\n const dispatch = useDispatch();\n const {config, entitiesMap, onToggleNodeCheckbox, checkedNodes, canSelect, onParentsRequested, showSecondaryLabel} =\n useContext(NodeContext);\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const {uri: currentEntityUri} = useSelector(mdm.selectors.getEntity);\n const mode = useSelector(mdm.selectors.getMode);\n const signal = useContext(PageRequestsAbortingContext);\n\n const {\n title,\n subtitle,\n number,\n icon,\n relation,\n showDetails,\n additionalParents = [],\n showParents,\n isSelectedNode,\n nodeId,\n viewId,\n entityUri,\n onStartEditing,\n onAddParent,\n onAddChild,\n onToggleRelationDetails,\n onDelete,\n onToggleShowParents\n } = nodePropsMapping({\n node,\n entitiesMap,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config,\n showSecondaryLabel,\n onParentsRequested,\n signal,\n dispatch\n });\n\n const needLoadAdditionalParents = additionalParents.some((parent) => parent.pending);\n const [showControls, setShowControls] = useState(false);\n const showActionsBlock = useCallback(() => setShowControls(true), []);\n const hideActionsBlock = useCallback(() => setShowControls(false), []);\n const [openActionsMenu, setOpenActionsMenu] = useState(false);\n const showActionsMenu = useCallback(() => setOpenActionsMenu(true), []);\n const hideActionsMenu = useCallback(() => {\n setOpenActionsMenu(false);\n setShowControls(false);\n }, []);\n const hasMultiParents = additionalParents.length > 0;\n const toggleShowParents =\n hasMultiParents && onToggleShowParents ? onToggleShowParents.bind(null, needLoadAdditionalParents) : undefined;\n const toggleNodeCheckbox = useCallback(\n (event) =>\n onToggleNodeCheckbox({\n checked: event.target.checked,\n node\n }),\n [node, onToggleNodeCheckbox]\n );\n const checked = isNodeChecked({node, checkedNodes});\n const showCheckbox = false && canSelect && onDelete; // to move node you should have rights to delete it\n useEffect(measure, [\n showCheckbox,\n hasMultiParents,\n subtitle,\n !!onToggleRelationDetails,\n showDetails,\n number,\n showParents,\n showDetails && isRelationLoaded(relation),\n showParents && needLoadAdditionalParents,\n measure\n ]);\n return (\n <div\n className={styles.wrapper}\n data-node-id={nodeId}\n data-reltio-id={'tree-node-' + nodeId}\n onMouseEnter={showActionsBlock}\n onMouseLeave={hideActionsBlock}\n ref={registerChild}\n >\n <div ref={setPopperAnchor} className={commonStyles.container}>\n {showCheckbox ? (\n <Checkbox\n className={classnames(styles.regularNodeCheckbox)}\n checked={checked}\n onChange={toggleNodeCheckbox}\n color=\"primary\"\n />\n ) : (\n <Avatar\n className={classnames(styles.avatar, {[styles.avatarWithMultiParent]: hasMultiParents})}\n src={icon || DEFAULT_ICON}\n onError={onImageLoadFail}\n onClick={toggleShowParents}\n />\n )}\n\n {hasMultiParents && !showCheckbox && (\n <MultiParentIcon className={styles.multiParentIcon} onClick={toggleShowParents} />\n )}\n <div className={commonStyles.title}>\n <HierarchyNodeTitle\n title={title}\n isSelected={isSelectedNode}\n viewId={viewId}\n entityUri={entityUri}\n anchorEl={popperAnchor}\n />\n {!!number && <span className={styles.number}>{number}</span>}\n <ActionsBlock\n show={showControls || openActionsMenu}\n className={classnames(styles.actionsBlock, {\n [styles.actionsBlockWithOpenMenu]: openActionsMenu && !checked,\n [styles.actionsBlockForCheckedNode]: openActionsMenu && checked\n })}\n showDetails={showDetails}\n onToggleRelationDetails={relation && !isRoot ? onToggleRelationDetails : null}\n onMenuOpen={showActionsMenu}\n onMenuClose={hideActionsMenu}\n onStartEditing={!isRoot ? onStartEditing : null}\n onAddChild={onAddChild}\n onAddParent={onAddParent}\n onDelete={!isRoot ? onDelete : null}\n />\n </div>\n </div>\n {!showCheckbox && <MultiParentBlock showParents={showParents} additionalParents={additionalParents} />}\n {subtitle && <div className={styles.subtitle}>{subtitle}</div>}\n {onToggleRelationDetails && (\n <RelationDetails showDetails={showDetails} metadata={metadata} relation={relation} />\n )}\n </div>\n );\n};\n\nRegularNode.propTypes = {\n node: HierarchyNodeType,\n isRoot: PropTypes.bool,\n registerChild: PropTypes.func,\n measure: PropTypes.func\n};\n\nexport default memo(RegularNode);\n","import PropTypes from 'prop-types';\nimport React, {useMemo} from 'react';\nimport {\n MetadataType,\n RelationTypeType,\n getEntityType,\n getPropWithInheritance,\n getDirectionalLabelFromObject\n} from '@reltio/mdm-sdk';\nimport {RelationTypeSelector} from '@reltio/components';\nimport {ascend, evolve, identity, pipe, prop, propEq, propOr, tap} from 'ramda';\n\nconst getRelationTypesOptions = (relationTypes, isChild, metadata) => {\n const labelsMap = {};\n const addLabelInMap = (label) => (labelsMap[label] = propOr(0, label, labelsMap) + 1);\n const getDirectionalLabel = pipe(getDirectionalLabelFromObject, tap(addLabelInMap));\n const byLabel = ascend(prop('label'));\n const getEntityTypeWithInheritedIcon = (metadata, entityTypeUri) => {\n const entityType = getEntityType(metadata, entityTypeUri);\n const typeIcon = getPropWithInheritance(metadata, entityType, 'typeIcon');\n return {...entityType, typeIcon};\n };\n return relationTypes\n .map(({uri, label, startObject, endObject}) => ({\n label: {directionalLabel: getDirectionalLabel(isChild ? endObject : startObject), typeLabel: label},\n value: uri,\n startObject: {\n ...startObject,\n objectType: getEntityTypeWithInheritedIcon(metadata, startObject.objectTypeURI)\n },\n endObject: {...endObject, objectType: getEntityTypeWithInheritedIcon(metadata, endObject.objectTypeURI)}\n }))\n .map(\n evolve({\n label: ({directionalLabel, typeLabel}) => {\n return directionalLabel\n ? labelsMap[directionalLabel] > 1\n ? `${directionalLabel} (${typeLabel})`\n : directionalLabel\n : typeLabel;\n }\n })\n )\n .sort(byLabel);\n};\n\nconst fromEditorValue = (option) => option.value;\n\nconst toEditorValue = (value, relationsTypesOptions) => relationsTypesOptions.find(propEq('value', value));\n\nconst NodeRelationTypeSelector = ({\n value,\n relationTypes = [],\n isChild,\n onChange = identity,\n metadata,\n ...otherProps\n}) => {\n const relationsTypesOptions = useMemo(() => getRelationTypesOptions(relationTypes, isChild, metadata), [\n relationTypes,\n isChild,\n metadata\n ]);\n\n return (\n <RelationTypeSelector\n value={toEditorValue(value, relationsTypesOptions)}\n options={relationsTypesOptions}\n onChange={pipe(fromEditorValue, onChange)}\n {...otherProps}\n />\n );\n};\n\nNodeRelationTypeSelector.propTypes = {\n className: PropTypes.string,\n value: PropTypes.string,\n relationTypes: PropTypes.arrayOf(RelationTypeType),\n isChild: PropTypes.bool,\n metadata: MetadataType,\n onChange: PropTypes.func\n};\n\nexport default NodeRelationTypeSelector;\n","import {__, allPass, curry, defaultTo, filter, isNil, map, pipe, reject} from 'ramda';\n\nimport {\n checkMetadataForCreate,\n checkMetadataForUpdate,\n getEndObjectTypeUri,\n getRelationshipTypeUrisFromGraphType,\n getRelationType,\n getStartObjectTypeUri,\n isInHierarchy\n} from '@reltio/mdm-sdk';\n\nexport const isAvailableRelationForRelatedEntity = curry((isChild, relatedEntity, metadata, relationType) => {\n const isRelatedEntityInstanceOf = isInHierarchy(metadata, __, relatedEntity.type);\n const getObjectUri = isChild ? getStartObjectTypeUri : getEndObjectTypeUri;\n return pipe(getObjectUri, isRelatedEntityInstanceOf)(relationType);\n});\n\nexport const getAllAvailableRelationTypes = (isChild, relatedEntity, metadata, graphType, mode) =>\n pipe(\n getRelationshipTypeUrisFromGraphType,\n defaultTo([]),\n map(getRelationType(metadata)),\n reject(isNil),\n filter(\n allPass([\n checkMetadataForCreate(mode),\n checkMetadataForUpdate(mode),\n isAvailableRelationForRelatedEntity(isChild, relatedEntity, metadata)\n ])\n )\n )(graphType);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n editorContainer: {\n width: 'calc(100% - 34px)',\n minWidth: '185px',\n backgroundColor: 'rgba(0,0,0,0.03)',\n padding: '16px 16px 8px 16px'\n },\n dense: {\n marginBottom: 0\n },\n item: {\n marginBottom: '20px'\n },\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end'\n }\n}));\n","import React, {memo, useCallback, useContext, useEffect, useMemo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport PropTypes from 'prop-types';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {equals, pipe} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {HierarchyNodeType} from '../../../constants/prop-types';\nimport {NodeContext} from '../nodeContext';\nimport {\n isAvailableRelationBetweenEntities,\n getActivenessAttributes,\n getSuitableEntityTypeUrisForRelationTypes,\n getErrorMessage,\n getGraphType,\n getHierarchyNodeEditorActiveError,\n getLabel,\n getRelationAttributesList,\n getRelationType,\n relationEditorAttributeTypesSelectionStrategy,\n validateHierarchyConnection,\n NODE_EDITING_MODES,\n isAttributeTypeError\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n AttributesList,\n EntitySelector,\n ErrorWrapper,\n isHighlightedErrorType,\n ScrollToElementContext,\n useDidUpdateEffect,\n useScrollToAttributeError\n} from '@reltio/components';\nimport NodeRelationTypeSelector from '../components/NodeRelationTypeSelector/NodeRelationTypeSelector';\nimport {getGraphTypeConfig, getReverseRelationsConfig} from '../../helpers/configHelpers';\nimport {getAllAvailableRelationTypes} from './helpers';\nimport {nodeApplyEditing, nodeCancelEditing} from '../../helpers/nodeHelpers';\n\nimport {useStyles} from './styles';\n\nconst treeActions = profile.trees.actions;\n\nexport const EditorNode = ({node = {}, measure, registerChild}) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const {relatedEntity, relation: {uri: relationUri} = {}, editingMode, initialConnection} = node;\n const isAddingParent = editingMode === NODE_EDITING_MODES.addingParent;\n const {config} = useContext(NodeContext);\n const viewId = config.id;\n const isReversed = getReverseRelationsConfig(config) || false;\n const isChild = isReversed ? isAddingParent : !isAddingParent;\n\n const connection = useSelector((state) => mdm.selectors.getTreeEditingConnection(state, viewId, relationUri));\n const error = useSelector((state) =>\n getHierarchyNodeEditorActiveError(connection, mdm.selectors.getProfileErrors(state))\n );\n const allErrors = useSelector(mdm.selectors.getProfileErrors);\n\n const {relation, entity} = connection;\n const {attributes, type: relationTypeUri, crosswalks = []} = relation;\n const attributeListEntity = useMemo(\n () => ({\n attributes,\n ...getActivenessAttributes(relation)\n }),\n [attributes, relation]\n );\n const globalSearchRequestOptions = useSelector((state) =>\n mdm.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n );\n const metadata = useSelector(mdm.selectors.getMetadata);\n const mode = useSelector(mdm.selectors.getMode);\n\n const graphTypeUri = getGraphTypeConfig(config);\n const graphType = getGraphType(metadata, graphTypeUri) || {};\n const allAvailableRelationTypes = useMemo(\n () => getAllAvailableRelationTypes(isChild, relatedEntity, metadata, graphType, mode),\n [isChild, relatedEntity, metadata, graphType, mode]\n );\n const availableRelationTypes = useMemo(\n () =>\n entity && entity.uri\n ? allAvailableRelationTypes.filter(\n isAvailableRelationBetweenEntities(isChild, entity, relatedEntity, metadata)\n )\n : allAvailableRelationTypes,\n [entity, allAvailableRelationTypes, isChild, relatedEntity, metadata]\n );\n\n const availableEntityTypeUris = useMemo(\n () =>\n getSuitableEntityTypeUrisForRelationTypes(\n isChild,\n metadata,\n relationTypeUri ? [getRelationType(metadata, relationTypeUri)] : allAvailableRelationTypes\n ),\n [isChild, metadata, relationTypeUri, allAvailableRelationTypes]\n );\n\n const onRelationTypeChange = useCallback(\n (relationTypeUri) => {\n dispatch(treeActions.treeNodeRelationTypeChanged({id: viewId, node, relationTypeUri}));\n },\n [node, viewId, dispatch]\n );\n const onChangeEntity = useCallback(\n (entity) => {\n dispatch(treeActions.treeNodeEntityChanged({id: viewId, node, entity}));\n },\n [node, viewId, dispatch]\n );\n\n useEffect(() => {\n // autoselecting relation type on mount\n if (!relationTypeUri && allAvailableRelationTypes.length === 1) {\n onRelationTypeChange(allAvailableRelationTypes[0].uri);\n }\n }, [relationTypeUri, allAvailableRelationTypes, onRelationTypeChange]);\n\n useDidUpdateEffect(() => {\n // autoselecting relation type on entity change\n if (!relationTypeUri && availableRelationTypes.length >= 1) {\n onRelationTypeChange(availableRelationTypes[0].uri);\n }\n }, [relationTypeUri, entity, availableRelationTypes, onRelationTypeChange]);\n\n useEffect(measure, [\n viewId,\n connection,\n allErrors,\n relationTypeUri,\n allAvailableRelationTypes,\n !!onRelationTypeChange,\n entity,\n availableRelationTypes,\n measure\n ]);\n const relationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relationTypeUri),\n [relationTypeUri, metadata]\n );\n const selectorCompatibleEntity = useMemo(\n () =>\n entity && {\n entityUri: entity.uri,\n entityType: entity.type,\n entityLabel: getLabel(entity.label)\n },\n [entity]\n );\n\n const onAddAttributes = useCallback(\n (params) => pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const validate = useCallback(() => {\n const errors = validateHierarchyConnection(metadata, connection);\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [connection, metadata, dispatch]);\n\n const onCancel = useCallback(() => {\n dispatch(nodeCancelEditing({id: viewId, node}));\n }, [node, viewId, dispatch]);\n\n const onApply = useCallback(() => {\n if (validate()) {\n dispatch(nodeApplyEditing({id: viewId, isReversed, node}));\n }\n }, [node, viewId, isReversed, dispatch, validate]);\n\n const canApply = !equals(initialConnection, connection) && relationTypeUri;\n const errorMessage = getErrorMessage(error);\n const highlightedError = useContext(ScrollToElementContext);\n const isErrorHighlighted = useMemo(\n () =>\n isHighlightedErrorType(highlightedError.type) &&\n isAttributeTypeError(highlightedError.element, relationUri, relationTypeUri),\n [relationUri, relationTypeUri, highlightedError]\n );\n const {ref, errorClassName} = useScrollToAttributeError({\n highlightedError: isErrorHighlighted ? highlightedError : null,\n isSimple: true\n });\n\n return (\n <div className={styles.editorContainer} ref={registerChild}>\n <ReactResizeDetector handleHeight={true} onResize={measure} />\n {allAvailableRelationTypes.length !== 1 && (\n <NodeRelationTypeSelector\n isChild={isChild}\n relationTypes={availableRelationTypes}\n className={styles.item}\n value={relationTypeUri}\n metadata={metadata}\n onChange={onRelationTypeChange}\n />\n )}\n <div ref={ref} className={errorClassName}>\n <ErrorWrapper errorMessage={errorMessage} className={styles.item}>\n <EntitySelector\n key={relationTypeUri}\n className={classnames({[styles.dense]: errorMessage})}\n entity={selectorCompatibleEntity || {}}\n entityTypesUris={availableEntityTypeUris}\n max={config.max || 20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n mode={mode}\n onChange={onChangeEntity}\n metadata={metadata}\n attributeTypesSelectionStrategy={relationEditorAttributeTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </div>\n {relationTypeUri && (\n <AttributesList\n className={styles.item}\n attrTypes={relationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={false}\n crosswalks={crosswalks}\n mode={mode}\n parentUri={relationUri}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n )}\n <div className={styles.actionButtons}>\n <Button onClick={onCancel}>{i18n.text('Cancel')}</Button>\n <Button color=\"primary\" disabled={!canApply} onClick={onApply}>\n {i18n.text('Apply')}\n </Button>\n </div>\n </div>\n );\n};\n\nEditorNode.propTypes = {\n node: HierarchyNodeType,\n registerChild: PropTypes.func,\n measure: PropTypes.func\n};\n\nexport default memo(EditorNode);\n","import React from 'react';\nimport {always, cond, T} from 'ramda';\nimport LoadingNode from './LoadingNode/LoadingNode';\nimport RegularNode from './RegularNode/RegularNode';\nimport {isLoadingNode} from '../../helpers/treeDataProvider';\nimport EditorNode from './EditorNode/EditorNode';\nimport {isEditorNode} from '../helpers/nodeHelpers';\n\nconst NodeTypes = {\n loading: 'loading',\n regular: 'regular',\n editor: 'editor'\n};\n\nconst getNodeType = cond([\n [isEditorNode, always(NodeTypes.editor)],\n [isLoadingNode, always(NodeTypes.loading)],\n [T, always(NodeTypes.regular)]\n]);\n\nexport default class NodesFactory {\n static build(props) {\n const {node} = props;\n const type = getNodeType(node);\n switch (type) {\n case NodeTypes.loading:\n return <LoadingNode {...props} />;\n case NodeTypes.regular:\n return <RegularNode {...props} />;\n case NodeTypes.editor:\n return <EditorNode {...props} />;\n }\n }\n}\n","import PropTypes from 'prop-types';\n\nimport NodesFactory from './NodesFactory';\nimport {HierarchyNodeType} from '../../constants/prop-types';\n\nexport const Node = (props) => NodesFactory.build(props);\n\nNode.propTypes = {\n node: HierarchyNodeType,\n onToggleShowParents: PropTypes.func\n};\n\nexport default Node;\n","import React, {memo, useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {\n getRelationType,\n isEditableMode as checkIsEditableMode,\n isAvailableRelationBetweenEntities\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nimport Tree from '../Tree/Tree';\nimport {TreeType} from '../../constants/prop-types';\nimport Node from '../Node/Node';\nimport {NodeContext} from '../Node/nodeContext';\nimport {TreeThemeContext} from '../Tree/treeThemeContext';\nimport {getShowSecondaryLabelValue, hasLoadingNode, isEditorNode, isNodeChecked} from '../helpers/nodeHelpers';\nimport mdm from '@reltio/mdm-module';\nimport {canAddChildForNode, canDeleteNode} from '../Node/RegularNode/helpers/nodeMappingHelpers';\nimport {getReverseRelationsConfig, getIsSecondaryLabelEnabledFromConfig} from '../helpers/configHelpers';\n\nconst HierarchyPanel = ({\n className,\n config,\n tree = {},\n onChildrenRequested,\n onParentsRequested,\n onTreeChanged,\n onTreeScroll,\n onNodeMoved,\n onToggleNodeCheckbox,\n checkedNodes,\n mode,\n isGraphView\n}) => {\n const styles = useStyles({isGraphView});\n const isEditableMode = checkIsEditableMode(mode);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const nodeContextValue = useMemo(\n () => ({\n config,\n entitiesMap: tree.entitiesMap,\n onToggleNodeCheckbox,\n checkedNodes,\n canSelect: isEditableMode,\n onParentsRequested,\n showSecondaryLabel: getShowSecondaryLabelValue(\n tree.showSecondaryLabel,\n getIsSecondaryLabelEnabledFromConfig(config)\n )\n }),\n [\n checkedNodes,\n config,\n isEditableMode,\n onToggleNodeCheckbox,\n tree.entitiesMap,\n tree.showSecondaryLabel,\n onParentsRequested\n ]\n );\n\n const treeThemeContextValue = useMemo(\n () => ({\n generateTreeNodeProps: ({node}) => ({\n treeNodeClassName: classnames({\n [styles.checkedNode]: isNodeChecked({node, checkedNodes}),\n [styles.editorNode]: isEditorNode(node)\n })\n })\n }),\n [checkedNodes, styles]\n );\n\n const canDrag = useCallback(\n ({node}) =>\n isEditableMode && !isEditorNode(node) && !hasLoadingNode(node) && canDeleteNode(node, metadata, mode),\n [isEditableMode, metadata, mode]\n );\n const canDrop = useCallback(\n ({nextParent, node}) => {\n const isChild = !getReverseRelationsConfig(config);\n const relatedNode = nextParent === null ? tree.root : nextParent;\n return (\n relatedNode &&\n !relatedNode.loading &&\n canAddChildForNode(config, metadata, relatedNode) &&\n isAvailableRelationBetweenEntities(\n isChild,\n node.entity,\n relatedNode.entity,\n metadata,\n getRelationType(metadata, node.relation.type)\n )\n );\n },\n [config, metadata, tree.root]\n );\n return (\n <div className={classnames(styles.panel, className)}>\n <div className={styles.treeWrapper}>\n <TreeThemeContext.Provider value={treeThemeContextValue}>\n <NodeContext.Provider value={nodeContextValue}>\n <Tree\n NodeRenderer={Node}\n onChange={onTreeChanged}\n canDrag={canDrag}\n canDrop={canDrop}\n root={tree.root}\n scrollToNode={tree.scrollTo}\n onScroll={onTreeScroll}\n onRequestChildren={onChildrenRequested}\n onNodeMoved={onNodeMoved}\n inlineRoot={!!tree.root && isEditorNode(tree.root)}\n />\n </NodeContext.Provider>\n </TreeThemeContext.Provider>\n </div>\n </div>\n );\n};\n\nHierarchyPanel.propTypes = {\n className: PropTypes.string,\n tree: TreeType,\n onChildrenRequested: PropTypes.func,\n onParentsRequested: PropTypes.func,\n onTreeChanged: PropTypes.func,\n onTreeScroll: PropTypes.func,\n onNodeMoved: PropTypes.func,\n onToggleNodeCheckbox: PropTypes.func,\n checkedNodes: PropTypes.object,\n mode: PropTypes.string,\n config: PropTypes.object,\n isGraphView: PropTypes.bool\n};\n\nexport default memo(HierarchyPanel);\n","import {useCallback, useEffect, useRef} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {useDidUpdateEffect, usePrevious, useSafePromise} from '@reltio/components';\n\nimport i18n from 'ui-i18n';\nimport {pipe, pick} from 'ramda';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n Entity,\n getRequestErrorMessage,\n getTree,\n hasEntityInTree,\n isAbortError,\n updateTreesWithNewEntity\n} from '@reltio/mdm-sdk';\nimport {prepareTree} from '../../helpers/treeDataProvider';\nimport {showCurrentEntity} from './treeHelpers';\nimport {hasEditorNode} from './nodeHelpers';\nimport mdmModule from '@reltio/mdm-module';\n\nconst treeActions = profile.trees.actions;\n\ntype TreeLoaderProps = {\n entityUri: string;\n id: string;\n graphTypes: string;\n activenessDate: number;\n isReversed: boolean;\n enabled: boolean;\n signal: AbortSignal;\n};\nconst useTreeLoader = ({entityUri, id, graphTypes, activenessDate, isReversed, enabled, signal}: TreeLoaderProps) => {\n const safePromise = useSafePromise({cancelOnUnmount: false});\n const dispatch = useDispatch();\n const timerRef = useRef(null);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const tree = useSelector((state) => mdm.selectors.getTree(state, id)) || {};\n const {root, isReversed: isCurrentReversed, graphTypes: currentGraphTypes} = tree;\n const previousActivenessDate = usePrevious(activenessDate) || activenessDate;\n const showCurrentEntityDelayed = useCallback(() => {\n timerRef.current = setTimeout(() => dispatch(showCurrentEntity({id, uri: entityUri})), 100);\n }, [id, entityUri, dispatch]);\n const hasRoot = !!root;\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n useDidUpdateEffect(() => {\n const updatedTrees = updateTreesWithNewEntity(pick(['uri', 'label', 'secondaryLabel', 'type'], entity), {\n [id]: tree\n });\n if (updatedTrees.length) {\n dispatch(treeActions.treeChanged({id, tree: updatedTrees[0].root}));\n }\n }, [entity?.updatedTime]);\n useEffect(() => {\n if (enabled && hasRoot) {\n showCurrentEntityDelayed();\n return () => clearTimeout(timerRef.current);\n }\n }, [enabled, showCurrentEntityDelayed, hasRoot]);\n useEffect(() => {\n if (enabled) {\n const createTreeLoadedEvent = (tree) =>\n treeActions.treeLoaded({id, tree, graphTypes, activenessDate, isReversed});\n const treeProcessing = pipe(prepareTree, createTreeLoadedEvent, dispatch);\n const shouldUpdate =\n !hasEntityInTree(root, entityUri) ||\n isCurrentReversed !== isReversed ||\n previousActivenessDate !== activenessDate ||\n currentGraphTypes !== graphTypes ||\n hasEditorNode(root);\n if (shouldUpdate) {\n dispatch(treeActions.treeLoading(id));\n safePromise(getTree({uri: entityUri, graphTypes, activenessDate, isReversed, signal}))\n .then((tree) => treeProcessing({...tree, graphTypes}, metadata))\n .then((_) => showCurrentEntityDelayed())\n .catch((e) => {\n dispatch(\n treeActions.treeLoadedWithError({\n id,\n errorMessage: isAbortError(e)\n ? ' ' // error message can't be empty\n : getRequestErrorMessage(e, i18n.text('Something went wrong'))\n })\n );\n console.warn(e);\n });\n }\n }\n }, [\n entityUri,\n graphTypes,\n activenessDate,\n id,\n metadata,\n isReversed,\n enabled,\n safePromise,\n dispatch,\n showCurrentEntityDelayed,\n isCurrentReversed,\n currentGraphTypes,\n previousActivenessDate\n ]);\n};\n\nexport default useTreeLoader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {GraphTypeType} from '@reltio/mdm-sdk';\nimport {SelectorWithOnlyOptionAutoSelect} from '@reltio/components';\n\nconst GraphTypeSelector = ({value, onChange, graphTypes, className}) => {\n return (\n <SelectorWithOnlyOptionAutoSelect\n classes={{\n root: className\n }}\n value={value}\n onChange={onChange}\n options={graphTypes.map(({uri, label}) => ({value: uri, label}))}\n />\n );\n};\n\nGraphTypeSelector.propTypes = {\n value: PropTypes.string,\n onChange: PropTypes.func,\n graphTypes: PropTypes.arrayOf(GraphTypeType),\n className: PropTypes.string\n};\n\nexport default GraphTypeSelector;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {pipe} from 'ramda';\nimport {ActivenessDateType} from '../../constants/prop-types';\nimport {DateEditor} from '@reltio/components';\n\nconst ActivenessDateControl = ({value, onChange, ...otherProps}) => {\n const handleChange = pipe((date) => date && date.getTime(), onChange);\n\n return (\n <DateEditor\n value={value}\n label={i18n.text('Effective date')}\n onChange={handleChange}\n margin=\"dense\"\n {...otherProps}\n />\n );\n};\n\nActivenessDateControl.propTypes = {\n value: ActivenessDateType,\n onChange: PropTypes.func\n};\n\nexport default ActivenessDateControl;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst popupHorizontalPadding = '23px';\n\nexport const useStyles = makeStyles(() => ({\n triggerButton: {\n minWidth: 0,\n color: 'rgba(0,0,0,0.54)',\n width: '36px'\n },\n popupContent: {\n paddingTop: '19px',\n paddingBottom: '23px',\n paddingLeft: popupHorizontalPadding,\n paddingRight: popupHorizontalPadding,\n minWidth: '245px',\n maxWidth: '308px',\n width: '40%'\n },\n title: {\n marginBottom: '30px'\n },\n sortControls: {\n display: 'flex',\n alignItems: 'center'\n },\n sortSelectorRoot: {\n flex: 1,\n padding: '13px 16px',\n fontSize: '0.85rem'\n },\n sortSelectorMenuItem: {\n fontSize: '0.85rem'\n },\n sortOrderButton: {\n flexShrink: 0,\n margin: '0 8px 0 7px'\n },\n checkboxControlRoot: {\n marginTop: '6px',\n marginLeft: '-12px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n },\n divider: {\n backgroundColor: 'rgba(0,0,0,0.1)',\n margin: `19px -${popupHorizontalPadding}`\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\nimport {DropDownEditor, SmallIconButtonWithTooltip, withTooltip} from '@reltio/components';\nimport {TREE_SORT_FIELD_VALUES, TREE_SORT_ORDER_VALUES} from '@reltio/mdm-sdk';\n\nexport const FormControlLabelWithTooltip = withTooltip(FormControlLabel);\n\nconst SORTING_OPTIONS = [\n {\n label: i18n.text('Relationship type label'),\n value: TREE_SORT_FIELD_VALUES.relationTypeLabel\n },\n {\n label: i18n.text('Entity label'),\n value: TREE_SORT_FIELD_VALUES.entityLabel\n }\n];\n\nconst FilterSortButton = ({\n className,\n sortField,\n sortOrder,\n onSort,\n showSecondaryLabel,\n showSecondaryLabelDisabledReason,\n onShowSecondaryLabelChange\n}) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const isAsc = sortOrder === TREE_SORT_ORDER_VALUES.asc;\n\n const togglePopup = () => setIsOpen((open) => !open);\n const toggleSortOrder = () => {\n onSort({\n sortField,\n sortOrder: isAsc ? TREE_SORT_ORDER_VALUES.desc : TREE_SORT_ORDER_VALUES.asc\n });\n };\n\n const changeSortField = (newSortField) => {\n onSort({\n sortField: newSortField,\n sortOrder\n });\n };\n\n return (\n <>\n <Button ref={buttonRef} classes={{root: classnames(styles.triggerButton, className)}} onClick={togglePopup}>\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {onShowSecondaryLabelChange && (\n <>\n <Typography className={styles.viewOptionsTitle} variant=\"h6\">\n {i18n.text('View options')}\n </Typography>\n <FormControlLabelWithTooltip\n tooltipTitle={showSecondaryLabelDisabledReason}\n showForDisabled={!!showSecondaryLabelDisabledReason}\n classes={{\n root: styles.checkboxControlRoot,\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showSecondaryLabel || false}\n onChange={(e) => onShowSecondaryLabelChange(e.target.checked)}\n />\n }\n label={i18n.text('Display secondary label')}\n disabled={!!showSecondaryLabelDisabledReason}\n />\n <Divider className={styles.divider} />\n </>\n )}\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Sort by')}\n </Typography>\n <div className={styles.sortControls}>\n <DropDownEditor\n entries={SORTING_OPTIONS}\n TextFieldProps={{variant: 'filled'}}\n classes={{\n root: styles.sortSelectorRoot,\n menuItem: styles.sortSelectorMenuItem\n }}\n fullWidth\n disableUnderline\n value={sortField}\n onChange={changeSortField}\n MenuProps={{getContentAnchorEl: null, anchorOrigin: {vertical: 'bottom', horizontal: 'left'}}}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isAsc ? i18n.text('Ascending') : i18n.text('Descending')}\n icon={isAsc ? ArrowUpwardIcon : ArrowDownwardIcon}\n onClick={toggleSortOrder}\n className={styles.sortOrderButton}\n size=\"L\"\n />\n </div>\n </Popover>\n </>\n );\n};\n\nFilterSortButton.propTypes = {\n className: PropTypes.string,\n sortField: PropTypes.string,\n sortOrder: PropTypes.string,\n onSort: PropTypes.func,\n showSecondaryLabel: PropTypes.bool,\n showSecondaryLabelDisabledReason: PropTypes.string,\n onShowSecondaryLabelChange: PropTypes.func\n};\n\nexport default FilterSortButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n text: {\n fontSize: '12px',\n lineHeight: '14px',\n letterSpacing: 0,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n textContainer: {\n maxWidth: 'calc(100% - 13px)'\n },\n separator: {\n marginLeft: '4px',\n marginRight: '4px'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\n\nimport {Breadcrumbs as MUIBreadcrumbs} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\nconst Breadcrumbs = ({items = [], ...otherProps}) => {\n const styles = useStyles();\n\n const renderItem = (item, index, items) => {\n const {label, href, onClick} = item;\n const color = index === items.length - 1 ? 'textPrimary' : 'textSecondary';\n\n return onClick || href ? (\n <Link key={index} color={color} classes={{root: styles.text}} href={href} onClick={onClick}>\n {label}\n </Link>\n ) : (\n <Typography key={index} href={href} color={color} classes={{root: styles.text}}>\n {label}\n </Typography>\n );\n };\n\n return (\n <MUIBreadcrumbs\n aria-label={i18n.text('Breadcrumb')}\n expandText={i18n.text('Show path')}\n classes={{li: styles.textContainer, separator: classnames(styles.text, styles.separator)}}\n {...otherProps}\n >\n {items.map(renderItem)}\n </MUIBreadcrumbs>\n );\n};\n\nconst BreadcrumbsType = PropTypes.shape({\n label: PropTypes.string.isRequired,\n href: PropTypes.string,\n onClick: PropTypes.func\n});\n\nBreadcrumbs.propTypes = {\n items: PropTypes.arrayOf(BreadcrumbsType)\n};\n\nexport default Breadcrumbs;\n","import {anyPass, filter, has, isEmpty, map, pick, pipe, reject} from 'ramda';\nimport mdm, {profile} from '@reltio/mdm-module';\n\nconst treeActions = profile.trees.actions;\n\nconst fieldsToSave = ['showSecondaryLabel'];\n\nconst getStateToSave = pipe(\n filter(anyPass([has('root'), ...fieldsToSave.map((field) => has(field))])),\n map(pick(fieldsToSave)),\n reject(isEmpty)\n);\n\nexport const saveTreesPreferences = (id) => (dispatch, getState) => {\n const store = getState();\n const trees = mdm.selectors.getTrees(store);\n const state = getStateToSave(trees);\n dispatch(\n treeActions.treesStateSaved({\n id,\n state\n })\n );\n};\n","import {useEffect} from 'react';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {isTempUri, NODE_EDITING_MODES} from '@reltio/mdm-sdk';\nimport {prepareTree} from '../../helpers/treeDataProvider';\nimport {pipe} from 'ramda';\n\nconst treeActions = profile.trees.actions;\n\ntype NewEntityTreeProps = {\n entityUri: string;\n id: string;\n graphTypes: string;\n activenessDate: number;\n isReversed: boolean;\n};\n\nconst useNewEntityTree = ({id, entityUri, graphTypes, activenessDate, isReversed}: NewEntityTreeProps) => {\n const dispatch = useDispatch();\n const currentModifiedEntitySelector = (store) => mdm.selectors.getModifiedEntity(store, entityUri);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const modifiedEntity = useSelector(currentModifiedEntitySelector);\n const {root} = useSelector((state) => mdm.selectors.getTree(state, id)) || {};\n const isTreeForCurrentEntityUri =\n root?.entity?.uri === entityUri ||\n (root?.editingMode === NODE_EDITING_MODES.addingParent &&\n root?.children?.some(({entity}) => entity?.uri === entityUri));\n\n useEffect(() => {\n const needCreateTreeForNewEntity = modifiedEntity && isTempUri(entityUri) && !isTreeForCurrentEntityUri;\n if (needCreateTreeForNewEntity) {\n const createTreeLoadedEvent = (tree) =>\n treeActions.treeLoaded({id, tree, graphTypes, activenessDate, isReversed});\n const treeProcessing = pipe(prepareTree, createTreeLoadedEvent, dispatch);\n treeProcessing(\n {\n root: {\n entity: modifiedEntity,\n total: 0\n },\n graphTypes\n },\n metadata\n );\n }\n }, [\n activenessDate,\n dispatch,\n entityUri,\n graphTypes,\n id,\n isReversed,\n metadata,\n modifiedEntity,\n isTreeForCurrentEntityUri\n ]);\n};\n\nexport default useNewEntityTree;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n view: {\n width: '100%'\n },\n linearIndicator: {\n top: '42px'\n },\n filtersBar: {\n paddingLeft: '24px',\n display: 'flex',\n alignItems: 'center',\n marginTop: '2px',\n marginBottom: '12px',\n height: '46px'\n },\n errorMessage: {\n fontSize: '13px',\n marginLeft: '24px',\n marginRight: '16px',\n lineHeight: '1.4',\n color: theme.palette.text.secondary\n },\n activenessDate: {\n flex: 1,\n margin: 0\n },\n filterSortButton: {\n flexShrink: 0,\n margin: '0 6px 0 12px'\n },\n breadcrumbs: {\n padding: '8px 24px',\n backgroundColor: 'rgba(0,0,0,0.03)'\n },\n graphTypeSelector: {\n margin: '0 10px 15px 24px',\n overflow: 'hidden'\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import React, {useCallback, useEffect, useMemo, useRef, useState, useContext} from 'react';\nimport classnames from 'classnames';\nimport {omit, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport HierarchyViewHeader from './HierarchyViewHeader/HierarchyViewHeader';\nimport HierarchyPanel from './HierarchyPanel/HierarchyPanel';\nimport {BasicView, LinearLoadIndicator, PageRequestsAbortingContext, FeaturesContext} from '@reltio/components';\nimport {useDispatch} from 'react-redux';\nimport {profile, ui} from '@reltio/mdm-module';\nimport {\n hasEntityTypesWithSecondaryLabelPattern,\n loadChildren,\n loadParents,\n scrollToTreeTop,\n showCurrentEntity\n} from './helpers/treeHelpers';\nimport useTreeLoader from './helpers/useTreeLoader';\nimport GraphTypeSelector from './GraphTypeSelector/GraphTypeSelector';\nimport ActivenessDateControl from './ActivenessDateControl/ActivenessDateControl';\nimport {\n createRelationTypesLabelsMap,\n debounce,\n Entity,\n getLabel,\n getPathByEntityUri,\n HierarchyTreeViewConfig,\n isTempUri,\n isViewMode,\n Metadata,\n Mode,\n Tree,\n GraphLayout\n} from '@reltio/mdm-sdk';\nimport FilterSortButton from './FilterSortButton/FilterSortButton';\nimport {\n getReverseRelationsConfig,\n getIsSecondaryLabelEnabledFromConfig,\n getValidatedSortFieldFromConfig,\n getValidatedSortOrderFromConfig\n} from './helpers/configHelpers';\nimport Breadcrumbs from './Breadcrumbs/Breadcrumbs';\nimport {saveTreesPreferences} from './helpers/saveStateHelpers';\nimport {getShowSecondaryLabelValue} from './helpers/nodeHelpers';\nimport useNewEntityTree from './helpers/useNewEntityTree';\n\nimport {useStyles} from './styles';\n\nconst treeActions = profile.trees.actions;\nconst PREFERENCES_UPDATE_DEBOUNCE_INTERVAL = 500;\n\ntype Props = {\n config: HierarchyTreeViewConfig;\n tree: Tree;\n metadata: Metadata;\n entity: Entity;\n mode: Mode;\n className?: string;\n isGraphView?: boolean;\n};\nconst HierarchyView = ({config, tree, metadata, entity = {} as Entity, mode, className, isGraphView}: Props) => {\n const {id, caption: title, graph: graphConfig, showPath, _showNavigateToGraph} = config;\n\n const styles = useStyles();\n const dispatch = useDispatch();\n const initialActivenessDate = useRef(Date.now());\n\n const defaultGraphType = graphConfig?.type;\n const entityUri = entity.uri;\n\n const {\n activenessDate = initialActivenessDate.current,\n sortField,\n sortOrder,\n loading,\n errorMessage,\n showSecondaryLabel\n } = tree || {};\n\n const [currentGraphType, setCurrentGraphType] = useState(defaultGraphType);\n const [checkedNodes, setCheckedNodes] = useState({});\n\n const signal = useContext(PageRequestsAbortingContext);\n const featuresContext = useContext(FeaturesContext);\n const showNavigateToGraph =\n _showNavigateToGraph !== undefined ? _showNavigateToGraph : featuresContext.showNavigateToGraph;\n const features = useMemo(() => ({...featuresContext, showNavigateToGraph}), [showNavigateToGraph, featuresContext]);\n\n const isReversed = getReverseRelationsConfig(config);\n const isSecondaryLabelEnabled = getIsSecondaryLabelEnabledFromConfig(config);\n const showSecondaryLabelValue = getShowSecondaryLabelValue(showSecondaryLabel, isSecondaryLabelEnabled);\n const hasSecondaryLabelPattern = hasEntityTypesWithSecondaryLabelPattern(metadata, currentGraphType);\n\n const graphTypes = useMemo(() => {\n // getGraphTypesForEntityType(metadata, entityTypeUri);\n //remove me\n return [];\n }, []);\n\n const nodePath = useMemo(\n () =>\n getPathByEntityUri((tree || {}).root, entityUri).map((node) => ({\n label: getLabel(path(['entity', 'label'], node))\n })),\n [tree, entityUri]\n );\n\n useTreeLoader({\n id,\n entityUri,\n graphTypes: currentGraphType,\n activenessDate,\n isReversed,\n enabled: entityUri && isViewMode(mode) && !isTempUri(entityUri),\n signal\n });\n\n useNewEntityTree({\n id,\n entityUri,\n graphTypes: currentGraphType,\n activenessDate,\n isReversed\n });\n\n const savePreferences = useCallback(\n debounce(() => dispatch(saveTreesPreferences(id)), PREFERENCES_UPDATE_DEBOUNCE_INTERVAL),\n [id, dispatch]\n );\n\n const onTreeSort = useCallback(\n ({sortField, sortOrder}) => {\n dispatch(\n treeActions.treeSorted({\n id,\n typesLabelsMap: createRelationTypesLabelsMap(metadata),\n sortField,\n sortOrder\n })\n );\n dispatch(scrollToTreeTop(id));\n },\n [id, metadata, dispatch]\n );\n\n const onShowSecondaryLabelChange = useCallback(\n (show) => {\n dispatch(treeActions.treeSecondaryLabelShown({id, show}));\n savePreferences();\n },\n [id, dispatch, savePreferences]\n );\n\n const onChildrenRequested = useCallback(\n (parent) =>\n dispatch(\n loadChildren({\n parentUri: parent.entity.uri,\n parentId: parent.nodeId,\n graphTypes: currentGraphType,\n activenessDate,\n id,\n isReversed,\n signal\n })\n ),\n [dispatch, currentGraphType, activenessDate, id, isReversed, signal]\n );\n\n const onParentsRequested = useCallback(\n (node) =>\n dispatch(\n loadParents({\n uri: node.entity.uri,\n graphTypes: currentGraphType,\n activenessDate,\n id,\n isReversed,\n signal,\n nodeId: node.nodeId\n })\n ),\n [dispatch, currentGraphType, activenessDate, id, isReversed, signal]\n );\n\n const onTreeChanged = useCallback(\n (tree) => {\n dispatch(treeActions.treeChanged({id, tree}));\n },\n [dispatch, id]\n );\n\n const onTreeActivenessDateChange = useCallback(\n (activenessDate) => {\n dispatch(treeActions.activenessDateChanged({id, activenessDate}));\n },\n [dispatch, id]\n );\n\n const onScrollToCurrentEntity = useCallback(() => {\n dispatch(showCurrentEntity({id, uri: entityUri}));\n }, [dispatch, id, entityUri]);\n\n const onNodeMoved = useCallback(\n (movedNodeInfo) => {\n const {node, nextParentNode} = movedNodeInfo;\n const {entity: newParent} = nextParentNode || {};\n const {relation, entity} = node;\n if (relation) {\n dispatch(treeActions.treeRelationRepointed({entity, relation, newParent, isReversed}));\n } else {\n console.error('relation not found:' + JSON.stringify(movedNodeInfo));\n }\n },\n [dispatch, isReversed]\n );\n\n const onToggleNodeCheckbox = useCallback(({checked, node}) => {\n if (checked) {\n setCheckedNodes((checkedNodes) => ({...checkedNodes, [node.nodeId]: node}));\n } else {\n setCheckedNodes(omit([node.nodeId]));\n }\n }, []);\n\n const openGraph = useCallback(() => {\n dispatch(\n ui.actions.openGraph({viewId: id, graphType: currentGraphType, entityUri, graphLayout: GraphLayout.TREE})\n );\n }, [dispatch, id, currentGraphType, entityUri]);\n\n const clearCheckedNodes = useCallback(() => setCheckedNodes({}), []);\n\n useEffect(clearCheckedNodes, [mode]);\n\n useEffect(() => {\n if (!sortField || !sortOrder) {\n onTreeSort({\n sortField: getValidatedSortFieldFromConfig(config),\n sortOrder: getValidatedSortOrderFromConfig(config)\n });\n }\n }, [onTreeSort, sortField, sortOrder, config]);\n\n useEffect(() => {\n setCurrentGraphType(defaultGraphType);\n }, [defaultGraphType]);\n\n return (\n <FeaturesContext.Provider value={features}>\n <BasicView className={classnames(styles.view, className)}>\n <HierarchyViewHeader\n title={title}\n onScrollToCurrentEntity={onScrollToCurrentEntity}\n entityLabel={getLabel(entity.label)}\n onGraphOpen={openGraph}\n disabled={loading}\n isGraphView={isGraphView}\n />\n {loading && <LinearLoadIndicator className={styles.linearIndicator} />}\n {graphTypes.length > 0 && (\n <GraphTypeSelector\n className={styles.graphTypeSelector}\n value={currentGraphType}\n onChange={setCurrentGraphType}\n graphTypes={graphTypes}\n />\n )}\n <div className={styles.filtersBar}>\n <ActivenessDateControl\n className={styles.activenessDate}\n value={activenessDate}\n onChange={onTreeActivenessDateChange}\n fullWidth\n />\n <FilterSortButton\n sortField={sortField}\n sortOrder={sortOrder}\n className={styles.filterSortButton}\n onSort={onTreeSort}\n showSecondaryLabel={showSecondaryLabelValue}\n onShowSecondaryLabelChange={isSecondaryLabelEnabled ? onShowSecondaryLabelChange : undefined}\n showSecondaryLabelDisabledReason={\n !hasSecondaryLabelPattern\n ? i18n.text(\n \"Entity types in this hierarchy don't have any secondary label pattern defined.\"\n )\n : ''\n }\n />\n </div>\n {showPath && nodePath.length > 0 && <Breadcrumbs items={nodePath} className={styles.breadcrumbs} />}\n {!errorMessage ? (\n <HierarchyPanel\n isGraphView={isGraphView}\n config={config}\n tree={tree}\n onTreeChanged={onTreeChanged}\n mode={mode}\n onNodeMoved={onNodeMoved}\n onParentsRequested={onParentsRequested}\n onChildrenRequested={onChildrenRequested}\n onToggleNodeCheckbox={onToggleNodeCheckbox}\n checkedNodes={checkedNodes}\n />\n ) : (\n <Typography className={styles.errorMessage}>{errorMessage}</Typography>\n )}\n </BasicView>\n </FeaturesContext.Provider>\n );\n};\n\nexport default HierarchyView;\n","import HierarchyView from './HierarchyView';\nimport mdm from '@reltio/mdm-module';\nimport {connect} from 'react-redux';\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n tree: mdm.selectors.getTree(state, ownProps.config.id),\n total: mdm.selectors.getTreeTotal(state, ownProps.config.id),\n entity: mdm.selectors.getEntity(state),\n metadata: mdm.selectors.getMetadata(state),\n mode: mdm.selectors.getMode(state)\n };\n};\nexport default connect(mapStateToProps, undefined)(HierarchyView);\n","import MomentUtils from '@date-io/moment';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport HierarchyView from './HierarchyView';\n\nimport {StylesProvider, createGenerateClassName} from '@material-ui/core/styles';\n\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {Provider} from 'react-redux';\nimport {HierarchyTreeViewConfig} from '@reltio/mdm-sdk';\nimport {identity} from 'ramda';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {Store} from 'redux';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'hierarchyTree',\n disableGlobal: true\n});\n\ntype Props = {\n config: HierarchyTreeViewConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n className: string;\n isGraphView?: boolean;\n};\n\nconst HierarchyTreeView = ({config, store, onResize = identity, className, isGraphView}: Props) => (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <HierarchyView config={config} className={className} isGraphView={isGraphView} />}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n);\n\nexport default HierarchyTreeView;\n"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","styles","props","React","width","height","viewBox","version","xmlns","xmlnsXlink","d","id","stroke","strokeWidth","fill","fillRule","xlinkHref","fillOpacity","mask","useStyles","makeStyles","header","padding","buttonsContainer","flexShrink","marginLeft","button","icon","disabledIcon","opacity","IconButtonWithTooltip","withTooltip","IconButton","title","entityLabel","onScrollToCurrentEntity","onGraphOpen","disabled","isGraphView","showNavigateToGraph","useContext","FeaturesContext","iconClassName","classnames","FacetViewHeader","className","tooltipTitle","i18n","onClick","classes","root","label","showForDisabled","ShowGraph","node","tooltipPlacement","SelectNode","theme","textField","spacing","marginRight","panel","display","flexGrow","flexDirection","minHeight","undefined","maxHeight","treeWrapper","marginTop","checkedNode","backgroundColor","editorNode","overflow","visibility","paddingRight","container","wordBreak","tree","filter","Boolean","join","NodeRendererDefault","Component","render","scaffoldBlockPxWidth","toggleChildrenVisibility","connectDragPreview","connectDragSource","isDragging","canDrop","canDrag","subtitle","draggedNode","path","treeIndex","isSearchMatch","isSearchFocus","buttons","style","didDrop","treeId","isOver","parentNode","rowDirection","otherProps","nodeTitle","nodeSubtitle","rowDirectionClass","handle","children","expanded","Array","map","_","index","Tooltip","DragIndicator","dropEffect","isDraggedDescendant","ReactSortableTreeUtils","isLandingPadActive","showToggleChildrenButton","cycled","pending","nodeId","btn","offsetX","offsetY","defaultProps","propTypes","PropTypes","isRequired","TreeThemeContext","createContext","generateTreeNodeProps","displayName","TreeNode","listIndex","swapFrom","swapLength","swapDepth","lowerSiblingCounts","connectDropTarget","getPrevRow","scaffoldBlockCount","scaffold","forEach","lowerSiblingCount","lineClass","push","highlightLineClass","right","left","scaffoldWidth","MIN_NODE_CONTENT_WIDTH","nodeStyle","treeNodeProps","context","treeNodeClassName","Children","child","cloneElement","contextType","rowHeight","slideRegionSize","GenericNodeType","showParents","HierarchyNodeType","entity","EntityType","relation","RelationType","relations","total","parent","directParentUri","loading","ActivenessDateType","TreeType","graphTypes","entitiesMap","activenessDate","scrollTo","MeasuredNode","measure","registerChild","NodeRenderer","useEffect","scrollToContainerElementByNodeId","scrollingContainer","element","document","querySelector","getElementByNodeId","elementRect","getBoundingClientRect","scrollingContainerRect","scrollLeft","setTimeout","getNodeKey","DefaultNodeRenderer","pick","hierarchyTheme","Tree","scrollToNode","onChange","onRequestChildren","onScroll","identity","onNodeMoved","inlineRoot","treeData","useMemo","rootChildren","pipe","omit","assoc","virtualizedListRef","useRef","treeDataRef","scrollTimerRef","current","getVirtualizedListInstance","useCallback","measurerCache","keyMapper","rawIndex","nodeInfo","propOr","useState","CellMeasurerCache","fixedWidth","defaultHeight","onWindowResize","clearAll","window","addEventListener","removeEventListener","useRefreshableMeasurerCache","useRunOnceAfterValueInitialization","vList","forceUpdateGrid","getScrollingContainer","results","searchFocusOffset","searchQuery","searchMethod","scrollToRow","clearTimeout","onSortableTreeChange","slice","nodeRenderWithMeasure","cache","columnIndex","rowIndex","getMeasuredNode","generateNodeProps","rowInfo","previousTreeData","usePrevious","onMoveNode","movedNodeInfo","prevPath","nextParentNode","prevParentNode","parentPath","result","handleOnLazyLoadChildren","handleResize","skipOnMount","handleWidth","onResize","isRoot","ReactSortableTree","isVirtualized","reactVirtualizedListProps","ref","scrollToAlignment","onLazyLoadChildren","useCommonStyles","fontSize","paddingTop","position","loadingSpinner","alignSelf","LoadingNode","commonStyles","LoadingSpinner","wrapper","avatar","avatarWithMultiParent","cursor","number","color","multiParentIcon","top","actionsBlock","content","background","pointerEvents","actionsBlockWithOpenMenu","actionsBlockForCheckedNode","regularNodeCheckbox","letterSpacing","lineHeight","paddingLeft","paddingBottom","strokeOpacity","cx","cy","r","marginBottom","alignItems","loadingNode","MultiParentBlockItem","popperAnchor","setPopperAnchor","HierarchyNodeTitle","entityUri","viewId","anchorEl","multiParent","border","bottom","borderColor","borderBottomColor","borderWidth","additionalParents","details","margin","detailLine","detail","wordWrap","textIndent","detailLabel","whiteSpace","detailValue","prepareTree","metadata","sortField","sortOrder","mapTree","childrenProcessing","sortTreeChildren","typesLabelsMap","createRelationTypesLabelsMap","nodeProcessing","formatNodeFromTreeResponse","addSelfRelatedNode","expandNode","buildEntitiesMapFromTree","getGraphType","nodeCounter","generateId","convertParentProp","concat","getNodeUri","getRelationsProp","wrapInArrayIfNeeded","getRelationProp","prop","isArray","parents","parentIndex","findIndex","equals","directParent","formatted","formatNodeFromHopResponse","traversedRelations","untraversedRelations","formattedNode","some","uri","includes","when","both","has","complement","clearNodeForEntityMap","buildEntitiesMapFromHopsEntities","keys","reduce","processHopsResponse","isReversed","entities","childObjectKey","objectURI","buildEntitiesMapFromHops","curry","json","createNewTreeNode","generateNewRelationUri","attributes","treeActions","profile","loadChildren","parentUri","parentId","signal","dispatch","getState","mdm","childrenLoading","getHops","then","rawSubTree","queue","visitedNodes","breakCycles","buildTreeFromHops","entitiesSubMap","childrenLoaded","entitiesMappingLoaded","catch","error","isAbortError","ui","getRequestErrorMessage","cancelChildrenLoading","showCurrentEntity","currentEntityShownInTree","resetScrollToNode","hasEntityTypesWithSecondaryLabelPattern","getAllEntityTypesForGraphType","any","isRelationLoaded","isNodeChecked","checkedNodes","isEditorNode","hasEditorNode","loadRelationDetails","currentRelation","Promise","resolve","getRelation","relationDetails","detailedRelation","treeNodeChanged","hasLoadingNode","getShowSecondaryLabelValue","showSecondaryLabel","enabled","getRelationDetails","attrTypes","type","DataTypes","ACTIVENESS_ATTR_TYPES","RelationDetails","showDetails","relationshipData","typeName","getRelationType","attrType","Typography","variant","gutterBottom","DataTypeValue","value","dataTypeDefinition","MetadataType","addButton","editButton","ActionsBlock","show","onToggleRelationDetails","onMenuOpen","onMenuClose","onStartEditing","onAddParent","onAddChild","onDelete","menuItems","text","SmallIconButton","size","InfoIconSelected","InfoIcon","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","AddCircleIcon","menuId","EditIcon","DeleteIcon","getGraphConfig","getReverseRelationsConfig","getGraphTypeConfig","getValidatedSortOrderFromConfig","getValidatedSortOrder","getValidatedSortFieldFromConfig","getValidatedSortField","getIsSecondaryLabelEnabledFromConfig","defaultTo","getTypeGraphIcon","absoluteImagePath","entityTypeUri","entityType","getEntityType","entityTypeGraphIcon","getPropWithInheritance","getAbsoluteImageUrl","canEditNode","mode","checkMetadataForUpdate","canAddRelative","direction","config","isChild","nodeEntityTypeUri","graphTypeUri","graphType","relationTypeUris","getRelationshipTypeUrisFromGraphType","isNodeEntityInstanceOf","isInHierarchy","__","checkMetadataForCreate","getStartObjectTypeUri","getEndObjectTypeUri","canAddParentForNode","canAddChildForNode","canDeleteNode","checkMetadataForDelete","simpleNodePropsMapping","currentEntityUri","onParentsRequested","isSelected","isSelectedNode","isEditable","checkIsEditableMode","commonActionHandlers","onToggleShowParents","needLoadAdditionalParents","actionHandlers","treeNodeEditingStarted","nodeStartEditing","treeNodeNewParentEditingStarted","newNode","treeNodeNewChildEditingStarted","store","nodeStartAddingChild","relationUri","treeRelationRemoved","treeNodeRemoved","updatedNode","toggleRelationDetails","getLabel","secondaryLabel","reject","isNil","getAdditionalParents","pathOr","mapEntry","NodeContext","onToggleNodeCheckbox","canSelect","onImageLoadFail","e","src","DEFAULT_ICON","RegularNode","useDispatch","useSelector","PageRequestsAbortingContext","nodePropsMapping","showControls","setShowControls","showActionsBlock","hideActionsBlock","openActionsMenu","setOpenActionsMenu","showActionsMenu","hideActionsMenu","hasMultiParents","toggleShowParents","bind","checked","event","onMouseEnter","onMouseLeave","Avatar","onError","memo","fromEditorValue","option","toEditorValue","relationsTypesOptions","find","propEq","NodeRelationTypeSelector","relationTypes","labelsMap","getDirectionalLabel","getDirectionalLabelFromObject","tap","byLabel","ascend","getEntityTypeWithInheritedIcon","typeIcon","startObject","endObject","directionalLabel","typeLabel","objectType","objectTypeURI","evolve","sort","getRelationTypesOptions","RelationTypeSelector","options","RelationTypeType","isAvailableRelationForRelatedEntity","relatedEntity","relationType","isRelatedEntityInstanceOf","getObjectUri","editorContainer","minWidth","dense","item","actionButtons","justifyContent","EditorNode","editingMode","initialConnection","isAddingParent","NODE_EDITING_MODES","connection","state","getHierarchyNodeEditorActiveError","allErrors","relationTypeUri","crosswalks","attributeListEntity","getActivenessAttributes","globalSearchRequestOptions","allAvailableRelationTypes","allPass","getAllAvailableRelationTypes","availableRelationTypes","isAvailableRelationBetweenEntities","availableEntityTypeUris","getSuitableEntityTypeUrisForRelationTypes","onRelationTypeChange","treeNodeRelationTypeChanged","onChangeEntity","treeNodeEntityChanged","useDidUpdateEffect","relationAttrTypes","getRelationAttributesList","selectorCompatibleEntity","onAddAttributes","params","param","onChangeAttribute","onDeleteAttribute","validate","errors","validateHierarchyConnection","onCancel","cond","always","treeNodeNewParentEditingCanceled","treeNodeNewChildEditingCanceled","treeNodeEditingCanceled","action","nodeCancelEditing","onApply","dataAction","treeRelationCreated","treeRelationChanged","getPayloadForNodeApplyEditing","treeNodeNewParentEditingApplied","treeNodeNewChildEditingApplied","treeNodeEditingApplied","treeAppearanceChangeActionCreator","nodeApplyEditing","canApply","errorMessage","getErrorMessage","highlightedError","ScrollToElementContext","isErrorHighlighted","isHighlightedErrorType","isAttributeTypeError","errorClassName","useScrollToAttributeError","isSimple","handleHeight","ErrorWrapper","EntitySelector","entityTypesUris","max","attributeTypesSelectionStrategy","relationEditorAttributeTypesSelectionStrategy","AttributesList","showEmptyEditors","Button","NodeTypes","getNodeType","T","Node","build","HierarchyPanel","onChildrenRequested","onTreeChanged","onTreeScroll","isEditableMode","nodeContextValue","treeThemeContextValue","nextParent","relatedNode","Provider","GraphTypeSelector","SelectorWithOnlyOptionAutoSelect","GraphTypeType","ActivenessDateControl","handleChange","date","getTime","DateEditor","popupHorizontalPadding","triggerButton","popupContent","maxWidth","sortControls","sortSelectorRoot","flex","sortSelectorMenuItem","sortOrderButton","checkboxControlRoot","checkboxControlLabel","checkboxControlCheckbox","divider","FormControlLabelWithTooltip","FormControlLabel","SORTING_OPTIONS","TREE_SORT_FIELD_VALUES","FilterSortButton","onSort","showSecondaryLabelDisabledReason","onShowSecondaryLabelChange","buttonRef","isOpen","setIsOpen","isAsc","TREE_SORT_ORDER_VALUES","togglePopup","open","Popover","paper","onClose","anchorOrigin","vertical","horizontal","transformOrigin","viewOptionsTitle","control","Checkbox","Divider","DropDownEditor","entries","TextFieldProps","menuItem","fullWidth","disableUnderline","newSortField","MenuProps","getContentAnchorEl","ArrowUpwardIcon","ArrowDownwardIcon","textOverflow","textContainer","separator","Breadcrumbs","items","expandText","li","href","Link","BreadcrumbsType","fieldsToSave","getStateToSave","anyPass","field","isEmpty","view","linearIndicator","filtersBar","palette","secondary","filterSortButton","breadcrumbs","graphTypeSelector","fontFamily","connect","ownProps","caption","graph","graphConfig","showPath","_showNavigateToGraph","initialActivenessDate","Date","now","defaultGraphType","currentGraphType","setCurrentGraphType","setCheckedNodes","featuresContext","features","isSecondaryLabelEnabled","showSecondaryLabelValue","hasSecondaryLabelPattern","nodePath","getPathByEntityUri","safePromise","useSafePromise","cancelOnUnmount","timerRef","isCurrentReversed","currentGraphTypes","previousActivenessDate","showCurrentEntityDelayed","hasRoot","mdmModule","updatedTrees","updateTreesWithNewEntity","treeChanged","updatedTime","createTreeLoadedEvent","treeLoaded","treeProcessing","hasEntityInTree","treeLoading","getTree","treeLoadedWithError","console","warn","useTreeLoader","isViewMode","isTempUri","modifiedEntity","isTreeForCurrentEntityUri","useNewEntityTree","savePreferences","debounce","trees","treesStateSaved","saveTreesPreferences","onTreeSort","treeSorted","scrollToTreeTop","treeSecondaryLabelShown","parentsProcessing","loadParents","onTreeActivenessDateChange","activenessDateChanged","newParent","treeRelationRepointed","JSON","stringify","openGraph","graphLayout","GraphLayout","clearCheckedNodes","BasicView","LinearLoadIndicator","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","ViewIdContext","StylesProvider","MuiPickersUtilsProvider","utils","MomentUtils","Math","floor","ErrorPopup"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"1032.js","mappings":"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","sources":["webpack://@reltio/remotes/../hierarchy-tree/src/icons/SelectNode.svg","webpack://@reltio/remotes/../hierarchy-tree/src/icons/ShowGraph.svg","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyViewHeader/styles.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyViewHeader/HierarchyViewHeader.tsx","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyPanel/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/theme/utils.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/theme/node-content-renderer.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/treeThemeContext.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/theme/tree-node-renderer.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/theme/index.js","webpack://@reltio/remotes/../hierarchy-tree/src/constants/prop-types.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/measureHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/nodeHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Tree/Tree.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/commonStyles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/LoadingNode/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/LoadingNode/LoadingNode.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/multiParentOverlap.svg","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlockItem/parentIcon.svg","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlockItem/styles.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlockItem/MultiParentBlockItem.tsx","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlock/styles.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlock/MultiParentBlock.tsx","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/RelationDetails/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/helpers/treeDataProvider.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/treeHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/nodeHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/RelationDetails/RelationDetails.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/ActionsBlock/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/ActionsBlock/ActionsBlock.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/configHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/helpers/nodeMappingHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/nodeContext.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/RegularNode/RegularNode.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/NodeRelationTypeSelector/NodeRelationTypeSelector.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/EditorNode/helpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/EditorNode/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/EditorNode/EditorNode.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/NodesFactory.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/Node.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyPanel/HierarchyPanel.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/useTreeLoader.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/GraphTypeSelector/GraphTypeSelector.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/ActivenessDateControl/ActivenessDateControl.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/FilterSortButton/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/FilterSortButton/FilterSortButton.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Breadcrumbs/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Breadcrumbs/Breadcrumbs.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/saveStateHelpers.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/helpers/useNewEntityTree.ts","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyView.tsx","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/index.js","webpack://@reltio/remotes/../hierarchy-tree/src/index.tsx"],"sourcesContent":["function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M12 7c2.762 0 5 2.238 5 5s-2.238 5-5 5-5-2.238-5-5 2.238-5 5-5zm0 2a3 3 0 100 6 3 3 0 100-6zm8.94 2A8.994 8.994 0 0013 3.06V1h-2v2.06A8.994 8.994 0 003.06 11H1v2h2.06A8.994 8.994 0 0011 20.94V23h2v-2.06A8.994 8.994 0 0020.94 13H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\",\n id: \"svg2250934887a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2250934887b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2250934887a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2250934887b)\",\n d: \"M0 0h24v24H0z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\",\n fillOpacity: \".54\"\n}, React.createElement(\"path\", {\n d: \"M14.5 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm4 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm-17 1a1.5 1.5 0 110-3 1.5 1.5 0 010 3zM4 4a2 2 0 110-4 2 2 0 010 4zm1 16a2 2 0 110-4 2 2 0 010 4zm4.5-6a4.5 4.5 0 110-9 4.5 4.5 0 010 9zm0-2a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm6 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3z\",\n fill: \"#000\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n header: {\n padding: '0 4px 0 16px'\n },\n buttonsContainer: {\n flexShrink: 0,\n marginLeft: 'auto',\n '& > * + *': {\n marginLeft: '-4px'\n }\n },\n button: {\n padding: '8px'\n },\n icon: {\n width: '24px',\n height: '24px'\n },\n disabledIcon: {\n opacity: 0.54\n }\n}));\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {IconButton as IconButton} from '@material-ui/core';\nimport {FacetViewHeader, FeaturesContext, withTooltip} from '@reltio/components';\nimport SelectNodeIcon from '../../icons/SelectNode.svg';\nimport ShowGraphIcon from '../../icons/ShowGraph.svg';\nimport {useStyles} from './styles';\n\nconst IconButtonWithTooltip = withTooltip(IconButton);\n\ntype Props = {\n title: string;\n entityLabel?: string;\n onScrollToCurrentEntity: () => void;\n onGraphOpen: () => void;\n disabled?: boolean;\n isGraphView?: boolean;\n};\n\nconst HierarchyViewHeader = ({\n title,\n entityLabel = '',\n onScrollToCurrentEntity,\n onGraphOpen,\n disabled = false,\n isGraphView = false\n}: Props) => {\n const styles = useStyles();\n const {showNavigateToGraph} = useContext(FeaturesContext);\n const iconClassName = classnames(styles.icon, {[styles.disabledIcon]: disabled});\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <div className={styles.buttonsContainer}>\n {!isGraphView && showNavigateToGraph && (\n <IconButtonWithTooltip\n tooltipTitle={i18n.text('Show Graph')}\n onClick={onGraphOpen}\n classes={{root: styles.button, label: iconClassName}}\n disabled={disabled}\n showForDisabled\n >\n <ShowGraphIcon />\n </IconButtonWithTooltip>\n )}\n <IconButtonWithTooltip\n tooltipTitle={i18n.text('Scroll to ${node}', {node: entityLabel})}\n tooltipPlacement=\"bottom-end\"\n onClick={onScrollToCurrentEntity}\n classes={{root: styles.button, label: iconClassName}}\n disabled={disabled}\n showForDisabled\n >\n <SelectNodeIcon />\n </IconButtonWithTooltip>\n </div>\n </FacetViewHeader>\n );\n};\n\nexport default HierarchyViewHeader;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n textField: {\n marginLeft: theme.spacing(),\n marginRight: theme.spacing(),\n width: 200\n },\n panel: ({isGraphView}) => ({\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: isGraphView ? undefined : '372px',\n maxHeight: isGraphView ? undefined : '507px',\n height: isGraphView ? '100%' : undefined\n }),\n treeWrapper: {\n flexGrow: 1,\n height: 0,\n marginTop: 7\n },\n checkedNode: {\n backgroundColor: 'rgba(0,114,206, 0.12)'\n },\n editorNode: {\n overflow: 'hidden',\n '&:hover': {\n backgroundColor: 'transparent !important'\n },\n '&:hover div.rst__moveHandle': {\n visibility: 'hidden'\n },\n '& div.rst__rowLabel': {\n paddingRight: 0\n }\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%'\n },\n root: {\n minHeight: '28px',\n display: 'flex',\n padding: '0 18px',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.06)'\n },\n wordBreak: 'break-all'\n },\n tree: {\n flexGrow: 1,\n height: 0\n }\n}));\n","export function classnames(...classes) {\n // Use Boolean constructor as a filter callback\n // Allows for loose type truthy/falsey checks\n // Boolean(\"\") === false;\n // Boolean(false) === false;\n // Boolean(undefined) === false;\n // Boolean(null) === false;\n // Boolean(0) === false;\n // Boolean(\"classname\") === true;\n return classes.filter(Boolean).join(' ');\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport './node-content.css';\nimport {classnames} from './utils';\nimport {ReactSortableTreeUtils} from '@reltio/components';\n\nclass NodeRendererDefault extends Component {\n render() {\n const {\n scaffoldBlockPxWidth,\n toggleChildrenVisibility,\n connectDragPreview,\n connectDragSource,\n isDragging,\n canDrop,\n canDrag,\n node,\n title,\n subtitle,\n draggedNode,\n path,\n treeIndex,\n isSearchMatch,\n isSearchFocus,\n buttons,\n className,\n style,\n didDrop,\n //eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n treeId,\n //eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isOver, // Not needed, but preserved for other renderers\n //eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n parentNode, // Needed for dndManager\n rowDirection,\n ...otherProps\n } = this.props;\n const nodeTitle = title || node.title;\n const nodeSubtitle = subtitle || node.subtitle;\n const rowDirectionClass = rowDirection === 'rtl' ? 'rst__rtl' : null;\n let handle;\n if (canDrag) {\n if (typeof node.children === 'function' && node.expanded) {\n // Show a loading symbol on the handle when the children are expanded\n // and yet still defined by a function (a callback to fetch the children)\n handle = (\n <div className=\"rst__loadingHandle\">\n <div className=\"rst__loadingCircle\">\n {[...new Array(12)].map((_, index) => (\n <div\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n className={classnames('rst__loadingCirclePoint', rowDirectionClass)}\n />\n ))}\n </div>\n </div>\n );\n } else {\n // Show the handle used to initiate a drag-and-drop\n handle = connectDragSource(\n <div className=\"rst__moveHandle\">\n <Tooltip title={i18n.text('Drag node')}>\n <DragIndicatorIcon />\n </Tooltip>\n </div>,\n {\n dropEffect: 'copy'\n }\n );\n }\n }\n\n const isDraggedDescendant = draggedNode && ReactSortableTreeUtils.isDescendant(draggedNode, node);\n const isLandingPadActive = !didDrop && isDragging;\n\n const showToggleChildrenButton =\n toggleChildrenVisibility &&\n !node.root &&\n !node.cycled &&\n ((node.children && node.children.length > 0) || node.pending);\n\n const onToggle = () => {\n toggleChildrenVisibility({\n node,\n path,\n treeIndex\n });\n };\n\n return (\n <div style={{height: '100%'}} {...otherProps} key={node.nodeId}>\n {showToggleChildrenButton && node.expanded && !isDragging && (\n <div\n style={{width: scaffoldBlockPxWidth - 2}}\n className={classnames('rst__lineChildren', rowDirectionClass)}\n />\n )}\n\n <div className={classnames('rst__rowWrapper', rowDirectionClass)}>\n {/* Set the row preview to be used during drag and drop */}\n {connectDragPreview(\n <div\n className={classnames(\n 'rst__row',\n isLandingPadActive && 'rst__rowLandingPad',\n isLandingPadActive && !canDrop && 'rst__rowCancelPad',\n isSearchMatch && 'rst__rowSearchMatch',\n isSearchFocus && 'rst__rowSearchFocus',\n rowDirectionClass,\n className\n )}\n style={{\n opacity: isDraggedDescendant ? 0.5 : 1,\n ...style\n }}\n >\n {handle}\n\n <div\n className={classnames(\n 'rst__rowContents',\n !canDrag && 'rst__rowContentsDragDisabled',\n rowDirectionClass\n )}\n >\n {showToggleChildrenButton ? (\n <div className=\"rst__buttonWrapper\" onClick={onToggle}>\n <div\n aria-label={node.expanded ? 'Collapse' : 'Expand'}\n className={classnames(\n node.expanded ? 'rst__collapseButton' : 'rst__expandButton',\n rowDirectionClass\n )}\n />\n </div>\n ) : (\n <div className={classnames('rst__buttonWrapper', 'rst__noButton')} />\n )}\n <div className={classnames('rst__rowLabel', rowDirectionClass)}>\n <div\n className={classnames(\n 'rst__rowTitle',\n node.subtitle && 'rst__rowTitleWithSubtitle'\n )}\n >\n {typeof nodeTitle === 'function'\n ? nodeTitle({\n node,\n path,\n treeIndex\n })\n : nodeTitle}\n </div>\n\n {nodeSubtitle && (\n <span className=\"rst__rowSubtitle\">\n {typeof nodeSubtitle === 'function'\n ? nodeSubtitle({\n node,\n path,\n treeIndex\n })\n : nodeSubtitle}\n </span>\n )}\n </div>\n\n <div className=\"rst__rowToolbar\">\n {buttons.map((btn, index) => (\n <div\n key={index} // eslint-disable-line react/no-array-index-key\n className=\"rst__toolbarButton\"\n >\n {btn}\n </div>\n ))}\n </div>\n </div>\n </div>,\n {offsetX: 0, offsetY: 0}\n )}\n </div>\n </div>\n );\n }\n}\n\nNodeRendererDefault.defaultProps = {\n isSearchMatch: false,\n isSearchFocus: false,\n canDrag: false,\n toggleChildrenVisibility: null,\n buttons: [],\n className: '',\n style: {},\n parentNode: null,\n draggedNode: null,\n canDrop: false,\n title: null,\n subtitle: null,\n rowDirection: 'ltr'\n};\n\nNodeRendererDefault.propTypes = {\n node: PropTypes.shape({}).isRequired,\n title: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n subtitle: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n path: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])).isRequired,\n treeIndex: PropTypes.number.isRequired,\n treeId: PropTypes.string.isRequired,\n isSearchMatch: PropTypes.bool,\n isSearchFocus: PropTypes.bool,\n canDrag: PropTypes.bool,\n scaffoldBlockPxWidth: PropTypes.number.isRequired,\n toggleChildrenVisibility: PropTypes.func,\n buttons: PropTypes.arrayOf(PropTypes.node),\n className: PropTypes.string,\n style: PropTypes.shape({}),\n\n // Drag and drop API functions\n // Drag source\n connectDragPreview: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n parentNode: PropTypes.shape({}), // Needed for dndManager\n isDragging: PropTypes.bool.isRequired,\n didDrop: PropTypes.bool.isRequired,\n draggedNode: PropTypes.shape({}),\n // Drop target\n isOver: PropTypes.bool.isRequired,\n canDrop: PropTypes.bool,\n\n // rtl support\n rowDirection: PropTypes.string\n};\n\nexport default NodeRendererDefault;\n","import {createContext} from 'react';\n\nexport const TreeThemeContext = createContext({\n generateTreeNodeProps: undefined\n});\n\nTreeThemeContext.displayName = 'TreeThemeContext';\n","import React, {Component, Children, cloneElement} from 'react';\nimport PropTypes from 'prop-types';\n\nimport './tree-node.css';\nimport {classnames} from './utils';\nimport {MIN_NODE_CONTENT_WIDTH} from '.';\nimport {TreeThemeContext} from '../treeThemeContext';\n\nclass TreeNode extends Component {\n static contextType = TreeThemeContext;\n\n render() {\n const {\n children,\n listIndex,\n swapFrom,\n swapLength,\n swapDepth,\n scaffoldBlockPxWidth,\n lowerSiblingCounts,\n connectDropTarget,\n isOver,\n draggedNode,\n canDrop,\n treeIndex,\n // eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n treeId, // Delete from otherProps\n // eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getPrevRow, // Delete from otherProps\n // eslint-disable-next-line no-unused-vars\n node, // Delete from otherProps\n // eslint-disable-next-line no-unused-vars\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n path, // Delete from otherProps\n rowDirection,\n ...otherProps\n } = this.props;\n\n const rowDirectionClass = rowDirection === 'rtl' ? 'rst__rtl' : null;\n\n // Construct the scaffold representing the structure of the tree\n const scaffoldBlockCount = lowerSiblingCounts.length;\n const scaffold = [];\n lowerSiblingCounts.forEach((lowerSiblingCount, i) => {\n let lineClass = '';\n if (lowerSiblingCount > 0) {\n // At this level in the tree, the nodes had sibling nodes further down\n\n /*if (listIndex === 0) {\n // Top-left corner of the tree\n // +-----+\n // | |\n // | +--+\n // | | |\n // +--+--+\n lineClass =\n 'rst__lineHalfHorizontalRight rst__lineHalfVerticalBottom';\n } else*/ if (\n i ===\n scaffoldBlockCount - 1\n ) {\n // Last scaffold block in the row, right before the row content\n // +--+--+\n // | | |\n // | +--+\n // | | |\n // +--+--+\n lineClass = 'rst__lineHalfHorizontalRight rst__lineFullVertical';\n } else {\n // Simply connecting the line extending down to the next sibling on this level\n // +--+--+\n // | | |\n // | | |\n // | | |\n // +--+--+\n lineClass = 'rst__lineFullVertical';\n }\n } /*else if (listIndex === 0) {\n // Top-left corner of the tree, but has no siblings\n // +-----+\n // | |\n // | +--+\n // | |\n // +-----+\n lineClass = 'rst__lineHalfHorizontalRight';\n }*/ else if (\n i ===\n scaffoldBlockCount - 1\n ) {\n // The last or only node in this level of the tree\n // +--+--+\n // | | |\n // | +--+\n // | |\n // +-----+\n lineClass = 'rst__lineHalfVerticalTop rst__lineHalfHorizontalRight';\n }\n\n scaffold.push(\n <div\n key={`pre_${1 + i}`}\n style={{width: scaffoldBlockPxWidth}}\n className={classnames('rst__lineBlock', lineClass, rowDirectionClass)}\n />\n );\n\n if (treeIndex !== listIndex && i === swapDepth) {\n // This row has been shifted, and is at the depth of\n // the line pointing to the new destination\n let highlightLineClass = '';\n\n if (listIndex === swapFrom + swapLength - 1) {\n // This block is on the bottom (target) line\n // This block points at the target block (where the row will go when released)\n highlightLineClass = 'rst__highlightBottomLeftCorner';\n } else if (treeIndex === swapFrom) {\n // This block is on the top (source) line\n highlightLineClass = 'rst__highlightTopLeftCorner';\n } else {\n // This block is between the bottom and top\n highlightLineClass = 'rst__highlightLineVertical';\n }\n\n let style;\n if (rowDirection === 'rtl') {\n style = {\n width: scaffoldBlockPxWidth,\n right: scaffoldBlockPxWidth * i\n };\n } else {\n // Default ltr\n style = {\n width: scaffoldBlockPxWidth,\n left: scaffoldBlockPxWidth * i\n };\n }\n\n scaffold.push(\n <div\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n style={style}\n className={classnames('rst__absoluteLineBlock', highlightLineClass, rowDirectionClass)}\n />\n );\n }\n });\n\n let style;\n const scaffoldWidth = scaffoldBlockPxWidth * scaffoldBlockCount;\n if (rowDirection === 'rtl') {\n style = {right: scaffoldWidth};\n } else {\n // Default ltr\n style = {left: scaffoldWidth};\n }\n style = {...style, width: `calc(100% - ${scaffoldWidth}px`};\n const width = `${scaffoldWidth + MIN_NODE_CONTENT_WIDTH}px`;\n const nodeStyle = {...otherProps.style, width};\n const treeNodeProps =\n this.context && this.context.generateTreeNodeProps && this.context.generateTreeNodeProps(this.props);\n return connectDropTarget(\n <div\n {...otherProps}\n className={classnames(\n 'rst__node',\n node.root && 'rst__root',\n rowDirectionClass,\n treeNodeProps && treeNodeProps.treeNodeClassName,\n !!draggedNode && draggedNode.nodeId !== node.nodeId && 'rst_node_hover_disabled'\n )}\n style={nodeStyle}\n >\n {scaffold}\n\n <div className=\"rst__nodeContent\" style={style}>\n {Children.map(children, (child) =>\n cloneElement(child, {\n isOver,\n canDrop,\n draggedNode\n })\n )}\n </div>\n </div>\n );\n }\n}\n\nTreeNode.defaultProps = {\n swapFrom: null,\n swapDepth: null,\n swapLength: null,\n canDrop: false,\n draggedNode: null,\n rowDirection: 'ltr'\n};\n\nTreeNode.propTypes = {\n treeIndex: PropTypes.number.isRequired,\n treeId: PropTypes.string.isRequired,\n swapFrom: PropTypes.number,\n swapDepth: PropTypes.number,\n swapLength: PropTypes.number,\n scaffoldBlockPxWidth: PropTypes.number.isRequired,\n lowerSiblingCounts: PropTypes.arrayOf(PropTypes.number).isRequired,\n\n listIndex: PropTypes.number.isRequired,\n children: PropTypes.node.isRequired,\n\n // Drop target\n connectDropTarget: PropTypes.func.isRequired,\n isOver: PropTypes.bool.isRequired,\n canDrop: PropTypes.bool,\n draggedNode: PropTypes.shape({}),\n\n // used in dndManager\n getPrevRow: PropTypes.func.isRequired,\n node: PropTypes.shape({}).isRequired,\n path: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])).isRequired,\n\n // rtl support\n rowDirection: PropTypes.string\n};\n\nexport default TreeNode;\n","// Can override the following:\n//\n// style: PropTypes.shape({}),\n// innerStyle: PropTypes.shape({}),\n// reactVirtualizedListProps: PropTypes.shape({}),\n// scaffoldBlockPxWidth: PropTypes.number,\n// slideRegionSize: PropTypes.number,\n// rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n// treeNodeRenderer: PropTypes.func,\n// nodeContentRenderer: PropTypes.func,\n// placeholderRenderer: PropTypes.func,\n\nimport nodeContentRenderer from './node-content-renderer';\nimport treeNodeRenderer from './tree-node-renderer';\n\nexport const MIN_NODE_CONTENT_WIDTH = 250;\nconst scaffoldBlockPxWidth = 16;\nconst rowHeight = 28;\nconst slideRegionSize = 50;\nexport {nodeContentRenderer, treeNodeRenderer, scaffoldBlockPxWidth, rowHeight, slideRegionSize};\n","import PropTypes from 'prop-types';\nimport {EntityType, RelationType} from '@reltio/mdm-sdk';\n\nconst lazyGenericNodeType = () => GenericNodeType;\nconst lazyHierarchyNodeType = () => HierarchyNodeType;\n\nconst GenericNodeType = PropTypes.shape({\n nodeId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n children: PropTypes.arrayOf(lazyGenericNodeType),\n showParents: PropTypes.bool,\n expanded: PropTypes.bool,\n pending: PropTypes.bool,\n cycled: PropTypes.bool\n});\n\nconst HierarchyNodeType = PropTypes.shape({\n nodeId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n entity: EntityType,\n relation: RelationType,\n relations: PropTypes.arrayOf(RelationType),\n total: PropTypes.number,\n parent: PropTypes.arrayOf(PropTypes.string),\n directParentUri: PropTypes.string,\n children: PropTypes.arrayOf(lazyHierarchyNodeType),\n loading: PropTypes.bool,\n expanded: PropTypes.bool,\n showParents: PropTypes.bool,\n cycled: PropTypes.bool,\n pending: PropTypes.bool\n});\n\nconst ActivenessDateType = PropTypes.number;\n\nconst TreeType = PropTypes.shape({\n root: HierarchyNodeType,\n graphTypes: PropTypes.string,\n entitiesMap: PropTypes.object,\n title: PropTypes.string,\n activenessDate: ActivenessDateType,\n scrollTo: HierarchyNodeType,\n loading: PropTypes.bool\n});\n\nexport {ActivenessDateType, GenericNodeType, HierarchyNodeType, TreeType};\n","import React, {useCallback, useEffect, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {GenericNodeType} from '../../constants/prop-types';\nimport {ReactSortableTreeUtils} from '@reltio/components';\nimport * as hierarchyTheme from './theme';\nimport {propOr} from 'ramda';\nimport {CellMeasurerCache} from 'react-virtualized';\n\nconst MeasuredNode = ({measure, registerChild, NodeRenderer, node, treeIndex}) => {\n useEffect(measure, [treeIndex]);\n return <NodeRenderer measure={measure} registerChild={registerChild} node={node} />;\n};\n\nMeasuredNode.propTypes = {\n measure: PropTypes.func,\n registerChild: PropTypes.func,\n NodeRenderer: PropTypes.func,\n node: GenericNodeType,\n treeIndex: PropTypes.number\n};\n\n// eslint-disable-next-line react/prop-types,react/display-name\nconst getMeasuredNode = ({NodeRenderer, node, treeIndex}) => ({measure, registerChild}) => (\n <MeasuredNode\n NodeRenderer={NodeRenderer}\n node={node}\n treeIndex={treeIndex}\n measure={measure}\n registerChild={registerChild}\n />\n);\n\nconst useRefreshableMeasurerCache = (treeDataRef, getNodeKey) => {\n const keyMapper = useCallback(\n (rawIndex) => {\n const nodeInfo = ReactSortableTreeUtils.getVisibleNodeInfoAtIndex({\n treeData: treeDataRef.current,\n index: rawIndex,\n getNodeKey\n });\n return getNodeKey({node: propOr({nodeId: -1}, 'node', nodeInfo)});\n },\n [getNodeKey, treeDataRef]\n );\n const [measurerCache] = useState(\n new CellMeasurerCache({\n fixedWidth: true,\n defaultHeight: hierarchyTheme.rowHeight,\n minHeight: hierarchyTheme.rowHeight,\n keyMapper\n })\n );\n const clearCache = () => {\n measurerCache.clearAll();\n };\n\n const onWindowResize = useCallback(clearCache, []);\n useEffect(() => {\n window.addEventListener('resize', onWindowResize);\n return () => {\n window.removeEventListener('resize', onWindowResize);\n };\n }, [onWindowResize]);\n return measurerCache;\n};\n\nexport {getMeasuredNode, useRefreshableMeasurerCache};\n","const getElementByNodeId = (nodeId) => {\n return document.querySelector(`[data-node-id=\"${nodeId}\"]`);\n};\n\nconst scrollToContainerElementByNodeId = (nodeId, scrollingContainer) => {\n const element = getElementByNodeId(nodeId);\n if (element) {\n const elementRect = element.getBoundingClientRect();\n const scrollingContainerRect = scrollingContainer.getBoundingClientRect();\n if (elementRect.right > scrollingContainerRect.right) {\n scrollingContainer.scrollLeft = elementRect.right - scrollingContainerRect.right;\n } else if (scrollingContainer.scrollLeft > 0 && elementRect.left < scrollingContainerRect.left) {\n scrollingContainer.scrollLeft =\n scrollingContainer.scrollLeft + elementRect.left - scrollingContainerRect.left;\n }\n } else {\n setTimeout(() => scrollToContainerElementByNodeId(nodeId, scrollingContainer), 0);\n }\n};\n\nconst getNodeKey = ({node}) => node.nodeId;\n\nconst DefaultNodeRenderer = ({node}) => node.title || null;\n\nexport {scrollToContainerElementByNodeId, getNodeKey, DefaultNodeRenderer};\n","import React, {useCallback, useEffect, useMemo, useRef} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport PropTypes from 'prop-types';\nimport {assoc, identity, omit, path, pick, pipe} from 'ramda';\nimport {CellMeasurer} from 'react-virtualized';\nimport {useStyles} from './styles';\nimport {\n ReactSortableTree,\n ReactSortableTreeUtils,\n usePrevious,\n useRunOnceAfterValueInitialization\n} from '@reltio/components';\nimport * as hierarchyTheme from './theme';\nimport {GenericNodeType} from '../../constants/prop-types';\nimport {getMeasuredNode, useRefreshableMeasurerCache} from './measureHelpers';\nimport {DefaultNodeRenderer, getNodeKey, scrollToContainerElementByNodeId} from './nodeHelpers';\n\nconst theme = pick(\n ['nodeContentRenderer', 'treeNodeRenderer', 'scaffoldBlockPxWidth', 'rowHeight', 'slideRegionSize'],\n hierarchyTheme\n);\n\nconst Tree = ({\n NodeRenderer = DefaultNodeRenderer,\n root,\n scrollToNode,\n onChange,\n onRequestChildren,\n canDrag = false,\n canDrop,\n onScroll = identity,\n onNodeMoved = identity,\n inlineRoot\n}) => {\n const styles = useStyles();\n\n const treeData = useMemo(() => {\n const rootChildren = (root && root.children) || [];\n if (inlineRoot) {\n const inlinedRoot = pipe(omit(['children']), assoc('root', true))(root);\n return [inlinedRoot, ...rootChildren];\n } else {\n return rootChildren;\n }\n }, [root, inlineRoot]);\n\n const virtualizedListRef = useRef(null);\n const treeDataRef = useRef(null);\n const scrollTimerRef = useRef(null);\n treeDataRef.current = treeData;\n\n const getVirtualizedListInstance = useCallback(\n () => path(['current', 'wrappedInstance', 'current'], virtualizedListRef),\n []\n );\n\n const measurerCache = useRefreshableMeasurerCache(treeDataRef, getNodeKey);\n useRunOnceAfterValueInitialization(() => {\n // force applying of rows measurements after first grid render\n setTimeout(() => {\n const vList = getVirtualizedListInstance();\n vList && vList.forceUpdateGrid();\n }, 0);\n }, root);\n\n const getScrollingContainer = useCallback(\n () => path(['Grid', '_scrollingContainer'], getVirtualizedListInstance()),\n [getVirtualizedListInstance]\n );\n\n useEffect(() => {\n if (root && scrollToNode) {\n const results = ReactSortableTreeUtils.find({\n treeData,\n getNodeKey: getNodeKey,\n searchFocusOffset: 0,\n searchQuery: '',\n searchMethod: ({node}) => node === scrollToNode\n });\n const treeIndex = path(['matches', 0, 'treeIndex'], results);\n const vList = getVirtualizedListInstance();\n if (vList && treeIndex != null) {\n vList.scrollToRow(treeIndex);\n scrollTimerRef.current = setTimeout(() => {\n const scrollingContainer = getScrollingContainer();\n scrollToContainerElementByNodeId(scrollToNode.nodeId, scrollingContainer);\n }, 500);\n }\n }\n\n return () => {\n clearTimeout(scrollTimerRef.current);\n };\n }, [root, treeData, scrollToNode, getVirtualizedListInstance, getScrollingContainer]);\n\n const onSortableTreeChange = useCallback(\n (treeData) => {\n onChange && onChange({...root, children: inlineRoot ? treeData.slice(1) : treeData});\n },\n [onChange, root, inlineRoot]\n );\n\n //eslint-disable-next-line\n const nodeRenderWithMeasure = useCallback(\n ({node, treeIndex}) => (\n <CellMeasurer\n cache={measurerCache}\n columnIndex={0}\n key={getNodeKey({node})}\n rowIndex={treeIndex}\n parent={getVirtualizedListInstance()}\n >\n {getMeasuredNode({NodeRenderer, node, treeIndex})}\n </CellMeasurer>\n ),\n [NodeRenderer, measurerCache]\n );\n\n const generateNodeProps = useCallback(\n (rowInfo) => ({\n title: nodeRenderWithMeasure(rowInfo)\n }),\n [nodeRenderWithMeasure]\n );\n const previousTreeData = usePrevious(treeData);\n const onMoveNode = useCallback(\n (movedNodeInfo) => {\n const {prevPath, nextParentNode} = movedNodeInfo;\n let prevParentNode;\n if (prevPath.length > 1) {\n const parentPath = prevPath.slice(0, -1);\n const result = ReactSortableTreeUtils.getNodeAtPath({\n treeData: previousTreeData,\n getNodeKey: getNodeKey,\n path: parentPath\n });\n if (result) {\n prevParentNode = result.node;\n }\n } else {\n prevParentNode = root;\n }\n onNodeMoved({prevParentNode, ...movedNodeInfo, nextParentNode: nextParentNode || root});\n },\n [onNodeMoved, root, previousTreeData]\n );\n\n const handleOnLazyLoadChildren = useCallback(\n ({node}) => {\n onRequestChildren(node);\n },\n [onRequestChildren]\n );\n const handleResize = useCallback(() => {\n measurerCache.clearAll();\n }, [measurerCache]);\n\n return root ? (\n <ReactResizeDetector skipOnMount handleWidth onResize={handleResize}>\n <div className={styles.container}>\n {!inlineRoot && (\n <div className={styles.root}>\n <NodeRenderer node={root} isRoot={true} />\n </div>\n )}\n <div className={styles.tree}>\n <ReactSortableTree\n isVirtualized={true}\n canDrag={canDrag}\n canDrop={canDrop}\n treeData={treeData}\n theme={theme}\n generateNodeProps={generateNodeProps}\n rowHeight={measurerCache.rowHeight}\n reactVirtualizedListProps={{\n ref: virtualizedListRef,\n scrollToAlignment: 'end',\n onScroll\n }}\n onMoveNode={onMoveNode}\n onChange={onSortableTreeChange}\n onLazyLoadChildren={handleOnLazyLoadChildren}\n getNodeKey={getNodeKey}\n />\n </div>\n </div>\n </ReactResizeDetector>\n ) : null;\n};\n\nTree.propTypes = {\n NodeRenderer: PropTypes.elementType,\n root: GenericNodeType,\n canDrag: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n canDrop: PropTypes.func,\n scrollToNode: PropTypes.object,\n onChange: PropTypes.func,\n onRequestChildren: PropTypes.func,\n onNodeMoved: PropTypes.func,\n onScroll: PropTypes.func,\n inlineRoot: PropTypes.bool,\n getNodeKey: PropTypes.func\n};\n\nexport default Tree;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useCommonStyles = makeStyles(() => ({\n container: {\n fontSize: '13px',\n display: 'flex',\n paddingTop: '6px',\n position: 'relative'\n },\n title: {\n flexGrow: 1,\n width: 0,\n minHeight: '15px'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n loadingSpinner: {\n alignSelf: 'center',\n maxHeight: '16px',\n marginRight: '16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {useCommonStyles} from '../commonStyles';\nimport {useStyles} from './styles';\n\nimport {LoadingSpinner} from '@reltio/components';\n\nexport const LoadingNode = ({className, registerChild}) => {\n const commonStyles = useCommonStyles();\n const styles = useStyles();\n return (\n <div className={classnames(commonStyles.container, className)} ref={registerChild}>\n <LoadingSpinner className={styles.loadingSpinner} />\n <div className={commonStyles.title}>{i18n.text('Loading...')}</div>\n </div>\n );\n};\n\nLoadingNode.propTypes = {\n className: PropTypes.string,\n registerChild: PropTypes.func\n};\n\nexport default LoadingNode;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n wrapper: {\n width: '100%'\n },\n avatar: {\n height: '16px',\n width: '16px',\n marginRight: '8px'\n },\n avatarWithMultiParent: {\n cursor: 'pointer'\n },\n number: {\n color: 'rgba(0,0,0,0.54)',\n marginLeft: '13px'\n },\n multiParentIcon: {\n position: 'absolute',\n top: '15px',\n left: '-3px',\n cursor: 'pointer'\n },\n actionsBlock: {\n position: 'absolute',\n right: '0',\n top: '2px',\n backgroundColor: 'rgb(240,240,240)',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: '-40px',\n top: 0,\n width: '40px',\n height: '100%',\n background: 'linear-gradient(to right, rgba(240,240,240, 0.2), rgba(240,240,240, 1) 100%)',\n pointerEvents: 'none'\n }\n },\n actionsBlockWithOpenMenu: {\n backgroundColor: 'white',\n '&::after': {\n background: 'linear-gradient(to right, rgba(255,255,255, 0.2), rgba(255,255,255, 1) 100%)'\n }\n },\n actionsBlockForCheckedNode: {\n backgroundColor: 'rgb(224,238,249)',\n '&::after': {\n background: 'linear-gradient(to right, rgba(224,238,249, 0.2), rgba(224,238,249, 1) 100%)'\n }\n },\n regularNodeCheckbox: {\n padding: 0,\n marginRight: '16px',\n marginTop: '-4px',\n marginLeft: '-4px'\n },\n subtitle: {\n fontSize: '11px',\n letterSpacing: 0,\n lineHeight: '13px',\n paddingLeft: '24px',\n paddingTop: '2px',\n paddingBottom: '4px',\n wordBreak: 'break-word'\n }\n}));\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"11\",\n height: \"11\",\n viewBox: \"0 0 12 12\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"circle\", {\n strokeOpacity: \".54\",\n stroke: \"#000\",\n fill: \"#FFF\",\n cx: \"6\",\n cy: \"6\",\n r: \"5.5\"\n}), React.createElement(\"path\", {\n d: \"M5.536 4.641L4.505 3.61H8v3.495L6.874 5.98 5.509 7.344a1.995 1.995 0 00-.581 1.548l-.407-.408a2 2 0 010-2.828l1.015-1.015z\",\n fillOpacity: \".87\",\n fill: \"#000\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"10\",\n height: \"10\",\n viewBox: \"0 0 10 10\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\",\n fillOpacity: \".38\"\n}, React.createElement(\"path\", {\n d: \"M4.536 3.641L3.505 2.61H7v3.495L5.874 4.98 4.509 6.344a1.995 1.995 0 00-.581 1.548l-.407-.408a2 2 0 010-2.828l1.015-1.015z\",\n fill: \"#000\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n fontSize: '13px',\n lineHeight: '16px',\n display: 'flex',\n marginBottom: '12px',\n alignItems: 'center',\n '&:last-child': {\n marginBottom: 0\n }\n },\n avatar: {\n height: '16px',\n width: '16px',\n marginRight: '6px',\n flexShrink: 0\n },\n loadingNode: {\n paddingTop: 0,\n width: '100%'\n }\n}));\n","import React, {useState} from 'react';\nimport {HierarchyNodeTitle} from '@reltio/components';\nimport LoadingNode from '../../LoadingNode/LoadingNode';\nimport ParentIcon from './parentIcon.svg';\nimport {useStyles} from './styles';\n\ntype Node = {\n pending: boolean;\n title?: string;\n viewId?: string;\n entityUri?: string;\n};\n\ntype Props = {\n node: Node;\n};\n\nexport const MultiParentBlockItem = ({node}: Props) => {\n const styles = useStyles();\n const [popperAnchor, setPopperAnchor] = useState<HTMLElement>();\n\n return (\n <div ref={setPopperAnchor} className={styles.root}>\n {node.pending ? (\n <LoadingNode className={styles.loadingNode} />\n ) : (\n <>\n <ParentIcon className={styles.avatar} />\n <HierarchyNodeTitle\n title={node.title}\n entityUri={node.entityUri}\n viewId={node.viewId}\n anchorEl={popperAnchor}\n />\n </>\n )}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n multiParent: {\n position: 'relative',\n background: '#ffffff',\n border: '1px solid rgba(0,0,0,0.12)',\n marginLeft: '-5px',\n marginTop: '10px',\n padding: '10px 11px 9px 6px',\n '&:after,&:before': {\n bottom: '100%',\n left: '12px',\n border: 'solid transparent',\n content: \"' '\",\n height: 0,\n width: 0,\n position: 'absolute',\n 'pointer-events': 'none'\n },\n '&:after': {\n borderColor: 'rgba(255, 255, 255, 0)',\n borderBottomColor: '#ffffff',\n borderWidth: '6px',\n marginLeft: '-6px'\n },\n '&:before': {\n borderColor: 'rgba(220, 216, 245, 0)',\n borderBottomColor: 'rgba(0,0,0,0.12)',\n borderWidth: '7px',\n marginLeft: '-7px'\n }\n }\n}));\n","import React from 'react';\nimport {MultiParentBlockItem} from '../MultiParentBlockItem/MultiParentBlockItem';\nimport {useStyles} from './styles';\n\ntype Node = {\n pending: boolean;\n title?: string;\n viewId?: string;\n entityUri?: string;\n};\n\ntype Props = {\n showParents: boolean;\n additionalParents: Array<Node>;\n};\n\nconst MultiParentBlock = ({showParents, additionalParents}: Props) => {\n const styles = useStyles();\n\n return showParents && additionalParents.length > 0 ? (\n <div className={styles.multiParent}>\n {additionalParents.map((parent, i) => (\n <MultiParentBlockItem key={i} node={parent} />\n ))}\n </div>\n ) : null;\n};\n\nexport default MultiParentBlock;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n details: {\n margin: '1px 0 8px 24px'\n },\n loadingNode: {\n paddingTop: 0\n },\n detailLine: {\n display: 'flex'\n },\n detail: {\n flexGrow: 1,\n width: 0,\n wordWrap: 'break-word',\n lineHeight: '16px',\n paddingLeft: '8px',\n textIndent: '-8px'\n },\n detailLabel: {\n color: 'rgba(0, 0, 0, 0.6)',\n whiteSpace: 'nowrap',\n lineHeight: '16px',\n letterSpacing: 0,\n marginRight: '5px'\n },\n detailValue: {\n fontSize: '0.75rem',\n letterSpacing: 0\n }\n}));\n","import {assoc, both, complement, curry, equals, findIndex, has, path, pipe, prop, when} from 'ramda';\nimport {nanoid} from 'nanoid';\nimport {\n getGraphType,\n generateNewRelationUri,\n mapTree,\n sortTreeChildren,\n createRelationTypesLabelsMap,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\n\nexport const prepareTree = (tree, metadata) => {\n const {sortField, sortOrder, graphTypes} = tree;\n const root = mapTree(tree.root, {\n childrenProcessing: sortTreeChildren({\n sortField,\n sortOrder,\n typesLabelsMap: createRelationTypesLabelsMap(metadata)\n }),\n nodeProcessing: pipe(formatNodeFromTreeResponse, addSelfRelatedNode, expandNode)\n });\n const entitiesMap = buildEntitiesMapFromTree(root);\n const title = (getGraphType(metadata, graphTypes) || {}).label;\n return {...tree, root, entitiesMap, title};\n};\n\nexport const buildTreeFromHops = ({json, parentUri, sortField, sortOrder, metadata, isReversed}) => {\n const entitiesMap = processHopsResponse(json, isReversed);\n const rawSubTree = entitiesMap && breakCycles(entitiesMap[parentUri]);\n return mapTree(rawSubTree, {\n nodeProcessing: pipe(formatNodeFromHopResponse, addSelfRelatedNode),\n childrenProcessing: sortTreeChildren({\n sortField,\n sortOrder,\n typesLabelsMap: createRelationTypesLabelsMap(metadata)\n })\n });\n};\n\nlet nodeCounter = 0;\nexport const generateId = () => nodeCounter++;\n\nconst convertParentProp = (parent) => (parent ? [].concat(parent) : []);\n\nconst getNodeUri = (node) => path(['entity', 'uri'], node);\n\nconst getRelationsProp = (relations) => (relations ? wrapInArrayIfNeeded(relations) : []);\n\nconst getRelationProp = (node, directParentUri) => {\n const relations = prop('relation', node);\n if (Array.isArray(relations)) {\n const parents = convertParentProp(node.parent);\n const parentIndex = findIndex(equals(directParentUri), parents);\n return path([parentIndex], relations);\n } else {\n return relations;\n }\n};\n\nexport const formatNodeFromTreeResponse = (node, directParent = {}) =>\n node.formatted\n ? node\n : {\n ...node,\n nodeId: generateId(),\n parent: convertParentProp(node.parent),\n directParentUri: getNodeUri(directParent),\n pending: !node.children && node.total > 0,\n formatted: true,\n relations: getRelationsProp(node.relation),\n relation: getRelationProp(node, getNodeUri(directParent))\n };\n\nconst formatNodeFromHopResponse = (node, directParent = {}) => {\n const {children, parent, traversedRelations, untraversedRelations, cycled, formatted, relation, ...entity} = node;\n if (formatted) {\n return node;\n }\n const total = traversedRelations + untraversedRelations - 1;\n const directParentUri = getNodeUri(directParent);\n const formattedNode = {\n nodeId: generateId(),\n cycled,\n entity,\n parent: convertParentProp(parent),\n directParentUri,\n total,\n pending: !cycled && !children && total > 0,\n formatted: true,\n relations: getRelationsProp(relation),\n relation: getRelationProp(node, directParentUri)\n };\n if (children) {\n formattedNode.children = children;\n formattedNode.pending = !cycled && total > children.length;\n }\n return formattedNode;\n};\n\nconst addSelfRelatedNode = (node) => {\n const children = node.children || [];\n const alreadyHasSelfRelatedNode = children.some(\n (child) => path(['entity', 'uri'], child) === node.entity.uri || child.uri === node.entity.uri\n );\n if (!alreadyHasSelfRelatedNode && !node.cycled && node.parent.includes(node.entity.uri)) {\n return {\n ...node,\n children: children.concat({\n ...node,\n nodeId: generateId(),\n directParentUri: node.entity.uri,\n total: 0,\n children: [],\n cycled: true\n })\n };\n }\n return node;\n};\n\nconst expandNode = when(both(has('children'), complement(prop('pending'))), assoc('expanded', true));\n\n/* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\nconst clearNodeForEntityMap = ({\n nodeId,\n relation,\n formatted,\n directParentUri,\n pending,\n children,\n total,\n ...clearedNode\n}) => clearedNode;\n/* eslint-enable */\n\nconst buildEntitiesMapFromTree = (node, result = {}) => {\n const key = getNodeUri(node);\n if (key) {\n result[key] = clearNodeForEntityMap(node);\n }\n if (node.children) {\n node.children.forEach((child) => buildEntitiesMapFromTree(child, result));\n }\n return result;\n};\n\nconst buildEntitiesMapFromHopsEntities = (entitiesMap) => {\n return Object.keys(entitiesMap).reduce((result, entityUri) => {\n const entity = formatNodeFromHopResponse(entitiesMap[entityUri]);\n result[entityUri] = clearNodeForEntityMap(entity);\n return result;\n }, {});\n};\n\nconst processHopsResponse = ({entities, relations}, isReversed) => {\n if (Array.isArray(entities)) {\n const entitiesMap = entities.reduce((result, entity) => {\n result[entity.uri] = entity;\n return result;\n }, {});\n (relations || []).forEach((relation) => {\n const parentObjectKey = isReversed ? 'endObject' : 'startObject';\n const childObjectKey = isReversed ? 'startObject' : 'endObject';\n const parent = entitiesMap[relation[parentObjectKey].objectURI];\n const child = entitiesMap[relation[childObjectKey].objectURI];\n parent.children = parent.children || [];\n if (!parent.children.includes(child)) {\n parent.children.push(child);\n }\n child.parent = child.parent || [];\n if (!child.relation) {\n child.relation = relation;\n }\n if (!child.parent.includes(parent.uri)) {\n child.parent.push(parent.uri);\n }\n });\n return entitiesMap;\n }\n};\n\nconst breakCycles = (root) => {\n /*\n Example of hierarchy with cycles:\n\n node\n |\n child\n |\n N-grand-child\n |\n [N-grand-child | child | node]\n\n Break the cycle by cloning the lowest-level node that causes cycle without its children\n */\n\n const queue = [\n {\n node: root,\n parent: null\n }\n ];\n const visitedNodes = [];\n for (const current of queue) {\n const {node, parent} = current;\n if (visitedNodes.includes(node)) {\n parent.children = parent.children.map((child) => {\n if (child === node) {\n return {\n ...node,\n cycled: true,\n children: []\n };\n } else {\n return child;\n }\n });\n } else {\n visitedNodes.push(node);\n if (node.children) {\n queue.push(...node.children.map((child) => ({node: child, parent: node})));\n }\n }\n }\n return root;\n};\n\nexport const buildEntitiesMapFromHops = curry((isReversed, json) =>\n pipe(processHopsResponse, buildEntitiesMapFromHopsEntities)(json, isReversed)\n);\n\nexport const isLoadingNode = (node) => node.loading;\nexport const isSelectedNode = (node, currentEntityUri) => getNodeUri(node) === currentEntityUri;\nexport const createLoadingNode = () => ({\n entity: {},\n loading: true,\n nodeId: nanoid()\n});\n\nexport const createNewTreeNode = () => ({\n nodeId: generateId(),\n relation: {\n uri: generateNewRelationUri(),\n attributes: {}\n }\n});\n","import {buildEntitiesMapFromHops, buildTreeFromHops, generateId} from '../../helpers/treeDataProvider';\nimport i18n from 'ui-i18n';\nimport {any, path, pipe, prop} from 'ramda';\nimport mdm, {profile, ui} from '@reltio/mdm-module';\nimport {getAllEntityTypesForGraphType, getHops, getRequestErrorMessage, isAbortError} from '@reltio/mdm-sdk';\n\nconst treeActions = profile.trees.actions;\n\nexport const expandNodeCommand =\n ({id, nodeId}) =>\n (dispatch) => {\n dispatch(treeActions.nodeExpandedEvent({id, nodeId}));\n };\n\nexport const loadChildren =\n ({parentUri, parentId, graphTypes, activenessDate, id, isReversed, signal}) =>\n (dispatch, getState) => {\n const {sortField, sortOrder} = mdm.selectors.getTree(getState(), id);\n const metadata = mdm.selectors.getMetadata(getState());\n dispatch(treeActions.childrenLoading({id, parentId, nodeId: generateId()}));\n return getHops({uri: parentUri, graphTypes, activenessDate, signal})\n .then((json) => {\n const {children} = buildTreeFromHops({json, parentUri, sortField, sortOrder, metadata, isReversed});\n const entitiesSubMap = buildEntitiesMapFromHops(isReversed, json);\n dispatch(treeActions.childrenLoaded({id, children, parentId}));\n dispatch(treeActions.entitiesMappingLoaded({id, entitiesSubMap}));\n })\n .catch((error) => {\n if (!isAbortError(error)) {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n }\n dispatch(treeActions.cancelChildrenLoading({id, parentId}));\n });\n };\n\nexport const loadParents =\n ({uri, graphTypes, activenessDate, id, isReversed, nodeId, signal}) =>\n (dispatch) => {\n const createSubTreeEntitiesLoadedEvent = (entitiesSubMap) =>\n treeActions.entitiesMappingLoaded({id, entitiesSubMap});\n const parentsProcessing = pipe(\n buildEntitiesMapFromHops(isReversed),\n createSubTreeEntitiesLoadedEvent,\n dispatch\n );\n return getHops({uri, graphTypes, activenessDate, signal})\n .then(parentsProcessing)\n .catch((error) => {\n if (!isAbortError(error)) {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n }\n dispatch(treeActions.treeNodeChanged({id, node: {nodeId, showParents: false}}));\n });\n };\n\nexport const showCurrentEntity =\n ({id, uri}) =>\n (dispatch) => {\n dispatch(treeActions.currentEntityShownInTree({id, uri}));\n setTimeout(() => {\n dispatch(treeActions.resetScrollToNode(id));\n }, 0);\n };\n\nexport const scrollToTreeTop = (id) => (dispatch, getState) => {\n const tree = mdm.selectors.getTree(getState(), id);\n const uri = path(['root', 'children', 0, 'entity', 'uri'], tree);\n if (uri) {\n dispatch(showCurrentEntity({id, uri}));\n }\n};\n\nexport const hasEntityTypesWithSecondaryLabelPattern = pipe(\n getAllEntityTypesForGraphType,\n any(prop('secondaryLabelPattern'))\n);\n","import {always, cond, equals, has} from 'ramda';\nimport {profile} from '@reltio/mdm-module';\nimport {getRelation, NODE_EDITING_MODES, getPayloadForNodeApplyEditing} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {loadChildren} from './treeHelpers';\n\nconst treeActions = profile.trees.actions;\n\nexport const isRelationLoaded = has('attributes');\nexport const isNodeChecked = ({node, checkedNodes}) => has(node.nodeId, checkedNodes);\nexport const isEditorNode = has('editingMode');\n\nexport const hasEditorNode = (node = {}) => {\n return isEditorNode(node) || (has('children', node) && node.children.some(hasEditorNode));\n};\n\nconst loadRelationDetails =\n ({id, node}) =>\n (dispatch) => {\n const {nodeId, relation} = node;\n const currentRelation = Array.isArray(relation) ? relation[0] : relation;\n return isRelationLoaded(currentRelation)\n ? Promise.resolve(relation)\n : getRelation(currentRelation.uri).then((relationDetails) => {\n const detailedRelation = {...currentRelation, ...relationDetails};\n dispatch(\n treeActions.treeNodeChanged({\n id,\n node: {\n nodeId,\n relation: detailedRelation\n }\n })\n );\n return Promise.resolve(detailedRelation);\n });\n };\n\nexport const toggleRelationDetails =\n ({id, node}) =>\n (dispatch) => {\n const {nodeId, showDetails, relation} = node;\n const updatedNode = {\n nodeId,\n showDetails: !showDetails\n };\n dispatch(treeActions.treeNodeChanged({id, node: updatedNode}));\n\n const needDetails = !showDetails && !isRelationLoaded(relation) && relation;\n if (needDetails) {\n dispatch(loadRelationDetails({id, node}));\n }\n };\n\nexport const nodeStartEditing =\n ({id, node}) =>\n (dispatch) => {\n const {nodeId} = node;\n dispatch(treeActions.treeNodeChanged({id, node: {nodeId, loading: true}}));\n dispatch(loadRelationDetails({id, node})).then(() => {\n dispatch(treeActions.treeNodeEditingStarted({id, node}));\n });\n };\n\nexport const nodeStartAddingChild =\n ({id, node, newNode, isReversed, signal}) =>\n (dispatch, getState) => {\n dispatch(treeActions.treeNodeNewChildEditingStarted({id, node, newNode}));\n if (node.pending) {\n const store = getState();\n const {activenessDate, graphTypes} = mdm.selectors.getTree(store, id);\n dispatch(\n loadChildren({\n parentUri: node.entity.uri,\n parentId: node.nodeId,\n graphTypes,\n activenessDate,\n id,\n isReversed,\n signal\n })\n );\n }\n };\n\nexport const nodeCancelEditing =\n ({id, node}) =>\n (dispatch) => {\n const action = cond([\n [equals(NODE_EDITING_MODES.addingParent), always(treeActions.treeNodeNewParentEditingCanceled)],\n [equals(NODE_EDITING_MODES.addingChild), always(treeActions.treeNodeNewChildEditingCanceled)],\n [equals(NODE_EDITING_MODES.editing), always(treeActions.treeNodeEditingCanceled)]\n ])(node.editingMode);\n dispatch(action({id, node}));\n };\n\nexport const nodeApplyEditing =\n ({id, node, isReversed}) =>\n (dispatch, getState) => {\n const connection = mdm.selectors.getTreeEditingConnection(getState(), id, node.relation.uri);\n let dataAction;\n\n switch (node.editingMode) {\n case NODE_EDITING_MODES.addingParent:\n case NODE_EDITING_MODES.addingChild:\n dataAction = treeActions.treeRelationCreated;\n break;\n case NODE_EDITING_MODES.editing: {\n dataAction = treeActions.treeRelationChanged;\n break;\n }\n }\n dispatch(dataAction(getPayloadForNodeApplyEditing({node, connection, isReversed})));\n\n const treeAppearanceChangeActionCreator = cond([\n [equals(NODE_EDITING_MODES.addingParent), always(treeActions.treeNodeNewParentEditingApplied)],\n [equals(NODE_EDITING_MODES.addingChild), always(treeActions.treeNodeNewChildEditingApplied)],\n [equals(NODE_EDITING_MODES.editing), always(treeActions.treeNodeEditingApplied)]\n ])(node.editingMode);\n dispatch(treeAppearanceChangeActionCreator({id, node}));\n };\n\nexport const hasLoadingNode = (node) => {\n return node.loading || (has('children', node) && node.children.some(hasLoadingNode));\n};\n\nexport const getShowSecondaryLabelValue = (showSecondaryLabel = true, enabled) => enabled && showSecondaryLabel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {pick, prop} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\nimport LoadingNode from '../../LoadingNode/LoadingNode';\nimport {ACTIVENESS_ATTR_TYPES, DataTypes, getRelationType, MetadataType, RelationType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {DataTypeValue} from '@reltio/components';\nimport {isRelationLoaded} from '../../../helpers/nodeHelpers';\n\nconst getRelationDetails = pick(['startDate', 'endDate']);\nconst attrTypes = [\n {\n uri: 'typeName',\n type: DataTypes.TYPE_STRING,\n label: i18n.text('Relationship')\n },\n ...ACTIVENESS_ATTR_TYPES\n];\n\nconst RelationDetails = ({showDetails, metadata, relation = {}}) => {\n const styles = useStyles();\n const relationshipData = getRelationDetails(relation);\n relationshipData.typeName = prop('label', getRelationType(metadata, relation.type));\n\n return showDetails && relation ? (\n <div className={styles.details}>\n {isRelationLoaded(relation) ? (\n attrTypes.map(\n (attrType) =>\n relationshipData[attrType.uri] && (\n <div key={attrType.uri} className={styles.detailLine}>\n <div className={styles.detail}>\n <Typography variant=\"caption\" gutterBottom className={styles.detailLabel}>\n {attrType.label + ': '}\n </Typography>\n <span className={styles.detailValue}>\n <DataTypeValue\n value={relationshipData[attrType.uri]}\n dataTypeDefinition={attrType}\n />\n </span>\n </div>\n </div>\n )\n )\n ) : (\n <LoadingNode key=\"loading-details\" className={styles.loadingNode} />\n )}\n </div>\n ) : null;\n};\n\nRelationDetails.propTypes = {\n showDetails: PropTypes.bool,\n relation: RelationType,\n metadata: MetadataType\n};\n\nexport default RelationDetails;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n addButton: {\n marginRight: '11px'\n },\n editButton: {\n marginRight: '13px'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {identity} from 'ramda';\nimport EditIcon from '@material-ui/icons/Edit';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\nimport InfoIconSelected from '@material-ui/icons/InfoRounded';\n\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst ActionsBlock = ({\n className,\n show,\n showDetails,\n onToggleRelationDetails,\n onMenuOpen,\n onMenuClose,\n onStartEditing,\n onAddParent,\n onAddChild,\n onDelete\n}) => {\n const styles = useStyles();\n const menuItems = [\n onAddParent && {\n text: i18n.text('Add Parent'),\n onClick: onAddParent\n },\n onAddChild && {\n text: i18n.text('Add Child'),\n onClick: onAddChild\n }\n ].filter(identity);\n\n return show && (onToggleRelationDetails || onStartEditing || onAddParent || onAddChild || onDelete) ? (\n <div className={className}>\n {onToggleRelationDetails && (\n <SmallIconButtonWithTooltip\n tooltipTitle={showDetails ? i18n.text('Hide details') : i18n.text('View details')}\n tooltipPlacement=\"bottom-end\"\n size=\"S\"\n icon={showDetails ? InfoIconSelected : InfoIcon}\n onClick={onToggleRelationDetails}\n />\n )}\n {menuItems.length > 0 && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: AddCircleIcon,\n size: 'S',\n tooltipTitle: i18n.text('Add node'),\n className: styles.addButton\n }}\n menuId={'tree-node-actions'}\n menuItems={menuItems}\n onMenuOpen={onMenuOpen}\n onMenuClose={onMenuClose}\n />\n )}\n {onStartEditing && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Edit node')}\n size=\"S\"\n icon={EditIcon}\n onClick={onStartEditing}\n className={styles.editButton}\n />\n )}\n {onDelete && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Delete node')}\n size=\"S\"\n icon={DeleteIcon}\n onClick={onDelete}\n />\n )}\n </div>\n ) : null;\n};\n\nActionsBlock.propTypes = {\n show: PropTypes.bool,\n showDetails: PropTypes.bool,\n className: PropTypes.string,\n onMenuOpen: PropTypes.func,\n onMenuClose: PropTypes.func,\n onStartEditing: PropTypes.func,\n onAddParent: PropTypes.func,\n onAddChild: PropTypes.func,\n onDelete: PropTypes.func,\n onToggleRelationDetails: PropTypes.func\n};\n\nexport default ActionsBlock;\n","import {defaultTo, includes, path, pipe, prop} from 'ramda';\nimport {getValidatedSortField, getValidatedSortOrder} from '@reltio/mdm-sdk';\n\nexport const getGraphConfig = prop('graph');\nexport const getReverseRelationsConfig = pipe(getGraphConfig, path(['options', 'reverseRelations']));\nexport const getGraphTypeConfig = pipe(getGraphConfig, prop('type'));\n\nexport const getValidatedSortOrderFromConfig = pipe(prop('sortOrder'), getValidatedSortOrder);\n\nexport const getValidatedSortFieldFromConfig = pipe(prop('sortBy'), getValidatedSortField);\n\nexport const getIsSecondaryLabelEnabledFromConfig = pipe(prop('attributes'), defaultTo([]), includes('secondaryLabel'));\n","import {__, both, curry, isNil, path, pathOr, prop, reject} from 'ramda';\nimport {\n checkMetadataForCreate,\n checkMetadataForDelete,\n checkMetadataForUpdate,\n getAbsoluteImageUrl,\n getEndObjectTypeUri,\n getEntityType,\n getGraphType,\n getLabel,\n getPropWithInheritance,\n getRelationshipTypeUrisFromGraphType,\n getRelationType,\n getStartObjectTypeUri,\n isEditableMode as checkIsEditableMode,\n isInHierarchy\n} from '@reltio/mdm-sdk';\n\nimport {createNewTreeNode, isSelectedNode} from '../../../../helpers/treeDataProvider';\nimport {getGraphTypeConfig, getReverseRelationsConfig} from '../../../helpers/configHelpers';\nimport {profile} from '@reltio/mdm-module';\nimport {nodeStartAddingChild, nodeStartEditing, toggleRelationDetails} from '../../../helpers/nodeHelpers';\n\nconst treeActions = profile.trees.actions;\n\nconst getTypeGraphIcon = (absoluteImagePath, metadata, entityTypeUri) => {\n const entityType = getEntityType(metadata, entityTypeUri) || {};\n const entityTypeGraphIcon = getPropWithInheritance(metadata, entityType, 'typeGraphIcon');\n return entityTypeGraphIcon && getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n};\n\nconst canEditNode = ({relation}, metadata, mode) =>\n relation ? checkMetadataForUpdate(mode, getRelationType(metadata, relation.type)) : false;\n\nconst canAddRelative = curry((direction, config, metadata, node, mode) => {\n const {entity = {}} = node;\n const isReversed = getReverseRelationsConfig(config) || false;\n const isChild = isReversed ? direction === 'parent' : direction === 'child';\n const nodeEntityTypeUri = entity.type;\n const graphTypeUri = getGraphTypeConfig(config);\n if (graphTypeUri) {\n const graphType = getGraphType(metadata, graphTypeUri);\n const relationTypeUris = getRelationshipTypeUrisFromGraphType(graphType) || [];\n const isNodeEntityInstanceOf = isInHierarchy(metadata, __, nodeEntityTypeUri);\n return relationTypeUris\n .map(getRelationType(metadata))\n .filter(both(checkMetadataForCreate(mode), checkMetadataForUpdate(mode)))\n .map(isChild ? getStartObjectTypeUri : getEndObjectTypeUri)\n .some(isNodeEntityInstanceOf);\n }\n return true;\n});\n\nconst canAddParentForNode = canAddRelative('parent');\nconst canAddChildForNode = canAddRelative('child');\n\nconst canDeleteNode = ({relation}, metadata, mode) =>\n relation ? checkMetadataForDelete(mode, getRelationType(metadata, relation.type)) : false;\n\nconst simpleNodePropsMapping = ({\n node,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config = {},\n showSecondaryLabel,\n onParentsRequested,\n dispatch,\n signal\n}) => {\n const {entity, children, total, pending, showParents, nodeId} = node;\n const {id} = config;\n const isSelected = isSelectedNode(node, currentEntityUri);\n const isEditable = checkIsEditableMode(mode);\n const handleOnDelete = () => {\n const relationUri = path(['relation', 'uri'], node);\n relationUri && dispatch(treeActions.treeRelationRemoved({relationUri}));\n dispatch(treeActions.treeNodeRemoved({id, nodeId}));\n };\n\n const commonActionHandlers = {\n onToggleShowParents: (needLoadAdditionalParents) => {\n dispatch(treeActions.treeNodeChanged({id, node: {nodeId, showParents: !showParents}}));\n needLoadAdditionalParents && onParentsRequested(node);\n }\n };\n\n const actionHandlers = isEditable\n ? {\n onStartEditing: canEditNode(node, metadata, mode) ? () => dispatch(nodeStartEditing({id, node})) : null,\n onAddParent: canAddParentForNode(config, metadata, node, mode)\n ? () =>\n dispatch(treeActions.treeNodeNewParentEditingStarted({id, node, newNode: createNewTreeNode()}))\n : null,\n onAddChild: canAddChildForNode(config, metadata, node, mode)\n ? () =>\n dispatch(\n nodeStartAddingChild({\n id,\n isReversed: getReverseRelationsConfig(config),\n node,\n newNode: createNewTreeNode(),\n signal\n })\n )\n : null,\n onDelete: canDeleteNode(node, metadata, mode) ? handleOnDelete : null,\n ...commonActionHandlers\n }\n : {\n onToggleRelationDetails: () => dispatch(toggleRelationDetails({id, node})),\n ...commonActionHandlers\n };\n return {\n title: getLabel(entity.label),\n subtitle: showSecondaryLabel ? entity.secondaryLabel : undefined,\n number: children && !pending ? children.length : total,\n icon: getTypeGraphIcon(absoluteImagePath, metadata, entity.type),\n isSelectedNode: isSelected,\n entityUri: entity.uri,\n viewId: id,\n showDetails: node.showDetails && !isEditable,\n ...reject(isNil, actionHandlers)\n };\n};\nconst getAdditionalParents = ({node, entitiesMap, metadata, config, absoluteImagePath}) => {\n const {entity, directParentUri} = node;\n return pathOr([], [entity.uri, 'parent'], entitiesMap)\n .filter((parentUri) => parentUri !== directParentUri)\n .map((parentUri) => {\n const mapEntry = prop(parentUri, entitiesMap);\n return mapEntry\n ? simpleNodePropsMapping({node: mapEntry, config, metadata, absoluteImagePath})\n : {pending: true};\n });\n};\n\nconst nodePropsMapping = ({\n node,\n entitiesMap,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config,\n showSecondaryLabel,\n onParentsRequested,\n signal,\n dispatch\n}) => ({\n ...node,\n relation: Array.isArray(node.relation) ? node.relation[0] : node.relation,\n ...simpleNodePropsMapping({\n node,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config,\n showSecondaryLabel,\n onParentsRequested,\n signal,\n dispatch\n }),\n additionalParents: getAdditionalParents({\n node,\n config,\n entitiesMap,\n metadata,\n absoluteImagePath\n })\n});\n\nexport {nodePropsMapping, canDeleteNode, canAddChildForNode};\n","import {createContext} from 'react';\n\nexport const NodeContext = createContext({\n config: {},\n entitiesMap: {},\n onToggleNodeCheckbox: () => {},\n onParentsRequested: () => {},\n checkedNodes: {},\n canSelect: false\n});\n\nNodeContext.displayName = 'NodeContext';\n","import React, {memo, useCallback, useContext, useEffect, useState} from 'react';\nimport classnames from 'classnames';\nimport {Avatar as Avatar} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {HierarchyNodeTitle, PageRequestsAbortingContext} from '@reltio/components';\nimport {identity} from 'ramda';\n\nimport {useStyles} from './styles';\nimport {useCommonStyles} from '../commonStyles';\nimport DEFAULT_ICON from './defaultTypeIcon.png';\nimport MultiParentIcon from './multiParentOverlap.svg';\n\nimport {HierarchyNodeType} from '../../../constants/prop-types';\nimport MultiParentBlock from '../components/MultiParentBlock/MultiParentBlock';\nimport RelationDetails from '../components/RelationDetails/RelationDetails';\nimport ActionsBlock from '../components/ActionsBlock/ActionsBlock';\nimport {nodePropsMapping} from './helpers/nodeMappingHelpers';\nimport {NodeContext} from '../nodeContext';\nimport {isNodeChecked, isRelationLoaded} from '../../helpers/nodeHelpers';\nimport PropTypes from 'prop-types';\n\nconst onImageLoadFail = (e) => {\n e.target.src = DEFAULT_ICON;\n};\n\nexport const RegularNode = ({node = {}, isRoot, registerChild, measure = identity}) => {//NOSONAR\n const styles = useStyles();\n const [popperAnchor, setPopperAnchor] = useState();\n const commonStyles = useCommonStyles();\n const dispatch = useDispatch();\n const {config, entitiesMap, onToggleNodeCheckbox, checkedNodes, canSelect, onParentsRequested, showSecondaryLabel} =\n useContext(NodeContext);\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const {uri: currentEntityUri} = useSelector(mdm.selectors.getEntity);\n const mode = useSelector(mdm.selectors.getMode);\n const signal = useContext(PageRequestsAbortingContext);\n\n const {\n title,\n subtitle,\n number,\n icon,\n relation,\n showDetails,\n additionalParents = [],\n showParents,\n isSelectedNode,\n nodeId,\n viewId,\n entityUri,\n onStartEditing,\n onAddParent,\n onAddChild,\n onToggleRelationDetails,\n onDelete,\n onToggleShowParents\n } = nodePropsMapping({\n node,\n entitiesMap,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config,\n showSecondaryLabel,\n onParentsRequested,\n signal,\n dispatch\n });\n\n const needLoadAdditionalParents = additionalParents.some((parent) => parent.pending);\n const [showControls, setShowControls] = useState(false);\n const showActionsBlock = useCallback(() => setShowControls(true), []);\n const hideActionsBlock = useCallback(() => setShowControls(false), []);\n const [openActionsMenu, setOpenActionsMenu] = useState(false);\n const showActionsMenu = useCallback(() => setOpenActionsMenu(true), []);\n const hideActionsMenu = useCallback(() => {\n setOpenActionsMenu(false);\n setShowControls(false);\n }, []);\n const hasMultiParents = additionalParents.length > 0;\n const toggleShowParents =\n hasMultiParents && onToggleShowParents ? onToggleShowParents.bind(null, needLoadAdditionalParents) : undefined;\n const toggleNodeCheckbox = useCallback(\n (event) =>\n onToggleNodeCheckbox({\n checked: event.target.checked,\n node\n }),\n [node, onToggleNodeCheckbox]\n );\n const checked = isNodeChecked({node, checkedNodes});\n const showCheckbox = false && canSelect && onDelete; // to move node you should have rights to delete it\n useEffect(measure, [\n showCheckbox,\n hasMultiParents,\n subtitle,\n !!onToggleRelationDetails,\n showDetails,\n number,\n showParents,\n showDetails && isRelationLoaded(relation),\n showParents && needLoadAdditionalParents,\n measure\n ]);\n return (\n <div\n className={styles.wrapper}\n data-node-id={nodeId}\n data-reltio-id={'tree-node-' + nodeId}\n onMouseEnter={showActionsBlock}\n onMouseLeave={hideActionsBlock}\n ref={registerChild}\n >\n <div ref={setPopperAnchor} className={commonStyles.container}>\n {showCheckbox ? (\n <Checkbox\n className={classnames(styles.regularNodeCheckbox)}\n checked={checked}\n onChange={toggleNodeCheckbox}\n color=\"primary\"\n />\n ) : (\n <Avatar\n className={classnames(styles.avatar, {[styles.avatarWithMultiParent]: hasMultiParents})}\n src={icon || DEFAULT_ICON}\n onError={onImageLoadFail}\n onClick={toggleShowParents}\n />\n )}\n\n {hasMultiParents && !showCheckbox && (\n <MultiParentIcon className={styles.multiParentIcon} onClick={toggleShowParents} />\n )}\n <div className={commonStyles.title}>\n <HierarchyNodeTitle\n title={title}\n isSelected={isSelectedNode}\n viewId={viewId}\n entityUri={entityUri}\n anchorEl={popperAnchor}\n />\n {!!number && <span className={styles.number}>{number}</span>}\n <ActionsBlock\n show={showControls || openActionsMenu}\n className={classnames(styles.actionsBlock, {\n [styles.actionsBlockWithOpenMenu]: openActionsMenu && !checked,\n [styles.actionsBlockForCheckedNode]: openActionsMenu && checked\n })}\n showDetails={showDetails}\n onToggleRelationDetails={relation && !isRoot ? onToggleRelationDetails : null}\n onMenuOpen={showActionsMenu}\n onMenuClose={hideActionsMenu}\n onStartEditing={!isRoot ? onStartEditing : null}\n onAddChild={onAddChild}\n onAddParent={onAddParent}\n onDelete={!isRoot ? onDelete : null}\n />\n </div>\n </div>\n {!showCheckbox && <MultiParentBlock showParents={showParents} additionalParents={additionalParents} />}\n {subtitle && <div className={styles.subtitle}>{subtitle}</div>}\n {onToggleRelationDetails && (\n <RelationDetails showDetails={showDetails} metadata={metadata} relation={relation} />\n )}\n </div>\n );\n};\n\nRegularNode.propTypes = {\n node: HierarchyNodeType,\n isRoot: PropTypes.bool,\n registerChild: PropTypes.func,\n measure: PropTypes.func\n};\n\nexport default memo(RegularNode);\n","import PropTypes from 'prop-types';\nimport React, {useMemo} from 'react';\nimport {\n MetadataType,\n RelationTypeType,\n getEntityType,\n getPropWithInheritance,\n getDirectionalLabelFromObject\n} from '@reltio/mdm-sdk';\nimport {RelationTypeSelector} from '@reltio/components';\nimport {ascend, evolve, identity, pipe, prop, propEq, propOr, tap} from 'ramda';\n\nconst getRelationTypesOptions = (relationTypes, isChild, metadata) => {\n const labelsMap = {};\n const addLabelInMap = (label) => (labelsMap[label] = propOr(0, label, labelsMap) + 1);\n const getDirectionalLabel = pipe(getDirectionalLabelFromObject, tap(addLabelInMap));\n const byLabel = ascend(prop('label'));\n const getEntityTypeWithInheritedIcon = (metadata, entityTypeUri) => {\n const entityType = getEntityType(metadata, entityTypeUri);\n const typeIcon = getPropWithInheritance(metadata, entityType, 'typeIcon');\n return {...entityType, typeIcon};\n };\n return relationTypes\n .map(({uri, label, startObject, endObject}) => ({\n label: {directionalLabel: getDirectionalLabel(isChild ? endObject : startObject), typeLabel: label},\n value: uri,\n startObject: {\n ...startObject,\n objectType: getEntityTypeWithInheritedIcon(metadata, startObject.objectTypeURI)\n },\n endObject: {...endObject, objectType: getEntityTypeWithInheritedIcon(metadata, endObject.objectTypeURI)}\n }))\n .map(\n evolve({\n label: ({directionalLabel, typeLabel}) => {\n return directionalLabel\n ? labelsMap[directionalLabel] > 1\n ? `${directionalLabel} (${typeLabel})`\n : directionalLabel\n : typeLabel;\n }\n })\n )\n .sort(byLabel);\n};\n\nconst fromEditorValue = (option) => option.value;\n\nconst toEditorValue = (value, relationsTypesOptions) => relationsTypesOptions.find(propEq('value', value));\n\nconst NodeRelationTypeSelector = ({\n value,\n relationTypes = [],\n isChild,\n onChange = identity,\n metadata,\n ...otherProps\n}) => {\n const relationsTypesOptions = useMemo(() => getRelationTypesOptions(relationTypes, isChild, metadata), [\n relationTypes,\n isChild,\n metadata\n ]);\n\n return (\n <RelationTypeSelector\n value={toEditorValue(value, relationsTypesOptions)}\n options={relationsTypesOptions}\n onChange={pipe(fromEditorValue, onChange)}\n {...otherProps}\n />\n );\n};\n\nNodeRelationTypeSelector.propTypes = {\n className: PropTypes.string,\n value: PropTypes.string,\n relationTypes: PropTypes.arrayOf(RelationTypeType),\n isChild: PropTypes.bool,\n metadata: MetadataType,\n onChange: PropTypes.func\n};\n\nexport default NodeRelationTypeSelector;\n","import {__, allPass, curry, defaultTo, filter, isNil, map, pipe, reject} from 'ramda';\n\nimport {\n checkMetadataForCreate,\n checkMetadataForUpdate,\n getEndObjectTypeUri,\n getRelationshipTypeUrisFromGraphType,\n getRelationType,\n getStartObjectTypeUri,\n isInHierarchy\n} from '@reltio/mdm-sdk';\n\nexport const isAvailableRelationForRelatedEntity = curry((isChild, relatedEntity, metadata, relationType) => {\n const isRelatedEntityInstanceOf = isInHierarchy(metadata, __, relatedEntity.type);\n const getObjectUri = isChild ? getStartObjectTypeUri : getEndObjectTypeUri;\n return pipe(getObjectUri, isRelatedEntityInstanceOf)(relationType);\n});\n\nexport const getAllAvailableRelationTypes = (isChild, relatedEntity, metadata, graphType, mode) =>\n pipe(\n getRelationshipTypeUrisFromGraphType,\n defaultTo([]),\n map(getRelationType(metadata)),\n reject(isNil),\n filter(\n allPass([\n checkMetadataForCreate(mode),\n checkMetadataForUpdate(mode),\n isAvailableRelationForRelatedEntity(isChild, relatedEntity, metadata)\n ])\n )\n )(graphType);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n editorContainer: {\n width: 'calc(100% - 34px)',\n minWidth: '185px',\n backgroundColor: 'rgba(0,0,0,0.03)',\n padding: '16px 16px 8px 16px'\n },\n dense: {\n marginBottom: 0\n },\n item: {\n marginBottom: '20px'\n },\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end'\n }\n}));\n","import React, {memo, useCallback, useContext, useEffect, useMemo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport PropTypes from 'prop-types';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {equals, pipe} from 'ramda';\nimport {Button as Button} from '@material-ui/core';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {HierarchyNodeType} from '../../../constants/prop-types';\nimport {NodeContext} from '../nodeContext';\nimport {\n isAvailableRelationBetweenEntities,\n getActivenessAttributes,\n getSuitableEntityTypeUrisForRelationTypes,\n getErrorMessage,\n getGraphType,\n getHierarchyNodeEditorActiveError,\n getLabel,\n getRelationAttributesList,\n getRelationType,\n relationEditorAttributeTypesSelectionStrategy,\n validateHierarchyConnection,\n NODE_EDITING_MODES,\n isAttributeTypeError\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n AttributesList,\n EntitySelector,\n ErrorWrapper,\n isHighlightedErrorType,\n ScrollToElementContext,\n useDidUpdateEffect,\n useScrollToAttributeError\n} from '@reltio/components';\nimport NodeRelationTypeSelector from '../components/NodeRelationTypeSelector/NodeRelationTypeSelector';\nimport {getGraphTypeConfig, getReverseRelationsConfig} from '../../helpers/configHelpers';\nimport {getAllAvailableRelationTypes} from './helpers';\nimport {nodeApplyEditing, nodeCancelEditing} from '../../helpers/nodeHelpers';\n\nimport {useStyles} from './styles';\n\nconst treeActions = profile.trees.actions;\n\nexport const EditorNode = ({node = {}, measure, registerChild}) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const {relatedEntity, relation: {uri: relationUri} = {}, editingMode, initialConnection} = node;\n const isAddingParent = editingMode === NODE_EDITING_MODES.addingParent;\n const {config} = useContext(NodeContext);\n const viewId = config.id;\n const isReversed = getReverseRelationsConfig(config) || false;\n const isChild = isReversed ? isAddingParent : !isAddingParent;\n\n const connection = useSelector((state) => mdm.selectors.getTreeEditingConnection(state, viewId, relationUri));\n const error = useSelector((state) =>\n getHierarchyNodeEditorActiveError(connection, mdm.selectors.getProfileErrors(state))\n );\n const allErrors = useSelector(mdm.selectors.getProfileErrors);\n\n const {relation, entity} = connection;\n const {attributes, type: relationTypeUri, crosswalks = []} = relation;\n const attributeListEntity = useMemo(\n () => ({\n attributes,\n ...getActivenessAttributes(relation)\n }),\n [attributes, relation]\n );\n const globalSearchRequestOptions = useSelector((state) =>\n mdm.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n );\n const metadata = useSelector(mdm.selectors.getMetadata);\n const mode = useSelector(mdm.selectors.getMode);\n\n const graphTypeUri = getGraphTypeConfig(config);\n const graphType = getGraphType(metadata, graphTypeUri) || {};\n const allAvailableRelationTypes = useMemo(\n () => getAllAvailableRelationTypes(isChild, relatedEntity, metadata, graphType, mode),\n [isChild, relatedEntity, metadata, graphType, mode]\n );\n const availableRelationTypes = useMemo(\n () =>\n entity && entity.uri\n ? allAvailableRelationTypes.filter(\n isAvailableRelationBetweenEntities(isChild, entity, relatedEntity, metadata)\n )\n : allAvailableRelationTypes,\n [entity, allAvailableRelationTypes, isChild, relatedEntity, metadata]\n );\n\n const availableEntityTypeUris = useMemo(\n () =>\n getSuitableEntityTypeUrisForRelationTypes(\n isChild,\n metadata,\n relationTypeUri ? [getRelationType(metadata, relationTypeUri)] : allAvailableRelationTypes\n ),\n [isChild, metadata, relationTypeUri, allAvailableRelationTypes]\n );\n\n const onRelationTypeChange = useCallback(\n (relationTypeUri) => {\n dispatch(treeActions.treeNodeRelationTypeChanged({id: viewId, node, relationTypeUri}));\n },\n [node, viewId, dispatch]\n );\n const onChangeEntity = useCallback(\n (entity) => {\n dispatch(treeActions.treeNodeEntityChanged({id: viewId, node, entity}));\n },\n [node, viewId, dispatch]\n );\n\n useEffect(() => {\n // autoselecting relation type on mount\n if (!relationTypeUri && allAvailableRelationTypes.length === 1) {\n onRelationTypeChange(allAvailableRelationTypes[0].uri);\n }\n }, [relationTypeUri, allAvailableRelationTypes, onRelationTypeChange]);\n\n useDidUpdateEffect(() => {\n // autoselecting relation type on entity change\n if (!relationTypeUri && availableRelationTypes.length >= 1) {\n onRelationTypeChange(availableRelationTypes[0].uri);\n }\n }, [relationTypeUri, entity, availableRelationTypes, onRelationTypeChange]);\n\n useEffect(measure, [\n viewId,\n connection,\n allErrors,\n relationTypeUri,\n allAvailableRelationTypes,\n !!onRelationTypeChange,\n entity,\n availableRelationTypes,\n measure\n ]);\n const relationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relationTypeUri),\n [relationTypeUri, metadata]\n );\n const selectorCompatibleEntity = useMemo(\n () =>\n entity && {\n entityUri: entity.uri,\n entityType: entity.type,\n entityLabel: getLabel(entity.label)\n },\n [entity]\n );\n\n const onAddAttributes = useCallback(\n (params) => pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const validate = useCallback(() => {\n const errors = validateHierarchyConnection(metadata, connection);\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [connection, metadata, dispatch]);\n\n const onCancel = useCallback(() => {\n dispatch(nodeCancelEditing({id: viewId, node}));\n }, [node, viewId, dispatch]);\n\n const onApply = useCallback(() => {\n if (validate()) {\n dispatch(nodeApplyEditing({id: viewId, isReversed, node}));\n }\n }, [node, viewId, isReversed, dispatch, validate]);\n\n const canApply = !equals(initialConnection, connection) && relationTypeUri;\n const errorMessage = getErrorMessage(error);\n const highlightedError = useContext(ScrollToElementContext);\n const isErrorHighlighted = useMemo(\n () =>\n isHighlightedErrorType(highlightedError.type) &&\n isAttributeTypeError(highlightedError.element, relationUri, relationTypeUri),\n [relationUri, relationTypeUri, highlightedError]\n );\n const {ref, errorClassName} = useScrollToAttributeError({\n highlightedError: isErrorHighlighted ? highlightedError : null,\n isSimple: true\n });\n\n return (\n <div className={styles.editorContainer} ref={registerChild}>\n <ReactResizeDetector handleHeight={true} onResize={measure} />\n {allAvailableRelationTypes.length !== 1 && (\n <NodeRelationTypeSelector\n isChild={isChild}\n relationTypes={availableRelationTypes}\n className={styles.item}\n value={relationTypeUri}\n metadata={metadata}\n onChange={onRelationTypeChange}\n />\n )}\n <div ref={ref} className={errorClassName}>\n <ErrorWrapper errorMessage={errorMessage} className={styles.item}>\n <EntitySelector\n key={relationTypeUri}\n className={classnames({[styles.dense]: errorMessage})}\n entity={selectorCompatibleEntity || {}}\n entityTypesUris={availableEntityTypeUris}\n max={config.max || 20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n mode={mode}\n onChange={onChangeEntity}\n metadata={metadata}\n attributeTypesSelectionStrategy={relationEditorAttributeTypesSelectionStrategy}\n />\n </ErrorWrapper>\n </div>\n {relationTypeUri && (\n <AttributesList\n className={styles.item}\n attrTypes={relationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={false}\n crosswalks={crosswalks}\n mode={mode}\n parentUri={relationUri}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n )}\n <div className={styles.actionButtons}>\n <Button onClick={onCancel}>{i18n.text('Cancel')}</Button>\n <Button color=\"primary\" disabled={!canApply} onClick={onApply}>\n {i18n.text('Apply')}\n </Button>\n </div>\n </div>\n );\n};\n\nEditorNode.propTypes = {\n node: HierarchyNodeType,\n registerChild: PropTypes.func,\n measure: PropTypes.func\n};\n\nexport default memo(EditorNode);\n","import React from 'react';\nimport {always, cond, T} from 'ramda';\nimport LoadingNode from './LoadingNode/LoadingNode';\nimport RegularNode from './RegularNode/RegularNode';\nimport {isLoadingNode} from '../../helpers/treeDataProvider';\nimport EditorNode from './EditorNode/EditorNode';\nimport {isEditorNode} from '../helpers/nodeHelpers';\n\nconst NodeTypes = {\n loading: 'loading',\n regular: 'regular',\n editor: 'editor'\n};\n\nconst getNodeType = cond([\n [isEditorNode, always(NodeTypes.editor)],\n [isLoadingNode, always(NodeTypes.loading)],\n [T, always(NodeTypes.regular)]\n]);\n\nexport default class NodesFactory {\n static build(props) {\n const {node} = props;\n const type = getNodeType(node);\n switch (type) {\n case NodeTypes.loading:\n return <LoadingNode {...props} />;\n case NodeTypes.regular:\n return <RegularNode {...props} />;\n case NodeTypes.editor:\n return <EditorNode {...props} />;\n }\n }\n}\n","import PropTypes from 'prop-types';\n\nimport NodesFactory from './NodesFactory';\nimport {HierarchyNodeType} from '../../constants/prop-types';\n\nexport const Node = (props) => NodesFactory.build(props);\n\nNode.propTypes = {\n node: HierarchyNodeType,\n onToggleShowParents: PropTypes.func\n};\n\nexport default Node;\n","import React, {memo, useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {\n getRelationType,\n isEditableMode as checkIsEditableMode,\n isAvailableRelationBetweenEntities\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nimport Tree from '../Tree/Tree';\nimport {TreeType} from '../../constants/prop-types';\nimport Node from '../Node/Node';\nimport {NodeContext} from '../Node/nodeContext';\nimport {TreeThemeContext} from '../Tree/treeThemeContext';\nimport {getShowSecondaryLabelValue, hasLoadingNode, isEditorNode, isNodeChecked} from '../helpers/nodeHelpers';\nimport mdm from '@reltio/mdm-module';\nimport {canAddChildForNode, canDeleteNode} from '../Node/RegularNode/helpers/nodeMappingHelpers';\nimport {getReverseRelationsConfig, getIsSecondaryLabelEnabledFromConfig} from '../helpers/configHelpers';\n\nconst HierarchyPanel = ({\n className,\n config,\n tree = {},\n onChildrenRequested,\n onParentsRequested,\n onTreeChanged,\n onTreeScroll,\n onNodeMoved,\n onToggleNodeCheckbox,\n checkedNodes,\n mode,\n isGraphView\n}) => {\n const styles = useStyles({isGraphView});\n const isEditableMode = checkIsEditableMode(mode);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const nodeContextValue = useMemo(\n () => ({\n config,\n entitiesMap: tree.entitiesMap,\n onToggleNodeCheckbox,\n checkedNodes,\n canSelect: isEditableMode,\n onParentsRequested,\n showSecondaryLabel: getShowSecondaryLabelValue(\n tree.showSecondaryLabel,\n getIsSecondaryLabelEnabledFromConfig(config)\n )\n }),\n [\n checkedNodes,\n config,\n isEditableMode,\n onToggleNodeCheckbox,\n tree.entitiesMap,\n tree.showSecondaryLabel,\n onParentsRequested\n ]\n );\n\n const treeThemeContextValue = useMemo(\n () => ({\n generateTreeNodeProps: ({node}) => ({\n treeNodeClassName: classnames({\n [styles.checkedNode]: isNodeChecked({node, checkedNodes}),\n [styles.editorNode]: isEditorNode(node)\n })\n })\n }),\n [checkedNodes, styles]\n );\n\n const canDrag = useCallback(\n ({node}) =>\n isEditableMode && !isEditorNode(node) && !hasLoadingNode(node) && canDeleteNode(node, metadata, mode),\n [isEditableMode, metadata, mode]\n );\n const canDrop = useCallback(\n ({nextParent, node}) => {\n const isChild = !getReverseRelationsConfig(config);\n const relatedNode = nextParent === null ? tree.root : nextParent;\n return (\n relatedNode &&\n !relatedNode.loading &&\n canAddChildForNode(config, metadata, relatedNode) &&\n isAvailableRelationBetweenEntities(\n isChild,\n node.entity,\n relatedNode.entity,\n metadata,\n getRelationType(metadata, node.relation.type)\n )\n );\n },\n [config, metadata, tree.root]\n );\n return (\n <div className={classnames(styles.panel, className)}>\n <div className={styles.treeWrapper}>\n <TreeThemeContext.Provider value={treeThemeContextValue}>\n <NodeContext.Provider value={nodeContextValue}>\n <Tree\n NodeRenderer={Node}\n onChange={onTreeChanged}\n canDrag={canDrag}\n canDrop={canDrop}\n root={tree.root}\n scrollToNode={tree.scrollTo}\n onScroll={onTreeScroll}\n onRequestChildren={onChildrenRequested}\n onNodeMoved={onNodeMoved}\n inlineRoot={!!tree.root && isEditorNode(tree.root)}\n />\n </NodeContext.Provider>\n </TreeThemeContext.Provider>\n </div>\n </div>\n );\n};\n\nHierarchyPanel.propTypes = {\n className: PropTypes.string,\n tree: TreeType,\n onChildrenRequested: PropTypes.func,\n onParentsRequested: PropTypes.func,\n onTreeChanged: PropTypes.func,\n onTreeScroll: PropTypes.func,\n onNodeMoved: PropTypes.func,\n onToggleNodeCheckbox: PropTypes.func,\n checkedNodes: PropTypes.object,\n mode: PropTypes.string,\n config: PropTypes.object,\n isGraphView: PropTypes.bool\n};\n\nexport default memo(HierarchyPanel);\n","import {useCallback, useEffect, useRef} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {useDidUpdateEffect, usePrevious, useSafePromise} from '@reltio/components';\n\nimport i18n from 'ui-i18n';\nimport {pipe, pick} from 'ramda';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n Entity,\n getRequestErrorMessage,\n getTree,\n hasEntityInTree,\n isAbortError,\n updateTreesWithNewEntity\n} from '@reltio/mdm-sdk';\nimport {prepareTree} from '../../helpers/treeDataProvider';\nimport {showCurrentEntity} from './treeHelpers';\nimport {hasEditorNode} from './nodeHelpers';\nimport mdmModule from '@reltio/mdm-module';\n\nconst treeActions = profile.trees.actions;\n\ntype TreeLoaderProps = {\n entityUri: string;\n id: string;\n graphTypes: string;\n activenessDate: number;\n isReversed: boolean;\n enabled: boolean;\n signal: AbortSignal;\n};\nconst useTreeLoader = ({entityUri, id, graphTypes, activenessDate, isReversed, enabled, signal}: TreeLoaderProps) => {\n const safePromise = useSafePromise({cancelOnUnmount: false});\n const dispatch = useDispatch();\n const timerRef = useRef(null);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const tree = useSelector((state) => mdm.selectors.getTree(state, id)) || {};\n const {root, isReversed: isCurrentReversed, graphTypes: currentGraphTypes} = tree;\n const previousActivenessDate = usePrevious(activenessDate) || activenessDate;\n const showCurrentEntityDelayed = useCallback(() => {\n timerRef.current = setTimeout(() => dispatch(showCurrentEntity({id, uri: entityUri})), 100);\n }, [id, entityUri, dispatch]);\n const hasRoot = !!root;\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n useDidUpdateEffect(() => {\n const updatedTrees = updateTreesWithNewEntity(pick(['uri', 'label', 'secondaryLabel', 'type'], entity), {\n [id]: tree\n });\n if (updatedTrees.length) {\n dispatch(treeActions.treeChanged({id, tree: updatedTrees[0].root}));\n }\n }, [entity?.updatedTime]);\n useEffect(() => {\n if (enabled && hasRoot) {\n showCurrentEntityDelayed();\n return () => clearTimeout(timerRef.current);\n }\n }, [enabled, showCurrentEntityDelayed, hasRoot]);\n useEffect(() => {\n if (enabled) {\n const createTreeLoadedEvent = (tree) =>\n treeActions.treeLoaded({id, tree, graphTypes, activenessDate, isReversed});\n const treeProcessing = pipe(prepareTree, createTreeLoadedEvent, dispatch);\n const shouldUpdate =\n !hasEntityInTree(root, entityUri) ||\n isCurrentReversed !== isReversed ||\n previousActivenessDate !== activenessDate ||\n currentGraphTypes !== graphTypes ||\n hasEditorNode(root);\n if (shouldUpdate) {\n dispatch(treeActions.treeLoading(id));\n safePromise(getTree({uri: entityUri, graphTypes, activenessDate, isReversed, signal}))\n .then((tree) => treeProcessing({...tree, graphTypes}, metadata))\n .then((_) => showCurrentEntityDelayed())\n .catch((e) => {\n dispatch(\n treeActions.treeLoadedWithError({\n id,\n errorMessage: isAbortError(e)\n ? ' ' // error message can't be empty\n : getRequestErrorMessage(e, i18n.text('Something went wrong'))\n })\n );\n console.warn(e);\n });\n }\n }\n }, [\n entityUri,\n graphTypes,\n activenessDate,\n id,\n metadata,\n isReversed,\n enabled,\n safePromise,\n dispatch,\n showCurrentEntityDelayed,\n isCurrentReversed,\n currentGraphTypes,\n previousActivenessDate\n ]);\n};\n\nexport default useTreeLoader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {GraphTypeType} from '@reltio/mdm-sdk';\nimport {SelectorWithOnlyOptionAutoSelect} from '@reltio/components';\n\nconst GraphTypeSelector = ({value, onChange, graphTypes, className}) => {\n return (\n <SelectorWithOnlyOptionAutoSelect\n classes={{\n root: className\n }}\n value={value}\n onChange={onChange}\n options={graphTypes.map(({uri, label}) => ({value: uri, label}))}\n />\n );\n};\n\nGraphTypeSelector.propTypes = {\n value: PropTypes.string,\n onChange: PropTypes.func,\n graphTypes: PropTypes.arrayOf(GraphTypeType),\n className: PropTypes.string\n};\n\nexport default GraphTypeSelector;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {pipe} from 'ramda';\nimport {ActivenessDateType} from '../../constants/prop-types';\nimport {DateEditor} from '@reltio/components';\n\nconst ActivenessDateControl = ({value, onChange, ...otherProps}) => {\n const handleChange = pipe((date) => date && date.getTime(), onChange);\n\n return (\n <DateEditor\n value={value}\n label={i18n.text('Effective date')}\n onChange={handleChange}\n margin=\"dense\"\n {...otherProps}\n />\n );\n};\n\nActivenessDateControl.propTypes = {\n value: ActivenessDateType,\n onChange: PropTypes.func\n};\n\nexport default ActivenessDateControl;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst popupHorizontalPadding = '23px';\n\nexport const useStyles = makeStyles(() => ({\n triggerButton: {\n minWidth: 0,\n color: 'rgba(0,0,0,0.54)',\n width: '36px'\n },\n popupContent: {\n paddingTop: '19px',\n paddingBottom: '23px',\n paddingLeft: popupHorizontalPadding,\n paddingRight: popupHorizontalPadding,\n minWidth: '245px',\n maxWidth: '308px',\n width: '40%'\n },\n title: {\n marginBottom: '30px'\n },\n sortControls: {\n display: 'flex',\n alignItems: 'center'\n },\n sortSelectorRoot: {\n flex: 1,\n padding: '13px 16px',\n fontSize: '0.85rem'\n },\n sortSelectorMenuItem: {\n fontSize: '0.85rem'\n },\n sortOrderButton: {\n flexShrink: 0,\n margin: '0 8px 0 7px'\n },\n checkboxControlRoot: {\n marginTop: '6px',\n marginLeft: '-12px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n },\n divider: {\n backgroundColor: 'rgba(0,0,0,0.1)',\n margin: `19px -${popupHorizontalPadding}`\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport FilterIcon from '@material-ui/icons/FilterList';\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\nimport {DropDownEditor, SmallIconButtonWithTooltip, withTooltip} from '@reltio/components';\nimport {TREE_SORT_FIELD_VALUES, TREE_SORT_ORDER_VALUES} from '@reltio/mdm-sdk';\n\nexport const FormControlLabelWithTooltip = withTooltip(FormControlLabel);\n\nconst SORTING_OPTIONS = [\n {\n label: i18n.text('Relationship type label'),\n value: TREE_SORT_FIELD_VALUES.relationTypeLabel\n },\n {\n label: i18n.text('Entity label'),\n value: TREE_SORT_FIELD_VALUES.entityLabel\n }\n];\n\nconst FilterSortButton = ({\n className,\n sortField,\n sortOrder,\n onSort,\n showSecondaryLabel,\n showSecondaryLabelDisabledReason,\n onShowSecondaryLabelChange\n}) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const isAsc = sortOrder === TREE_SORT_ORDER_VALUES.asc;\n\n const togglePopup = () => setIsOpen((open) => !open);\n const toggleSortOrder = () => {\n onSort({\n sortField,\n sortOrder: isAsc ? TREE_SORT_ORDER_VALUES.desc : TREE_SORT_ORDER_VALUES.asc\n });\n };\n\n const changeSortField = (newSortField) => {\n onSort({\n sortField: newSortField,\n sortOrder\n });\n };\n\n return (\n <>\n <Button ref={buttonRef} classes={{root: classnames(styles.triggerButton, className)}} onClick={togglePopup}>\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {onShowSecondaryLabelChange && (\n <>\n <Typography className={styles.viewOptionsTitle} variant=\"h6\">\n {i18n.text('View options')}\n </Typography>\n <FormControlLabelWithTooltip\n tooltipTitle={showSecondaryLabelDisabledReason}\n showForDisabled={!!showSecondaryLabelDisabledReason}\n classes={{\n root: styles.checkboxControlRoot,\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showSecondaryLabel || false}\n onChange={(e) => onShowSecondaryLabelChange(e.target.checked)}\n />\n }\n label={i18n.text('Display secondary label')}\n disabled={!!showSecondaryLabelDisabledReason}\n />\n <Divider className={styles.divider} />\n </>\n )}\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Sort by')}\n </Typography>\n <div className={styles.sortControls}>\n <DropDownEditor\n entries={SORTING_OPTIONS}\n TextFieldProps={{variant: 'filled'}}\n classes={{\n root: styles.sortSelectorRoot,\n menuItem: styles.sortSelectorMenuItem\n }}\n fullWidth\n disableUnderline\n value={sortField}\n onChange={changeSortField}\n MenuProps={{getContentAnchorEl: null, anchorOrigin: {vertical: 'bottom', horizontal: 'left'}}}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isAsc ? i18n.text('Ascending') : i18n.text('Descending')}\n icon={isAsc ? ArrowUpwardIcon : ArrowDownwardIcon}\n onClick={toggleSortOrder}\n className={styles.sortOrderButton}\n size=\"L\"\n />\n </div>\n </Popover>\n </>\n );\n};\n\nFilterSortButton.propTypes = {\n className: PropTypes.string,\n sortField: PropTypes.string,\n sortOrder: PropTypes.string,\n onSort: PropTypes.func,\n showSecondaryLabel: PropTypes.bool,\n showSecondaryLabelDisabledReason: PropTypes.string,\n onShowSecondaryLabelChange: PropTypes.func\n};\n\nexport default FilterSortButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n text: {\n fontSize: '12px',\n lineHeight: '14px',\n letterSpacing: 0,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n textContainer: {\n maxWidth: 'calc(100% - 13px)'\n },\n separator: {\n marginLeft: '4px',\n marginRight: '4px'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\n\nimport {Breadcrumbs as MUIBreadcrumbs} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\nconst Breadcrumbs = ({items = [], ...otherProps}) => {\n const styles = useStyles();\n\n const renderItem = (item, index, items) => {\n const {label, href, onClick} = item;\n const color = index === items.length - 1 ? 'textPrimary' : 'textSecondary';\n\n return onClick || href ? (\n <Link key={index} color={color} classes={{root: styles.text}} href={href} onClick={onClick}>\n {label}\n </Link>\n ) : (\n <Typography key={index} href={href} color={color} classes={{root: styles.text}}>\n {label}\n </Typography>\n );\n };\n\n return (\n <MUIBreadcrumbs\n aria-label={i18n.text('Breadcrumb')}\n expandText={i18n.text('Show path')}\n classes={{li: styles.textContainer, separator: classnames(styles.text, styles.separator)}}\n {...otherProps}\n >\n {items.map(renderItem)}\n </MUIBreadcrumbs>\n );\n};\n\nconst BreadcrumbsType = PropTypes.shape({\n label: PropTypes.string.isRequired,\n href: PropTypes.string,\n onClick: PropTypes.func\n});\n\nBreadcrumbs.propTypes = {\n items: PropTypes.arrayOf(BreadcrumbsType)\n};\n\nexport default Breadcrumbs;\n","import {anyPass, filter, has, isEmpty, map, pick, pipe, reject} from 'ramda';\nimport mdm, {profile} from '@reltio/mdm-module';\n\nconst treeActions = profile.trees.actions;\n\nconst fieldsToSave = ['showSecondaryLabel'];\n\nconst getStateToSave = pipe(\n filter(anyPass([has('root'), ...fieldsToSave.map((field) => has(field))])),\n map(pick(fieldsToSave)),\n reject(isEmpty)\n);\n\nexport const saveTreesPreferences = (id) => (dispatch, getState) => {\n const store = getState();\n const trees = mdm.selectors.getTrees(store);\n const state = getStateToSave(trees);\n dispatch(\n treeActions.treesStateSaved({\n id,\n state\n })\n );\n};\n","import {useEffect} from 'react';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {isTempUri, NODE_EDITING_MODES} from '@reltio/mdm-sdk';\nimport {prepareTree} from '../../helpers/treeDataProvider';\nimport {pipe} from 'ramda';\n\nconst treeActions = profile.trees.actions;\n\ntype NewEntityTreeProps = {\n entityUri: string;\n id: string;\n graphTypes: string;\n activenessDate: number;\n isReversed: boolean;\n};\n\nconst useNewEntityTree = ({id, entityUri, graphTypes, activenessDate, isReversed}: NewEntityTreeProps) => {\n const dispatch = useDispatch();\n const currentModifiedEntitySelector = (store) => mdm.selectors.getModifiedEntity(store, entityUri);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const modifiedEntity = useSelector(currentModifiedEntitySelector);\n const {root} = useSelector((state) => mdm.selectors.getTree(state, id)) || {};\n const isTreeForCurrentEntityUri =\n root?.entity?.uri === entityUri ||\n (root?.editingMode === NODE_EDITING_MODES.addingParent &&\n root?.children?.some(({entity}) => entity?.uri === entityUri));\n\n useEffect(() => {\n const needCreateTreeForNewEntity = modifiedEntity && isTempUri(entityUri) && !isTreeForCurrentEntityUri;\n if (needCreateTreeForNewEntity) {\n const createTreeLoadedEvent = (tree) =>\n treeActions.treeLoaded({id, tree, graphTypes, activenessDate, isReversed});\n const treeProcessing = pipe(prepareTree, createTreeLoadedEvent, dispatch);\n treeProcessing(\n {\n root: {\n entity: modifiedEntity,\n total: 0\n },\n graphTypes\n },\n metadata\n );\n }\n }, [\n activenessDate,\n dispatch,\n entityUri,\n graphTypes,\n id,\n isReversed,\n metadata,\n modifiedEntity,\n isTreeForCurrentEntityUri\n ]);\n};\n\nexport default useNewEntityTree;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n view: {\n width: '100%'\n },\n linearIndicator: {\n top: '42px'\n },\n filtersBar: {\n paddingLeft: '24px',\n display: 'flex',\n alignItems: 'center',\n marginTop: '2px',\n marginBottom: '12px',\n height: '46px'\n },\n errorMessage: {\n fontSize: '13px',\n marginLeft: '24px',\n marginRight: '16px',\n lineHeight: '1.4',\n color: theme.palette.text.secondary\n },\n activenessDate: {\n flex: 1,\n margin: 0\n },\n filterSortButton: {\n flexShrink: 0,\n margin: '0 6px 0 12px'\n },\n breadcrumbs: {\n padding: '8px 24px',\n backgroundColor: 'rgba(0,0,0,0.03)'\n },\n graphTypeSelector: {\n margin: '0 10px 15px 24px',\n overflow: 'hidden'\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import React, {useCallback, useEffect, useMemo, useRef, useState, useContext} from 'react';\nimport classnames from 'classnames';\nimport {omit, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport HierarchyViewHeader from './HierarchyViewHeader/HierarchyViewHeader';\nimport HierarchyPanel from './HierarchyPanel/HierarchyPanel';\nimport {BasicView, LinearLoadIndicator, PageRequestsAbortingContext, FeaturesContext} from '@reltio/components';\nimport {useDispatch} from 'react-redux';\nimport {profile, ui} from '@reltio/mdm-module';\nimport {\n hasEntityTypesWithSecondaryLabelPattern,\n loadChildren,\n loadParents,\n scrollToTreeTop,\n showCurrentEntity\n} from './helpers/treeHelpers';\nimport useTreeLoader from './helpers/useTreeLoader';\nimport GraphTypeSelector from './GraphTypeSelector/GraphTypeSelector';\nimport ActivenessDateControl from './ActivenessDateControl/ActivenessDateControl';\nimport {\n createRelationTypesLabelsMap,\n debounce,\n Entity,\n getLabel,\n getPathByEntityUri,\n HierarchyTreeViewConfig,\n isTempUri,\n isViewMode,\n Metadata,\n Mode,\n Tree,\n GraphLayout\n} from '@reltio/mdm-sdk';\nimport FilterSortButton from './FilterSortButton/FilterSortButton';\nimport {\n getReverseRelationsConfig,\n getIsSecondaryLabelEnabledFromConfig,\n getValidatedSortFieldFromConfig,\n getValidatedSortOrderFromConfig\n} from './helpers/configHelpers';\nimport Breadcrumbs from './Breadcrumbs/Breadcrumbs';\nimport {saveTreesPreferences} from './helpers/saveStateHelpers';\nimport {getShowSecondaryLabelValue} from './helpers/nodeHelpers';\nimport useNewEntityTree from './helpers/useNewEntityTree';\n\nimport {useStyles} from './styles';\n\nconst treeActions = profile.trees.actions;\nconst PREFERENCES_UPDATE_DEBOUNCE_INTERVAL = 500;\n\ntype Props = {\n config: HierarchyTreeViewConfig;\n tree: Tree;\n metadata: Metadata;\n entity: Entity;\n mode: Mode;\n className?: string;\n isGraphView?: boolean;\n};\nconst HierarchyView = ({config, tree, metadata, entity = {} as Entity, mode, className, isGraphView}: Props) => {\n const {id, caption: title, graph: graphConfig, showPath, _showNavigateToGraph} = config;\n\n const styles = useStyles();\n const dispatch = useDispatch();\n const initialActivenessDate = useRef(Date.now());\n\n const defaultGraphType = graphConfig?.type;\n const entityUri = entity.uri;\n\n const {\n activenessDate = initialActivenessDate.current,\n sortField,\n sortOrder,\n loading,\n errorMessage,\n showSecondaryLabel\n } = tree || {};\n\n const [currentGraphType, setCurrentGraphType] = useState(defaultGraphType);\n const [checkedNodes, setCheckedNodes] = useState({});\n\n const signal = useContext(PageRequestsAbortingContext);\n const featuresContext = useContext(FeaturesContext);\n const showNavigateToGraph =\n _showNavigateToGraph !== undefined ? _showNavigateToGraph : featuresContext.showNavigateToGraph;\n const features = useMemo(() => ({...featuresContext, showNavigateToGraph}), [showNavigateToGraph, featuresContext]);\n\n const isReversed = getReverseRelationsConfig(config);\n const isSecondaryLabelEnabled = getIsSecondaryLabelEnabledFromConfig(config);\n const showSecondaryLabelValue = getShowSecondaryLabelValue(showSecondaryLabel, isSecondaryLabelEnabled);\n const hasSecondaryLabelPattern = hasEntityTypesWithSecondaryLabelPattern(metadata, currentGraphType);\n\n const graphTypes = useMemo(() => {\n // getGraphTypesForEntityType(metadata, entityTypeUri);\n //remove me\n return [];\n }, []);\n\n const nodePath = useMemo(\n () =>\n getPathByEntityUri((tree || {}).root, entityUri).map((node) => ({\n label: getLabel(path(['entity', 'label'], node))\n })),\n [tree, entityUri]\n );\n\n useTreeLoader({\n id,\n entityUri,\n graphTypes: currentGraphType,\n activenessDate,\n isReversed,\n enabled: entityUri && isViewMode(mode) && !isTempUri(entityUri),\n signal\n });\n\n useNewEntityTree({\n id,\n entityUri,\n graphTypes: currentGraphType,\n activenessDate,\n isReversed\n });\n\n const savePreferences = useCallback(\n debounce(() => dispatch(saveTreesPreferences(id)), PREFERENCES_UPDATE_DEBOUNCE_INTERVAL),\n [id, dispatch]\n );\n\n const onTreeSort = useCallback(\n ({sortField, sortOrder}) => {\n dispatch(\n treeActions.treeSorted({\n id,\n typesLabelsMap: createRelationTypesLabelsMap(metadata),\n sortField,\n sortOrder\n })\n );\n dispatch(scrollToTreeTop(id));\n },\n [id, metadata, dispatch]\n );\n\n const onShowSecondaryLabelChange = useCallback(\n (show) => {\n dispatch(treeActions.treeSecondaryLabelShown({id, show}));\n savePreferences();\n },\n [id, dispatch, savePreferences]\n );\n\n const onChildrenRequested = useCallback(\n (parent) =>\n dispatch(\n loadChildren({\n parentUri: parent.entity.uri,\n parentId: parent.nodeId,\n graphTypes: currentGraphType,\n activenessDate,\n id,\n isReversed,\n signal\n })\n ),\n [dispatch, currentGraphType, activenessDate, id, isReversed, signal]\n );\n\n const onParentsRequested = useCallback(\n (node) =>\n dispatch(\n loadParents({\n uri: node.entity.uri,\n graphTypes: currentGraphType,\n activenessDate,\n id,\n isReversed,\n signal,\n nodeId: node.nodeId\n })\n ),\n [dispatch, currentGraphType, activenessDate, id, isReversed, signal]\n );\n\n const onTreeChanged = useCallback(\n (tree) => {\n dispatch(treeActions.treeChanged({id, tree}));\n },\n [dispatch, id]\n );\n\n const onTreeActivenessDateChange = useCallback(\n (activenessDate) => {\n dispatch(treeActions.activenessDateChanged({id, activenessDate}));\n },\n [dispatch, id]\n );\n\n const onScrollToCurrentEntity = useCallback(() => {\n dispatch(showCurrentEntity({id, uri: entityUri}));\n }, [dispatch, id, entityUri]);\n\n const onNodeMoved = useCallback(\n (movedNodeInfo) => {\n const {node, nextParentNode} = movedNodeInfo;\n const {entity: newParent} = nextParentNode || {};\n const {relation, entity} = node;\n if (relation) {\n dispatch(treeActions.treeRelationRepointed({entity, relation, newParent, isReversed}));\n } else {\n console.error('relation not found:' + JSON.stringify(movedNodeInfo));\n }\n },\n [dispatch, isReversed]\n );\n\n const onToggleNodeCheckbox = useCallback(({checked, node}) => {\n if (checked) {\n setCheckedNodes((checkedNodes) => ({...checkedNodes, [node.nodeId]: node}));\n } else {\n setCheckedNodes(omit([node.nodeId]));\n }\n }, []);\n\n const openGraph = useCallback(() => {\n dispatch(\n ui.actions.openGraph({viewId: id, graphType: currentGraphType, entityUri, graphLayout: GraphLayout.TREE})\n );\n }, [dispatch, id, currentGraphType, entityUri]);\n\n const clearCheckedNodes = useCallback(() => setCheckedNodes({}), []);\n\n useEffect(clearCheckedNodes, [mode]);\n\n useEffect(() => {\n if (!sortField || !sortOrder) {\n onTreeSort({\n sortField: getValidatedSortFieldFromConfig(config),\n sortOrder: getValidatedSortOrderFromConfig(config)\n });\n }\n }, [onTreeSort, sortField, sortOrder, config]);\n\n useEffect(() => {\n setCurrentGraphType(defaultGraphType);\n }, [defaultGraphType]);\n\n return (\n <FeaturesContext.Provider value={features}>\n <BasicView className={classnames(styles.view, className)}>\n <HierarchyViewHeader\n title={title}\n onScrollToCurrentEntity={onScrollToCurrentEntity}\n entityLabel={getLabel(entity.label)}\n onGraphOpen={openGraph}\n disabled={loading}\n isGraphView={isGraphView}\n />\n {loading && <LinearLoadIndicator className={styles.linearIndicator} />}\n {graphTypes.length > 0 && (\n <GraphTypeSelector\n className={styles.graphTypeSelector}\n value={currentGraphType}\n onChange={setCurrentGraphType}\n graphTypes={graphTypes}\n />\n )}\n <div className={styles.filtersBar}>\n <ActivenessDateControl\n className={styles.activenessDate}\n value={activenessDate}\n onChange={onTreeActivenessDateChange}\n fullWidth\n />\n <FilterSortButton\n sortField={sortField}\n sortOrder={sortOrder}\n className={styles.filterSortButton}\n onSort={onTreeSort}\n showSecondaryLabel={showSecondaryLabelValue}\n onShowSecondaryLabelChange={isSecondaryLabelEnabled ? onShowSecondaryLabelChange : undefined}\n showSecondaryLabelDisabledReason={\n !hasSecondaryLabelPattern\n ? i18n.text(\n \"Entity types in this hierarchy don't have any secondary label pattern defined.\"\n )\n : ''\n }\n />\n </div>\n {showPath && nodePath.length > 0 && <Breadcrumbs items={nodePath} className={styles.breadcrumbs} />}\n {!errorMessage ? (\n <HierarchyPanel\n isGraphView={isGraphView}\n config={config}\n tree={tree}\n onTreeChanged={onTreeChanged}\n mode={mode}\n onNodeMoved={onNodeMoved}\n onParentsRequested={onParentsRequested}\n onChildrenRequested={onChildrenRequested}\n onToggleNodeCheckbox={onToggleNodeCheckbox}\n checkedNodes={checkedNodes}\n />\n ) : (\n <Typography className={styles.errorMessage}>{errorMessage}</Typography>\n )}\n </BasicView>\n </FeaturesContext.Provider>\n );\n};\n\nexport default HierarchyView;\n","import HierarchyView from './HierarchyView';\nimport mdm from '@reltio/mdm-module';\nimport {connect} from 'react-redux';\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n tree: mdm.selectors.getTree(state, ownProps.config.id),\n total: mdm.selectors.getTreeTotal(state, ownProps.config.id),\n entity: mdm.selectors.getEntity(state),\n metadata: mdm.selectors.getMetadata(state),\n mode: mdm.selectors.getMode(state)\n };\n};\nexport default connect(mapStateToProps, undefined)(HierarchyView);\n","import MomentUtils from '@date-io/moment';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport HierarchyView from './HierarchyView';\n\nimport {StylesProvider, createGenerateClassName} from '@material-ui/core/styles';\n\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {Provider} from 'react-redux';\nimport {HierarchyTreeViewConfig} from '@reltio/mdm-sdk';\nimport {identity} from 'ramda';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {Store} from 'redux';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'hierarchyTree',\n disableGlobal: true\n});\n\ntype Props = {\n config: HierarchyTreeViewConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n className: string;\n isGraphView?: boolean;\n};\n\nconst HierarchyTreeView = ({config, store, onResize = identity, className, isGraphView}: Props) => (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <HierarchyView config={config} className={className} isGraphView={isGraphView} />}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n);\n\nexport default HierarchyTreeView;\n"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","styles","props","React","width","height","viewBox","version","xmlns","xmlnsXlink","d","id","stroke","strokeWidth","fill","fillRule","xlinkHref","fillOpacity","mask","useStyles","makeStyles","header","padding","buttonsContainer","flexShrink","marginLeft","button","icon","disabledIcon","opacity","IconButtonWithTooltip","withTooltip","IconButton","title","entityLabel","onScrollToCurrentEntity","onGraphOpen","disabled","isGraphView","showNavigateToGraph","useContext","FeaturesContext","iconClassName","classnames","FacetViewHeader","className","tooltipTitle","i18n","onClick","classes","root","label","showForDisabled","ShowGraph","node","tooltipPlacement","SelectNode","theme","textField","spacing","marginRight","panel","display","flexGrow","flexDirection","minHeight","undefined","maxHeight","treeWrapper","marginTop","checkedNode","backgroundColor","editorNode","overflow","visibility","paddingRight","container","wordBreak","tree","filter","Boolean","join","NodeRendererDefault","Component","render","scaffoldBlockPxWidth","toggleChildrenVisibility","connectDragPreview","connectDragSource","isDragging","canDrop","canDrag","subtitle","draggedNode","path","treeIndex","isSearchMatch","isSearchFocus","buttons","style","didDrop","treeId","isOver","parentNode","rowDirection","otherProps","nodeTitle","nodeSubtitle","rowDirectionClass","handle","children","expanded","Array","map","_","index","Tooltip","DragIndicator","dropEffect","isDraggedDescendant","ReactSortableTreeUtils","isLandingPadActive","showToggleChildrenButton","cycled","pending","nodeId","btn","offsetX","offsetY","defaultProps","propTypes","PropTypes","isRequired","TreeThemeContext","createContext","generateTreeNodeProps","displayName","TreeNode","listIndex","swapFrom","swapLength","swapDepth","lowerSiblingCounts","connectDropTarget","getPrevRow","scaffoldBlockCount","scaffold","forEach","lowerSiblingCount","lineClass","push","highlightLineClass","right","left","scaffoldWidth","MIN_NODE_CONTENT_WIDTH","nodeStyle","treeNodeProps","context","treeNodeClassName","Children","child","cloneElement","contextType","rowHeight","slideRegionSize","GenericNodeType","showParents","HierarchyNodeType","entity","EntityType","relation","RelationType","relations","total","parent","directParentUri","loading","ActivenessDateType","TreeType","graphTypes","entitiesMap","activenessDate","scrollTo","MeasuredNode","measure","registerChild","NodeRenderer","useEffect","scrollToContainerElementByNodeId","scrollingContainer","element","document","querySelector","getElementByNodeId","elementRect","getBoundingClientRect","scrollingContainerRect","scrollLeft","setTimeout","getNodeKey","DefaultNodeRenderer","pick","hierarchyTheme","Tree","scrollToNode","onChange","onRequestChildren","onScroll","identity","onNodeMoved","inlineRoot","treeData","useMemo","rootChildren","pipe","omit","assoc","virtualizedListRef","useRef","treeDataRef","scrollTimerRef","current","getVirtualizedListInstance","useCallback","measurerCache","keyMapper","rawIndex","nodeInfo","propOr","useState","CellMeasurerCache","fixedWidth","defaultHeight","onWindowResize","clearAll","window","addEventListener","removeEventListener","useRefreshableMeasurerCache","useRunOnceAfterValueInitialization","vList","forceUpdateGrid","getScrollingContainer","results","searchFocusOffset","searchQuery","searchMethod","scrollToRow","clearTimeout","onSortableTreeChange","slice","nodeRenderWithMeasure","cache","columnIndex","rowIndex","getMeasuredNode","generateNodeProps","rowInfo","previousTreeData","usePrevious","onMoveNode","movedNodeInfo","prevPath","nextParentNode","prevParentNode","parentPath","result","handleOnLazyLoadChildren","handleResize","skipOnMount","handleWidth","onResize","isRoot","ReactSortableTree","isVirtualized","reactVirtualizedListProps","ref","scrollToAlignment","onLazyLoadChildren","useCommonStyles","fontSize","paddingTop","position","loadingSpinner","alignSelf","LoadingNode","commonStyles","LoadingSpinner","wrapper","avatar","avatarWithMultiParent","cursor","number","color","multiParentIcon","top","actionsBlock","content","background","pointerEvents","actionsBlockWithOpenMenu","actionsBlockForCheckedNode","regularNodeCheckbox","letterSpacing","lineHeight","paddingLeft","paddingBottom","strokeOpacity","cx","cy","r","marginBottom","alignItems","loadingNode","MultiParentBlockItem","popperAnchor","setPopperAnchor","HierarchyNodeTitle","entityUri","viewId","anchorEl","multiParent","border","bottom","borderColor","borderBottomColor","borderWidth","additionalParents","details","margin","detailLine","detail","wordWrap","textIndent","detailLabel","whiteSpace","detailValue","prepareTree","metadata","sortField","sortOrder","mapTree","childrenProcessing","sortTreeChildren","typesLabelsMap","createRelationTypesLabelsMap","nodeProcessing","formatNodeFromTreeResponse","addSelfRelatedNode","expandNode","buildEntitiesMapFromTree","getGraphType","nodeCounter","generateId","convertParentProp","concat","getNodeUri","getRelationsProp","wrapInArrayIfNeeded","getRelationProp","prop","isArray","parents","parentIndex","findIndex","equals","directParent","formatted","formatNodeFromHopResponse","traversedRelations","untraversedRelations","formattedNode","some","uri","includes","when","both","has","complement","clearNodeForEntityMap","buildEntitiesMapFromHopsEntities","keys","reduce","processHopsResponse","isReversed","entities","childObjectKey","objectURI","buildEntitiesMapFromHops","curry","json","createNewTreeNode","generateNewRelationUri","attributes","treeActions","profile","loadChildren","parentUri","parentId","signal","dispatch","getState","mdm","childrenLoading","getHops","then","rawSubTree","queue","visitedNodes","breakCycles","buildTreeFromHops","entitiesSubMap","childrenLoaded","entitiesMappingLoaded","catch","error","isAbortError","ui","getRequestErrorMessage","cancelChildrenLoading","showCurrentEntity","currentEntityShownInTree","resetScrollToNode","hasEntityTypesWithSecondaryLabelPattern","getAllEntityTypesForGraphType","any","isRelationLoaded","isNodeChecked","checkedNodes","isEditorNode","hasEditorNode","loadRelationDetails","currentRelation","Promise","resolve","getRelation","relationDetails","detailedRelation","treeNodeChanged","hasLoadingNode","getShowSecondaryLabelValue","showSecondaryLabel","enabled","getRelationDetails","attrTypes","type","DataTypes","ACTIVENESS_ATTR_TYPES","RelationDetails","showDetails","relationshipData","typeName","getRelationType","attrType","Typography","variant","gutterBottom","DataTypeValue","value","dataTypeDefinition","MetadataType","addButton","editButton","ActionsBlock","show","onToggleRelationDetails","onMenuOpen","onMenuClose","onStartEditing","onAddParent","onAddChild","onDelete","menuItems","text","SmallIconButton","size","InfoIconSelected","InfoIcon","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","AddCircleIcon","menuId","EditIcon","DeleteIcon","getGraphConfig","getReverseRelationsConfig","getGraphTypeConfig","getValidatedSortOrderFromConfig","getValidatedSortOrder","getValidatedSortFieldFromConfig","getValidatedSortField","getIsSecondaryLabelEnabledFromConfig","defaultTo","getTypeGraphIcon","absoluteImagePath","entityTypeUri","entityType","getEntityType","entityTypeGraphIcon","getPropWithInheritance","getAbsoluteImageUrl","canEditNode","mode","checkMetadataForUpdate","canAddRelative","direction","config","isChild","nodeEntityTypeUri","graphTypeUri","graphType","relationTypeUris","getRelationshipTypeUrisFromGraphType","isNodeEntityInstanceOf","isInHierarchy","__","checkMetadataForCreate","getStartObjectTypeUri","getEndObjectTypeUri","canAddParentForNode","canAddChildForNode","canDeleteNode","checkMetadataForDelete","simpleNodePropsMapping","currentEntityUri","onParentsRequested","isSelected","isSelectedNode","isEditable","checkIsEditableMode","commonActionHandlers","onToggleShowParents","needLoadAdditionalParents","actionHandlers","treeNodeEditingStarted","nodeStartEditing","treeNodeNewParentEditingStarted","newNode","treeNodeNewChildEditingStarted","store","nodeStartAddingChild","relationUri","treeRelationRemoved","treeNodeRemoved","updatedNode","toggleRelationDetails","getLabel","secondaryLabel","reject","isNil","getAdditionalParents","pathOr","mapEntry","NodeContext","onToggleNodeCheckbox","canSelect","onImageLoadFail","e","src","DEFAULT_ICON","RegularNode","useDispatch","useSelector","PageRequestsAbortingContext","nodePropsMapping","showControls","setShowControls","showActionsBlock","hideActionsBlock","openActionsMenu","setOpenActionsMenu","showActionsMenu","hideActionsMenu","hasMultiParents","toggleShowParents","bind","checked","event","onMouseEnter","onMouseLeave","Avatar","onError","memo","fromEditorValue","option","toEditorValue","relationsTypesOptions","find","propEq","NodeRelationTypeSelector","relationTypes","labelsMap","getDirectionalLabel","getDirectionalLabelFromObject","tap","byLabel","ascend","getEntityTypeWithInheritedIcon","typeIcon","startObject","endObject","directionalLabel","typeLabel","objectType","objectTypeURI","evolve","sort","getRelationTypesOptions","RelationTypeSelector","options","RelationTypeType","isAvailableRelationForRelatedEntity","relatedEntity","relationType","isRelatedEntityInstanceOf","getObjectUri","editorContainer","minWidth","dense","item","actionButtons","justifyContent","EditorNode","editingMode","initialConnection","isAddingParent","NODE_EDITING_MODES","connection","state","getHierarchyNodeEditorActiveError","allErrors","relationTypeUri","crosswalks","attributeListEntity","getActivenessAttributes","globalSearchRequestOptions","allAvailableRelationTypes","allPass","getAllAvailableRelationTypes","availableRelationTypes","isAvailableRelationBetweenEntities","availableEntityTypeUris","getSuitableEntityTypeUrisForRelationTypes","onRelationTypeChange","treeNodeRelationTypeChanged","onChangeEntity","treeNodeEntityChanged","useDidUpdateEffect","relationAttrTypes","getRelationAttributesList","selectorCompatibleEntity","onAddAttributes","params","param","onChangeAttribute","onDeleteAttribute","validate","errors","validateHierarchyConnection","onCancel","cond","always","treeNodeNewParentEditingCanceled","treeNodeNewChildEditingCanceled","treeNodeEditingCanceled","action","nodeCancelEditing","onApply","dataAction","treeRelationCreated","treeRelationChanged","getPayloadForNodeApplyEditing","treeNodeNewParentEditingApplied","treeNodeNewChildEditingApplied","treeNodeEditingApplied","treeAppearanceChangeActionCreator","nodeApplyEditing","canApply","errorMessage","getErrorMessage","highlightedError","ScrollToElementContext","isErrorHighlighted","isHighlightedErrorType","isAttributeTypeError","errorClassName","useScrollToAttributeError","isSimple","handleHeight","ErrorWrapper","EntitySelector","entityTypesUris","max","attributeTypesSelectionStrategy","relationEditorAttributeTypesSelectionStrategy","AttributesList","showEmptyEditors","Button","NodeTypes","getNodeType","T","Node","build","HierarchyPanel","onChildrenRequested","onTreeChanged","onTreeScroll","isEditableMode","nodeContextValue","treeThemeContextValue","nextParent","relatedNode","Provider","GraphTypeSelector","SelectorWithOnlyOptionAutoSelect","GraphTypeType","ActivenessDateControl","handleChange","date","getTime","DateEditor","popupHorizontalPadding","triggerButton","popupContent","maxWidth","sortControls","sortSelectorRoot","flex","sortSelectorMenuItem","sortOrderButton","checkboxControlRoot","checkboxControlLabel","checkboxControlCheckbox","divider","FormControlLabelWithTooltip","FormControlLabel","SORTING_OPTIONS","TREE_SORT_FIELD_VALUES","FilterSortButton","onSort","showSecondaryLabelDisabledReason","onShowSecondaryLabelChange","buttonRef","isOpen","setIsOpen","isAsc","TREE_SORT_ORDER_VALUES","togglePopup","open","Popover","paper","onClose","anchorOrigin","vertical","horizontal","transformOrigin","viewOptionsTitle","control","Checkbox","Divider","DropDownEditor","entries","TextFieldProps","menuItem","fullWidth","disableUnderline","newSortField","MenuProps","getContentAnchorEl","ArrowUpwardIcon","ArrowDownwardIcon","textOverflow","textContainer","separator","Breadcrumbs","items","expandText","li","href","Link","BreadcrumbsType","fieldsToSave","getStateToSave","anyPass","field","isEmpty","view","linearIndicator","filtersBar","palette","secondary","filterSortButton","breadcrumbs","graphTypeSelector","fontFamily","connect","ownProps","caption","graph","graphConfig","showPath","_showNavigateToGraph","initialActivenessDate","Date","now","defaultGraphType","currentGraphType","setCurrentGraphType","setCheckedNodes","featuresContext","features","isSecondaryLabelEnabled","showSecondaryLabelValue","hasSecondaryLabelPattern","nodePath","getPathByEntityUri","safePromise","useSafePromise","cancelOnUnmount","timerRef","isCurrentReversed","currentGraphTypes","previousActivenessDate","showCurrentEntityDelayed","hasRoot","mdmModule","updatedTrees","updateTreesWithNewEntity","treeChanged","updatedTime","createTreeLoadedEvent","treeLoaded","treeProcessing","hasEntityInTree","treeLoading","getTree","treeLoadedWithError","console","warn","useTreeLoader","isViewMode","isTempUri","modifiedEntity","isTreeForCurrentEntityUri","useNewEntityTree","savePreferences","debounce","trees","treesStateSaved","saveTreesPreferences","onTreeSort","treeSorted","scrollToTreeTop","treeSecondaryLabelShown","parentsProcessing","loadParents","onTreeActivenessDateChange","activenessDateChanged","newParent","treeRelationRepointed","JSON","stringify","openGraph","graphLayout","GraphLayout","clearCheckedNodes","BasicView","LinearLoadIndicator","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","ViewIdContext","StylesProvider","MuiPickersUtilsProvider","utils","MomentUtils","Math","floor","ErrorPopup"],"sourceRoot":""}
|