@reltio/remotes 1.4.1379 → 1.4.1380
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/{6617.css → 1268.css} +1 -1
- package/{6617.css.map → 1268.css.map} +1 -1
- package/{6248.js → 1268.js} +2 -2
- package/{6248.js.map → 1268.js.map} +1 -1
- package/1375.js +1 -1
- package/1375.js.map +1 -1
- package/1409.js +2 -0
- package/1409.js.map +1 -0
- package/162.js +2 -0
- package/162.js.map +1 -0
- package/1746.js +2 -0
- package/1746.js.map +1 -0
- package/2114.js +1 -1
- package/2890.js +1 -1
- package/3540.js +1 -1
- package/3540.js.map +1 -1
- package/3640.js +1 -1
- package/3640.js.map +1 -1
- package/3723.js +3 -0
- package/{3213.js.LICENSE.txt → 3723.js.LICENSE.txt} +0 -0
- package/3723.js.map +1 -0
- package/3760.js +2 -0
- package/3760.js.map +1 -0
- package/4038.js +1 -1
- package/4038.js.map +1 -1
- package/4312.js +2 -0
- package/4312.js.map +1 -0
- package/447.js +1 -1
- package/447.js.map +1 -1
- package/4689.js +1 -1
- package/4889.js +1 -1
- package/4889.js.map +1 -1
- package/5400.js +1 -1
- package/5691.js +1 -1
- package/5691.js.map +1 -1
- package/5709.js +1 -1
- package/5937.js +1 -1
- package/5937.js.map +1 -1
- package/6103.js +1 -1
- package/6877.js +2 -0
- package/6877.js.map +1 -0
- package/7861.js +2 -0
- package/7861.js.map +1 -0
- package/{3786.css → 7880.css} +1 -1
- package/{3786.css.map → 7880.css.map} +1 -1
- package/7880.js +2 -0
- package/7880.js.map +1 -0
- package/8684.css +635 -0
- package/8684.css.map +1 -0
- package/{3405.js → 8684.js} +2 -2
- package/{3405.js.map → 8684.js.map} +1 -1
- package/8782.js +3 -0
- package/{781.js.LICENSE.txt → 8782.js.LICENSE.txt} +0 -0
- package/8782.js.map +1 -0
- package/9043.js +1 -1
- package/9043.js.map +1 -1
- package/9606.js +1 -1
- package/9606.js.map +1 -1
- package/9992.js +2 -0
- package/9992.js.map +1 -0
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
- package/remoteEntry.js.map +1 -1
- package/1178.js +0 -2
- package/1178.js.map +0 -1
- package/1635.js +0 -2
- package/1635.js.map +0 -1
- package/2378.js +0 -2
- package/2378.js.map +0 -1
- package/3213.js +0 -3
- package/3213.js.map +0 -1
- package/3786.js +0 -2
- package/3786.js.map +0 -1
- package/4115.js +0 -2
- package/4115.js.map +0 -1
- package/612.js +0 -2
- package/612.js.map +0 -1
- package/6617.js +0 -2
- package/6617.js.map +0 -1
- package/6892.js +0 -2
- package/6892.js.map +0 -1
- package/6913.js +0 -2
- package/6913.js.map +0 -1
- package/781.js +0 -3
- package/781.js.map +0 -1
- package/8051.js +0 -2
- package/8051.js.map +0 -1
- package/9417.js +0 -2
- package/9417.js.map +0 -1
- package/98.js +0 -2
- package/98.js.map +0 -1
package/6617.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"6617.js","mappings":"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","sources":["webpack://@reltio/remotes/../../node_modules/@material-ui/icons/AddCircle.js","webpack://@reltio/remotes/../components/src/components/LoadingSpinner/SpinnerSmall.gif.tsx","webpack://@reltio/remotes/../components/src/components/LoadingSpinner/LoadingSpinner.tsx","webpack://@reltio/remotes/../components/src/components/SelectorWithOnlyOptionAutoSelect/styles.js","webpack://@reltio/remotes/../components/src/components/SelectorWithOnlyOptionAutoSelect/SelectorWithOnlyOptionAutoSelect.js","webpack://@reltio/remotes/../components/src/hooks/useRunOnceAfterValueInitialization.js","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.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/HierarchyViewHeader/HierarchyViewHeader.js","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/NodeTitle/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/NodeTitle/NodeTitle.tsx","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlock/styles.js","webpack://@reltio/remotes/../hierarchy-tree/src/HierarchyView/Node/components/MultiParentBlock/parentIcon.svg","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/useEntityDetails.ts","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":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z\"\n}), 'AddCircle');\n\nexports.default = _default;","export const SpinnerSmall =\n 'R0lGODlhFQALAKIAAP///8Hf75vL5Van0wB4v////wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgAFACwAAAIAFQAHAAADLFi6zPSQFEGpGhgXkrEUQShc1bB1wxcGYzGUZ6eKJGVy8lS1aJxJjaAiAkkAACH5BAkKAAUALAAAAwAUAAUAAAMiWLFbJRC6QakCODjBxIzDlW3dB4UBBmhPWQygwrCR9FZDAgAh+QQJCgAFACwIAAMADAAFAAADFBiqVfIvgBmaWHeC6rCklrdw0JMAACH5BAkKAAUALAAAAgAUAAcAAAMkSLpU/vCRQWmLLmg967hYAIxBV4GRSJoWlo1A6X1usXGMUkcJACH5BAkKAAUALAAAAgAOAAcAAAMdWLpF/qSMORudcYg97M2b0BHXAHIelV0pxizQkwAAOw==';\n","import React from 'react';\nimport {gif2Url} from '@reltio/mdm-sdk';\nimport {SpinnerSmall} from './SpinnerSmall.gif';\n\ntype Props = {\n className?: string;\n};\n\nexport const LoadingSpinner = ({className}: Props) => {\n return <img className={className} alt=\"loading\" src={gif2Url(SpinnerSmall)} />;\n};\n\nexport default LoadingSpinner;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n onlyValue: {\n color: 'rgba(0,0,0,.6)',\n fontSize: '13px',\n fontWeight: 'normal',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n overflow: 'hidden'\n },\n select: {\n fontSize: '13px',\n color: 'rgba(0,0,0,.6)',\n paddingLeft: '15px',\n '&&': {\n paddingRight: '35px'\n }\n },\n selectMenu: {\n '& li': {\n fontSize: '13px',\n height: '32px'\n }\n },\n textField: {\n maxWidth: '100%'\n }\n});\n","import React, {useEffect} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\nimport DropDownEditor from '../editors/DropDownEditor/DropDownEditor';\n\nconst SelectorWithOnlyOptionAutoSelect = ({value, onChange, options, classes = {}, emptyLabel}) => {\n const styles = useStyles();\n\n const [firstOption, ...moreOptions] = options;\n const hasOnlyOneOptionToSelect = moreOptions.length === 0;\n\n useEffect(() => {\n if (hasOnlyOneOptionToSelect && value !== firstOption.value) {\n onChange(firstOption.value);\n }\n }, [firstOption.value]); // eslint-disable-line\n\n const displayEmpty = !!emptyLabel;\n\n return (\n <div className={classes.root}>\n {hasOnlyOneOptionToSelect ? (\n <Typography className={classes.onlyValue || styles.onlyValue} variant={'h6'}>\n {firstOption.label}\n </Typography>\n ) : (\n <DropDownEditor\n displayEmpty={displayEmpty}\n disableUnderline={true}\n classes={{\n select: classes.select || styles.select\n }}\n TextFieldProps={{\n classes: {\n root: classes.textField || styles.textField\n }\n }}\n MenuProps={{\n classes: {\n list: classes.selectMenu || styles.selectMenu\n }\n }}\n value={value || ''}\n entries={displayEmpty ? [{value: '', label: emptyLabel}, ...options] : options}\n onChange={(value) => onChange(value || null)}\n />\n )}\n </div>\n );\n};\n\nSelectorWithOnlyOptionAutoSelect.propTypes = {\n value: PropTypes.string,\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string\n })\n ),\n classes: PropTypes.shape({\n root: PropTypes.string,\n onlyValue: PropTypes.string,\n select: PropTypes.string,\n selectMenu: PropTypes.string,\n textField: PropTypes.string\n }),\n emptyLabel: PropTypes.string\n};\n\nexport default SelectorWithOnlyOptionAutoSelect;\n","import {useEffect, useRef} from 'react';\n\nexport const useRunOnceAfterValueInitialization = (cb, value) => {\n const isValueInited = useRef(false);\n useEffect(() => {\n if (value && !isValueInited.current) {\n isValueInited.current = true;\n cb();\n }\n }, [cb, value]);\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: \"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 from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {IconButton as IconButton} from '@material-ui/core';\nimport {FacetViewHeader, 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\nconst HierarchyViewHeader = ({title, entityLabel = '', onScrollToCurrentEntity, onGraphOpen, disabled = false}) => {\n const styles = useStyles();\n const iconClassName = classnames(styles.icon, {[styles.disabledIcon]: disabled});\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <div className={styles.buttonsContainer}>\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 <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\nHierarchyViewHeader.propTypes = {\n title: PropTypes.string,\n entityLabel: PropTypes.string,\n total: PropTypes.number,\n onScrollToCurrentEntity: PropTypes.func,\n onGraphOpen: PropTypes.func,\n disabled: PropTypes.bool\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: {\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: '372px',\n maxHeight: '507px'\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 scrollToElementByNodeId = (nodeId) => {\n const element = getElementByNodeId(nodeId);\n\n if (element) {\n element.scrollIntoView({block: 'nearest', inline: 'start'});\n } else {\n setTimeout(() => scrollToElementByNodeId(nodeId), 0);\n }\n};\n\nconst getNodeKey = ({node}) => node.nodeId;\n\nconst DefaultNodeRenderer = ({node}) => node.title || null;\n\nexport {scrollToElementByNodeId, 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, scrollToElementByNodeId} 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 treeDataRef.current = treeData;\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 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 setTimeout(() => {\n scrollToElementByNodeId(scrollToNode.nodeId);\n }, 500);\n }\n }\n }, [root, treeData, scrollToNode]);\n\n const getVirtualizedListInstance = () => path(['current', 'wrappedInstance', 'current'], virtualizedListRef);\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} />\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 popper: {\n maxWidth: '345px',\n minWidth: '200px',\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)',\n backgroundColor: 'white',\n borderRadius: '2px'\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}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n link: {\n cursor: 'pointer',\n color: theme.palette.secondary.main,\n lineHeight: '15px'\n },\n selected: {\n fontWeight: 'bold'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Link} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype NodeTitleProps = React.HTMLProps<HTMLSpanElement> & {\n title: string;\n isSelected?: boolean;\n link: string;\n onClick: () => void;\n};\n\nconst NodeTitle = ({title, isSelected, link, onClick, ...otherProps}: NodeTitleProps) => {\n const styles = useStyles();\n\n return (\n <span {...otherProps} className={classnames(styles.link, {[styles.selected]: isSelected})}>\n <Link to={link} onClick={onClick}>\n {title}\n </Link>\n </span>\n );\n};\n\nexport default NodeTitle;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n avatar: {\n height: '16px',\n width: '16px',\n marginRight: '6px',\n flexShrink: '0'\n },\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 parentContainer: {\n fontSize: '13px',\n lineHeight: '16px',\n display: 'flex',\n marginBottom: '12px',\n alignItems: 'center',\n '&:last-child': {\n marginBottom: 0\n }\n },\n loadingNode: {\n paddingTop: 0\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: \"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 React from 'react';\nimport {useDispatch} from 'react-redux';\nimport {ui} from '@reltio/mdm-module';\nimport {useStyles} from './styles';\nimport ParentIcon from './parentIcon.svg';\n\nimport LoadingNode from '../../LoadingNode/LoadingNode';\nimport NodeTitle from '../NodeTitle/NodeTitle';\n\ntype NodeType = {\n pending: boolean;\n title?: string;\n entityLink?: string;\n viewId?: string;\n entityUri?: string;\n};\ntype MultiParentBlockProps = {\n showParents: boolean;\n additionalParents: Array<NodeType>;\n};\nconst MultiParentBlock = ({showParents, additionalParents}: MultiParentBlockProps) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n return showParents && additionalParents.length > 0 ? (\n <div className={styles.multiParent}>\n {additionalParents.map((parent, i) => (\n <div key={i} className={styles.parentContainer}>\n {parent.pending ? (\n <LoadingNode className={styles.loadingNode} />\n ) : (\n <>\n <ParentIcon className={styles.avatar} />\n <NodeTitle\n title={parent.title}\n link={parent.entityLink}\n onClick={() =>\n dispatch(ui.actions.openEntity({uri: parent.entityUri, viewId: parent.viewId}))\n }\n />\n </>\n )}\n </div>\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 {any, path, pipe, prop} from 'ramda';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getAllEntityTypesForGraphType, getHops} from '@reltio/mdm-sdk';\n\nconst treeActions = profile.trees.actions;\n\nexport const expandNodeCommand = ({id, nodeId}) => (dispatch) => {\n dispatch(treeActions.nodeExpandedEvent({id, nodeId}));\n};\n\nexport const loadChildren = ({parentUri, parentId, graphTypes, activenessDate, id, isReversed}) => (\n dispatch,\n getState\n) => {\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}).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};\n\nexport const loadParents = ({uri, graphTypes, activenessDate, id, isReversed}) => (dispatch) => {\n const createSubTreeEntitiesLoadedEvent = (entitiesSubMap) =>\n treeActions.entitiesMappingLoaded({id, entitiesSubMap});\n const parentsProcessing = pipe(buildEntitiesMapFromHops(isReversed), createSubTreeEntitiesLoadedEvent, dispatch);\n return getHops({uri, graphTypes, activenessDate}).then(parentsProcessing);\n};\n\nexport const showCurrentEntity = ({id, uri}) => (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 = ({id, node}) => (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 = ({id, node}) => (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 = ({id, node}) => (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 = ({id, node, newNode, isReversed}) => (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 })\n );\n }\n};\n\nexport const nodeCancelEditing = ({id, node}) => (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 = ({id, node, isReversed}) => (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 {__, curry, identity, isNil, path, prop, pathOr, reject} from 'ramda';\nimport {\n checkMetadataForUpdate,\n isInHierarchy,\n getEntityType,\n getGraphType,\n getRelationType,\n getRelationshipTypeUrisFromGraphType,\n isEditableMode as checkIsEditableMode,\n getEntityLink,\n getStartObjectTypeUri,\n getEndObjectTypeUri,\n checkMetadataForDelete,\n getLabel,\n getPropWithInheritance,\n getAbsoluteImageUrl\n} from '@reltio/mdm-sdk';\n\nimport {createNewTreeNode, isSelectedNode} from '../../../../helpers/treeDataProvider';\nimport {getGraphTypeConfig, getReverseRelationsConfig} from '../../../helpers/configHelpers';\nimport {profile} from '@reltio/mdm-module';\n\nconst treeActions = profile.trees.actions;\nimport {nodeStartAddingChild, nodeStartEditing, toggleRelationDetails} from '../../../helpers/nodeHelpers';\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) => {\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(identity)\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 uiPath,\n showSecondaryLabel,\n onParentsRequested,\n dispatch\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)\n ? () =>\n dispatch(treeActions.treeNodeNewParentEditingStarted({id, node, newNode: createNewTreeNode()}))\n : null,\n onAddChild: canAddChildForNode(config, metadata, node)\n ? () =>\n dispatch(\n nodeStartAddingChild({\n id,\n isReversed: getReverseRelationsConfig(config),\n node,\n newNode: createNewTreeNode()\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 entityLink: getEntityLink({uiPath, uri: entity.uri}),\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, uiPath}) => {\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, uiPath})\n : {pending: true};\n });\n};\n\nconst nodePropsMapping = ({\n node,\n entitiesMap,\n metadata,\n absoluteImagePath,\n currentEntityUri,\n mode,\n config,\n uiPath,\n showSecondaryLabel,\n onParentsRequested,\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 uiPath,\n showSecondaryLabel,\n onParentsRequested,\n dispatch\n }),\n additionalParents: getAdditionalParents({node, config, entitiesMap, metadata, absoluteImagePath, uiPath})\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 {useState, useCallback, useRef, useEffect} from 'react';\nimport {getEntity} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nexport const useEntityDetails = (entityUri: string) => {\n const [entityDetails, setEntityDetails] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const timerId = useRef(null);\n const safePromise = useSafePromise();\n\n const cancelRequest = useCallback(() => safePromise(Promise.resolve()), [safePromise]);\n\n const showEntityDetails = useCallback(() => {\n timerId.current = setTimeout(() => {\n setIsLoading(true);\n safePromise(getEntity(entityUri))\n .then(setEntityDetails)\n .finally(() => setIsLoading(false));\n }, 1000);\n }, [entityUri, safePromise]);\n\n const hideEntityDetails = useCallback(() => {\n cancelRequest();\n clearTimeout(timerId.current);\n setIsLoading(false);\n setEntityDetails(null);\n }, [cancelRequest]);\n\n useEffect(() => {\n return () => clearTimeout(timerId.current);\n }, []);\n\n return {\n isLoading,\n entityDetails,\n showEntityDetails,\n hideEntityDetails\n };\n};\n","import React, {memo, useCallback, useContext, useEffect, useState, useRef} 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, {ui} from '@reltio/mdm-module';\nimport {Popper, ProfileCard} 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 NodeTitle from '../components/NodeTitle/NodeTitle';\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';\nimport {useEntityDetails} from './useEntityDetails';\n\nconst onImageLoadFail = (e) => {\n e.target.src = DEFAULT_ICON;\n};\n\nexport const RegularNode = ({node = {}, registerChild, measure = identity}) => {//NOSONAR\n const styles = useStyles();\n const popperAnchor = useRef();\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 uiPath = useSelector(mdm.selectors.getUIPath);\n\n const {\n title,\n subtitle,\n number,\n icon,\n relation,\n showDetails,\n additionalParents = [],\n showParents,\n isSelectedNode,\n nodeId,\n entityLink,\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 uiPath,\n showSecondaryLabel,\n onParentsRequested,\n dispatch\n });\n\n const {isLoading, entityDetails, showEntityDetails, hideEntityDetails} = useEntityDetails(entityUri);\n const showPopper = Boolean(entityDetails) || isLoading;\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 onTitleClick = useCallback(() => {\n dispatch(ui.actions.openEntity({uri: entityUri, viewId}));\n }, [viewId, entityUri, dispatch]);\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 onMouseEnter={showActionsBlock}\n onMouseLeave={hideActionsBlock}\n ref={registerChild}\n >\n <div ref={popperAnchor} 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 <NodeTitle\n title={title}\n isSelected={isSelectedNode}\n link={entityLink}\n onClick={onTitleClick}\n onMouseEnter={showEntityDetails}\n onMouseLeave={hideEntityDetails}\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 && onToggleRelationDetails}\n onMenuOpen={showActionsMenu}\n onMenuClose={hideActionsMenu}\n onStartEditing={onStartEditing}\n onAddChild={onAddChild}\n onAddParent={onAddParent}\n onDelete={onDelete}\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 <Popper\n anchorEl={popperAnchor.current}\n className={styles.popper}\n open={showPopper}\n modal={false}\n placement=\"top-start\"\n >\n <ProfileCard entity={entityDetails} variant={isLoading ? 'loading' : 'normal'} />\n </Popper>\n </div>\n );\n};\n\nRegularNode.propTypes = {\n node: HierarchyNodeType,\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 {__, curry, defaultTo, filter, isNil, map, pipe, reject} from 'ramda';\n\nimport {\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) =>\n pipe(\n getRelationshipTypeUrisFromGraphType,\n defaultTo([]),\n map(getRelationType(metadata)),\n reject(isNil),\n filter(isAvailableRelationForRelatedEntity(isChild, relatedEntity, metadata))\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 {allPass, prop, propEq, 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 isEmptyValue\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n AttributesList,\n EntitySelector,\n ErrorWrapper,\n ScrollToErrorContext,\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),\n [isChild, relatedEntity, metadata, graphType]\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(ScrollToErrorContext);\n const isErrorHighlighted = useMemo(\n () =>\n allPass([\n pipe(prop('uri'), isEmptyValue),\n propEq('parentUri', relationUri),\n propEq('attributeTypeUri', relationTypeUri)\n ])(highlightedError.error),\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}) => {\n const styles = useStyles();\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};\n\nexport default memo(HierarchyPanel);\n","import {useCallback, useEffect} 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 {Entity, getRequestErrorMessage, getTree, hasEntityInTree, updateTreesWithNewEntity} 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};\nconst useTreeLoader = ({entityUri, id, graphTypes, activenessDate, isReversed, enabled}: TreeLoaderProps) => {\n const safePromise = useSafePromise({cancelOnUnmount: false});\n const dispatch = useDispatch();\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 () => setTimeout(() => dispatch(showCurrentEntity({id, uri: entityUri})), 100),\n [id, entityUri, dispatch]\n );\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 }\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}))\n .then((tree) => treeProcessing({...tree, graphTypes}, metadata))\n .then((_) => showCurrentEntityDelayed())\n .catch((e) => {\n dispatch(\n treeActions.treeLoadedWithError({\n id,\n errorMessage: getRequestErrorMessage(e, i18n.text('Something went wrong'))\n })\n );\n console.warn(e);\n });\n }\n }\n }, [\n entityUri,\n root,\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} 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\n useEffect(() => {\n const needCreateTreeForNewEntity = modifiedEntity && isTempUri(entityUri) && root?.entity?.uri !== entityUri;\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 }, [activenessDate, dispatch, entityUri, graphTypes, id, isReversed, metadata, modifiedEntity, root]);\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} 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} 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 getGraphTypesForEntityType,\n getLabel,\n getPathByEntityUri,\n HierarchyTreeViewConfig,\n isTempUri,\n isViewMode,\n Metadata,\n Mode,\n Tree\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};\nconst HierarchyView = ({config, tree, metadata, entity = {} as Entity, mode, className}: Props) => {\n const {id, caption: title, graph: graphConfig, showPath} = config;\n const {uri: entityUri, type: entityTypeUri} = entity;\n const initialActivenessDate = useRef(Date.now());\n const {\n activenessDate = initialActivenessDate.current,\n sortField,\n sortOrder,\n loading,\n errorMessage,\n showSecondaryLabel\n } = tree || {};\n const isReversed = getReverseRelationsConfig(config);\n const isSecondaryLabelEnabled = getIsSecondaryLabelEnabledFromConfig(config);\n const showSecondaryLabelValue = getShowSecondaryLabelValue(showSecondaryLabel, isSecondaryLabelEnabled);\n\n const [currentGraphType, setCurrentGraphType] = useState(graphConfig.type);\n const graphTypes = useMemo(() => {\n getGraphTypesForEntityType(metadata, entityTypeUri);\n //remove me\n return [];\n }, [metadata, entityTypeUri]);\n const hasSecondaryLabelPattern = hasEntityTypesWithSecondaryLabelPattern(metadata, currentGraphType);\n\n const dispatch = useDispatch();\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 savePreferences = useCallback(\n debounce(() => dispatch(saveTreesPreferences(id)), PREFERENCES_UPDATE_DEBOUNCE_INTERVAL),\n [id, 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 useEffect(() => {\n if (!sortField || !sortOrder) {\n onTreeSort({\n sortField: getValidatedSortFieldFromConfig(config),\n sortOrder: getValidatedSortOrderFromConfig(config)\n });\n }\n }, [onTreeSort, sortField, sortOrder, config]);\n\n useTreeLoader({\n id,\n entityUri,\n graphTypes: currentGraphType,\n activenessDate,\n isReversed,\n enabled: entityUri && isViewMode(mode) && !isTempUri(entityUri)\n });\n useNewEntityTree({\n id,\n entityUri,\n graphTypes: currentGraphType,\n activenessDate,\n isReversed\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 })\n ),\n [currentGraphType, activenessDate, id, dispatch, isReversed]\n );\n const onParentsRequested = useCallback(\n (node) =>\n dispatch(loadParents({uri: node.entity.uri, graphTypes: currentGraphType, activenessDate, id, isReversed})),\n [currentGraphType, activenessDate, id, isReversed, dispatch]\n );\n const onTreeChanged = useCallback(\n (tree) => {\n dispatch(treeActions.treeChanged({id, tree}));\n },\n [dispatch, id]\n );\n const onTreeActivenessDateChange = useCallback(\n (activenessDate) => {\n dispatch(treeActions.activenessDateChanged({id, activenessDate}));\n },\n [dispatch, id]\n );\n const onScrollToCurrentEntity = useCallback(\n (_) => {\n dispatch(showCurrentEntity({id, uri: entityUri}));\n },\n [dispatch, id, entityUri]\n );\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 [checkedNodes, setCheckedNodes] = useState({});\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 const openGraph = useCallback(() => {\n dispatch(ui.actions.openGraph({viewId: id, graphType: currentGraphType, entityUri}));\n }, [dispatch, id, currentGraphType, entityUri]);\n\n const clearCheckedNodes = useCallback(() => setCheckedNodes({}), []);\n useEffect(clearCheckedNodes, [mode]);\n\n const styles = useStyles();\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 return (\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 />\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 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 );\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};\n\nconst HierarchyTreeView = ({config, store, onResize = identity, className}: 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} />}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n);\n\nexport default HierarchyTreeView;\n"],"names":["_interopRequireDefault","exports","_react","_default","default","createElement","d","className","alt","src","gif2Url","useStyles","makeStyles","onlyValue","color","fontSize","fontWeight","whiteSpace","textOverflow","overflow","select","paddingLeft","paddingRight","selectMenu","height","textField","maxWidth","SelectorWithOnlyOptionAutoSelect","value","onChange","options","classes","emptyLabel","styles","firstOption","moreOptions","hasOnlyOneOptionToSelect","length","useEffect","displayEmpty","root","Typography","variant","label","DropDownEditor","disableUnderline","TextFieldProps","MenuProps","list","entries","propTypes","PropTypes","useRunOnceAfterValueInitialization","cb","isValueInited","useRef","current","_extends","Object","assign","target","i","arguments","source","key","prototype","hasOwnProperty","call","apply","this","props","React","width","viewBox","version","xmlns","xmlnsXlink","id","stroke","strokeWidth","fill","fillRule","xlinkHref","fillOpacity","mask","header","padding","buttonsContainer","flexShrink","marginLeft","button","icon","disabledIcon","opacity","IconButtonWithTooltip","withTooltip","IconButton","HierarchyViewHeader","title","entityLabel","onScrollToCurrentEntity","onGraphOpen","disabled","iconClassName","classnames","FacetViewHeader","tooltipTitle","i18n","onClick","showForDisabled","ShowGraph","node","tooltipPlacement","SelectNode","total","theme","spacing","marginRight","panel","display","flexGrow","flexDirection","minHeight","maxHeight","treeWrapper","marginTop","checkedNode","backgroundColor","editorNode","visibility","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","isRequired","TreeThemeContext","createContext","generateTreeNodeProps","undefined","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","parent","directParentUri","loading","ActivenessDateType","TreeType","graphTypes","entitiesMap","activenessDate","scrollTo","MeasuredNode","measure","registerChild","NodeRenderer","scrollToElementByNodeId","element","document","querySelector","getElementByNodeId","scrollIntoView","block","inline","setTimeout","getNodeKey","DefaultNodeRenderer","pick","hierarchyTheme","Tree","scrollToNode","onRequestChildren","onScroll","identity","onNodeMoved","inlineRoot","treeData","useMemo","rootChildren","pipe","omit","assoc","virtualizedListRef","treeDataRef","measurerCache","keyMapper","useCallback","rawIndex","nodeInfo","propOr","useState","CellMeasurerCache","fixedWidth","defaultHeight","onWindowResize","clearAll","window","addEventListener","removeEventListener","useRefreshableMeasurerCache","vList","getVirtualizedListInstance","forceUpdateGrid","results","searchFocusOffset","searchQuery","searchMethod","scrollToRow","onSortableTreeChange","slice","nodeRenderWithMeasure","cache","columnIndex","rowIndex","getMeasuredNode","generateNodeProps","rowInfo","previousTreeData","usePrevious","onMoveNode","movedNodeInfo","prevPath","nextParentNode","prevParentNode","parentPath","result","handleOnLazyLoadChildren","handleResize","skipOnMount","handleWidth","onResize","ReactSortableTree","isVirtualized","reactVirtualizedListProps","ref","scrollToAlignment","onLazyLoadChildren","useCommonStyles","paddingTop","position","loadingSpinner","alignSelf","LoadingNode","commonStyles","LoadingSpinner","wrapper","avatar","avatarWithMultiParent","cursor","number","multiParentIcon","top","actionsBlock","content","background","pointerEvents","actionsBlockWithOpenMenu","actionsBlockForCheckedNode","regularNodeCheckbox","letterSpacing","lineHeight","paddingBottom","popper","minWidth","boxShadow","borderRadius","strokeOpacity","cx","cy","r","link","palette","secondary","main","selected","isSelected","Link","to","multiParent","border","bottom","borderColor","borderBottomColor","borderWidth","parentContainer","marginBottom","alignItems","loadingNode","additionalParents","dispatch","useDispatch","entityLink","ui","uri","entityUri","viewId","details","margin","detailLine","detail","wordWrap","textIndent","detailLabel","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","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","getState","mdm","childrenLoading","getHops","then","rawSubTree","queue","visitedNodes","breakCycles","buildTreeFromHops","entitiesSubMap","childrenLoaded","entitiesMappingLoaded","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","gutterBottom","DataTypeValue","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","__","getStartObjectTypeUri","getEndObjectTypeUri","canAddParentForNode","canAddChildForNode","canDeleteNode","checkMetadataForDelete","simpleNodePropsMapping","currentEntityUri","uiPath","onParentsRequested","isSelectedNode","isEditable","checkIsEditableMode","commonActionHandlers","onToggleShowParents","needLoadAdditionalParents","actionHandlers","treeNodeEditingStarted","nodeStartEditing","treeNodeNewParentEditingStarted","newNode","treeNodeNewChildEditingStarted","store","nodeStartAddingChild","relationUri","treeRelationRemoved","treeNodeRemoved","updatedNode","toggleRelationDetails","getLabel","secondaryLabel","getEntityLink","reject","isNil","getAdditionalParents","pathOr","mapEntry","NodeContext","onToggleNodeCheckbox","canSelect","onImageLoadFail","e","DEFAULT_ICON","RegularNode","popperAnchor","useContext","useSelector","nodePropsMapping","isLoading","entityDetails","showEntityDetails","hideEntityDetails","setEntityDetails","setIsLoading","timerId","safePromise","useSafePromise","cancelRequest","getEntity","finally","clearTimeout","useEntityDetails","showPopper","showControls","setShowControls","showActionsBlock","hideActionsBlock","openActionsMenu","setOpenActionsMenu","showActionsMenu","hideActionsMenu","hasMultiParents","toggleShowParents","bind","checked","event","onTitleClick","onMouseEnter","onMouseLeave","Avatar","onError","Popper","anchorEl","open","modal","placement","ProfileCard","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","RelationTypeType","isAvailableRelationForRelatedEntity","relatedEntity","relationType","isRelatedEntityInstanceOf","getObjectUri","editorContainer","dense","item","actionButtons","justifyContent","EditorNode","editingMode","initialConnection","isAddingParent","NODE_EDITING_MODES","connection","state","error","getHierarchyNodeEditorActiveError","allErrors","relationTypeUri","crosswalks","attributeListEntity","getActivenessAttributes","globalSearchRequestOptions","allAvailableRelationTypes","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","ScrollToErrorContext","isErrorHighlighted","allPass","isEmptyValue","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","GraphTypeType","ActivenessDateControl","handleChange","date","getTime","DateEditor","popupHorizontalPadding","triggerButton","popupContent","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","Popover","paper","onClose","anchorOrigin","vertical","horizontal","transformOrigin","viewOptionsTitle","control","Checkbox","Divider","menuItem","fullWidth","newSortField","getContentAnchorEl","ArrowUpwardIcon","ArrowDownwardIcon","textContainer","separator","Breadcrumbs","items","expandText","li","href","BreadcrumbsType","fieldsToSave","getStateToSave","anyPass","field","isEmpty","view","linearIndicator","filtersBar","filterSortButton","breadcrumbs","graphTypeSelector","fontFamily","connect","ownProps","caption","graph","graphConfig","showPath","initialActivenessDate","Date","now","isSecondaryLabelEnabled","showSecondaryLabelValue","currentGraphType","setCurrentGraphType","getGraphTypesForEntityType","hasSecondaryLabelPattern","onTreeSort","treeSorted","scrollToTreeTop","savePreferences","debounce","trees","treesStateSaved","saveTreesPreferences","treeSecondaryLabelShown","cancelOnUnmount","isCurrentReversed","currentGraphTypes","previousActivenessDate","showCurrentEntityDelayed","hasRoot","mdmModule","updatedTrees","updateTreesWithNewEntity","treeChanged","updatedTime","createTreeLoadedEvent","treeLoaded","treeProcessing","hasEntityInTree","treeLoading","getTree","catch","treeLoadedWithError","getRequestErrorMessage","console","warn","useTreeLoader","isViewMode","isTempUri","modifiedEntity","useNewEntityTree","parentsProcessing","loadParents","onTreeActivenessDateChange","activenessDateChanged","newParent","treeRelationRepointed","JSON","stringify","setCheckedNodes","openGraph","clearCheckedNodes","nodePath","getPathByEntityUri","BasicView","LinearLoadIndicator","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","ViewIdContext","StylesProvider","MuiPickersUtilsProvider","utils","MomentUtils","Math","floor","ErrorPopup"],"sourceRoot":""}
|