@reltio/remotes 1.4.1236 → 1.4.1237
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/5884.js +1 -1
- package/5884.js.map +1 -1
- package/6710.js +1 -1
- package/6710.js.map +1 -1
- package/7770.js +1 -1
- package/7770.js.map +1 -1
- package/8208.js +1 -1
- package/8208.js.map +1 -1
- package/package.json +1 -1
package/5884.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"5884.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AvatarWithFallback/AvatarWithFallback.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/hooks/useDynamicRowCellHeight.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/RowCellAutoSizer/RowCellAutoSizer.js","webpack://@reltio/remotes/../components/src/components/ConfirmDeleteDialog/ConfirmDeleteDialog.tsx","webpack://@reltio/remotes/../components/src/components/LightArrowTooltip/styles.ts","webpack://@reltio/remotes/../components/src/components/LightArrowTooltip/LightArrowTooltip.tsx","webpack://@reltio/remotes/../components/src/components/ResizablePanes/styles.js","webpack://@reltio/remotes/../components/src/components/ResizablePanes/ResizablePanes.js","webpack://@reltio/remotes/../components/src/components/SourceIcon/SourceIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttributeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttributeEditor/SimpleAttributeEditor.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttribute/CrosswalkMenuItem/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttribute/CrosswalkMenuItem/CrosswalkMenuItem.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttribute/SimpleAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttributesBlock/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttributesBlock/SimpleAttributesBlock.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/NestedAttributesBlock/NestedAttributesBlock.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/ReferenceAttributesBlock/ReferenceAttributesBlock.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/ImageAttributesBlock/ImageAttributesBlock.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/AttributesPager/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/CrosswalkIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/AttributesList/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/AttributesList/AttributesList.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/DeleteButton.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/ComplexAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/ComplexAttribute/ComplexAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/ImageAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/ImageAttribute/ImageAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/NestedAttribute/NestedAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/ReferenceAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/ReferenceAttribute/ReferenceAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/ComplexAttributeLabel.tsx","webpack://@reltio/remotes/../components/src/icons/Ignored.tsx","webpack://@reltio/remotes/../components/src/icons/IgnoredOutlined.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/IgnoreButton.tsx","webpack://@reltio/remotes/../components/src/icons/Pin.tsx","webpack://@reltio/remotes/../components/src/icons/PinOutlined.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/PinButton.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/SourceItem.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/hooks/useAttributeState.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributeValuesBlock/AttributeValuesBlock.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/AddAttributesButton/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/AddAttributesButton/AddAttributesButton.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/AttributesHeadCellRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/attribute-renderers/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/attribute-renderers/SimpleAttributesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/attribute-renderers/NestedAttributesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/attribute-renderers/ReferenceAttributesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/attribute-renderers/ImageAttributesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/AttributeValuesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/attribute-renderers/AttributesFactory.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/OvValuesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/CountRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/RuleTypeInfoButton.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/RuleTypeRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/WinnerSourcesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/helpers.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/ConfirmEditIgnoredDialog/ConfirmEditIgnoredDialog.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/AttributesTable.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/ColoredBlock/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/ColoredBlock/ColoredBlock.tsx","webpack://@reltio/remotes/../components/src/icons/Copy.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CopyableValueField/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/CopyableValueField/CopyableValueField.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkDateEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkDateEditor/CrosswalkDateEditor.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkAttributes/CrosswalkAttributes.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkDragLayer/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkDragLayer/CrosswalkDragPreview.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkDragLayer/CrosswalkDragLayer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkEditor/CrosswalkEditor.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/DummyCrosswalkRow/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/DummyCrosswalkRow/DummyCrosswalkRow.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkRow/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkRow/CrosswalkRow.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/ShowDependentLink/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/ShowDependentLink/ShowDependentLink.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/SourceCrosswalksRow/SourceCrosswalksRow.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/hooks/useCrosswalkActions.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/hooks/useModifiedEntity.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/hooks/useAttributeActions.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/types/CrosswalkType.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/utils/legend.ts","webpack://@reltio/remotes/../components/src/contexts/CrosswalksDisplayContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/ExpandedAttributesContext/index.tsx"],"sourcesContent":["import {Avatar as Avatar} from '@material-ui/core';\nimport classnames from 'classnames';\nimport React, {useEffect, useState} from 'react';\n\nenum AvatarStates {\n ICON_MODE,\n TEXT_MODE,\n ERROR_MODE\n}\ntype Props = {\n className?: string;\n icon?: string;\n avatarText?: string;\n variant?: 'circle' | 'circular' | 'rounded' | 'square';\n rootClasses?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst AvatarWithFallback = ({className, icon, avatarText, rootClasses, ...otherProps}: Props) => {\n const [state, setState] = useState<AvatarStates>(null);\n useEffect(() => {\n if (icon) {\n setState(AvatarStates.ICON_MODE);\n } else {\n setState(AvatarStates.TEXT_MODE);\n }\n }, [icon, avatarText]);\n const onImageLoadFail = () => {\n setState(AvatarStates.ERROR_MODE);\n };\n\n switch (state) {\n case AvatarStates.ICON_MODE:\n return (\n <Avatar\n className={classnames(className, rootClasses?.iconRoot)}\n src={icon}\n onError={onImageLoadFail}\n {...otherProps}\n />\n );\n case AvatarStates.TEXT_MODE:\n case AvatarStates.ERROR_MODE:\n return (\n <Avatar className={classnames(className, rootClasses?.textRoot)} {...otherProps}>\n {avatarText}\n </Avatar>\n );\n default:\n return null;\n }\n};\n\nexport default AvatarWithFallback;\n","import {useCallback, useRef, useState} from 'react';\nimport {__, curry, identity, pipe, prop, useWith} from 'ramda';\nimport {debounce} from '@reltio/mdm-sdk';\n\nconst getRowCellKey = ({rowIndex, columnData: {id}, cellIndex}) => `${id}[${rowIndex}][${cellIndex}]`;\n\nconst useDynamicRowCellHeight = () => {\n const [rowCellHeightsMap, setRowCellHeightsMap] = useState({});\n const rowCellHeightsMapCache = useRef({});\n const batchHeightUpdate = (key, value) => {\n rowCellHeightsMapCache.current[key] = value;\n };\n const flushHeightUpdates = useCallback(\n debounce(() => {\n setRowCellHeightsMap({...rowCellHeightsMapCache.current});\n }),\n []\n );\n const clearHeightsCache = useCallback(() => {\n rowCellHeightsMapCache.current = {};\n }, []);\n\n const getDynamicRowCellHeight = useCallback(pipe(getRowCellKey, prop(__, rowCellHeightsMap)), [rowCellHeightsMap]);\n\n const changeRowCellHeight = useCallback(\n curry(useWith(pipe(batchHeightUpdate, flushHeightUpdates), [getRowCellKey, identity])),\n []\n );\n\n return {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache};\n};\n\nexport default useDynamicRowCellHeight;\n","import React, {useRef} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ReactResizeDetector from 'react-resize-detector';\nimport {RootRef as RootRef} from '@material-ui/core';\nimport {useDidUpdateEffect} from '../../../hooks';\n\nconst RowCellAutoSizer = ({onChangeHeight, children: cell, ...cellProps}) => {\n const cellRef = useRef(null);\n\n const {rowValue, rowIndex, columnData, cellIndex} = cellProps;\n const changeCellHeight = onChangeHeight({rowIndex, cellIndex, columnData});\n\n const adjustCellHeight = () => cellRef.current && changeCellHeight(cellRef.current.clientHeight);\n\n useDidUpdateEffect(adjustCellHeight, [rowValue.rawValue]);\n\n return (\n <div>\n <ReactResizeDetector handleHeight={true} onResize={adjustCellHeight} />\n <RootRef rootRef={cellRef}>{cell}</RootRef>\n </div>\n );\n};\n\nRowCellAutoSizer.propTypes = {\n onChangeHeight: PropTypes.func,\n children: PropTypes.node\n};\n\nexport default RowCellAutoSizer;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogContentText as DialogContentText} from '@material-ui/core';\n\ntype Props = {\n open: boolean;\n onClose: () => void;\n onConfirm: () => void;\n};\n\nconst ConfirmDeleteDialog = ({open, onClose, onConfirm}: Props) => {\n const handleConfirm = () => {\n onConfirm();\n onClose();\n };\n return (\n <Dialog open={open}>\n <DialogContent>\n <DialogContentText>{i18n.text('Are you sure you want to delete this?')}</DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} color=\"primary\">\n {i18n.text('No')}\n </Button>\n <Button onClick={handleConfirm} color=\"primary\">\n {i18n.text('Yes')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default ConfirmDeleteDialog;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n tooltip: {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n filter:\n 'drop-shadow(0px 1px 5px #00000033) drop-shadow(0px 3px 1px #0000001F) drop-shadow(0px 2px 2px #00000024)',\n padding: '10px',\n maxWidth: 'none'\n },\n arrow: {\n color: theme.palette.background.paper\n }\n}));\n","import React from 'react';\nimport Tooltip, {TooltipProps} from '@material-ui/core/Tooltip';\n\nimport {useStyles} from './styles';\n\nconst LightArrowTooltip = (props: TooltipProps) => {\n const styles = useStyles();\n return <Tooltip {...props} classes={styles} arrow />;\n};\n\nexport default LightArrowTooltip;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n container: {\n position: 'relative',\n '& .Resizer': {\n zIndex: 1,\n boxSizing: 'border-box',\n backgroundClip: 'padding-box',\n '&.disabled': {\n cursor: 'initial',\n height: 0,\n margin: 0\n },\n '&.horizontal': {\n height: '11px',\n backgroundImage: 'linear-gradient(rgba(0,0,0,0.33), rgba(0,0,0,0.33))',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '100% 1px',\n backgroundPosition: 'top',\n width: '100%',\n marginBottom: '-10px',\n '&:not(.disabled):hover': {\n cursor: 'row-resize',\n backgroundImage:\n 'linear-gradient(rgba(0, 114, 206, 0), rgba(0, 114, 206, 0.35), rgba(0, 114, 206, 1))',\n backgroundSize: '100% 3px'\n }\n },\n '&.vertical': {\n width: '11px',\n backgroundImage: 'linear-gradient(rgba(0,0,0,0.33), rgba(0,0,0,0.33))',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '1px 100%',\n backgroundPosition: 'left',\n height: '100%',\n marginRight: '-10px',\n '&:not(.disabled):hover': {\n cursor: 'col-resize',\n backgroundImage:\n 'linear-gradient(to left, rgba(0, 114, 206, 0.35), rgba(0, 114, 206, 1), rgba(0, 114, 206, 0.35))',\n backgroundSize: '3px 100%'\n }\n }\n }\n }\n}));\n\nexport {useStyles};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport SplitPane from 'react-split-pane';\nimport {useTheme} from '@material-ui/core/styles';\n\nimport {useStyles} from './styles';\n\nimport {debounce} from '@reltio/mdm-sdk';\n\nconst HANDLE_CHANGE_DEBOUNCE_INTERVAL = 250;\n\nconst isHorizontal = (orientation) => orientation === 'horizontal';\n\nconst ResizablePanes = ({\n className,\n children,\n orientation,\n defaultSize,\n size,\n minSize,\n maxSize,\n allowResize,\n onChange\n}) => {\n const styles = useStyles();\n const theme = useTheme();\n const [containerEl, setContainerEl] = useState();\n const [isPaneAnimationEnabled, setIsPaneAnimationEnabled] = useState(true);\n\n const enableAnimation = useCallback(() => setIsPaneAnimationEnabled(true), []);\n const disableAnimation = useCallback(() => setIsPaneAnimationEnabled(false), []);\n const getContainerSize = () => (isHorizontal(orientation) ? containerEl?.clientHeight : containerEl?.clientWidth);\n\n const handleChange = useCallback(\n debounce((size) => {\n const containerSize = getContainerSize();\n onChange({\n percentageSize: `${(size / containerSize) * 100}%`,\n isMaxSize: maxSize > 0 ? size === maxSize : size === containerSize + maxSize,\n isMinSize: size === minSize\n });\n }, HANDLE_CHANGE_DEBOUNCE_INTERVAL),\n [onChange, orientation, maxSize, containerEl]\n );\n\n const paneAnimationStyle = useMemo(\n () => ({\n transition: theme.transitions.create(isHorizontal(orientation) ? 'height' : 'width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n })\n }),\n [orientation, theme]\n );\n\n if (typeof size === 'number' && size < 0) {\n size = (getContainerSize() || 0) + size;\n }\n\n return (\n <div ref={setContainerEl} className={classnames(styles.container, className)}>\n <SplitPane\n split={orientation}\n size={size}\n allowResize={allowResize}\n onChange={handleChange}\n defaultSize={defaultSize}\n minSize={minSize}\n maxSize={maxSize}\n onDragStarted={disableAnimation}\n onDragFinished={enableAnimation}\n pane1Style={isPaneAnimationEnabled ? paneAnimationStyle : undefined}\n >\n {children}\n </SplitPane>\n </div>\n );\n};\n\nconst SizePropType = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\n\nResizablePanes.propTypes = {\n className: PropTypes.string,\n children: PropTypes.arrayOf(PropTypes.node).isRequired,\n orientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired,\n defaultSize: SizePropType,\n size: SizePropType,\n minSize: SizePropType,\n maxSize: SizePropType,\n allowResize: PropTypes.bool,\n onChange: PropTypes.func\n};\n\nexport default ResizablePanes;\n","import mdmModule from '@reltio/mdm-module';\nimport {findSourceSystemByUri, getAbsoluteImageUrl, getSourceSystemLabel, Source} from '@reltio/mdm-sdk';\nimport React from 'react';\nimport {useSelector} from 'react-redux';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\n\ntype Props = {\n sourceType: string;\n className?: string;\n classes?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst SOURCE_URL = 'https://s3.amazonaws.com/reltio.images/api';\nconst SourceIcon = ({sourceType, className, classes}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const {uri, icon} = findSourceSystemByUri(metadata, sourceType) as Source;\n const avatarText = getSourceSystemLabel(metadata, uri)[0];\n\n return (\n <AvatarWithFallback\n className={className}\n avatarText={avatarText}\n icon={icon ? getAbsoluteImageUrl(SOURCE_URL, icon) : null}\n variant=\"square\"\n rootClasses={classes}\n />\n );\n};\n\nexport default SourceIcon;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n color: string;\n containerWidth: number;\n};\n\nexport const useStyles = makeStyles(() => ({\n textField: {\n margin: 0\n },\n input: {\n borderRadius: 0\n },\n inputMultiline: {\n '&$input': {\n paddingTop: 0,\n paddingBottom: 0\n }\n },\n booleanEditor: {\n paddingLeft: '10px'\n },\n timestampEditor: {\n '&$paper': {\n minWidth: '255px'\n }\n },\n paper: ({color, containerWidth}: StylesProps) => ({\n border: `3px solid ${color}`,\n borderRadius: '4px',\n width: containerWidth,\n minWidth: '160px'\n }),\n popoverRoot: {\n zIndex: '10!important' as any\n }\n}));\n","import React, {KeyboardEvent, useState} from 'react';\nimport {Popover as Popover} from '@material-ui/core';\nimport {\n AttributeType,\n attributeUriToSearchUri,\n DataTypes,\n getAttrDataTypeDefinition,\n isBooleanType,\n isLookupAttrType,\n isNumericType,\n isTimestampBasedType,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {equals, isNil} from 'ramda';\nimport {DataTypeValueEditor} from '../../../editors';\nimport {attributeValueToEditorValue, editorValueToAttributeValue} from '../../editMode/SimpleAttributeEditor/utils';\nimport {useStyles} from './styles';\n\nconst DATA_TYPES_WITH_MULTILINE_EDITOR = [DataTypes.TYPE_TEXT, DataTypes.TYPE_BLOB];\n\ntype Props = {\n attributeType: AttributeType;\n attributeValue: SimpleAttributeValue;\n color: string;\n onClose: () => void;\n onEdit: (attributeValue: SimpleAttributeValue) => void;\n containerRef: React.RefObject<HTMLDivElement>;\n};\n\nexport const SimpleAttributeEditor = ({attributeType, attributeValue, color, containerRef, onClose, onEdit}: Props) => {\n const styles = useStyles({\n color,\n containerWidth: containerRef.current ? containerRef.current.getBoundingClientRect().width : 0\n });\n\n const dataTypeDefinition = getAttrDataTypeDefinition(attributeType);\n const initEditorValue = attributeValueToEditorValue(attributeValue, dataTypeDefinition);\n const [editorValue, changeEditorValue] = useState(initEditorValue);\n\n const TextFieldProps = {\n className: styles.textField,\n InputProps: {\n disableUnderline: true,\n classes: {\n root: styles.input,\n multiline: styles.inputMultiline\n }\n }\n };\n\n const applyChangesAndClose = () => {\n const editedValue = editorValueToAttributeValue(attributeType, editorValue);\n if (!isNil(editorValue) && !equals(editorValue, initEditorValue)) {\n const editedAttributeValue = isLookupAttrType(attributeType)\n ? {\n value: editedValue.value,\n lookupCode: editedValue.lookupCode\n }\n : {\n value: editorValue === '' && isNumericType(dataTypeDefinition.type) ? null : editedValue\n };\n onEdit({\n ...attributeValue,\n ...editedAttributeValue\n });\n }\n onClose();\n };\n\n const onKeyUp = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter' && !DATA_TYPES_WITH_MULTILINE_EDITOR.includes(dataTypeDefinition.type)) {\n applyChangesAndClose();\n } else if (event.key === 'Escape') onClose();\n };\n\n return (\n <Popover\n open={!!containerRef}\n anchorEl={containerRef.current}\n anchorOrigin={{vertical: 'top', horizontal: 'left'}}\n transformOrigin={{vertical: 'top', horizontal: 'left'}}\n classes={{\n paper: classnames(styles.paper, {\n [styles.booleanEditor]: isBooleanType(dataTypeDefinition.type),\n [styles.timestampEditor]: isTimestampBasedType(dataTypeDefinition.type)\n }),\n root: styles.popoverRoot\n }}\n onKeyUp={onKeyUp}\n onBackdropClick={applyChangesAndClose}\n >\n <DataTypeValueEditor\n autoFocus\n dataTypeDefinition={dataTypeDefinition}\n fieldName={attributeUriToSearchUri(attributeType.uri)}\n onChange={changeEditorValue}\n TextFieldProps={TextFieldProps}\n value={editorValue}\n fullWidth\n />\n </Popover>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n menuItem: {\n minHeight: '32px',\n color: theme.palette.text.secondary\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0,\n marginLeft: '16px'\n },\n sourceItem: {\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)',\n paddingBottom: '8px',\n paddingLeft: '16px',\n maxWidth: '200px'\n }\n}));\n","import {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport React, {forwardRef, ReactNode} from 'react';\nimport withTooltip from '../../../../../HOCs/withTooltip/withTooltip';\nimport SourceItem from '../../common/SourceItem';\nimport {useStyles} from './styles';\n\nconst MenuItemWithTooltip = withTooltip(MenuItem);\n\nexport type Item = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n icon?: ReactNode;\n crosswalk?: Crosswalk;\n color?: string;\n id?: string;\n onClick?: (e) => void;\n};\n\ntype Props = {\n item: Item;\n onMenuClose?: (e) => void;\n};\n\nconst MenuItemContent = ({styles, icon, text}: Item & {styles: Record<string, string>}) => {\n return (\n <>\n {icon}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </>\n );\n};\n\nconst CrosswalkMenuItem = forwardRef(({item, onMenuClose = () => {}}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {disabled, text, tooltip, onClick, id = '', icon, crosswalk, color} = item;\n const handleClick = (e) => {\n onMenuClose(e);\n onClick(e);\n };\n return crosswalk ? (\n <SourceItem className={styles.sourceItem} color={color} crosswalk={crosswalk} focusable />\n ) : (\n <MenuItemWithTooltip\n tooltipTitle={tooltip}\n showForDisabled={true}\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n data-reltio-id={`crosswalk-menu-item${id}`}\n >\n <MenuItemContent icon={icon} text={text} styles={styles} />\n </MenuItemWithTooltip>\n );\n});\n\nCrosswalkMenuItem.displayName = 'CrosswalkMenuItem';\n\nexport default CrosswalkMenuItem;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n variant: 'filled' | 'outlined';\n fullyColored: boolean;\n opaque: boolean;\n color: string;\n};\n\nexport const useStyles = makeStyles(() => ({\n root: ({fullyColored, opaque, color, variant}: StylesProps) => ({\n minHeight: '28px',\n wordBreak: 'break-word',\n ...(variant === 'filled' && {\n borderRadius: '4px',\n background: fullyColored ? color : `linear-gradient(to right, ${color} 8px, rgba(0,0,0,0.05) 8px)`\n }),\n ...(variant === 'outlined' && {\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n background: color,\n borderRadius: '4px 0px 0px 4px',\n width: '8px',\n height: '100%',\n pointerEvents: 'none'\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n boxSizing: 'border-box',\n borderRadius: '4px',\n border: fullyColored ? `${color} solid 2px` : 'rgba(0,0,0,0.12) solid 1px',\n width: '100%',\n height: '100%',\n pointerEvents: 'none'\n }\n }),\n display: 'flex',\n alignItems: 'center',\n opacity: opaque ? 1 : 0.38,\n transition: 'opacity 0.3s',\n position: 'relative'\n }),\n attributeValue: {\n marginLeft: '16px',\n padding: '6px 0',\n lineHeight: '14px',\n width: 'calc(100% - 71px)'\n },\n actions: {\n display: 'flex',\n width: '71px',\n justifyContent: 'flex-end',\n marginRight: '4px'\n }\n}));\n","import React, {useRef} from 'react';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport EditIcon from '@material-ui/icons/Edit';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {\n AttributeType,\n checkMetadataForDelete,\n checkMetadataForUpdate,\n Crosswalk,\n getAttrDataTypeDefinition,\n getAttributeValue,\n getLastUriPart,\n isCrosswalkDisabled,\n isTempUri,\n ModeTypes,\n RelationCrosswalk,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport DropDownMenuButton from '../../../DropDownMenuButton/DropDownMenuButton';\nimport {SimpleAttributeEditor} from '../SimpleAttributeEditor/SimpleAttributeEditor';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport IgnoreButton from '../common/IgnoreButton';\nimport PinButton from '../common/PinButton';\nimport CrosswalkMenuItem from './CrosswalkMenuItem/CrosswalkMenuItem';\nimport {useAttributeState} from '../hooks/useAttributeState';\nimport {useCrosswalkColor, useCrosswalkHighlight} from '../../../../contexts';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n dataReltioId?: string;\n attributeValue: SimpleAttributeValue;\n attributeType: AttributeType;\n crosswalk: Crosswalk | RelationCrosswalk;\n disableEdit?: boolean;\n disableDelete?: boolean;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n};\n\nconst SimpleAttribute = ({\n className,\n dataReltioId,\n attributeType = null,\n attributeValue,\n crosswalk,\n disableEdit,\n disableDelete,\n onIgnore,\n onEdit,\n onPin,\n onDelete\n}: Props) => {\n const {\n isReadingMode,\n isEditingMode,\n isHovered,\n onMouseEnter,\n onMouseLeave,\n setReadingMode,\n setEditingMode\n } = useAttributeState();\n\n const containerRef = useRef<HTMLDivElement>();\n\n const id = getLastUriPart(attributeValue.uri);\n const crosswalkDisabled = isCrosswalkDisabled(crosswalk);\n const canModifyAttribute = !attributeType.system && !crosswalkDisabled;\n const canEdit = canModifyAttribute && !disableEdit && checkMetadataForUpdate(ModeTypes.EDITING, attributeType);\n const canDelete = canModifyAttribute && !disableDelete && checkMetadataForDelete(ModeTypes.EDITING, attributeType);\n const isTemporary = isTempUri(attributeValue.uri);\n const showPin = !isTemporary && ((!isReadingMode && canEdit) || attributeValue.pin);\n const showIgnore = !isTemporary && ((!isReadingMode && canEdit) || attributeValue.ignored);\n\n const color = useCrosswalkColor(crosswalk);\n const {isHighlighted, isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(crosswalk);\n const styles = useStyles({\n variant: crosswalkDisabled ? 'outlined' : 'filled',\n opaque: !isDimmed,\n fullyColored: isHighlighted,\n color\n });\n const actions = [\n {\n crosswalk,\n color\n },\n {\n disabled: !canEdit,\n text: i18n.text('Edit'),\n icon: <EditIcon />,\n tooltip: canEdit ? null : i18n.text(\"You don't have permissions to edit\"),\n onClick: () => setEditingMode(),\n id: 'edit'\n },\n {\n disabled: !canDelete,\n text: i18n.text('Delete'),\n icon: <DeleteIcon />,\n tooltip: canDelete ? null : i18n.text(\"You don't have permissions to delete\"),\n onClick: () =>\n onDelete({\n attributeType,\n attributeValue,\n crosswalks: [crosswalk]\n }),\n id: 'delete'\n }\n ];\n\n const onClose = () => {\n removeHighlight();\n setReadingMode();\n };\n\n return (\n <div\n ref={containerRef}\n className={classnames(className, styles.root)}\n onMouseEnter={() => {\n highlightCrosswalk();\n onMouseEnter();\n }}\n onMouseLeave={() => {\n removeHighlight();\n onMouseLeave();\n }}\n data-reltio-id={dataReltioId}\n >\n <div className={styles.attributeValue}>\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n />\n </div>\n <div className={styles.actions}>\n {showPin && (\n <PinButton\n isPinned={attributeValue.pin}\n onClick={() => onPin({attributeValue})}\n disabled={!canEdit}\n />\n )}\n {showIgnore && (\n <IgnoreButton\n isIgnored={attributeValue.ignored}\n onClick={() => onIgnore({attributeValue})}\n disabled={!canEdit}\n />\n )}\n {isHovered && (\n <DropDownMenuButton\n MenuItemRenderer={CrosswalkMenuItem}\n menuId={`simple-attribute-additional-actions-${id}`}\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'XS',\n tooltipTitle: i18n.text('More actions')\n }}\n onMenuClose={onClose}\n menuItems={actions}\n />\n )}\n </div>\n {isEditingMode && (\n <SimpleAttributeEditor\n attributeType={attributeType}\n attributeValue={attributeValue}\n color={color}\n onClose={onClose}\n onEdit={(value) => onEdit({attributeType, attributeValue: value, crosswalk})}\n containerRef={containerRef}\n />\n )}\n </div>\n );\n};\nexport default SimpleAttribute;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n simpleAttributesWrapper: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: '4px',\n width: '100%',\n minHeight: '28px'\n },\n dropIndicator: {\n height: '28px',\n color: '#828282',\n fontSize: '13px',\n lineHeight: '28px',\n background: 'rgba(0, 0, 0, 0.04)',\n border: '1px dashed #828282',\n borderRadius: '4px',\n boxSizing: 'border-box',\n padding: '0 12px'\n }\n}));\n","import React from 'react';\nimport SimpleAttribute from '../SimpleAttribute';\nimport {\n AttributeType,\n checkMetadataForCreate,\n Crosswalk,\n isEntityTypeUri,\n isEntityUri,\n isRelationTypeUri,\n isRelationUri,\n ModeTypes,\n RelationCrosswalk,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {CrosswalksMap} from '../types';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\nimport {useDrop} from 'react-dnd';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: SimpleAttributeValue[];\n crosswalksMap: CrosswalksMap;\n parentUri: string;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst SimpleAttributesBlock = ({\n attributeValues,\n attributeType,\n parentUri,\n disableEdit,\n crosswalksMap,\n onAdd,\n ...props\n}: Props) => {\n const styles = useStyles();\n const [{isDragItemOver}, drop] = useDrop<\n {crosswalk: Crosswalk | RelationCrosswalk; type: 'Crosswalk'},\n unknown,\n {isDragItemOver: boolean}\n >({\n accept: 'Crosswalk',\n canDrop: ({crosswalk}) => {\n const isRelationCrosswalk = isRelationUri(crosswalk.uri) || crosswalk.ownerType === 'relation';\n const isEntityCrosswalk = isEntityUri(crosswalk.uri) && crosswalk.ownerType === 'entity';\n return (\n checkMetadataForCreate(ModeTypes.EDITING, attributeType) &&\n !disableEdit &&\n ((isRelationCrosswalk && isRelationTypeUri(attributeType.uri)) ||\n (isEntityCrosswalk && isEntityTypeUri(attributeType.uri)))\n );\n },\n collect: (monitor) => ({\n isDragItemOver: monitor.isOver() && monitor.canDrop()\n }),\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n drop: ({crosswalk}, monitor) => {\n onAdd({attributeType, crosswalk, parentUri, index: attributeValues.length});\n }\n });\n let attributeIndex = 0;\n return (\n <div ref={drop} className={styles.simpleAttributesWrapper}>\n {attributeValues.map((value) =>\n crosswalksMap[value.uri]?.map((crosswalk) => (\n <SimpleAttribute\n key={value.uri + crosswalk.uri}\n attributeType={attributeType}\n attributeValue={value}\n crosswalk={crosswalk}\n disableEdit={disableEdit}\n dataReltioId={`value-index-${attributeIndex++}`}\n {...props}\n />\n ))\n )}\n {isDragItemOver && <div className={styles.dropIndicator}>{i18n.text('Drop here')}</div>}\n </div>\n );\n};\n\nexport default SimpleAttributesBlock;\n","import React from 'react';\nimport {AttributeType, checkMetadataForCreate, ModeTypes, NestedAttributeValue} from '@reltio/mdm-sdk';\nimport {CrosswalksMap} from '../types';\nimport NestedAttribute from '../NestedAttribute/NestedAttribute';\nimport {Button as Button} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\n\ntype Props = {\n className?: string;\n attributeType: AttributeType;\n attributeValues: NestedAttributeValue[];\n crosswalksMap: CrosswalksMap;\n parentUri: string;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst NestedAttributesBlock = ({\n className,\n attributeValues,\n attributeType,\n onAdd,\n parentUri,\n disableEdit,\n ...props\n}: Props) => {\n const canCreate = !disableEdit && checkMetadataForCreate(ModeTypes.EDITING, attributeType);\n return attributeValues.length === 0 && canCreate ? (\n <Button\n variant=\"text\"\n color=\"primary\"\n onClick={() =>\n onAdd({\n parentUri,\n attributeType,\n index: 0\n })\n }\n >\n {i18n.text('Create attribute')}\n </Button>\n ) : (\n <div className={className}>\n {attributeValues.map((value) => (\n <NestedAttribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n onAdd={onAdd}\n disableEdit={disableEdit}\n {...props}\n />\n ))}\n </div>\n );\n};\n\nexport default NestedAttributesBlock;\n","import React from 'react';\nimport {AttributeType, ReferenceAttributeValue} from '@reltio/mdm-sdk';\nimport {RelationCrosswalksMap} from '../types';\nimport ReferenceAttribute from '../ReferenceAttribute/ReferenceAttribute';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\n\ntype Props = {\n className?: string;\n attributeType: AttributeType;\n attributeValues: ReferenceAttributeValue[];\n crosswalksMap: RelationCrosswalksMap;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst ReferenceAttributesBlock = ({className, attributeValues, ...props}: Props) => {\n return (\n <div className={className}>\n {attributeValues.map((value) => (\n <ReferenceAttribute key={value.uri} attributeValue={value} {...props} />\n ))}\n </div>\n );\n};\n\nexport default ReferenceAttributesBlock;\n","import React from 'react';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport ImageAttribute from '../ImageAttribute/ImageAttribute';\nimport {CrosswalksMap} from '../types';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\n\ntype Props = {\n className?: string;\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n crosswalksMap: CrosswalksMap;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst ImageAttributesBlock = ({className, attributeValues, ...props}: Props) => {\n return (\n <div className={className}>\n {attributeValues.map((value) => (\n <ImageAttribute key={value.uri} attributeValue={value} {...props} />\n ))}\n </div>\n );\n};\n\nexport default ImageAttributesBlock;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start'\n },\n complexAttributesWrapper: {\n width: '100%'\n }\n}));\n","import React, {useState} from 'react';\nimport {AttributeType, AttributeValue, DataTypes, Paging} from '@reltio/mdm-sdk';\nimport {CrosswalksMap, RelationCrosswalksMap} from '../types';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport SimpleAttributesBlock from '../SimpleAttributesBlock/SimpleAttributesBlock';\nimport NestedAttributesBlock from '../NestedAttributesBlock/NestedAttributesBlock';\nimport ReferenceAttributesBlock from '../ReferenceAttributesBlock/ReferenceAttributesBlock';\nimport ImageAttributesBlock from '../ImageAttributesBlock/ImageAttributesBlock';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\nimport {propOr} from 'ramda';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: AttributeValue[];\n parentUri: string;\n paging?: Paging;\n max?: number;\n crosswalksMap: CrosswalksMap;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n requestNextPage?: () => void;\n};\n\nconst AttributesPager = ({\n attributeType,\n attributeValues = [],\n paging = {},\n max = Infinity,\n requestNextPage,\n ...props\n}: Props) => {\n const styles = useStyles();\n\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n\n const totalValues = propOr(attributeValues.length, 'totalValues', paging);\n\n const hasPaging = max < totalValues;\n const showMore = hasPaging && visibleValuesCount < totalValues;\n const showLess = hasPaging && visibleValuesCount >= totalValues;\n const onShowMore = () => {\n if (attributeValues.length < totalValues) {\n requestNextPage(); // TODO: implement\n }\n setVisibleValuesCount(visibleValuesCount + max);\n };\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = attributeValues.slice(0, visibleValuesCount);\n const hiddenValuesCount = totalValues - visibleValuesCount;\n\n const renderValues = (values) => {\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return (\n <NestedAttributesBlock\n className={styles.complexAttributesWrapper}\n attributeValues={values}\n attributeType={attributeType}\n {...props}\n />\n );\n case DataTypes.TYPE_REFERENCE: {\n const {crosswalksMap, ...other} = props;\n return (\n <ReferenceAttributesBlock\n className={styles.complexAttributesWrapper}\n attributeValues={values}\n attributeType={attributeType}\n crosswalksMap={crosswalksMap as RelationCrosswalksMap}\n {...other}\n />\n );\n }\n case DataTypes.TYPE_IMAGE: {\n return (\n <ImageAttributesBlock\n className={styles.complexAttributesWrapper}\n attributeValues={values}\n attributeType={attributeType}\n {...props}\n />\n );\n }\n default:\n return <SimpleAttributesBlock attributeValues={values} attributeType={attributeType} {...props} />;\n }\n };\n\n return (\n <div className={styles.wrapper}>\n {renderValues(shownValues)}\n {showMore && (\n <ShowMore\n moreNumber={Math.min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default AttributesPager;\n","import React from 'react';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport {useCrosswalkColor, useCrosswalkHighlight} from '../../../../contexts';\nimport SourceItem from './SourceItem';\nimport LightArrowTooltip from '../../../LightArrowTooltip/LightArrowTooltip';\nimport classnames from 'classnames';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: Crosswalk;\n className?: string;\n};\n\nconst CrosswalkIcon = ({crosswalk, className}: Props) => {\n const color = useCrosswalkColor(crosswalk);\n const {isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(crosswalk);\n const styles = useStyles({isOpaque: !isDimmed, color});\n return (\n <LightArrowTooltip title={<SourceItem crosswalk={crosswalk} color={color} />} placement={'top'}>\n <div\n className={classnames(styles.crosswalkIcon, className)}\n onMouseEnter={() => highlightCrosswalk()}\n onMouseLeave={() => removeHighlight()}\n />\n </LightArrowTooltip>\n );\n};\n\nexport default CrosswalkIcon;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n title: {\n fontSize: '12px',\n lineHeight: '14px',\n paddingBottom: '4px',\n display: 'inline-block',\n color: theme.palette.text.secondary\n }\n}));\n","import React from 'react';\nimport {AttributeType, AttributeValue, isReadableAttribute, RecordAttributesType} from '@reltio/mdm-sdk';\nimport {CrosswalksMap} from '../types';\nimport AttributesPager from '../AttributesPager/AttributesPager';\nimport {path} from 'ramda';\nimport Title from '../../../Title/Title';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeTypes: AttributeType[];\n attributes: RecordAttributesType;\n parentUri: string;\n crosswalksMap: CrosswalksMap;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst AttributesList = ({attributeTypes, attributes, ...props}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {attributeTypes.filter(isReadableAttribute).map((attributeType) => (\n <BranchDecorator key={attributeType.uri} enabled={true}>\n <Title className={styles.title} label={attributeType.label} />\n <AttributesPager\n attributeType={attributeType}\n attributeValues={attributes[attributeType.name] as AttributeValue[]}\n paging={path(['paging', attributeType.uri], attributes)}\n {...props}\n />\n </BranchDecorator>\n ))}\n </>\n );\n};\n\nexport default AttributesList;\n","import React from 'react';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n onClick: () => void;\n};\n\nconst DeleteButton = ({onClick}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n tooltipTitle={i18n.text('Delete')}\n onClick={onClick}\n size=\"XS\"\n disableRipple\n />\n );\n};\n\nexport default DeleteButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n minHeight: '20px'\n },\n actions: {\n display: 'flex',\n width: '65px',\n justifyContent: 'flex-end',\n flexShrink: 0,\n alignSelf: 'center'\n },\n crosswalkIcon: {\n display: 'inline-block',\n verticalAlign: 'middle',\n '& + &': {\n marginLeft: '4px'\n }\n }\n}));\n","import React, {useState} from 'react';\nimport {\n areOneHierarchyUris,\n AttributeType,\n checkMetadataForDelete,\n checkMetadataForUpdate,\n ComplexAttributeValue,\n Crosswalk,\n isTempUri,\n getCrosswalkId,\n ModeTypes\n} from '@reltio/mdm-sdk';\nimport {CrosswalksMap} from '../types';\nimport {useAttributeState} from '../hooks/useAttributeState';\nimport {Spacer} from '../../../index';\nimport CrosswalkIcon from '../common/CrosswalkIcon';\nimport {flatten, pickBy, pipe, prop, uniqBy, values} from 'ramda';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\nimport AttributesList from '../AttributesList/AttributesList';\nimport PinButton from '../common/PinButton';\nimport IgnoreButton from '../common/IgnoreButton';\nimport DeleteButton from '../common/DeleteButton';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\nimport {useDidUpdateEffect} from '../../../../hooks';\nimport {useAttributeExpanded} from '../../../../contexts';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ComplexAttributeValue;\n attributeType: AttributeType;\n label: React.ReactNode;\n lazy?: boolean;\n attributeTypesList: AttributeType[];\n crosswalksMap: CrosswalksMap;\n disableEdit?: boolean;\n disableDelete?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst ComplexAttribute = ({\n attributeType,\n attributeValue,\n attributeTypesList,\n label,\n crosswalksMap,\n disableEdit,\n disableDelete,\n onPin,\n onIgnore,\n onDelete,\n onEdit,\n onAdd\n}: Props) => {\n const styles = useStyles();\n\n const {isReadingMode, onMouseEnter, onMouseLeave} = useAttributeState();\n const canEdit = !disableEdit && checkMetadataForUpdate(ModeTypes.EDITING, attributeType);\n const canDelete = !disableDelete && checkMetadataForDelete(ModeTypes.EDITING, attributeType);\n const isTemporary = isTempUri(attributeValue.uri);\n const showPin = !isTemporary && ((!isReadingMode && canEdit) || attributeValue.pin);\n const showIgnore = !isTemporary && ((!isReadingMode && canEdit) || attributeValue.ignored);\n const showDelete = !isReadingMode && canDelete;\n const expandedFromContext = useAttributeExpanded(attributeValue.uri);\n const [expanded, setExpanded] = useState(expandedFromContext || isTemporary);\n useDidUpdateEffect(() => {\n if (expandedFromContext) setExpanded(expandedFromContext);\n }, [expandedFromContext]);\n\n const crosswalks: Crosswalk[] = pipe(\n pickBy((val, attrUri) => areOneHierarchyUris(attrUri, attributeValue?.uri)),\n values,\n flatten,\n uniqBy(prop('uri'))\n )(crosswalksMap);\n\n return (\n <>\n <div className={styles.root} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <ArrowExpandButton onClick={() => setExpanded((value) => !value)} expanded={expanded} />\n <span>\n {label}\n {crosswalks.map((crosswalk) => (\n <CrosswalkIcon\n key={getCrosswalkId(crosswalk)}\n crosswalk={crosswalk}\n className={styles.crosswalkIcon}\n />\n ))}\n </span>\n <Spacer />\n <div className={styles.actions}>\n {showPin && (\n <PinButton\n disabled={!canEdit}\n isPinned={attributeValue.pin}\n onClick={() => onPin({attributeValue})}\n />\n )}\n {showIgnore && (\n <IgnoreButton\n disabled={!canEdit}\n isIgnored={attributeValue.ignored}\n onClick={() => onIgnore({attributeValue})}\n />\n )}\n {showDelete && (\n <DeleteButton\n onClick={() =>\n onDelete({\n attributeType,\n attributeValue,\n crosswalks: crosswalksMap[attributeValue.uri]\n })\n }\n />\n )}\n </div>\n </div>\n {expanded && (\n <AttributesList\n attributeTypes={attributeTypesList}\n attributes={attributeValue.value}\n parentUri={attributeValue.uri}\n crosswalksMap={crosswalksMap}\n disableEdit={!canEdit}\n disableDelete={!canDelete}\n onPin={onPin}\n onIgnore={onIgnore}\n onDelete={onDelete}\n onEdit={onEdit}\n onAdd={onAdd}\n />\n )}\n </>\n );\n};\n\nexport default ComplexAttribute;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n image: {\n borderRadius: '4px',\n background: 'white',\n display: 'inline-block',\n verticalAlign: 'middle'\n },\n imageContainer: {\n display: 'inline',\n lineHeight: '45px',\n paddingRight: '8px'\n }\n}));\n","import React from 'react';\nimport {AttributeType, getImageAttributeThumbnailUrl, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport Image from '../../../Image/Image';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {CrosswalksMap} from '../types';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {useStyles} from './styles';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\n\nconst IMAGE_SIZE = {imageWidth: 55, imageHeight: 45};\n\ntype Props = {\n attributeValue: ImageAttributeValue;\n attributeType: AttributeType;\n crosswalksMap: CrosswalksMap;\n disableEdit?: boolean;\n disableDelete?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst ImageAttribute = ({attributeValue, attributeType, ...other}: Props) => {\n const styles = useStyles();\n\n return (\n <ComplexAttribute\n attributeValue={attributeValue}\n attributeType={attributeType}\n attributeTypesList={attributeType.attributes}\n label={\n <Image\n containerClassName={styles.imageContainer}\n className={styles.image}\n src={getImageAttributeThumbnailUrl(attributeValue)}\n size={IMAGE_SIZE}\n />\n }\n {...other}\n />\n );\n};\n\nexport default ImageAttribute;\n","import React from 'react';\nimport {AttributeType, getLabel, NestedAttributeValue} from '@reltio/mdm-sdk';\nimport {CrosswalksMap} from '../types';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {ComplexAttributeLabel} from '../common/ComplexAttributeLabel';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\n\ntype Props = {\n attributeValue: NestedAttributeValue;\n attributeType: AttributeType;\n crosswalksMap: CrosswalksMap;\n disableEdit?: boolean;\n disableDelete?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst NestedAttribute = ({attributeValue, attributeType, ...other}: Props) => {\n const label = <ComplexAttributeLabel>{getLabel(attributeValue?.label)}</ComplexAttributeLabel>;\n return (\n <ComplexAttribute\n attributeValue={attributeValue}\n attributeType={attributeType}\n attributeTypesList={attributeType.attributes}\n label={label}\n {...other}\n />\n );\n};\n\nexport default NestedAttribute;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n relationshipLabel: {\n marginLeft: '4px',\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n AttributeType,\n findAttributeTypeByUri,\n getEntityLink,\n getLabel,\n getReferencedEntityUriFromAttrValue,\n getReferencedRelationAttrTypesUris,\n ReferenceAttributeValue\n} from '@reltio/mdm-sdk';\nimport {RelationCrosswalksMap} from '../types';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {isNil, map, pipe, reject} from 'ramda';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\nimport {ComplexAttributeLabel} from '../common/ComplexAttributeLabel';\nimport InternalLink from '../../../InternalLink/InternalLink';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ReferenceAttributeValue;\n attributeType: AttributeType;\n crosswalksMap: RelationCrosswalksMap;\n disableEdit?: boolean;\n disableDelete?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst ReferenceAttribute = ({attributeValue, attributeType, ...other}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n\n const entityLabel = (\n <ComplexAttributeLabel>\n <InternalLink href={getEntityLink({uiPath, uri: getReferencedEntityUriFromAttrValue(attributeValue)})}>\n {getLabel(attributeValue.label)}\n {attributeValue.relationshipLabel && (\n <span className={styles.relationshipLabel}>{attributeValue.relationshipLabel}</span>\n )}\n </InternalLink>\n </ComplexAttributeLabel>\n );\n\n const attributeTypesList = pipe(\n getReferencedRelationAttrTypesUris,\n map((attrTypeUri) => findAttributeTypeByUri(metadata, attrTypeUri)),\n reject(isNil)\n )(attributeType);\n\n return (\n <ComplexAttribute\n attributeValue={attributeValue}\n attributeType={attributeType}\n attributeTypesList={attributeTypesList}\n label={entityLabel}\n {...other}\n />\n );\n};\n\nexport default ReferenceAttribute;\n","import React from 'react';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useComplexAttributeLabelStyles} from './styles';\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const ComplexAttributeLabel = ({children}: Props) => {\n const styles = useComplexAttributeLabelStyles();\n\n return (\n <Typography component=\"span\" variant=\"body2\" classes={{body2: styles.label}}>\n {children}\n </Typography>\n );\n};\n","import React from 'react';\n\nconst SvgIgnored: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 3.5A8.503 8.503 0 003.5 12c0 4.692 3.808 8.5 8.5 8.5s8.5-3.808 8.5-8.5-3.808-8.5-8.5-8.5zM6.1 12c0-3.26 2.64-5.9 5.9-5.9 1.161 0 2.24.336 3.149.917L7.017 15.15A5.821 5.821 0 016.101 12zm5.9 5.9c-1.16 0-2.24-.336-3.148-.917l8.131-8.131c.581.908.917 1.987.917 3.148 0 3.26-2.64 5.9-5.9 5.9z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgIgnored;\n","import React from 'react';\n\nconst SvgIgnoredOutlined: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M17.847 9.402a6.34 6.34 0 00-.8-1.322L8.08 17.048A6.34 6.34 0 0012 18.4a6.398 6.398 0 005.847-8.998zm-7.283 7.283l6.121-6.121a4.898 4.898 0 01-6.121 6.121zm1.437-11.084a6.334 6.334 0 013.92 1.352L6.953 15.92A6.334 6.334 0 015.6 12c0-3.536 2.864-6.4 6.4-6.4zm0 1.5c.5 0 .982.075 1.436.215l-6.121 6.12A4.898 4.898 0 0112 7.1zM6.6 17.903A7.967 7.967 0 0012 20c4.417-.001 8.001-3.585 8.001-8.001a7.967 7.967 0 00-2.601-5.902A7.988 7.988 0 0012 4c-4.416 0-8 3.584-8 8a7.967 7.967 0 002.602 5.902zM12 2.5c-5.244 0-9.5 4.256-9.5 9.5s4.256 9.5 9.5 9.5 9.5-4.256 9.5-9.5-4.256-9.5-9.5-9.5z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgIgnoredOutlined;\n","import React from 'react';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport IgnoredIcon from '../../../../icons/Ignored';\nimport IgnoredOutlinedIcon from '../../../../icons/IgnoredOutlined';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n isIgnored: boolean;\n onClick: () => void;\n disabled?: boolean;\n};\n\nconst IgnoreButton = ({isIgnored, onClick, disabled}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n disabled={disabled}\n showForDisabled={true}\n icon={isIgnored ? IgnoredIcon : IgnoredOutlinedIcon}\n tooltipTitle={disabled ? i18n.text(\"You don't have permissions to ignore\") : i18n.text('Ignore')}\n onClick={onClick}\n size=\"XS\"\n disableRipple\n />\n );\n};\n\nexport default IgnoreButton;\n","import React from 'react';\n\nconst SvgPin: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16 4v6l2 2v2h-5v7l-.992 1L11 21v-7H6v-2l2-2V4H7V2h10v2h-1z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgPin;\n","import React from 'react';\n\nconst SvgPinOutlined: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16 10V4h1V2H7v2h1v6l-2 2v2h5v7l1.008 1L13 21v-7h5v-2l-2-2zm-6-6h4v7l1 1H9l1-1V4z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgPinOutlined;\n","import React from 'react';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport PinIcon from '../../../../icons/Pin';\nimport PinOutlinedIcon from '../../../../icons/PinOutlined';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n isPinned: boolean;\n onClick: () => void;\n disabled?: boolean;\n};\n\nconst PinButton = ({isPinned, onClick, disabled}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n disabled={disabled}\n showForDisabled={true}\n onClick={onClick}\n icon={isPinned ? PinIcon : PinOutlinedIcon}\n tooltipTitle={disabled ? \"You don't have permissions to pin\" : i18n.text('Pin')}\n size=\"XS\"\n disableRipple\n />\n );\n};\n\nexport default PinButton;\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport mdmModule from '@reltio/mdm-module';\nimport {Crosswalk, findSourceSystemByUri, Source} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport SourceIcon from '../../../SourceIcon/SourceIcon';\nimport classnames from 'classnames';\n\nimport {useCrosswalkFocus} from '../../../../contexts';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: Crosswalk;\n color: string;\n focusable?: boolean;\n className?: string;\n};\n\nconst SourceItem = ({crosswalk, color, className, focusable = false}: Props) => {\n const {toggleCrosswalkFocus, isFocused} = useCrosswalkFocus(crosswalk);\n const styles = useStyles({color, isFocused});\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const {label} = findSourceSystemByUri(metadata, crosswalk.type) as Source;\n return (\n <div className={classnames(styles.sourceItem, className)}>\n <SourceIcon className={styles.sourceIcon} sourceType={crosswalk.type} />\n <div className={styles.sourceInfo}>\n <div>\n <span className={styles.label}>{label}</span>\n {focusable && (\n <SmallIconButtonWithTooltip\n icon={VisibilityIcon}\n className={styles.eyeIcon}\n size={'XXS'}\n tooltipTitle={i18n.text('Focus')}\n onClick={() => toggleCrosswalkFocus()}\n />\n )}\n </div>\n <div className={styles.crosswalkValue}>{crosswalk.value}</div>\n </div>\n </div>\n );\n};\n\nexport default SourceItem;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n color: string;\n isOpaque?: boolean;\n isFocused?: boolean;\n};\n\nexport const useStyles = makeStyles({\n sourceItem: {\n display: 'flex',\n overflow: 'hidden'\n },\n eyeIcon: ({isFocused}: StylesProps) => ({\n marginLeft: '10px',\n color: isFocused ? '#000' : 'rgba(0, 0, 0, 0.54)'\n }),\n label: {\n color: 'rgba(0, 0, 0, 0.87)',\n verticalAlign: 'top',\n fontSize: '13px',\n lineHeight: '16px'\n },\n sourceInfo: {\n overflow: 'hidden'\n },\n crosswalkValue: {\n color: 'rgba(0, 0, 0, 0.54)',\n fontSize: '12px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n sourceIcon: ({color}: StylesProps) => ({\n height: '16px',\n width: '16px',\n marginRight: '9px',\n fontSize: '14px',\n backgroundColor: color\n }),\n crosswalkIcon: ({color, isOpaque}: StylesProps) => ({\n backgroundColor: color,\n height: '12px',\n width: '12px',\n borderRadius: '30px',\n opacity: isOpaque ? 1 : 0.38,\n transition: 'opacity 0.3s'\n })\n});\n\nexport const useComplexAttributeLabelStyles = makeStyles(() => ({\n label: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 'normal',\n marginLeft: '2px',\n marginRight: '8px'\n }\n}));\n","import {debounce} from '@reltio/mdm-sdk';\nimport {useCallback, useEffect, useState} from 'react';\n\nenum AttributeStates {\n READING = 'READING',\n HOVERED = 'HOVERED',\n EDITING = 'EDITING'\n}\n\nconst HIDE_INTERVAL = 50;\n\nexport const useAttributeState = () => {\n const [attributeState, setAttributeState] = useState<AttributeStates>(null);\n const isReadingMode = attributeState === AttributeStates.READING;\n const isEditingMode = attributeState === AttributeStates.EDITING;\n const isHovered = attributeState === AttributeStates.HOVERED;\n\n useEffect(() => {\n setAttributeState(AttributeStates.READING);\n }, []);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const setAttributeStateDebounced = useCallback(debounce(setAttributeState, HIDE_INTERVAL), []);\n\n const onMouseEnter = useCallback(() => {\n if (!isEditingMode) setAttributeStateDebounced(AttributeStates.HOVERED);\n }, [setAttributeStateDebounced, isEditingMode]);\n\n const onMouseLeave = useCallback(() => {\n if (!isEditingMode) setAttributeStateDebounced(AttributeStates.READING);\n }, [setAttributeStateDebounced, isEditingMode]);\n\n const setReadingMode = useCallback(() => setAttributeState(AttributeStates.READING), [setAttributeState]);\n const setEditingMode = useCallback(() => setAttributeState(AttributeStates.EDITING), [setAttributeState]);\n\n return {\n setReadingMode,\n setEditingMode,\n onMouseLeave,\n onMouseEnter,\n isReadingMode,\n isEditingMode,\n isHovered\n };\n};\n","import {AttributeType, AttributeValue, DataTypes, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport React, {memo} from 'react';\nimport {ReadOnlyAttribute} from '../../..';\nimport ImageAttributesLine from '../ImageAttributesLine';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n expanded?: boolean;\n valueContainerClassName?: string;\n LabelRenderer?: ({attributeType: AttributeType, attributeValue: AttributeValue}) => JSX.Element;\n showNonOv?: boolean;\n};\n\nconst renderAttributesList = ({values, valueContainerClassName, ...props}: Props) => {\n return (\n <>\n {(values || []).map((attributeValue) => (\n <div key={attributeValue.uri} className={valueContainerClassName}>\n <ReadOnlyAttribute attributeValue={attributeValue} {...props} />\n </div>\n ))}\n </>\n );\n};\n\nconst AttributeValuesBlock = ({expanded, LabelRenderer, ...props}: Props) => {\n const {attributeType, values, valueContainerClassName} = props;\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n case DataTypes.TYPE_REFERENCE: {\n return renderAttributesList({expanded, LabelRenderer, ...props});\n }\n case DataTypes.TYPE_IMAGE: {\n return (\n <div className={valueContainerClassName}>\n <ImageAttributesLine\n attributeType={attributeType}\n attributeValues={values as ImageAttributeValue[]}\n imageSize={{imageHeight: 40, imageWidth: 40, imageMargin: 2}}\n />\n </div>\n );\n }\n default: {\n return renderAttributesList({...props});\n }\n }\n};\n\nexport default memo(AttributeValuesBlock);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n coloredCell: {\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: 'rgba(0,0,0,0.06)',\n pointerEvents: 'none'\n }\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '12px',\n height: '100%',\n color: theme.palette.text.secondary\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n cellValueWrapper: {\n padding: '15px 15px 0 15px',\n '&:last-child': {\n paddingBottom: '15px'\n }\n },\n attributeTitle: {\n display: 'block',\n marginLeft: '3px',\n '&:not(:last-child)': {\n marginBottom: '5px'\n }\n },\n ovValue: {\n '& + &': {\n marginTop: '4px'\n }\n },\n count: {\n textAlign: 'center'\n },\n ruleType: {\n display: 'flex',\n alignItems: 'center'\n },\n ruleTypeLabel: {\n marginRight: '5px'\n },\n rulePopup: {\n width: '270px',\n overflowY: 'hidden'\n },\n popupItem: {\n paddingBottom: '5px',\n paddingTop: '5px'\n },\n sourceIcon: {\n height: '16px',\n width: '16px',\n marginRight: '9px',\n fontSize: '14px'\n },\n closeButton: {\n height: 24,\n width: 24\n },\n popupTitle: {\n fontWeight: 500,\n marginLeft: '12px'\n },\n popupTitleWrapper: {\n display: 'flex',\n paddingLeft: 16,\n paddingTop: 16\n },\n popupItemsWrapper: {\n overflowY: 'auto',\n maxHeight: '280px'\n },\n winnerSourceItemWrapper: {\n paddingBottom: '2px',\n paddingTop: '2px'\n },\n winnerSourceItem: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n paddingLeft: '8px'\n },\n winnerSourceItemLabel: {\n fontSize: 13\n }\n}));\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props: React.PropsWithChildren<Record<string, unknown>>) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.headCell, styles.coloredCell)}>\n <DefaultHeadCellRenderer {...props} />\n {props.children}\n </div>\n );\n};\n\nexport default HeadCellRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n marginBottom: '-6px'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport {AddInlineAttributeEvent} from '../../../attributes/inline';\nimport MoreAttributesButton from '../../../attributes/editMode/MoreAttributesButton/MoreAttributesButton';\nimport {withTableContext} from '../../../BasicTableView';\nimport i18n from 'ui-i18n';\nimport {both, either, filter, pick, pipe, propEq, propOr, reject} from 'ramda';\nimport {\n AttributeType,\n checkCanCreateAttribute,\n isImage,\n isNested,\n isReadableAttribute,\n isReference,\n ModeTypes\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n parentUri: string;\n parentTypeUri: string;\n selectedAttributeTypes?: AttributeType[];\n onSelectAttributeTypes: (selected: AttributeType[]) => void;\n onAdd: (event: AddInlineAttributeEvent) => void;\n};\n\nexport const AddAttributesButton = ({\n parentTypeUri,\n parentUri,\n selectedAttributeTypes,\n onSelectAttributeTypes,\n onAdd\n}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const parentType = [...metadata.entityTypes, ...(metadata.relationTypes || [])].find(propEq('uri', parentTypeUri));\n const isNotSelected = (attrType: AttributeType) => !selectedAttributeTypes?.find(propEq('uri', attrType.uri));\n const canCreate = (attributeType) => checkCanCreateAttribute({attributeType, mode: ModeTypes.EDITING});\n\n const data = pipe(\n propOr([], 'attributes'),\n reject(either(isReference, isImage)),\n filter(either(isNested, isNotSelected)),\n filter(both(isReadableAttribute, canCreate))\n )(parentType);\n\n const handleAdd = (addedTypes: AttributeType[]) => {\n const typesToSelect = addedTypes.filter(isNotSelected);\n if (typesToSelect.length > 0) {\n onSelectAttributeTypes([...typesToSelect, ...selectedAttributeTypes]);\n }\n addedTypes.filter(isNested).forEach((attributeType) => {\n onAdd({attributeType, parentUri});\n });\n };\n\n return (\n <div className={styles.root}>\n <MoreAttributesButton\n label={i18n.text('Attribute')}\n popupTitle={i18n.text('Add attributes')}\n data={data}\n onApply={handleAdd}\n />\n </div>\n );\n};\n\nexport default withTableContext(\n pick(['parentUri', 'parentTypeUri', 'onAdd', 'selectedAttributeTypes', 'onSelectAttributeTypes'])\n)(AddAttributesButton);\n","import React from 'react';\nimport HeadCellRenderer from './HeadCellRenderer';\nimport AddAttributesButton from '../AddAttributesButton/AddAttributesButton';\nimport Spacer from '../../../Spacer/Spacer';\nimport {withTableContext} from '../../../BasicTableView';\nimport {pick} from 'ramda';\n\ntype Props = {\n readOnly?: boolean;\n headCellData: {\n label: string;\n };\n};\n\nexport const AttributesHeadCellRenderer = ({readOnly, ...props}: Props) => {\n return readOnly ? (\n <HeadCellRenderer {...props} />\n ) : (\n <HeadCellRenderer {...props}>\n <Spacer />\n <AddAttributesButton />\n </HeadCellRenderer>\n );\n};\n\nexport default withTableContext(pick(['readOnly']))(AttributesHeadCellRenderer);\n","import React from 'react';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: unknown;\n};\n\nconst DefaultCellValueRenderer = ({value}: Props) => {\n const styles = useStyles();\n return <div className={styles.cellValueWrapper}>{value}</div>;\n};\n\nexport default DefaultCellValueRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n simpleAttributeWrapper: {\n padding: '15px'\n },\n complexAttributeWrapper: {\n padding: '15px',\n '& + &': {\n borderTop: '1px solid rgba(0,0,0,.1)'\n }\n }\n}));\n","import React from 'react';\nimport {InlineAttributesPager} from '../../../../attributes/inline';\nimport {AttributesRendererProps} from './AttributesFactory';\nimport {SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst SimpleAttributesRenderer = ({attributeValues, ...props}: AttributesRendererProps) => {\n const styles = useStyles();\n return (\n <div className={styles.simpleAttributeWrapper}>\n <InlineAttributesPager attributeValues={attributeValues as SimpleAttributeValue[]} {...props} />\n </div>\n );\n};\n\nexport default SimpleAttributesRenderer;\n","import React from 'react';\nimport {AttributesRendererProps} from './AttributesFactory';\nimport {InlineNestedAttribute} from '../../../../attributes/inline';\nimport {NestedAttributeValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst NestedAttributesRenderer = ({attributeValues, ...props}: AttributesRendererProps) => {\n const styles = useStyles();\n const nestedValues = attributeValues?.map((attributeValue, i) => {\n return (\n <div\n key={attributeValue?.uri}\n className={styles.complexAttributeWrapper}\n data-reltio-id={`value-index-${i}`}\n >\n <InlineNestedAttribute attributeValue={attributeValue as NestedAttributeValue} {...props} />\n </div>\n );\n });\n return <>{nestedValues}</>;\n};\n\nexport default NestedAttributesRenderer;\n","import React from 'react';\nimport {AttributesRendererProps} from './AttributesFactory';\nimport {InlineReferenceAttribute, RelationCrosswalksMap} from '../../../../attributes/inline';\nimport {ReferenceAttributeValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst ReferenceAttributesRenderer = ({attributeValues, crosswalksMap, ...props}: AttributesRendererProps) => {\n const styles = useStyles();\n const referenceValues = attributeValues?.map((attributeValue, i) => {\n return (\n <div\n key={attributeValue?.uri}\n className={styles.complexAttributeWrapper}\n data-reltio-id={`value-index-${i}`}\n >\n <InlineReferenceAttribute\n attributeValue={attributeValue as ReferenceAttributeValue}\n crosswalksMap={crosswalksMap as RelationCrosswalksMap}\n {...props}\n />\n </div>\n );\n });\n return <>{referenceValues}</>;\n};\n\nexport default ReferenceAttributesRenderer;\n","import React from 'react';\nimport {AttributesRendererProps} from './AttributesFactory';\nimport {InlineImageAttribute} from '../../../../attributes/inline';\nimport {ImageAttributeValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst ImageAttributesRenderer = ({attributeValues, ...props}: AttributesRendererProps) => {\n const styles = useStyles();\n\n return (\n <>\n {attributeValues?.map((attributeValue, i) => (\n <div\n key={attributeValue?.uri}\n className={styles.complexAttributeWrapper}\n data-reltio-id={`value-index-${i}`}\n >\n <InlineImageAttribute attributeValue={attributeValue as ImageAttributeValue} {...props} />\n </div>\n ))}\n </>\n );\n};\n\nexport default ImageAttributesRenderer;\n","import {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\nimport AttributesFactory from './attribute-renderers/AttributesFactory';\nimport {\n AddInlineAttributeEvent,\n CrosswalksMap,\n DeleteInlineAttributeEvent,\n EditInlineAttributeEvent,\n IgnoreInlineAttributeEvent,\n PinInlineAttributeEvent\n} from '../../../attributes/inline';\nimport {withTableContext} from '../../../BasicTableView';\nimport {pick} from 'ramda';\n\ntype Props = {\n value: {\n attributeValues?: AttributeValue[];\n attributeType: AttributeType;\n crosswalksMap: CrosswalksMap;\n };\n onDelete: (event: DeleteInlineAttributeEvent) => void;\n onEdit: (event: EditInlineAttributeEvent) => void;\n onPin: (event: PinInlineAttributeEvent) => void;\n onIgnore: (event: IgnoreInlineAttributeEvent) => void;\n onAdd: (event: AddInlineAttributeEvent) => void;\n parentUri: string;\n readOnly?: boolean;\n};\n\nexport const AttributeValuesRenderer = ({\n value,\n onDelete,\n onEdit,\n onPin,\n onIgnore,\n onAdd,\n parentUri,\n readOnly\n}: Props) => {\n return AttributesFactory.build(value.attributeType.type, {\n ...value,\n parentUri,\n onDelete,\n onEdit,\n onPin,\n onIgnore,\n onAdd,\n disableEdit: readOnly,\n disableDelete: readOnly\n });\n};\n\nexport default withTableContext(pick(['onDelete', 'onPin', 'onIgnore', 'onEdit', 'onAdd', 'parentUri', 'readOnly']))(\n AttributeValuesRenderer\n);\n","import React from 'react';\nimport {AttributeType, AttributeValue, DataTypes} from '@reltio/mdm-sdk';\nimport SimpleAttributesRenderer from './SimpleAttributesRenderer';\nimport NestedAttributesRenderer from './NestedAttributesRenderer';\nimport ReferenceAttributesRenderer from './ReferenceAttributesRenderer';\nimport ImageAttributesRenderer from './ImageAttributesRenderer';\nimport {\n AddInlineAttributeEvent,\n CrosswalksMap,\n DeleteInlineAttributeEvent,\n EditInlineAttributeEvent,\n IgnoreInlineAttributeEvent,\n PinInlineAttributeEvent\n} from '../../../../attributes/inline';\n\nexport type AttributesRendererProps = {\n attributeValues?: AttributeValue[];\n attributeType: AttributeType;\n crosswalksMap: CrosswalksMap;\n parentUri: string;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onDelete: (event: DeleteInlineAttributeEvent) => void;\n onEdit: (event: EditInlineAttributeEvent) => void;\n onPin: (event: PinInlineAttributeEvent) => void;\n onIgnore: (event: IgnoreInlineAttributeEvent) => void;\n onAdd: (event: AddInlineAttributeEvent) => void;\n};\n\nexport default class AttributesFactory {\n static build(type: string, props: AttributesRendererProps) {\n switch (type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttributesRenderer {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttributesRenderer {...props} />;\n case DataTypes.TYPE_IMAGE:\n return <ImageAttributesRenderer {...props} />;\n default:\n return <SimpleAttributesRenderer {...props} />;\n }\n }\n}\n","import React from 'react';\nimport AttributeTitle from '../../../Title/Title';\nimport ReadOnlyAttributeValuesBlock from '../../../attributes/readMode/AttributeValuesBlock/AttributeValuesBlock';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n values?: AttributeValue[];\n attributeType: AttributeType;\n };\n};\n\nconst OvValuesRenderer = ({value: {values, attributeType}}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.cellValueWrapper}>\n <AttributeTitle className={styles.attributeTitle} label={attributeType.label} />\n <ReadOnlyAttributeValuesBlock\n values={values}\n attributeType={attributeType}\n valueContainerClassName={styles.ovValue}\n />\n </div>\n );\n};\n\nexport default OvValuesRenderer;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: number;\n};\n\nconst CountRenderer = ({value}: Props) => {\n const styles = useStyles();\n return <div className={classnames(styles.cellValueWrapper, styles.count)}>{value}</div>;\n};\n\nexport default CountRenderer;\n","import React, {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {cond, prop} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {IconButton as IconButton} from '@material-ui/core';\nimport {List as List} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {ListItemText as ListItemText} from '@material-ui/core';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport InfoIcon from '@material-ui/icons/Info';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport SourceIcon from '../../../SourceIcon/SourceIcon';\nimport mdmModule from '@reltio/mdm-module';\nimport {findAttributeTypeByUri, getLabel, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst SourcesRenderer = ({sourcesUriOrder}: {sourcesUriOrder: string[]}) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n return (\n <>\n {sourcesUriOrder.map((sourceUri) => (\n <ListItem key={sourceUri} className={styles.popupItem}>\n <SourceIcon className={styles.sourceIcon} sourceType={sourceUri} />\n <ListItemText\n primary={getSourceSystemLabel(metadata, sourceUri)}\n primaryTypographyProps={{variant: 'body2'}}\n />\n </ListItem>\n ))}\n </>\n );\n};\n\nconst AttributeRenderer = ({attributeUri}: {attributeUri: string}) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const attributeType = findAttributeTypeByUri(metadata, attributeUri);\n return (\n <ListItem key={attributeType.uri} className={styles.popupItem}>\n <ListItemText primary={getLabel(attributeType.label)} primaryTypographyProps={{variant: 'body2'}} />\n </ListItem>\n );\n};\n\nconst getInfoTitle = cond([\n [prop('sourcesUriOrder'), () => i18n.text('Source sequence')],\n [prop('primaryAttributeUri'), () => i18n.text('Attribute winner')],\n [prop('comparisonAttributeUri'), () => i18n.text('Comparison attribute')]\n]);\n\nconst getInfoContent = cond([\n // eslint-disable-next-line react/display-name\n [prop('sourcesUriOrder'), ({sourcesUriOrder}) => <SourcesRenderer sourcesUriOrder={sourcesUriOrder} />],\n // eslint-disable-next-line react/display-name\n [prop('primaryAttributeUri'), ({primaryAttributeUri}) => <AttributeRenderer attributeUri={primaryAttributeUri} />],\n [\n prop('comparisonAttributeUri'),\n // eslint-disable-next-line react/display-name\n ({comparisonAttributeUri}) => <AttributeRenderer attributeUri={comparisonAttributeUri} />\n ]\n]);\n\ntype Props = {\n info: {\n sourcesUriOrder?: string[];\n primaryAttributeUri?: string;\n comparisonAttributeUri?: string;\n };\n};\n\nconst RuleTypeInfoButton = ({info}: Props) => {\n const styles = useStyles();\n const [anchorEl, setAnchorEl] = useState(null);\n const openPopup = (event) => setAnchorEl(event.currentTarget);\n const closePopup = () => setAnchorEl(null);\n\n return (\n <>\n <SmallIconButtonWithTooltip\n icon={InfoIcon}\n tooltipTitle={i18n.text('View details')}\n size={'XS'}\n onClick={openPopup}\n />\n <Popover\n classes={{paper: styles.rulePopup}}\n open={!!anchorEl}\n anchorEl={anchorEl}\n onClose={closePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <div className={styles.popupTitleWrapper}>\n <IconButton className={styles.closeButton} onClick={closePopup}>\n <CloseIcon />\n </IconButton>\n <Typography variant={'subtitle1'} className={styles.popupTitle}>\n {getInfoTitle(info)}\n </Typography>\n </div>\n <List component=\"div\" className={styles.popupItemsWrapper}>\n {getInfoContent(info)}\n </List>\n </Popover>\n </>\n );\n};\n\nexport default RuleTypeInfoButton;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {SurvivorStrategy} from '@reltio/mdm-sdk';\nimport RuleTypeInfoButton from './RuleTypeInfoButton';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n ruleType: SurvivorStrategy;\n sourcesUriOrder?: string[];\n primaryAttributeUri?: string;\n comparisonAttributeUri?: string;\n };\n};\n\nconst RuleTypeRenderer = ({value: {ruleType, sourcesUriOrder, primaryAttributeUri, comparisonAttributeUri}}: Props) => {\n const styles = useStyles();\n const showInfoIcon = sourcesUriOrder || primaryAttributeUri || comparisonAttributeUri;\n\n return (\n <div className={classnames(styles.cellValueWrapper, styles.ruleType)}>\n <div className={styles.ruleTypeLabel}>{ruleType.label}</div>\n {showInfoIcon && (\n <RuleTypeInfoButton\n info={{\n sourcesUriOrder,\n primaryAttributeUri,\n comparisonAttributeUri\n }}\n />\n )}\n </div>\n );\n};\n\nexport default RuleTypeRenderer;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport {List as List} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {ListItemText as ListItemText} from '@material-ui/core';\nimport {CrosswalkBase, getCrosswalkColor, getCrosswalkId, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport SourceIcon from '../../../SourceIcon/SourceIcon';\nimport {useCrosswalkHighlight} from '../../../../contexts';\nimport mdmModule from '@reltio/mdm-module';\nimport ColoredBlock from '../../ColoredBlock/ColoredBlock';\nimport {useStyles} from './styles';\n\nconst WinnerSource = ({crosswalk}: {crosswalk: CrosswalkBase}) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const {isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(crosswalk);\n\n return (\n <ColoredBlock\n className={styles.winnerSourceItem}\n color={getCrosswalkColor(getCrosswalkId(crosswalk))}\n opacity={isDimmed ? 0.38 : 1}\n onMouseEnter={() => highlightCrosswalk()}\n onMouseLeave={() => removeHighlight()}\n >\n <SourceIcon className={styles.sourceIcon} sourceType={crosswalk.type} />\n <ListItemText\n primary={getSourceSystemLabel(metadata, crosswalk.type)}\n primaryTypographyProps={{variant: 'body2'}}\n classes={{primary: styles.winnerSourceItemLabel}}\n />\n </ColoredBlock>\n );\n};\n\ntype Props = {\n value: {\n crosswalks: CrosswalkBase[];\n };\n};\n\nconst WinnerSourcesRenderer = ({value: {crosswalks}}: Props) => {\n const styles = useStyles();\n return (\n <List component=\"div\">\n {crosswalks.map((crosswalk) => (\n <ListItem key={crosswalk.uri} className={styles.winnerSourceItemWrapper}>\n <WinnerSource crosswalk={crosswalk} />\n </ListItem>\n ))}\n </List>\n );\n};\n\nexport default WinnerSourcesRenderer;\n","import i18n from 'ui-i18n';\nimport {\n assoc,\n chain,\n curry,\n descend,\n filter,\n find,\n flatten,\n map,\n pickBy,\n pipe,\n prop,\n propEq,\n propOr,\n reduce,\n sortWith,\n uniq,\n uniqBy,\n values\n} from 'ramda';\n\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport AttributesHeadCellRenderer from './cell-renderers/AttributesHeadCellRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport AttributeValuesRenderer from './cell-renderers/AttributeValuesRenderer';\nimport OvValuesRenderer from './cell-renderers/OvValuesRenderer';\nimport CountRenderer from './cell-renderers/CountRenderer';\nimport RuleTypeRenderer from './cell-renderers/RuleTypeRenderer';\nimport WinnerSourcesRenderer from './cell-renderers/WinnerSourcesRenderer';\nimport {\n areOneHierarchyUris,\n AttributeType,\n AttributeValue,\n DataTypes,\n findValueInAttributesByUriSuffix,\n getBaseUri,\n getCrosswalksTypes,\n getDefaultSurvivorshipStrategy,\n getLastUriPart,\n getReferencedAttrTypeUrisFromAttrType,\n getSurvivorshipStrategy,\n isComplexAttribute,\n isOv,\n isReference,\n isTempUri,\n Metadata,\n RecordAttributesType,\n SurvivorStrategy\n} from '@reltio/mdm-sdk';\nimport {CrosswalksMap} from '../../attributes/inline';\nimport {CrosswalksByOwnerTypeMap} from '../types';\n\nexport const COLUMNS_DATA = [\n {\n id: 'ovValues',\n get label() {\n return i18n.text('Attributes & OV');\n },\n hideable: false,\n initialWidth: 360,\n minWidth: 250\n },\n {\n id: 'winnerSources',\n get label() {\n return i18n.text('Winner source systems');\n },\n initialWidth: 220\n },\n {\n id: 'ruleType',\n get label() {\n return i18n.text('Rule type');\n },\n initialWidth: 200\n },\n {\n id: 'count',\n get label() {\n return i18n.text('Count');\n },\n initialWidth: 80,\n minWidth: 80\n },\n {\n id: 'values',\n get label() {\n return i18n.text('Attribute values');\n },\n hideable: false\n }\n];\n\nconst isOvValue = (value: AttributeValue) => isOv(value) && !isTempUri(value.uri);\n\nexport const DEFAULT_VISIBLE_COLUMNS = ['ovValues', 'ruleType', 'values'];\n\nconst getCellValueRenderer = (columnId: string) => {\n switch (columnId) {\n case 'ovValues':\n return OvValuesRenderer;\n case 'values':\n return AttributeValuesRenderer;\n case 'count':\n return CountRenderer;\n case 'ruleType':\n return RuleTypeRenderer;\n case 'winnerSources':\n return WinnerSourcesRenderer;\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nexport const countAttributeValues = (\n type: string,\n values: AttributeValue[] = [],\n crosswalksMap: CrosswalksMap\n): number => {\n switch (type) {\n case DataTypes.TYPE_REFERENCE:\n case DataTypes.TYPE_NESTED:\n case DataTypes.TYPE_IMAGE:\n return values.length;\n default:\n return values.reduce((acc, value) => acc + crosswalksMap[value.uri].length, 0);\n }\n};\n\nconst isSourceSystemRule = (ruleType: SurvivorStrategy) =>\n ruleType?.uri === 'configuration/survivorshipStrategies/SRC_SYS';\nconst isOtherAttributeWinnerRule = (ruleType: SurvivorStrategy) =>\n ruleType?.uri === 'configuration/survivorshipStrategies/OtherAttributeWinnerCrosswalk';\nconst isMinMaxValueRule = (ruleType: SurvivorStrategy) =>\n ruleType?.uri === 'configuration/survivorshipStrategies/MinValue' ||\n ruleType?.uri === 'configuration/survivorshipStrategies/MaxValue';\n\nconst getSourcesUriOrderFromMetadata = pipe(\n getCrosswalksTypes,\n sortWith([descend(propOr(-1, 'priority'))]),\n map(prop('uri'))\n);\n\nconst fixReferencedAttributeUri = curry((parentType: AttributeType, attrTypeUri: string) => {\n if (isReference(parentType) && attrTypeUri) {\n const referencedAttrUri = pipe(\n getReferencedAttrTypeUrisFromAttrType,\n find((uri) => uri.slice(getBaseUri(uri).length) === attrTypeUri.slice(parentType.uri.length))\n )(parentType);\n return referencedAttrUri || attrTypeUri;\n } else {\n return attrTypeUri;\n }\n});\n\nexport const getRuleTypeValues = (metadata: Metadata, attributeType: AttributeType, parentTypeUri: string) => {\n const parentType = [...metadata.entityTypes, ...(metadata.relationTypes || [])].find(propEq('uri', parentTypeUri));\n const defaultSurvivorshipGroup = parentType?.survivorshipGroups?.find(propEq('default', true));\n const mapping = defaultSurvivorshipGroup?.mapping?.find(propEq('attribute', attributeType.uri));\n const ruleType =\n getSurvivorshipStrategy(metadata, mapping?.survivorshipStrategy) || getDefaultSurvivorshipStrategy(metadata);\n const sourcesUriOrder = isSourceSystemRule(ruleType)\n ? uniq([\n ...(mapping?.sourcesUriOrder || []),\n ...(defaultSurvivorshipGroup?.sourcesUriOrder || []),\n ...getSourcesUriOrderFromMetadata(metadata)\n ])\n : undefined;\n const fixUri = fixReferencedAttributeUri(attributeType);\n const primaryAttributeUri = isOtherAttributeWinnerRule(ruleType) ? fixUri(mapping?.primaryAttributeUri) : undefined;\n const comparisonAttributeUri =\n isComplexAttribute(attributeType) && isMinMaxValueRule(ruleType)\n ? fixUri(mapping?.comparisonAttributeUri)\n : undefined;\n return {\n ruleType,\n sourcesUriOrder,\n primaryAttributeUri,\n comparisonAttributeUri\n };\n};\n\nexport const getWinnerCrosswalks = (attributeValues: AttributeValue[] = [], crosswalksMap: CrosswalksMap) => {\n return pipe(\n filter(isOvValue),\n chain((value: AttributeValue) =>\n pipe(\n pickBy((_, attrUri) => {\n const isInHierarchy = areOneHierarchyUris(attrUri, value.uri);\n const subAttrUriSuffix = isInHierarchy ? attrUri.slice(value.uri.length + 1) : '';\n const subAttrValue =\n subAttrUriSuffix && findValueInAttributesByUriSuffix(value.value, subAttrUriSuffix);\n return isInHierarchy && (!subAttrValue || isOvValue(subAttrValue));\n }),\n values,\n flatten\n )(crosswalksMap)\n ),\n uniqBy(prop('uri'))\n )(attributeValues);\n};\n\nexport const getBasicTableColumnsData = map(({id, label, initialWidth, minWidth}) => ({\n id,\n label,\n initialWidth,\n minWidth,\n autoResize: !initialWidth,\n resizable: true,\n sortable: false,\n headCellRenderer: id === 'ovValues' ? AttributesHeadCellRenderer : HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(id)\n}));\n\nconst getRowValueForColumn = (\n columnId: string,\n metadata: Metadata,\n parentTypeUri: string,\n attributeType: AttributeType,\n crosswalksMap: CrosswalksMap,\n attributeValues: AttributeValue[]\n) => {\n switch (columnId) {\n case 'ovValues':\n return {\n attributeType,\n values: attributeValues?.filter(isOvValue)\n };\n case 'values':\n return {\n attributeType,\n attributeValues,\n crosswalksMap\n };\n case 'count':\n return countAttributeValues(attributeType.type, attributeValues, crosswalksMap);\n case 'ruleType':\n return getRuleTypeValues(metadata, attributeType, parentTypeUri);\n case 'winnerSources':\n return {crosswalks: getWinnerCrosswalks(attributeValues, crosswalksMap)};\n default:\n return null;\n }\n};\n\nexport const getBasicTableRowsData = (\n metadata: Metadata,\n parentTypeUri: string,\n attrTypes: AttributeType[] = [],\n columns: string[],\n crosswalksMap: CrosswalksByOwnerTypeMap,\n attributes: RecordAttributesType\n) => {\n return attrTypes.map((attributeType: AttributeType) => {\n const attrName = getLastUriPart(attributeType.uri);\n const attrValues = attributes[attrName] as AttributeValue[];\n const crosswalksMapForAttribute = isReference(attributeType) ? crosswalksMap.relation : crosswalksMap.entity;\n return pipe(\n reduce(\n (acc, columnId) =>\n assoc(\n columnId,\n getRowValueForColumn(\n columnId,\n metadata,\n parentTypeUri,\n attributeType,\n crosswalksMapForAttribute,\n attrValues\n ),\n acc\n ),\n {}\n ),\n assoc('rawValue', attrValues)\n )(columns);\n });\n};\n","import React from 'react';\nimport classnames from 'classnames';\n// eslint-disable-next-line import/named\nimport {ColumnData} from '../../../BasicTableView';\nimport {useStyles} from './styles';\n\ntype Props = {\n cell: {\n values: unknown[];\n };\n columnData: ColumnData;\n CellValueRenderer: React.ElementType;\n columnIndex: number;\n};\n\nconst RowCellRenderer = ({cell, CellValueRenderer, columnIndex, columnData, ...otherProps}: Props) => {\n const styles = useStyles();\n const isFirstColumn = columnIndex === 0;\n return (\n <div\n className={classnames(styles.rowCell, isFirstColumn && styles.coloredCell)}\n data-reltio-id={`column-name-${columnData.id}`}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default RowCellRenderer;\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogContentText as DialogContentText} from '@material-ui/core';\nimport {Radio as Radio} from '@material-ui/core';\nimport {RadioGroup as RadioGroup} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {FormControl as FormControl} from '@material-ui/core';\nimport {FormLabel as FormLabel} from '@material-ui/core';\nimport {getValue} from '../../../../core';\nimport {pipe} from 'ramda';\n\ntype Props = {\n open: boolean;\n onClose: () => void;\n onConfirmEditWithIgnore: () => void;\n onConfirmEditWithoutIgnore: () => void;\n};\n\nconst ConfirmEditIgnoredDialog = ({open, onClose, onConfirmEditWithoutIgnore, onConfirmEditWithIgnore}: Props) => {\n const [option, setOption] = useState<'with' | 'without'>('without');\n\n return (\n <Dialog open={open} onEnter={() => setOption('without')}>\n <DialogContent>\n <DialogContentText>\n {i18n.text('You are attempting to change a value that is presently ignored.')}\n </DialogContentText>\n <FormControl component=\"fieldset\">\n <FormLabel component=\"legend\">{i18n.text('Please choose an option:')}</FormLabel>\n <RadioGroup value={option} onChange={pipe(getValue, setOption)}>\n <FormControlLabel\n value=\"without\"\n control={<Radio />}\n label={i18n.text('Save without Ignore')}\n />\n <FormControlLabel\n value=\"with\"\n control={<Radio />}\n label={i18n.text('Save and apply Ignore to new value')}\n />\n </RadioGroup>\n </FormControl>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} color=\"primary\">\n {i18n.text('Cancel')}\n </Button>\n <Button\n onClick={() => {\n option === 'with' ? onConfirmEditWithIgnore() : onConfirmEditWithoutIgnore();\n onClose();\n }}\n color=\"primary\"\n >\n {i18n.text('Ok')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default ConfirmEditIgnoredDialog;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n tableContainer: {\n height: '100%',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column'\n },\n tableHeader: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between'\n },\n tableContent: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflow: 'hidden',\n position: 'relative'\n }\n});\n","import React, {memo, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n findAttributeTypeByUri,\n isReadableAttribute,\n makeAttrTypeUri,\n Relation\n} from '@reltio/mdm-sdk';\nimport {\n AddInlineAttributeEvent,\n DeleteInlineAttributeEvent,\n EditInlineAttributeEvent,\n IgnoreInlineAttributeEvent,\n PinInlineAttributeEvent\n} from '../../attributes/inline';\nimport {BasicTable, ColumnsSettings, RowCellAutoSizer, useDynamicRowCellHeight} from '../../BasicTableView';\nimport BasicViewHeader from '../../BasicViewHeader/BasicViewHeader';\nimport {COLUMNS_DATA, DEFAULT_VISIBLE_COLUMNS, getBasicTableColumnsData, getBasicTableRowsData} from './helpers';\nimport {always, either, filter, isNil, keys, map, pipe, without} from 'ramda';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport LinearLoadIndicator from '../../LinearLoadIndicator/LinearLoadIndicator';\nimport ConfirmDeleteDialog from '../../ConfirmDeleteDialog/ConfirmDeleteDialog';\nimport {CrosswalksByOwnerTypeMap} from '../types';\nimport ConfirmEditIgnoredDialog from './ConfirmEditIgnoredDialog/ConfirmEditIgnoredDialog';\nimport {noop} from '../../../core';\n\nimport {useStyles} from './styles';\n\nconst DEFAULT_ROW_HEIGHT = 68;\n\ntype Props = {\n entity?: Entity | Relation;\n isLoading?: boolean;\n crosswalksMap: CrosswalksByOwnerTypeMap;\n visibleColumns?: string[];\n onChangeVisibleColumns?: (visibleColumns: string[]) => void;\n readOnly?: boolean;\n onDelete?: (event: DeleteInlineAttributeEvent) => void;\n onPin?: (event: PinInlineAttributeEvent) => void;\n onIgnore?: (event: IgnoreInlineAttributeEvent) => void;\n onEdit?: (event: EditInlineAttributeEvent) => void;\n onAdd?: (event: AddInlineAttributeEvent) => void;\n selectedAttributeTypes?: AttributeType[];\n onSelectAttributeTypes?: (selected: AttributeType[]) => void;\n};\n\nconst AttributesTable = ({\n entity,\n isLoading,\n crosswalksMap,\n visibleColumns = DEFAULT_VISIBLE_COLUMNS,\n onChangeVisibleColumns,\n readOnly,\n onDelete = noop,\n onPin = noop,\n onIgnore = noop,\n onEdit = noop,\n onAdd = noop,\n selectedAttributeTypes,\n onSelectAttributeTypes = noop\n}: Props) => {\n const styles = useStyles();\n\n const visibleColumnsData = useMemo(() => {\n return pipe(\n filter(({id}) => visibleColumns.includes(id)),\n getBasicTableColumnsData\n )(COLUMNS_DATA);\n }, [visibleColumns]);\n\n const {type: parentTypeUri, uri: parentUri, attributes = {}} = entity || {};\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n useEffect(() => {\n if (entity && isNil(selectedAttributeTypes)) {\n const initialAttrTypes = pipe(\n keys,\n without(['paging']),\n map(makeAttrTypeUri(parentTypeUri)),\n map((attrTypeUri: string) => findAttributeTypeByUri(metadata, attrTypeUri, parentTypeUri)),\n filter(isReadableAttribute)\n )(attributes);\n onSelectAttributeTypes(initialAttrTypes);\n }\n }, [entity, selectedAttributeTypes]);\n\n const rowsData = useMemo(() => {\n return parentTypeUri\n ? getBasicTableRowsData(\n metadata,\n parentTypeUri,\n selectedAttributeTypes,\n visibleColumns,\n crosswalksMap,\n attributes\n )\n : [];\n }, [metadata, parentTypeUri, selectedAttributeTypes, visibleColumns, attributes, crosswalksMap]);\n\n const {getDynamicRowCellHeight, changeRowCellHeight} = useDynamicRowCellHeight();\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} />\n </RowCellAutoSizer>\n ),\n [changeRowCellHeight]\n );\n\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, always(DEFAULT_ROW_HEIGHT)), [\n getDynamicRowCellHeight\n ]);\n\n const [pendingDeletion, setPendingDeletion] = useState<DeleteInlineAttributeEvent>(null);\n const [pendingIgnoredEditing, setPendingIgnoredEditing] = useState<EditInlineAttributeEvent>(null);\n\n const handleEdit = useCallback(\n (event: EditInlineAttributeEvent) => {\n event.attributeValue.ignored ? setPendingIgnoredEditing(event) : onEdit(event);\n },\n [onEdit, setPendingIgnoredEditing]\n );\n\n const tableContext = useMemo(\n () => ({\n onDelete: setPendingDeletion,\n onPin,\n onIgnore,\n onEdit: handleEdit,\n onAdd,\n parentUri,\n parentTypeUri,\n selectedAttributeTypes,\n onSelectAttributeTypes,\n readOnly\n }),\n [\n setPendingDeletion,\n onPin,\n onIgnore,\n handleEdit,\n onAdd,\n parentUri,\n parentTypeUri,\n selectedAttributeTypes,\n onSelectAttributeTypes,\n readOnly\n ]\n );\n\n return (\n <div className={styles.tableContainer}>\n <BasicViewHeader classes={{root: styles.tableHeader}} title={i18n.text('Sources')}>\n <ColumnsSettings\n columnsData={COLUMNS_DATA}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeVisibleColumns}\n />\n </BasicViewHeader>\n <div className={styles.tableContent}>\n {isLoading && <LinearLoadIndicator />}\n <BasicTable\n fixFirstColumn\n headRowHeight={48}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n columnsData={visibleColumnsData}\n rowsData={rowsData}\n renderRowCell={renderRowCell}\n getRowCellHeight={getRowCellHeight}\n context={tableContext}\n />\n </div>\n <ConfirmDeleteDialog\n open={!!pendingDeletion}\n onClose={() => setPendingDeletion(null)}\n onConfirm={() => onDelete(pendingDeletion)}\n />\n <ConfirmEditIgnoredDialog\n open={!!pendingIgnoredEditing}\n onClose={() => setPendingIgnoredEditing(null)}\n onConfirmEditWithIgnore={() => onEdit(pendingIgnoredEditing)}\n onConfirmEditWithoutIgnore={() => {\n onIgnore({attributeValue: pendingIgnoredEditing.attributeValue});\n onEdit(pendingIgnoredEditing);\n }}\n />\n </div>\n );\n};\n\nexport default memo(AttributesTable);\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n color?: string;\n opacity?: number;\n variant: 'filled' | 'outlined';\n};\n\nexport const useColoredItemStyles = makeStyles({\n item: ({color, opacity, variant}: StylesProps) => ({\n ...(variant === 'filled' && {backgroundColor: color}),\n ...(variant === 'outlined' && {border: `${color} solid 2px`}),\n opacity,\n transition: 'opacity 0.3s',\n boxSizing: 'border-box'\n })\n});\n","import React, {ForwardedRef, forwardRef} from 'react';\nimport classnames from 'classnames';\nimport {useColoredItemStyles} from './styles';\n\ntype Props = React.HTMLAttributes<HTMLDivElement> & {\n color: string;\n opacity?: number;\n variant?: 'filled' | 'outlined';\n};\n\nconst ColoredBlock = forwardRef(\n ({color, opacity, variant = 'filled', children, className, ...props}: Props, ref: ForwardedRef<HTMLDivElement>) => {\n const styles = useColoredItemStyles({color, opacity, variant});\n return (\n <div ref={ref} className={classnames(styles.item, className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nexport default ColoredBlock;\n","import React from 'react';\n\nconst SvgCopy: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M20.222 6C21.21 6 22 6.8 22 7.778v12.444C22 21.2 21.209 22 20.222 22H7.778C6.79 22 6 21.2 6 20.222V7.778C6 6.8 6.791 6 7.778 6h12.444zM20 8H8v12h12V8zM4 18H2V4c0-1.1.9-2 2-2h14v2H4v14z\"\n id=\"Copy_svg__a\"\n />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"Copy_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Copy_svg__a\" />\n </mask>\n <path fillOpacity={0.54} fill=\"#000\" mask=\"url(#Copy_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgCopy;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n overflowWrap: 'anywhere'\n },\n text: {\n fontSize: 13\n },\n button: {\n flexShrink: 0,\n marginLeft: 8,\n padding: 0,\n textTransform: 'none'\n }\n}));\n","import React from 'react';\nimport SmallIconButton from '../../SmallIconButton/SmallIconButton';\nimport {Typography as Typography} from '@material-ui/core';\nimport CopyIcon from '../../../icons/Copy';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: string;\n};\n\nconst CopyableValueField = ({value}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n <Typography className={styles.text} variant={'body2'}>\n {value}\n </Typography>\n <SmallIconButton\n size=\"XXS\"\n icon={CopyIcon}\n color=\"primary\"\n className={styles.button}\n onClick={() => navigator.clipboard.writeText(value)}\n />\n </div>\n );\n};\n\nexport default CopyableValueField;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n timestampEditorInput: {\n paddingTop: 15,\n paddingBottom: 15,\n fontSize: 13\n },\n timestampEditor: {\n height: 38\n }\n}));\n","import React, {useState} from 'react';\nimport {always, unless} from 'ramda';\nimport classnames from 'classnames';\nimport TimestampEditor from '../../editors/TimestampEditor/TimestampEditor';\nimport {useStyles} from './styles';\n\ntype Props = {\n value?: number;\n classes?: {\n root?: string;\n };\n disabled?: boolean;\n onChange: (value: number) => void;\n};\n\nconst CrosswalkDateEditor = ({value, classes = {}, disabled = false, onChange}: Props) => {\n const styles = useStyles();\n\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const handleChange = (date: Date) => onChange(date.valueOf());\n\n return (\n <TimestampEditor\n variant=\"filled\"\n value={value ? new Date(value) : null}\n disabled={disabled}\n onChange={unless(always(isOpen), handleChange)}\n onAccept={handleChange}\n onOpen={() => setIsOpen(true)}\n onClose={() => setIsOpen(false)}\n InputProps={{\n disableUnderline: true,\n classes: {input: styles.timestampEditorInput, root: classnames(styles.timestampEditor, classes.root)}\n }}\n />\n );\n};\n\nexport default CrosswalkDateEditor;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n text: {\n fontSize: 13\n },\n attributeWrapper: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: 5,\n paddingBottom: 5,\n marginLeft: 12\n },\n attributeTitle: {\n fontSize: 13,\n width: 135,\n color: theme.palette.text.secondary\n },\n attributeValue: {\n paddingLeft: 10,\n display: 'flex',\n alignItems: 'center',\n flexGrow: 1\n },\n input: {\n paddingTop: 14,\n paddingBottom: 14,\n fontSize: 13\n },\n editor: {\n flexGrow: 1\n },\n moreButton: {\n marginLeft: 24\n },\n sourceIcon: {\n height: '16px',\n width: '16px',\n marginRight: '9px',\n fontSize: '14px'\n }\n}));\n","import React, {useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport ConfirmDeleteDialog from '../../ConfirmDeleteDialog/ConfirmDeleteDialog';\nimport MoreAttributesButton from '../../attributes/editMode/MoreAttributesButton';\nimport SimpleDropDownSelector from '../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport SourceIcon from '../../SourceIcon/SourceIcon';\nimport {TextEditor} from '../../editors';\nimport {Typography as Typography} from '@material-ui/core';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {\n CrosswalkBase,\n CrosswalksAttrTypes,\n formatDateTime,\n getCrosswalksTypes,\n getSourceSystemLabel,\n parseTimestamp\n} from '@reltio/mdm-sdk';\nimport {ascend, filter, has, isNil, map, pipe, prop, propEq, without} from 'ramda';\nimport i18n from 'ui-i18n';\nimport mdmModule from '@reltio/mdm-module';\nimport CopyableValueField from '../CopyableValueField/CopyableValueField';\nimport CrosswalkDateEditor from '../CrosswalkDateEditor/CrosswalkDateEditor';\nimport moment from 'moment';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: CrosswalkBase | Omit<CrosswalkBase, 'uri'>;\n canEditAttribute?: boolean;\n onEditAttribute: (attributeName: string, value: any) => void;\n onDeleteAttribute: (attributeName: string) => void;\n};\n\nconst CrosswalkAttributes = ({crosswalk, canEditAttribute = true, onEditAttribute, onDeleteAttribute}: Props) => {\n const styles = useStyles();\n\n const isTempCrosswalk = !('uri' in crosswalk);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const [addedAttributes, setAddedAttributes] = useState<string[]>([]);\n const [pendingDeletionAttrUri, setPendingDeletionAttrUri] = useState<string>(null);\n const addSelectedAttributes = (selectedAttributes) => {\n if (selectedAttributes.length > 0) {\n setAddedAttributes((addedAttributes) => addedAttributes.concat(map(prop('uri'), selectedAttributes)));\n }\n };\n const handleDeleteAttribute = (attributeName: string) => {\n setAddedAttributes((addedAttributes) => without([attributeName], addedAttributes));\n if (!isNil(crosswalk[attributeName])) {\n onDeleteAttribute(attributeName);\n }\n };\n\n const attributes = useMemo(\n () => [\n {\n label: CrosswalksAttrTypes.sourceSystems.label,\n uri: 'type'\n },\n {\n label: CrosswalksAttrTypes.value.label,\n uri: 'value'\n },\n {\n label: CrosswalksAttrTypes.sourceTable.label,\n uri: 'sourceTable',\n canBeAdded: isTempCrosswalk,\n canBeDeleted: isTempCrosswalk\n },\n {\n label: CrosswalksAttrTypes.createDate.label,\n uri: 'createDate'\n },\n {\n label: CrosswalksAttrTypes.updateDate.label,\n uri: 'updateDate'\n },\n {\n label: CrosswalksAttrTypes.deleteDate.label,\n uri: 'deleteDate',\n canBeAdded: true,\n canBeDeleted: true\n },\n {\n label: CrosswalksAttrTypes.reltioLoadDate.label,\n uri: 'reltioLoadDate'\n },\n {\n label: CrosswalksAttrTypes.publishDate.label,\n uri: 'sourcePublishDate'\n }\n ],\n []\n );\n\n const extraAttributes = pipe(\n filter(propEq('canBeAdded', true)),\n filter((item) => !has(item.uri, crosswalk)),\n filter((item) => !addedAttributes.includes(item.uri))\n )(attributes);\n\n const renderAttributeValue = (attributeName: string, attributeValue: string) => {\n switch (attributeName) {\n case 'type': {\n const sourceSystemLabel = getSourceSystemLabel(metadata, attributeValue);\n return isTempCrosswalk ? (\n <SimpleDropDownSelector\n label={''}\n placeholder={attributeValue}\n className={styles.editor}\n value={{value: attributeValue, label: sourceSystemLabel}}\n options={getCrosswalksTypes(metadata)\n .sort(ascend(prop('label')))\n .map(({uri, label}) => ({\n value: uri,\n label: label\n }))}\n onChange={({value}) => onEditAttribute(attributeName, value)}\n TextFieldProps={{\n InputProps: {\n disableUnderline: true\n }\n }}\n />\n ) : (\n <>\n <SourceIcon className={styles.sourceIcon} sourceType={attributeValue} />\n <Typography className={styles.text} variant={'body2'}>\n {sourceSystemLabel}\n </Typography>\n </>\n );\n }\n case 'sourceTable':\n return isTempCrosswalk ? (\n <TextEditor\n multiple={false}\n multiline={false}\n getValueLabel={undefined}\n classes={{root: styles.editor}}\n required\n variant=\"filled\"\n value={attributeValue}\n onInput={(e) => onEditAttribute(attributeName, e.target.value)}\n margin=\"dense\"\n InputProps={{\n disableUnderline: true,\n classes: {input: styles.input}\n }}\n />\n ) : (\n <Typography className={styles.text} variant={'body2'}>\n {attributeValue}\n </Typography>\n );\n case 'value':\n return isTempCrosswalk ? (\n <TextEditor\n multiple={false}\n multiline={false}\n getValueLabel={undefined}\n classes={{root: styles.editor}}\n required\n variant=\"filled\"\n value={attributeValue}\n onInput={(e) => onEditAttribute(attributeName, e.target.value)}\n margin=\"dense\"\n InputProps={{\n disableUnderline: true,\n classes: {input: styles.input}\n }}\n />\n ) : (\n <CopyableValueField value={attributeValue} />\n );\n case 'deleteDate':\n return (\n <CrosswalkDateEditor\n value={attributeValue && moment.utc(parseTimestamp(attributeValue)).valueOf()}\n onChange={(value) => onEditAttribute(attributeName, value.toString())}\n classes={{root: styles.editor}}\n disabled={!canEditAttribute}\n />\n );\n case 'sourcePublishDate':\n case 'createDate':\n case 'updateDate':\n case 'reltioLoadDate':\n return (\n <Typography className={styles.text} variant={'body2'}>\n {formatDateTime(attributeValue)}\n </Typography>\n );\n default:\n return null;\n }\n };\n\n return (\n <>\n {extraAttributes.length > 0 && canEditAttribute && (\n <MoreAttributesButton\n label={i18n.text('Add attributes')}\n onApply={addSelectedAttributes}\n data={extraAttributes}\n />\n )}\n {attributes.map((attribute) =>\n attribute.uri in crosswalk || addedAttributes.includes(attribute.uri) ? (\n <div key={attribute.uri} className={styles.attributeWrapper}>\n <Typography variant={'body2'} className={styles.attributeTitle}>\n {`${attribute.label}:`}\n </Typography>\n <div className={styles.attributeValue}>\n {renderAttributeValue(attribute.uri, crosswalk[attribute.uri])}\n {attribute.canBeDeleted && (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n disabled={!canEditAttribute}\n onClick={() => setPendingDeletionAttrUri(attribute.uri)}\n size=\"XS\"\n tooltipTitle={i18n.text('Delete attribute')}\n showForDisabled={true}\n />\n )}\n </div>\n </div>\n ) : null\n )}\n <ConfirmDeleteDialog\n open={!!pendingDeletionAttrUri}\n onClose={() => setPendingDeletionAttrUri(null)}\n onConfirm={() => handleDeleteAttribute(pendingDeletionAttrUri)}\n />\n </>\n );\n};\n\nexport default CrosswalkAttributes;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n dragLayer: {\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n zIndex: 1300,\n pointerEvents: 'none'\n },\n crosswalkPreview: {\n height: '28px',\n maxWidth: '394px',\n display: 'flex',\n overflow: 'hidden',\n padding: '6px',\n alignItems: 'center',\n boxSizing: 'border-box'\n },\n sourceLabel: {\n fontSize: '13px',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n overflow: 'hidden'\n },\n sourceIcon: {\n width: '16px',\n height: '16px',\n marginRight: '9px'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport {CrosswalkBase, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport ColoredBlock from '../ColoredBlock/ColoredBlock';\nimport {useCrosswalkColor} from '../../../contexts/CrosswalksDisplayContext';\nimport SourceIcon from '../../SourceIcon/SourceIcon';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: CrosswalkBase;\n};\n\nconst CrosswalkDragPreview = ({crosswalk}: Props) => {\n const styles = useStyles();\n const color = useCrosswalkColor(crosswalk);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const sourceSystemLabel = getSourceSystemLabel(metadata, crosswalk.type);\n return (\n <ColoredBlock color={color} className={styles.crosswalkPreview}>\n <SourceIcon className={styles.sourceIcon} sourceType={crosswalk.type} />\n <Typography className={styles.sourceLabel} variant={'body2'}>\n {sourceSystemLabel}\n </Typography>\n </ColoredBlock>\n );\n};\n\nexport default CrosswalkDragPreview;\n","import React, {memo, useRef} from 'react';\nimport {useDragLayer} from 'react-dnd';\nimport CrosswalkDragPreview from './CrosswalkDragPreview';\nimport {CrosswalkBase} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst CrosswalkDragLayer = () => {\n const styles = useStyles();\n\n const {isDragging, clientOffset, item} = useDragLayer((monitor) => ({\n isDragging: monitor.isDragging(),\n clientOffset: monitor.getClientOffset(),\n item: monitor.getItem()\n }));\n const dragLayerRef = useRef<HTMLDivElement>();\n const dragLayerRect = dragLayerRef.current?.getBoundingClientRect() || {x: 0, y: 0};\n const dragItemX = clientOffset?.x - dragLayerRect?.x;\n const dragItemY = clientOffset?.y - dragLayerRect?.y;\n const dragItemTransform = `translate(${dragItemX}px, ${dragItemY}px`;\n\n return (\n isDragging && (\n <div ref={dragLayerRef} className={styles.dragLayer}>\n <div\n style={{\n display: 'flex',\n transform: dragItemTransform,\n WebkitTransform: dragItemTransform\n }}\n >\n {item.type === 'Crosswalk' && <CrosswalkDragPreview crosswalk={item.crosswalk as CrosswalkBase} />}\n </div>\n </div>\n )\n );\n};\n\nexport default memo(CrosswalkDragLayer);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n caption: {\n paddingLeft: 15,\n paddingTop: 16,\n paddingBottom: 8\n },\n controlButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n paddingBottom: 10,\n paddingTop: 20\n },\n cancelButton: {\n marginRight: 20\n }\n});\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport CrosswalkAttributes from '../CrosswalkAttributes/CrosswalkAttributes';\nimport {assoc, dissoc} from 'ramda';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n onAdd: (event: Omit<Crosswalk, 'uri'>) => void;\n onClose: () => void;\n};\n\nconst CrosswalkEditor = ({className, onAdd, onClose}: Props) => {\n const styles = useStyles();\n\n const [newCrosswalk, setNewCrosswalk] = useState<Omit<Crosswalk, 'uri'>>({type: '', value: ''});\n\n const handleAdd = () => {\n onAdd(newCrosswalk);\n onClose();\n };\n\n return (\n <div className={className}>\n <Typography variant={'body1'} className={styles.caption}>\n {i18n.text('Add crosswalk')}\n </Typography>\n <CrosswalkAttributes\n crosswalk={newCrosswalk}\n onDeleteAttribute={(attributeName: string) => {\n setNewCrosswalk(dissoc(attributeName));\n }}\n onEditAttribute={(attributeName: string, value: any) => {\n setNewCrosswalk(assoc(attributeName, value));\n }}\n />\n <div className={styles.controlButtons}>\n <Button className={styles.cancelButton} onClick={onClose}>\n {i18n.text('Cancel')}\n </Button>\n <Button color=\"primary\" onClick={handleAdd} disabled={!newCrosswalk.type || !newCrosswalk.value}>\n {i18n.text('Add')}\n </Button>\n </div>\n </div>\n );\n};\n\nexport default CrosswalkEditor;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n isOpaque?: boolean;\n};\n\nexport const useStyles = makeStyles(() => ({\n root: ({isOpaque}: StylesProps) => ({\n display: 'flex',\n opacity: isOpaque ? 1 : 0.38,\n transition: 'opacity 0.3s'\n }),\n wrapper: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n height: 28,\n backgroundImage:\n 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDcvMjYvMTMEw7WpAAAAeElEQVQ4ja3VuwrAIBBE0aup0uX/v9ImCCGSdIL4WF136+EwxcC6+3k/hAsxSREArvPAW2LAGFzFhqAG64JarAnuYBW4ixWgBZZBKwzAW2Ig7HAVCzHJ4AoGQsNVbAhqsC6oxZrgDlaBu1gBWmAZtMIA3MwLmMUAfmyqQ9/LD+oDAAAAAElFTkSuQmCC)'\n },\n focusedIcon: {\n width: 28,\n height: 28,\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\n borderRadius: 0,\n borderRight: '1px solid #fff'\n },\n sourceIcon: {\n height: '16px',\n width: '16px',\n marginLeft: '16px',\n marginRight: '9px',\n fontSize: '14px'\n }\n}));\n","import React, {memo} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {Typography as Typography} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport SourceIcon from '../../SourceIcon/SourceIcon';\nimport SmallIconButton from '../../SmallIconButton/SmallIconButton';\nimport {useCrosswalkHighlight} from '../../../contexts/CrosswalksDisplayContext';\nimport mdmModule from '@reltio/mdm-module';\nimport {getSourceSystemLabel} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalkType: string;\n focusable?: boolean;\n};\n\nconst DummyCrosswalkRow = ({crosswalkType, focusable = true}: Props) => {\n const {isDimmed} = useCrosswalkHighlight();\n const styles = useStyles({isOpaque: !isDimmed});\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const sourceSystemLabel = getSourceSystemLabel(metadata, crosswalkType);\n return (\n <div className={styles.root}>\n <SmallIconButton size=\"XXS\" className={styles.focusedIcon} icon={focusable && VisibilityIcon} disabled />\n <div className={styles.wrapper}>\n <SourceIcon className={styles.sourceIcon} sourceType={crosswalkType} />\n <Typography variant={'body2'}>{sourceSystemLabel}</Typography>\n </div>\n </div>\n );\n};\n\nexport default memo(DummyCrosswalkRow);\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n color?: string;\n isOpaque?: boolean;\n isFocused?: boolean;\n};\n\nexport const useStyles = makeStyles({\n root: ({isOpaque}: StylesProps) => ({\n display: 'flex',\n opacity: isOpaque ? 1 : 0.19,\n transition: 'opacity 0.3s'\n }),\n header: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n height: '28px'\n },\n focusedIcon: ({isFocused}: StylesProps) => ({\n width: '26px',\n '&:not([disabled])': {\n border: '1px solid rgba(0, 0, 0, 0.12)'\n },\n height: '28px',\n color: isFocused ? '#000' : 'rgba(0, 0, 0, 0.54)',\n borderRadius: 0,\n margin: '0px 1px'\n }),\n crosswalkWrapper: {\n width: '100%',\n overflow: 'hidden'\n },\n sourceIcon: {\n height: '16px',\n width: '16px',\n marginRight: '9px',\n fontSize: '14px'\n },\n attributesWrapper: ({color}: StylesProps) => ({\n border: '1px solid',\n borderColor: color,\n position: 'relative'\n }),\n deleteCrosswalkButton: {\n position: 'absolute',\n top: 5,\n right: 5\n },\n labelValue: {\n marginLeft: 5,\n marginRight: 8\n },\n dependentIcon: {\n width: '16px',\n height: '16px',\n fillOpacity: 0.38\n }\n});\n","import React, {memo, useEffect, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport {\n Crosswalk,\n eqCrosswalks,\n getLastUriPart,\n getSourceSystemLabel,\n isCrosswalkDisabled,\n RelationCrosswalk\n} from '@reltio/mdm-sdk';\nimport ArrowExpandButton from '../../ArrowExpandButton/ArrowExpandButton';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport ColoredBlock from '../ColoredBlock/ColoredBlock';\nimport ConfirmDeleteDialog from '../../ConfirmDeleteDialog/ConfirmDeleteDialog';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport SourceIcon from '../../SourceIcon/SourceIcon';\nimport Spacer from '../../Spacer/Spacer';\nimport {\n useCrosswalkColor,\n useCrosswalkFocus,\n useCrosswalkHighlight,\n useHighlightedCrosswalks\n} from '../../../contexts/CrosswalksDisplayContext';\nimport mdmModule from '@reltio/mdm-module';\nimport DependentIcon from '../../../icons/NestedAttribute';\nimport {useDrag} from 'react-dnd';\nimport {getEmptyImage} from 'react-dnd-html5-backend';\nimport CrosswalkAttributes from '../CrosswalkAttributes/CrosswalkAttributes';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: Crosswalk | RelationCrosswalk;\n isDependent?: boolean;\n focusable?: boolean;\n isEmpty?: boolean;\n isColored?: boolean;\n disableEdit: boolean;\n disableDelete: boolean;\n onDelete: (crosswalkId: string) => void;\n onEdit: (event: {crosswalkId: string; attributeName: string; value?: string}) => void;\n};\n\nconst CrosswalkRow = ({\n crosswalk,\n isDependent,\n isEmpty = false,\n isColored = true,\n focusable = true,\n disableEdit,\n disableDelete,\n onDelete,\n onEdit\n}: Props) => {\n const ref = useRef(null);\n const crosswalkColor = useCrosswalkColor(crosswalk);\n const {toggleCrosswalkFocus, isFocused} = useCrosswalkFocus(crosswalk);\n const color = isEmpty ? '#FFF' : isColored ? crosswalkColor : '#CACCD1';\n const {isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(crosswalk);\n const [scrollToCrosswalk] = useHighlightedCrosswalks();\n const styles = useStyles({color, isOpaque: !isDimmed, isFocused});\n const [expanded, setExpanded] = useState(false);\n const [isDeleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const sourceSystemLabel = getSourceSystemLabel(metadata, crosswalk.type);\n const crosswalkId = getLastUriPart(crosswalk.uri);\n const crosswalkDisabled = isCrosswalkDisabled(crosswalk);\n\n const [, drag, preview] = useDrag({\n item: {\n type: 'Crosswalk',\n crosswalk\n },\n canDrag: !crosswalkDisabled\n });\n\n const canDelete = !crosswalkDisabled && crosswalk.ownerType !== 'relation';\n\n useEffect(() => {\n preview(getEmptyImage(), {captureDraggingState: true});\n }, []);\n\n useEffect(() => {\n if (\n focusable &&\n scrollToCrosswalk &&\n eqCrosswalks(scrollToCrosswalk, crosswalk) &&\n scrollToCrosswalk !== crosswalk\n ) {\n ref?.current?.scrollIntoView({behavior: 'smooth'});\n }\n }, [scrollToCrosswalk]);\n\n const handleDeleteCrosswalk = () => {\n if (isFocused) toggleCrosswalkFocus();\n onDelete(crosswalkId);\n };\n\n return (\n <div className={styles.root} ref={ref}>\n <SmallIconButtonWithTooltip\n size=\"XXS\"\n className={styles.focusedIcon}\n icon={focusable && VisibilityIcon}\n onClick={() => toggleCrosswalkFocus()}\n disabled={!focusable}\n tooltipTitle={focusable && i18n.text('Focus')}\n />\n <div className={styles.crosswalkWrapper}>\n <ColoredBlock\n ref={drag}\n className={styles.header}\n color={color}\n variant={crosswalkDisabled ? 'outlined' : 'filled'}\n onMouseEnter={() => highlightCrosswalk()}\n onMouseLeave={() => removeHighlight()}\n >\n {isDependent && <DependentIcon className={styles.dependentIcon} />}\n <ArrowExpandButton onClick={() => setExpanded((value) => !value)} expanded={expanded} />\n <SourceIcon className={styles.sourceIcon} sourceType={crosswalk.type} />\n <ExpandedValueTooltip value={sourceSystemLabel}>\n <Typography variant={'body2'} noWrap>\n {sourceSystemLabel}\n </Typography>\n </ExpandedValueTooltip>\n <Spacer />\n <ExpandedValueTooltip value={crosswalk.value}>\n <Typography variant={'body2'} className={styles.labelValue} noWrap>\n {crosswalk.value}\n </Typography>\n </ExpandedValueTooltip>\n </ColoredBlock>\n {expanded && (\n <div className={styles.attributesWrapper}>\n {canDelete && (\n <div className={styles.deleteCrosswalkButton}>\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n disabled={disableDelete}\n onClick={() => setDeleteDialogOpen(true)}\n size=\"XS\"\n tooltipTitle={\n disableDelete\n ? i18n.text(\"You don't have permissions to delete\")\n : i18n.text('Delete crosswalk')\n }\n showForDisabled={true}\n />\n <ConfirmDeleteDialog\n open={isDeleteDialogOpen}\n onConfirm={handleDeleteCrosswalk}\n onClose={() => setDeleteDialogOpen(false)}\n />\n </div>\n )}\n <CrosswalkAttributes\n crosswalk={crosswalk}\n canEditAttribute={!disableEdit}\n onEditAttribute={(attributeName: string, value: any) => {\n onEdit({\n crosswalkId,\n attributeName,\n value\n });\n }}\n onDeleteAttribute={(attributeName: string) => {\n onEdit({\n crosswalkId,\n attributeName\n });\n }}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default memo(CrosswalkRow);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n height: '28px',\n paddingLeft: '37px'\n }\n}));\n","import React from 'react';\nimport {Link as Link} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n showMore: boolean;\n onClick: () => void;\n};\n\nconst ShowDependentLink = ({showMore, onClick}: Props) => {\n const styles = useStyles();\n return (\n <Link className={styles.root} component=\"button\" variant=\"caption\" underline=\"none\" onClick={onClick}>\n <span>{showMore ? i18n.text('View dependent crosswalks') : i18n.text('Hide dependent crosswalks')}</span>\n </Link>\n );\n};\n\nexport default ShowDependentLink;\n","import React, {useEffect} from 'react';\nimport {useHighlightedCrosswalks} from '../../../contexts/CrosswalksDisplayContext';\nimport {CrosswalksByTypes, CrosswalkType} from '../types';\nimport {eqCrosswalks} from '@reltio/mdm-sdk';\nimport DummyCrosswalkRow from '../DummyCrosswalkRow/DummyCrosswalkRow';\nimport CrosswalkRow from '../CrosswalkRow/CrosswalkRow';\nimport ShowDependentLink from '../ShowDependentLink/ShowDependentLink';\n\ntype Props = {\n source: string;\n crosswalksByTypes: CrosswalksByTypes;\n showCrosswalkColors?: boolean;\n crosswalksFocusEnabled?: boolean;\n expanded?: boolean;\n disableEditCrosswalk: boolean;\n disableDeleteCrosswalk: boolean;\n onEdit: (event: {crosswalkId: string; attributeName: string; value?: string}) => void;\n onDelete: (crosswalkId: string) => void;\n onToggleExpanded: () => void;\n};\n\nconst SourceCrosswalksRow = ({\n source,\n crosswalksByTypes,\n showCrosswalkColors = true,\n crosswalksFocusEnabled = true,\n expanded,\n disableEditCrosswalk,\n disableDeleteCrosswalk,\n onEdit,\n onDelete,\n onToggleExpanded\n}: Props) => {\n const highlightedCrosswalks = useHighlightedCrosswalks();\n useEffect(() => {\n if (\n !expanded &&\n crosswalksFocusEnabled &&\n crosswalksByTypes[CrosswalkType.Dependent].some((dependentCrosswalk) =>\n highlightedCrosswalks.some(eqCrosswalks(dependentCrosswalk))\n )\n ) {\n onToggleExpanded();\n }\n }, [highlightedCrosswalks]);\n\n return (\n <>\n {crosswalksByTypes[CrosswalkType.Simple].length === 0 &&\n crosswalksByTypes[CrosswalkType.Empty].length === 0 && (\n <DummyCrosswalkRow crosswalkType={source} focusable={crosswalksFocusEnabled} />\n )}\n {crosswalksByTypes[CrosswalkType.Simple].map((crosswalk) => (\n <CrosswalkRow\n key={crosswalk.uri}\n crosswalk={crosswalk}\n focusable={crosswalksFocusEnabled}\n disableEdit={disableEditCrosswalk}\n disableDelete={disableDeleteCrosswalk}\n onDelete={onDelete}\n onEdit={onEdit}\n isColored={showCrosswalkColors}\n />\n ))}\n {crosswalksByTypes[CrosswalkType.Empty].map((crosswalk) => (\n <CrosswalkRow\n key={crosswalk.uri}\n crosswalk={crosswalk}\n focusable={crosswalksFocusEnabled}\n isEmpty={true}\n disableEdit={disableEditCrosswalk}\n disableDelete={disableDeleteCrosswalk}\n onDelete={onDelete}\n onEdit={onEdit}\n isColored={showCrosswalkColors}\n />\n ))}\n {expanded &&\n crosswalksByTypes[CrosswalkType.Dependent].map((crosswalk) => (\n <CrosswalkRow\n key={crosswalk.uri}\n crosswalk={crosswalk}\n isDependent={true}\n disableEdit={disableEditCrosswalk}\n disableDelete={disableDeleteCrosswalk}\n onDelete={onDelete}\n onEdit={onEdit}\n focusable={crosswalksFocusEnabled}\n isColored={showCrosswalkColors}\n />\n ))}\n {crosswalksByTypes[CrosswalkType.Dependent].length > 0 && (\n <ShowDependentLink showMore={!expanded} onClick={() => onToggleExpanded()} />\n )}\n </>\n );\n};\n\nexport default SourceCrosswalksRow;\n","import {useCallback} from 'react';\nimport {andThen, ifElse, isNil, pipe} from 'ramda';\nimport {\n addCrosswalk,\n addCrosswalkInContributor,\n deleteCrosswalk,\n deleteCrosswalkAttribute,\n editCrosswalkAttribute\n} from '@reltio/mdm-sdk';\nimport {AddCrosswalkEvent, DeleteCrosswalkEvent, EditCrosswalkEvent} from '../types';\nimport {noop} from '../../../core';\n\ntype Props = {\n onLoad?: () => void;\n onSuccess?: () => void;\n onError?: (error: unknown) => void;\n};\n\nexport const useCrosswalkActions = ({onLoad = noop, onSuccess = noop, onError = noop}: Props) => {\n const handleRequest = useCallback(\n (request: Promise<unknown>) => {\n onLoad();\n request\n .then(({errors}) => {\n if (errors) throw errors;\n onSuccess();\n })\n .catch(onError);\n },\n [onLoad, onError, onSuccess]\n );\n\n const addCrosswalkAction = useCallback(\n ({entity, contributorCrosswalk, crosswalk}: AddCrosswalkEvent) => {\n const addRequest = contributorCrosswalk\n ? addCrosswalkInContributor({\n entityTypeUri: entity.type,\n contributorCrosswalkType: contributorCrosswalk.type,\n contributorCrosswalkValue: contributorCrosswalk.value,\n contributorCrosswalkSourceTable: contributorCrosswalk.sourceTable,\n crosswalkType: crosswalk.type,\n crosswalkValue: crosswalk.value,\n crosswalkSourceTable: crosswalk.sourceTable,\n crosswalkDeleteDate: crosswalk.deleteDate\n })\n : addCrosswalk({entityUri: entity.uri, crosswalk});\n pipe(\n andThen(([response]) => response),\n handleRequest\n )(addRequest);\n },\n [handleRequest]\n );\n\n const editCrosswalkAction = useCallback(\n ({entityUri, crosswalkId, attributeName, value}: EditCrosswalkEvent) => {\n pipe(\n ifElse(({value}) => isNil(value), deleteCrosswalkAttribute, editCrosswalkAttribute),\n andThen(([response]) => response),\n handleRequest\n )({\n entityUri,\n crosswalkId,\n attributeName,\n value\n });\n },\n [handleRequest]\n );\n\n const deleteCrosswalkAction = useCallback(\n ({entityUri, crosswalkId}: DeleteCrosswalkEvent) => {\n pipe(\n deleteCrosswalk,\n handleRequest\n )({\n entityUri,\n crosswalkId\n });\n },\n [handleRequest]\n );\n\n return {\n addCrosswalk: addCrosswalkAction,\n editCrosswalk: editCrosswalkAction,\n deleteCrosswalk: deleteCrosswalkAction\n };\n};\n","import {useCallback, useEffect, useRef, useState} from 'react';\nimport {useAttributeActions} from './useAttributeActions';\nimport {\n addNewAttribute,\n areOneHierarchyUris,\n createNewAttribute,\n Crosswalk,\n CrosswalkBase,\n editAttribute,\n Entity,\n findAttributeValueByUri,\n findAttributeValues,\n getAttributeValue,\n getCrosswalkAttributes,\n getRelationCrosswalks,\n isTempUri,\n Relation,\n RelationCrosswalk,\n removeAttribute\n} from '@reltio/mdm-sdk';\nimport {\n AddInlineAttributeEvent,\n CrosswalksMap,\n DeleteInlineAttributeEvent,\n EditInlineAttributeEvent\n} from '../../attributes/inline';\nimport {CrosswalksByOwnerTypeMap} from '../types';\nimport {difference, dissoc, evolve, isNil, pipe, without} from 'ramda';\nimport {noop} from '../../../core';\n\ntype Props = {\n entity: Entity | Relation;\n onLoad?: () => void;\n onModify?: () => void;\n onError?: (error: unknown) => void;\n};\n\nconst emptyArray = [];\n\nexport const useModifiedEntity = ({entity, onLoad = noop, onModify = noop, onError = noop}: Props) => {\n const [modifiedEntity, setModifiedEntity] = useState<Entity | Relation>(null);\n const [crosswalksMap, setCrosswalksMap] = useState<CrosswalksByOwnerTypeMap>(null);\n const temporaryAttributes = useRef<string[]>([]);\n const crosswalkForNewAttributes = useRef<CrosswalkBase>(null);\n const resetCrosswalkForNewAttributes = useCallback(() => {\n crosswalkForNewAttributes.current = null;\n }, []);\n const [newlyCreatedAttributes, setNewlyCreatedAttributes] = useState<string[]>(emptyArray);\n\n const groupCrosswalksByAttrUri = (crosswalks: (Crosswalk | RelationCrosswalk)[] = []): CrosswalksMap =>\n crosswalks.reduce((acc, crosswalk: Crosswalk | RelationCrosswalk) => {\n getCrosswalkAttributes(crosswalk).forEach((uri: string) => {\n acc[uri] = [...(acc[uri] || []), crosswalk];\n });\n return acc;\n }, {});\n\n useEffect(() => {\n const newCrosswalksMap = {\n entity: groupCrosswalksByAttrUri(entity?.crosswalks),\n relation: pipe(getRelationCrosswalks, groupCrosswalksByAttrUri)(entity)\n };\n if (modifiedEntity?.uri === entity?.uri && crosswalkForNewAttributes.current) {\n const {ownerType} = crosswalkForNewAttributes.current;\n const newAttributes = Object.keys(newCrosswalksMap[ownerType]);\n const oldAttributes = Object.keys(crosswalksMap[ownerType]);\n setNewlyCreatedAttributes(difference(newAttributes, oldAttributes));\n } else {\n setNewlyCreatedAttributes(emptyArray);\n }\n resetCrosswalkForNewAttributes();\n setModifiedEntity(entity);\n setCrosswalksMap(newCrosswalksMap);\n temporaryAttributes.current = [];\n }, [entity]);\n\n const handleError = useCallback(pipe(onError, resetCrosswalkForNewAttributes), [\n onError,\n resetCrosswalkForNewAttributes\n ]);\n\n const {deleteAttribute, ignoreAttribute, pinAttribute, createAttribute, updateAttribute} = useAttributeActions({\n onLoad,\n onSuccess: onModify,\n onError: handleError\n });\n\n const onAddAttribute = useCallback(({attributeType, parentUri, crosswalk, index}: AddInlineAttributeEvent) => {\n const newAttribute = createNewAttribute({parentUri, attributeType});\n const {uri} = newAttribute;\n if (crosswalk) {\n const {ownerType} = crosswalk;\n setCrosswalksMap((crosswalksMap) => ({\n ...crosswalksMap,\n [ownerType]: {\n ...crosswalksMap[ownerType],\n [uri]: [crosswalk]\n }\n }));\n }\n setModifiedEntity((entity) => {\n if (isNil(index)) {\n index = findAttributeValues(entity, parentUri, attributeType.name)?.length;\n }\n return addNewAttribute({entity, attributeType, newAttribute, index});\n });\n if (!temporaryAttributes.current.some((tempUri) => areOneHierarchyUris(uri, tempUri))) {\n temporaryAttributes.current.push(uri);\n }\n }, []);\n\n const onDeleteAttribute = useCallback(\n (event: DeleteInlineAttributeEvent) => {\n const {\n attributeValue: {uri},\n attributeType\n } = event;\n if (isTempUri(uri)) {\n setModifiedEntity((entity) => removeAttribute({entity, attributeType, uri}));\n setCrosswalksMap(\n evolve({\n entity: dissoc(uri),\n relation: dissoc(uri)\n })\n );\n temporaryAttributes.current = without([uri], temporaryAttributes.current);\n } else {\n deleteAttribute(event);\n }\n },\n [deleteAttribute]\n );\n\n const onEditAttribute = useCallback(\n (event: EditInlineAttributeEvent) => {\n if (isTempUri(event.attributeValue.uri)) {\n const {attributeValue, attributeType, crosswalk} = event;\n if (!isNil(attributeValue.value)) {\n const {uri} = attributeValue;\n const tempAttributeUri = temporaryAttributes.current.find((tempUri) =>\n areOneHierarchyUris(uri, tempUri)\n );\n const editedEntity = editAttribute({\n entity: modifiedEntity,\n attributeType,\n uri,\n value: getAttributeValue(attributeValue)\n });\n createAttribute({\n attributeValue: findAttributeValueByUri(editedEntity, tempAttributeUri),\n crosswalk\n });\n crosswalkForNewAttributes.current = crosswalk;\n }\n } else {\n updateAttribute(event);\n }\n },\n [createAttribute, updateAttribute, modifiedEntity]\n );\n\n return {\n modifiedEntity,\n crosswalksMap,\n onAddAttribute,\n onDeleteAttribute,\n onPinAttribute: pinAttribute,\n onIgnoreAttribute: ignoreAttribute,\n onEditAttribute,\n newlyCreatedAttributes\n };\n};\n","import {useCallback} from 'react';\nimport {\n createAttribute,\n deleteAttribute,\n getReferencedRelationFromAttrValue,\n ignoreAttribute,\n isComplexAttribute,\n isImage,\n isLookupAttrType,\n isReference,\n pinAttribute,\n removeRelation,\n updateAttribute\n} from '@reltio/mdm-sdk';\nimport {\n DeleteInlineAttributeEvent,\n EditInlineAttributeEvent,\n IgnoreInlineAttributeEvent,\n PinInlineAttributeEvent\n} from '../../attributes/inline';\nimport {andThen, pipe, prop} from 'ramda';\nimport {CreateAttributeEvent} from '../types';\nimport {noop} from '../../../core';\n\ntype Props = {\n onLoad?: () => void;\n onSuccess?: () => void;\n onError?: (error: unknown) => void;\n};\n\nexport const useAttributeActions = ({onSuccess = noop, onError = noop, onLoad = noop}: Props) => {\n const handleAction = useCallback(\n (request: Promise<unknown>) => {\n onLoad();\n request\n .then(() => {\n onSuccess();\n })\n .catch(onError);\n },\n [onError, onSuccess, onLoad]\n );\n const handleErrorResponse = useCallback((request: Promise<{error?: unknown}>) => {\n return request.then((response) => {\n if ('error' in response) throw response.error;\n return response;\n });\n }, []);\n\n const deleteAttributeAction = useCallback(\n ({attributeValue, attributeType, crosswalks}: DeleteInlineAttributeEvent) => {\n const action = isReference(attributeType)\n ? pipe(\n getReferencedRelationFromAttrValue,\n prop('objectURI'),\n removeRelation,\n handleErrorResponse\n )(attributeValue)\n : Promise.all(\n (crosswalks || []).map(({type, value, sourceTable}) =>\n handleErrorResponse(\n deleteAttribute({\n attributeUri: attributeValue.uri,\n sourceUri: type,\n crosswalkValue: value,\n crosswalkSourceTable: sourceTable\n })\n )\n )\n );\n handleAction(action);\n },\n [handleAction, handleErrorResponse]\n );\n\n const pinAttributeAction = useCallback(\n ({attributeValue}: PinInlineAttributeEvent) => {\n pipe(\n pinAttribute,\n handleErrorResponse,\n handleAction\n )({\n attributeUri: attributeValue.uri,\n value: !attributeValue.pin\n });\n },\n [handleAction, handleErrorResponse]\n );\n\n const ignoreAttributeAction = useCallback(\n ({attributeValue}: IgnoreInlineAttributeEvent) => {\n pipe(\n ignoreAttribute,\n handleErrorResponse,\n handleAction\n )({\n attributeUri: attributeValue.uri,\n value: !attributeValue.ignored\n });\n },\n [handleAction, handleErrorResponse]\n );\n\n const updateAttributeAction = useCallback(\n ({attributeValue, attributeType, crosswalk}: EditInlineAttributeEvent) => {\n if (isComplexAttribute(attributeType) || isImage(attributeType)) return;\n pipe(\n updateAttribute,\n handleErrorResponse,\n handleAction\n )({\n attributeUri: attributeValue.uri,\n sourceUri: crosswalk.type,\n crosswalkValue: crosswalk.value,\n crosswalkSourceTable: crosswalk.sourceTable,\n value: isLookupAttrType(attributeType) ? attributeValue.lookupCode : attributeValue.value\n });\n },\n [handleAction, handleErrorResponse]\n );\n\n const createAttributeAction = useCallback(\n ({attributeValue, crosswalk}: CreateAttributeEvent) => {\n pipe(\n createAttribute,\n andThen(([{errors}]) => {\n if (errors) throw errors;\n }),\n handleAction\n )({\n attributeUri: attributeValue.uri,\n sourceUri: crosswalk.type,\n crosswalkValue: crosswalk.value,\n crosswalkSourceTable: crosswalk.sourceTable,\n value: attributeValue.value\n });\n },\n [handleAction]\n );\n\n return {\n deleteAttribute: deleteAttributeAction,\n pinAttribute: pinAttributeAction,\n ignoreAttribute: ignoreAttributeAction,\n updateAttribute: updateAttributeAction,\n createAttribute: createAttributeAction\n };\n};\n","export enum CrosswalkType {\n Simple = 'simple',\n Empty = 'empty',\n Dependent = 'dependent'\n}\n","import {\n AttributeType,\n Crosswalk,\n getAttributeTypeUriByValueUri,\n getCrosswalkAttributes,\n isComplexAttribute,\n RelationCrosswalk\n} from '@reltio/mdm-sdk';\nimport {curry, evolve, propEq, sort} from 'ramda';\nimport {CrosswalksByTypes, CrosswalkType} from '../types';\n\nconst isEmptyCrosswalk = (\n entityTypeUri: string,\n selectedAttributeTypes: AttributeType[],\n crosswalk: Crosswalk | RelationCrosswalk\n) => {\n const visibleAttributes = getCrosswalkAttributes(crosswalk).filter((attributeUri: string) => {\n const attributeTypeUri = getAttributeTypeUriByValueUri(attributeUri, entityTypeUri);\n return selectedAttributeTypes.some(propEq('uri', attributeTypeUri));\n });\n return visibleAttributes.length === 0;\n};\n\nconst isCrosswalkWithoutSimple = (\n entityTypeUri: string,\n selectedAttributeTypes: AttributeType[],\n crosswalk: Crosswalk | RelationCrosswalk\n) => {\n return !getCrosswalkAttributes(crosswalk).some((attributeUri) => {\n const attributeTypeUri = getAttributeTypeUriByValueUri(attributeUri, entityTypeUri);\n const attributeType = selectedAttributeTypes.find(propEq('uri', attributeTypeUri));\n return attributeType && !isComplexAttribute(attributeType);\n });\n};\n\nconst getCrosswalksWeight = (crosswalks: CrosswalksByTypes) => {\n if (crosswalks[CrosswalkType.Simple].length > 0) {\n return 1;\n }\n if (crosswalks[CrosswalkType.Dependent].length > 0) {\n return crosswalks[CrosswalkType.Empty].length > 0 ? 2 : 3;\n }\n return 4;\n};\n\nconst sortDependentCrosswalksBySourceTable = evolve({\n [CrosswalkType.Dependent]: sort((cwA, cwB) => {\n const sourceTableA = cwA.sourceTable || '';\n const sourceTableB = cwB.sourceTable || '';\n if (sourceTableA === sourceTableB) return 0;\n if (!sourceTableA) return 1;\n if (!sourceTableB) return -1;\n return sourceTableA < sourceTableB ? -1 : 1;\n })\n});\n\nexport const groupCrosswalksByTypesAndSources = curry(\n (entityTypeUri: string, selectedAttributeTypes: AttributeType[], crosswalks: (Crosswalk | RelationCrosswalk)[]) => {\n const crosswalksBySourcesMap = (crosswalks || []).reduce((acc, crosswalk: Crosswalk | RelationCrosswalk) => {\n if (!acc[crosswalk.type]) {\n acc[crosswalk.type] = {\n [CrosswalkType.Simple]: [],\n [CrosswalkType.Empty]: [],\n [CrosswalkType.Dependent]: []\n };\n }\n if (crosswalk.ownerType === 'relation') {\n acc[crosswalk.type][CrosswalkType.Dependent].push(crosswalk);\n } else if (isEmptyCrosswalk(entityTypeUri, selectedAttributeTypes, crosswalk)) {\n acc[crosswalk.type][CrosswalkType.Empty].push(crosswalk);\n } else if (isCrosswalkWithoutSimple(entityTypeUri, selectedAttributeTypes, crosswalk)) {\n acc[crosswalk.type][CrosswalkType.Dependent].push(crosswalk);\n } else {\n acc[crosswalk.type][CrosswalkType.Simple].push(crosswalk);\n }\n return acc;\n }, {});\n return Object.keys(crosswalksBySourcesMap)\n .sort((sourceA, sourceB) => {\n const weightA = getCrosswalksWeight(crosswalksBySourcesMap[sourceA]);\n const weightB = getCrosswalksWeight(crosswalksBySourcesMap[sourceB]);\n const weightDiff = weightA - weightB;\n return weightDiff || (sourceA < sourceB ? -1 : 1);\n })\n .map((source: string) => ({\n source,\n crosswalksByTypes: sortDependentCrosswalksBySourceTable(crosswalksBySourcesMap[source])\n }));\n }\n);\n","import React, {createContext, useCallback, useContext} from 'react';\nimport {CrosswalkBase, getCrosswalkColor, getCrosswalkId} from '@reltio/mdm-sdk';\nimport {pipe, eqBy} from 'ramda';\nimport {noop} from '../../core';\n\nconst CrosswalksDisplayContext = createContext(null);\n\ntype ProviderProps = {\n children: React.ReactNode;\n getCrosswalkColor?: (crosswalk: CrosswalkBase) => string;\n focusedCrosswalks?: CrosswalkBase[];\n highlightedCrosswalks?: CrosswalkBase[];\n toggleCrosswalkFocus?: (crosswalk: CrosswalkBase) => void;\n setCrosswalkHighlighted?: (crosswalk: CrosswalkBase, highlighted: boolean) => void;\n};\n\nexport const CrosswalksDisplayProvider = ({children, ...props}: ProviderProps) => {\n return <CrosswalksDisplayContext.Provider value={props}>{children}</CrosswalksDisplayContext.Provider>;\n};\n\nexport const useCrosswalkColor = (crosswalk?: CrosswalkBase) => {\n const {getCrosswalkColor: getColor = pipe(getCrosswalkId, getCrosswalkColor)} =\n useContext(CrosswalksDisplayContext) || {};\n return crosswalk ? getColor(crosswalk) : '';\n};\n\nexport const useHighlightedCrosswalks = () => {\n const {highlightedCrosswalks = []} = useContext(CrosswalksDisplayContext) || {};\n return highlightedCrosswalks;\n};\n\nexport const useCrosswalkHighlight = (crosswalk?: CrosswalkBase) => {\n const {highlightedCrosswalks = [], setCrosswalkHighlighted = noop} = useContext(CrosswalksDisplayContext) || {};\n const isHighlighted = !!crosswalk && !!highlightedCrosswalks.find(eqBy(getCrosswalkId, crosswalk));\n return {\n isHighlighted,\n isDimmed: highlightedCrosswalks.length > 0 && !isHighlighted,\n highlightCrosswalk: useCallback(() => setCrosswalkHighlighted(crosswalk, true), [\n crosswalk,\n setCrosswalkHighlighted\n ]),\n removeHighlight: useCallback(() => setCrosswalkHighlighted(crosswalk, false), [\n crosswalk,\n setCrosswalkHighlighted\n ])\n };\n};\n\nexport const useCrosswalkFocus = (crosswalk?: CrosswalkBase) => {\n const {toggleCrosswalkFocus = noop, focusedCrosswalks = []} = useContext(CrosswalksDisplayContext) || {};\n const isFocused = !!crosswalk && focusedCrosswalks.some(eqBy(getCrosswalkId, crosswalk));\n return {\n isFocused,\n toggleCrosswalkFocus: useCallback(() => toggleCrosswalkFocus(crosswalk), [crosswalk, toggleCrosswalkFocus])\n };\n};\n","import React, {createContext, useContext} from 'react';\nimport {areOneHierarchyUris} from '@reltio/mdm-sdk';\n\nconst ExpandedAttributesContext = createContext(null);\n\ntype ProviderProps = {\n children: React.ReactNode;\n attributeUris: string[];\n};\n\nexport const ExpandedAttributesProvider = ({children, attributeUris}: ProviderProps) => {\n return <ExpandedAttributesContext.Provider value={attributeUris}>{children}</ExpandedAttributesContext.Provider>;\n};\n\nexport const useAttributeExpanded = (attributeUri: string) => {\n const expandedAttributes = useContext(ExpandedAttributesContext) || [];\n return expandedAttributes.some((uri) => areOneHierarchyUris(uri, attributeUri));\n};\n"],"names":["AvatarStates","className","icon","avatarText","rootClasses","otherProps","state","setState","useState","useEffect","ICON_MODE","TEXT_MODE","onImageLoadFail","ERROR_MODE","Avatar","classnames","iconRoot","src","onError","textRoot","getRowCellKey","rowIndex","columnData","id","cellIndex","rowCellHeightsMap","setRowCellHeightsMap","rowCellHeightsMapCache","useRef","flushHeightUpdates","useCallback","debounce","current","clearHeightsCache","getDynamicRowCellHeight","pipe","prop","__","changeRowCellHeight","curry","useWith","key","value","identity","RowCellAutoSizer","onChangeHeight","children","cell","cellProps","cellRef","rowValue","changeCellHeight","adjustCellHeight","clientHeight","useDidUpdateEffect","rawValue","handleHeight","onResize","RootRef","rootRef","propTypes","PropTypes","open","onClose","onConfirm","Dialog","DialogContent","DialogContentText","i18n","DialogActions","Button","onClick","color","useStyles","makeStyles","theme","tooltip","backgroundColor","palette","background","paper","text","primary","filter","padding","maxWidth","arrow","props","styles","Tooltip","classes","container","position","zIndex","boxSizing","backgroundClip","cursor","height","margin","backgroundImage","backgroundRepeat","backgroundSize","backgroundPosition","width","marginBottom","marginRight","isHorizontal","orientation","ResizablePanes","defaultSize","size","minSize","maxSize","allowResize","onChange","useTheme","containerEl","setContainerEl","isPaneAnimationEnabled","setIsPaneAnimationEnabled","enableAnimation","disableAnimation","getContainerSize","clientWidth","handleChange","containerSize","percentageSize","isMaxSize","isMinSize","paneAnimationStyle","useMemo","transition","transitions","create","easing","sharp","duration","leavingScreen","ref","split","onDragStarted","onDragFinished","pane1Style","undefined","SizePropType","isRequired","sourceType","metadata","useSelector","mdmModule","uri","findSourceSystemByUri","getSourceSystemLabel","getAbsoluteImageUrl","variant","textField","input","borderRadius","inputMultiline","paddingTop","paddingBottom","booleanEditor","paddingLeft","timestampEditor","minWidth","containerWidth","border","popoverRoot","DATA_TYPES_WITH_MULTILINE_EDITOR","DataTypes","SimpleAttributeEditor","attributeType","attributeValue","containerRef","onEdit","getBoundingClientRect","dataTypeDefinition","getAttrDataTypeDefinition","initEditorValue","attributeValueToEditorValue","editorValue","changeEditorValue","TextFieldProps","InputProps","disableUnderline","root","multiline","applyChangesAndClose","editedValue","editorValueToAttributeValue","isNil","equals","editedAttributeValue","isLookupAttrType","lookupCode","isNumericType","type","Popover","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","isBooleanType","isTimestampBasedType","onKeyUp","event","includes","onBackdropClick","DataTypeValueEditor","autoFocus","fieldName","attributeUriToSearchUri","fullWidth","menuItem","minHeight","secondary","menuText","fontSize","lineHeight","letterSpacing","marginLeft","sourceItem","borderBottom","MenuItemWithTooltip","withTooltip","MenuItem","MenuItemContent","Typography","CrosswalkMenuItem","forwardRef","item","onMenuClose","disabled","crosswalk","SourceItem","focusable","tooltipTitle","showForDisabled","e","displayName","fullyColored","opaque","wordBreak","content","pointerEvents","display","alignItems","opacity","actions","justifyContent","dataReltioId","disableEdit","disableDelete","onIgnore","onPin","onDelete","isReadingMode","isEditingMode","isHovered","onMouseEnter","onMouseLeave","setReadingMode","setEditingMode","useAttributeState","getLastUriPart","crosswalkDisabled","isCrosswalkDisabled","canModifyAttribute","system","canEdit","checkMetadataForUpdate","ModeTypes","canDelete","checkMetadataForDelete","isTemporary","isTempUri","showPin","pin","showIgnore","ignored","useCrosswalkColor","isHighlighted","isDimmed","highlightCrosswalk","removeHighlight","useCrosswalkHighlight","Edit","Delete","crosswalks","DataTypeValue","getAttributeValue","PinButton","isPinned","IgnoreButton","isIgnored","DropDownMenuButton","MenuItemRenderer","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","MoreVertIcon","menuItems","simpleAttributesWrapper","flexWrap","gap","dropIndicator","attributeValues","parentUri","crosswalksMap","onAdd","isDragItemOver","drop","useDrop","accept","canDrop","isRelationCrosswalk","isRelationUri","ownerType","isEntityCrosswalk","isEntityUri","checkMetadataForCreate","isRelationTypeUri","isEntityTypeUri","collect","monitor","isOver","index","length","attributeIndex","map","canCreate","NestedAttribute","ReferenceAttribute","ImageAttribute","wrapper","flexDirection","complexAttributesWrapper","paging","max","Infinity","requestNextPage","visibleValuesCount","setVisibleValuesCount","totalValues","propOr","hasPaging","showMore","showLess","shownValues","slice","hiddenValuesCount","values","other","renderValues","ShowMore","moreNumber","Math","min","valueNumber","ShowLess","isOpaque","LightArrowTooltip","title","placement","crosswalkIcon","attributeTypes","attributes","isReadableAttribute","BranchDecorator","enabled","Title","label","AttributesPager","name","path","SmallIconButton","DeleteIcon","disableRipple","flexShrink","alignSelf","verticalAlign","attributeTypesList","showDelete","expandedFromContext","useAttributeExpanded","expanded","setExpanded","pickBy","val","attrUri","areOneHierarchyUris","flatten","uniqBy","ArrowExpandButton","getCrosswalkId","Spacer","image","imageContainer","paddingRight","IMAGE_SIZE","imageWidth","imageHeight","ComplexAttribute","Image","containerClassName","getImageAttributeThumbnailUrl","getLabel","relationshipLabel","uiPath","entityLabel","ComplexAttributeLabel","InternalLink","href","getEntityLink","getReferencedEntityUriFromAttrValue","getReferencedRelationAttrTypesUris","attrTypeUri","findAttributeTypeByUri","reject","useComplexAttributeLabelStyles","component","body2","viewBox","fill","xmlns","fillRule","clipRule","d","fillOpacity","IgnoredIcon","IgnoredOutlinedIcon","PinIcon","PinOutlinedIcon","toggleCrosswalkFocus","isFocused","useCrosswalkFocus","sourceIcon","sourceInfo","VisibilityIcon","eyeIcon","crosswalkValue","overflow","whiteSpace","textOverflow","AttributeStates","attributeState","setAttributeState","READING","EDITING","HOVERED","setAttributeStateDebounced","renderAttributesList","valueContainerClassName","memo","LabelRenderer","imageSize","imageMargin","coloredCell","right","top","headCell","rowCell","cellValueWrapper","attributeTitle","ovValue","marginTop","count","textAlign","ruleType","ruleTypeLabel","rulePopup","overflowY","popupItem","closeButton","popupTitle","fontWeight","popupTitleWrapper","popupItemsWrapper","maxHeight","winnerSourceItemWrapper","winnerSourceItem","winnerSourceItemLabel","DefaultHeadCellRenderer","withTableContext","pick","parentTypeUri","selectedAttributeTypes","onSelectAttributeTypes","parentType","entityTypes","relationTypes","find","propEq","isNotSelected","attrType","data","either","isReference","isImage","isNested","both","checkCanCreateAttribute","mode","MoreAttributesButton","onApply","addedTypes","typesToSelect","forEach","readOnly","simpleAttributeWrapper","complexAttributeWrapper","borderTop","nestedValues","i","referenceValues","build","SourcesRenderer","sourcesUriOrder","sourceUri","ListItem","SourceIcon","ListItemText","primaryTypographyProps","AttributeRenderer","attributeUri","getInfoTitle","cond","getInfoContent","primaryAttributeUri","comparisonAttributeUri","info","setAnchorEl","closePopup","InfoIcon","currentTarget","IconButton","Close","List","showInfoIcon","WinnerSource","ColoredBlock","getCrosswalkColor","COLUMNS_DATA","hideable","initialWidth","isOvValue","isOv","DEFAULT_VISIBLE_COLUMNS","getCellValueRenderer","columnId","OvValuesRenderer","AttributeValuesRenderer","CountRenderer","RuleTypeRenderer","WinnerSourcesRenderer","DefaultCellValueRenderer","getSourcesUriOrderFromMetadata","getCrosswalksTypes","sortWith","descend","fixReferencedAttributeUri","getReferencedAttrTypeUrisFromAttrType","getBaseUri","getWinnerCrosswalks","chain","_","isInHierarchy","subAttrUriSuffix","subAttrValue","findValueInAttributesByUriSuffix","getBasicTableColumnsData","autoResize","resizable","sortable","headCellRenderer","AttributesHeadCellRenderer","HeadCellRenderer","rowCellValueRenderer","getRowValueForColumn","reduce","acc","countAttributeValues","defaultSurvivorshipGroup","survivorshipGroups","mapping","getSurvivorshipStrategy","survivorshipStrategy","getDefaultSurvivorshipStrategy","isSourceSystemRule","uniq","fixUri","isOtherAttributeWinnerRule","isComplexAttribute","isMinMaxValueRule","getRuleTypeValues","CellValueRenderer","columnIndex","isFirstColumn","onConfirmEditWithoutIgnore","onConfirmEditWithIgnore","option","setOption","onEnter","FormControl","FormLabel","RadioGroup","getValue","FormControlLabel","control","Radio","tableContainer","tableHeader","tableContent","flex","entity","isLoading","visibleColumns","onChangeVisibleColumns","noop","visibleColumnsData","initialAttrTypes","keys","without","makeAttrTypeUri","rowsData","columns","attrName","attrValues","crosswalksMapForAttribute","relation","assoc","getBasicTableRowsData","useDynamicRowCellHeight","renderRowCell","getRowCellHeight","always","pendingDeletion","setPendingDeletion","pendingIgnoredEditing","setPendingIgnoredEditing","handleEdit","tableContext","BasicViewHeader","ColumnsSettings","columnsData","selectedColumns","onChangeColumns","LinearLoadIndicator","BasicTable","fixFirstColumn","headRowHeight","defaultColumnWidth","defaultColumnMinWidth","context","ConfirmDeleteDialog","useColoredItemStyles","xmlnsXlink","stroke","strokeWidth","xlinkHref","mask","overflowWrap","button","textTransform","CopyIcon","navigator","clipboard","writeText","timestampEditorInput","isOpen","setIsOpen","date","valueOf","TimestampEditor","Date","unless","onAccept","onOpen","attributeWrapper","flexGrow","editor","moreButton","canEditAttribute","onEditAttribute","onDeleteAttribute","isTempCrosswalk","addedAttributes","setAddedAttributes","pendingDeletionAttrUri","setPendingDeletionAttrUri","CrosswalksAttrTypes","canBeAdded","canBeDeleted","extraAttributes","has","selectedAttributes","concat","attribute","attributeName","sourceSystemLabel","SimpleDropDownSelector","placeholder","options","sort","ascend","TextEditor","multiple","getValueLabel","required","onInput","target","moment","parseTimestamp","toString","formatDateTime","renderAttributeValue","handleDeleteAttribute","dragLayer","left","crosswalkPreview","sourceLabel","isDragging","clientOffset","useDragLayer","getClientOffset","getItem","dragLayerRef","dragLayerRect","x","y","dragItemTransform","style","transform","WebkitTransform","caption","controlButtons","cancelButton","newCrosswalk","setNewCrosswalk","CrosswalkAttributes","dissoc","focusedIcon","borderRight","crosswalkType","header","crosswalkWrapper","attributesWrapper","borderColor","deleteCrosswalkButton","labelValue","dependentIcon","isDependent","isEmpty","isColored","crosswalkColor","scrollToCrosswalk","useHighlightedCrosswalks","isDeleteDialogOpen","setDeleteDialogOpen","crosswalkId","drag","preview","useDrag","canDrag","getEmptyImage","captureDraggingState","eqCrosswalks","scrollIntoView","behavior","ExpandedValueTooltip","noWrap","Link","underline","source","crosswalksByTypes","showCrosswalkColors","crosswalksFocusEnabled","disableEditCrosswalk","disableDeleteCrosswalk","onToggleExpanded","highlightedCrosswalks","CrosswalkType","some","dependentCrosswalk","useCrosswalkActions","onLoad","onSuccess","handleRequest","request","then","errors","catch","addCrosswalk","contributorCrosswalk","addRequest","addCrosswalkInContributor","entityTypeUri","contributorCrosswalkType","contributorCrosswalkValue","contributorCrosswalkSourceTable","sourceTable","crosswalkSourceTable","crosswalkDeleteDate","deleteDate","entityUri","andThen","response","editCrosswalk","ifElse","deleteCrosswalkAttribute","editCrosswalkAttribute","deleteCrosswalk","emptyArray","useModifiedEntity","onModify","modifiedEntity","setModifiedEntity","setCrosswalksMap","temporaryAttributes","crosswalkForNewAttributes","resetCrosswalkForNewAttributes","newlyCreatedAttributes","setNewlyCreatedAttributes","groupCrosswalksByAttrUri","getCrosswalkAttributes","newCrosswalksMap","getRelationCrosswalks","newAttributes","Object","oldAttributes","difference","handleError","deleteAttribute","ignoreAttribute","pinAttribute","createAttribute","updateAttribute","handleAction","handleErrorResponse","error","action","getReferencedRelationFromAttrValue","removeRelation","Promise","all","useAttributeActions","onAddAttribute","newAttribute","createNewAttribute","findAttributeValues","addNewAttribute","tempUri","push","removeAttribute","evolve","tempAttributeUri","editedEntity","editAttribute","findAttributeValueByUri","onPinAttribute","onIgnoreAttribute","getCrosswalksWeight","sortDependentCrosswalksBySourceTable","cwA","cwB","sourceTableA","sourceTableB","groupCrosswalksByTypesAndSources","crosswalksBySourcesMap","attributeTypeUri","getAttributeTypeUriByValueUri","isEmptyCrosswalk","isCrosswalkWithoutSimple","sourceA","sourceB","CrosswalksDisplayContext","createContext","CrosswalksDisplayProvider","Provider","getColor","useContext","setCrosswalkHighlighted","eqBy","focusedCrosswalks","ExpandedAttributesContext","ExpandedAttributesProvider","attributeUris"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"5884.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AvatarWithFallback/AvatarWithFallback.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/hooks/useDynamicRowCellHeight.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/RowCellAutoSizer/RowCellAutoSizer.js","webpack://@reltio/remotes/../components/src/components/ConfirmDeleteDialog/ConfirmDeleteDialog.tsx","webpack://@reltio/remotes/../components/src/components/LightArrowTooltip/styles.ts","webpack://@reltio/remotes/../components/src/components/LightArrowTooltip/LightArrowTooltip.tsx","webpack://@reltio/remotes/../components/src/components/ResizablePanes/styles.js","webpack://@reltio/remotes/../components/src/components/ResizablePanes/ResizablePanes.js","webpack://@reltio/remotes/../components/src/components/SourceIcon/SourceIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttributeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttributeEditor/SimpleAttributeEditor.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttribute/CrosswalkMenuItem/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttribute/CrosswalkMenuItem/CrosswalkMenuItem.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttribute/SimpleAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttributesBlock/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/SimpleAttributesBlock/SimpleAttributesBlock.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/NestedAttributesBlock/NestedAttributesBlock.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/ReferenceAttributesBlock/ReferenceAttributesBlock.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/ImageAttributesBlock/ImageAttributesBlock.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/AttributesPager/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/AttributesPager/AttributesPager.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/CrosswalkIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/AttributesList/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/AttributesList/AttributesList.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/DeleteButton.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/ComplexAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/ComplexAttribute/ComplexAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/ImageAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/ImageAttribute/ImageAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/NestedAttribute/NestedAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/ReferenceAttribute/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/ReferenceAttribute/ReferenceAttribute.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/ComplexAttributeLabel.tsx","webpack://@reltio/remotes/../components/src/icons/Ignored.tsx","webpack://@reltio/remotes/../components/src/icons/IgnoredOutlined.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/IgnoreButton.tsx","webpack://@reltio/remotes/../components/src/icons/Pin.tsx","webpack://@reltio/remotes/../components/src/icons/PinOutlined.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/PinButton.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/SourceItem.tsx","webpack://@reltio/remotes/../components/src/components/attributes/inline/common/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/inline/hooks/useAttributeState.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributeValuesBlock/AttributeValuesBlock.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/AddAttributesButton/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/AddAttributesButton/AddAttributesButton.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/AttributesHeadCellRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/attribute-renderers/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/attribute-renderers/SimpleAttributesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/attribute-renderers/NestedAttributesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/attribute-renderers/ReferenceAttributesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/attribute-renderers/ImageAttributesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/AttributeValuesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/attribute-renderers/AttributesFactory.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/OvValuesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/CountRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/RuleTypeInfoButton.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/RuleTypeRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/WinnerSourcesRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/helpers.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/ConfirmEditIgnoredDialog/ConfirmEditIgnoredDialog.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/AttributesTable/AttributesTable.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/ColoredBlock/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/ColoredBlock/ColoredBlock.tsx","webpack://@reltio/remotes/../components/src/icons/Copy.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CopyableValueField/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/CopyableValueField/CopyableValueField.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkDateEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkDateEditor/CrosswalkDateEditor.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkAttributes/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkAttributes/CrosswalkAttributes.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkDragLayer/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkDragLayer/CrosswalkDragPreview.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkDragLayer/CrosswalkDragLayer.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkEditor/CrosswalkEditor.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/DummyCrosswalkRow/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/DummyCrosswalkRow/DummyCrosswalkRow.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkRow/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/CrosswalkRow/CrosswalkRow.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/ShowDependentLink/styles.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/ShowDependentLink/ShowDependentLink.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/SourceCrosswalksRow/SourceCrosswalksRow.tsx","webpack://@reltio/remotes/../components/src/components/crosswalks/hooks/useCrosswalkActions.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/hooks/useModifiedEntity.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/hooks/useAttributeActions.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/types/CrosswalkType.ts","webpack://@reltio/remotes/../components/src/components/crosswalks/utils/legend.ts","webpack://@reltio/remotes/../components/src/contexts/CrosswalksDisplayContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/ExpandedAttributesContext/index.tsx"],"sourcesContent":["import {Avatar as Avatar} from '@material-ui/core';\nimport classnames from 'classnames';\nimport React, {useEffect, useState} from 'react';\n\nenum AvatarStates {\n ICON_MODE,\n TEXT_MODE,\n ERROR_MODE\n}\ntype Props = {\n className?: string;\n icon?: string;\n avatarText?: string;\n variant?: 'circle' | 'circular' | 'rounded' | 'square';\n rootClasses?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst AvatarWithFallback = ({className, icon, avatarText, rootClasses, ...otherProps}: Props) => {\n const [state, setState] = useState<AvatarStates>(null);\n useEffect(() => {\n if (icon) {\n setState(AvatarStates.ICON_MODE);\n } else {\n setState(AvatarStates.TEXT_MODE);\n }\n }, [icon, avatarText]);\n const onImageLoadFail = () => {\n setState(AvatarStates.ERROR_MODE);\n };\n\n switch (state) {\n case AvatarStates.ICON_MODE:\n return (\n <Avatar\n className={classnames(className, rootClasses?.iconRoot)}\n src={icon}\n onError={onImageLoadFail}\n {...otherProps}\n />\n );\n case AvatarStates.TEXT_MODE:\n case AvatarStates.ERROR_MODE:\n return (\n <Avatar className={classnames(className, rootClasses?.textRoot)} {...otherProps}>\n {avatarText}\n </Avatar>\n );\n default:\n return null;\n }\n};\n\nexport default AvatarWithFallback;\n","import {useCallback, useRef, useState} from 'react';\nimport {__, curry, identity, pipe, prop, useWith} from 'ramda';\nimport {debounce} from '@reltio/mdm-sdk';\n\nconst getRowCellKey = ({rowIndex, columnData: {id}, cellIndex}) => `${id}[${rowIndex}][${cellIndex}]`;\n\nconst useDynamicRowCellHeight = () => {\n const [rowCellHeightsMap, setRowCellHeightsMap] = useState({});\n const rowCellHeightsMapCache = useRef({});\n const batchHeightUpdate = (key, value) => {\n rowCellHeightsMapCache.current[key] = value;\n };\n const flushHeightUpdates = useCallback(\n debounce(() => {\n setRowCellHeightsMap({...rowCellHeightsMapCache.current});\n }),\n []\n );\n const clearHeightsCache = useCallback(() => {\n rowCellHeightsMapCache.current = {};\n }, []);\n\n const getDynamicRowCellHeight = useCallback(pipe(getRowCellKey, prop(__, rowCellHeightsMap)), [rowCellHeightsMap]);\n\n const changeRowCellHeight = useCallback(\n curry(useWith(pipe(batchHeightUpdate, flushHeightUpdates), [getRowCellKey, identity])),\n []\n );\n\n return {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache};\n};\n\nexport default useDynamicRowCellHeight;\n","import React, {useRef} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ReactResizeDetector from 'react-resize-detector';\nimport {RootRef as RootRef} from '@material-ui/core';\nimport {useDidUpdateEffect} from '../../../hooks';\n\nconst RowCellAutoSizer = ({onChangeHeight, children: cell, ...cellProps}) => {\n const cellRef = useRef(null);\n\n const {rowValue, rowIndex, columnData, cellIndex} = cellProps;\n const changeCellHeight = onChangeHeight({rowIndex, cellIndex, columnData});\n\n const adjustCellHeight = () => cellRef.current && changeCellHeight(cellRef.current.clientHeight);\n\n useDidUpdateEffect(adjustCellHeight, [rowValue.rawValue]);\n\n return (\n <div>\n <ReactResizeDetector handleHeight={true} onResize={adjustCellHeight} />\n <RootRef rootRef={cellRef}>{cell}</RootRef>\n </div>\n );\n};\n\nRowCellAutoSizer.propTypes = {\n onChangeHeight: PropTypes.func,\n children: PropTypes.node\n};\n\nexport default RowCellAutoSizer;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogContentText as DialogContentText} from '@material-ui/core';\n\ntype Props = {\n open: boolean;\n onClose: () => void;\n onConfirm: () => void;\n};\n\nconst ConfirmDeleteDialog = ({open, onClose, onConfirm}: Props) => {\n const handleConfirm = () => {\n onConfirm();\n onClose();\n };\n return (\n <Dialog open={open}>\n <DialogContent>\n <DialogContentText>{i18n.text('Are you sure you want to delete this?')}</DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} color=\"primary\">\n {i18n.text('No')}\n </Button>\n <Button onClick={handleConfirm} color=\"primary\">\n {i18n.text('Yes')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default ConfirmDeleteDialog;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n tooltip: {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n filter:\n 'drop-shadow(0px 1px 5px #00000033) drop-shadow(0px 3px 1px #0000001F) drop-shadow(0px 2px 2px #00000024)',\n padding: '10px',\n maxWidth: 'none'\n },\n arrow: {\n color: theme.palette.background.paper\n }\n}));\n","import React from 'react';\nimport Tooltip, {TooltipProps} from '@material-ui/core/Tooltip';\n\nimport {useStyles} from './styles';\n\nconst LightArrowTooltip = (props: TooltipProps) => {\n const styles = useStyles();\n return <Tooltip {...props} classes={styles} arrow />;\n};\n\nexport default LightArrowTooltip;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n container: {\n position: 'relative',\n '& .Resizer': {\n zIndex: 1,\n boxSizing: 'border-box',\n backgroundClip: 'padding-box',\n '&.disabled': {\n cursor: 'initial',\n height: 0,\n margin: 0\n },\n '&.horizontal': {\n height: '11px',\n backgroundImage: 'linear-gradient(rgba(0,0,0,0.33), rgba(0,0,0,0.33))',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '100% 1px',\n backgroundPosition: 'top',\n width: '100%',\n marginBottom: '-10px',\n '&:not(.disabled):hover': {\n cursor: 'row-resize',\n backgroundImage:\n 'linear-gradient(rgba(0, 114, 206, 0), rgba(0, 114, 206, 0.35), rgba(0, 114, 206, 1))',\n backgroundSize: '100% 3px'\n }\n },\n '&.vertical': {\n width: '11px',\n backgroundImage: 'linear-gradient(rgba(0,0,0,0.33), rgba(0,0,0,0.33))',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '1px 100%',\n backgroundPosition: 'left',\n height: '100%',\n marginRight: '-10px',\n '&:not(.disabled):hover': {\n cursor: 'col-resize',\n backgroundImage:\n 'linear-gradient(to left, rgba(0, 114, 206, 0.35), rgba(0, 114, 206, 1), rgba(0, 114, 206, 0.35))',\n backgroundSize: '3px 100%'\n }\n }\n }\n }\n}));\n\nexport {useStyles};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport SplitPane from 'react-split-pane';\nimport {useTheme} from '@material-ui/core/styles';\n\nimport {useStyles} from './styles';\n\nimport {debounce} from '@reltio/mdm-sdk';\n\nconst HANDLE_CHANGE_DEBOUNCE_INTERVAL = 250;\n\nconst isHorizontal = (orientation) => orientation === 'horizontal';\n\nconst ResizablePanes = ({\n className,\n children,\n orientation,\n defaultSize,\n size,\n minSize,\n maxSize,\n allowResize,\n onChange\n}) => {\n const styles = useStyles();\n const theme = useTheme();\n const [containerEl, setContainerEl] = useState();\n const [isPaneAnimationEnabled, setIsPaneAnimationEnabled] = useState(true);\n\n const enableAnimation = useCallback(() => setIsPaneAnimationEnabled(true), []);\n const disableAnimation = useCallback(() => setIsPaneAnimationEnabled(false), []);\n const getContainerSize = () => (isHorizontal(orientation) ? containerEl?.clientHeight : containerEl?.clientWidth);\n\n const handleChange = useCallback(\n debounce((size) => {\n const containerSize = getContainerSize();\n onChange({\n percentageSize: `${(size / containerSize) * 100}%`,\n isMaxSize: maxSize > 0 ? size === maxSize : size === containerSize + maxSize,\n isMinSize: size === minSize\n });\n }, HANDLE_CHANGE_DEBOUNCE_INTERVAL),\n [onChange, orientation, maxSize, containerEl]\n );\n\n const paneAnimationStyle = useMemo(\n () => ({\n transition: theme.transitions.create(isHorizontal(orientation) ? 'height' : 'width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n })\n }),\n [orientation, theme]\n );\n\n if (typeof size === 'number' && size < 0) {\n size = (getContainerSize() || 0) + size;\n }\n\n return (\n <div ref={setContainerEl} className={classnames(styles.container, className)}>\n <SplitPane\n split={orientation}\n size={size}\n allowResize={allowResize}\n onChange={handleChange}\n defaultSize={defaultSize}\n minSize={minSize}\n maxSize={maxSize}\n onDragStarted={disableAnimation}\n onDragFinished={enableAnimation}\n pane1Style={isPaneAnimationEnabled ? paneAnimationStyle : undefined}\n >\n {children}\n </SplitPane>\n </div>\n );\n};\n\nconst SizePropType = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\n\nResizablePanes.propTypes = {\n className: PropTypes.string,\n children: PropTypes.arrayOf(PropTypes.node).isRequired,\n orientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired,\n defaultSize: SizePropType,\n size: SizePropType,\n minSize: SizePropType,\n maxSize: SizePropType,\n allowResize: PropTypes.bool,\n onChange: PropTypes.func\n};\n\nexport default ResizablePanes;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {findSourceSystemByUri, getAbsoluteImageUrl, getSourceSystemLabel, Source} from '@reltio/mdm-sdk';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\n\ntype Props = {\n sourceType: string;\n className?: string;\n classes?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst SOURCE_URL = 'https://s3.amazonaws.com/reltio.images/api';\nconst SourceIcon = ({sourceType, className, classes}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const {uri, icon}: Source = findSourceSystemByUri(metadata, sourceType) || {};\n const avatarText = uri ? getSourceSystemLabel(metadata, uri)[0] : '';\n const sourceIcon = icon ? getAbsoluteImageUrl(SOURCE_URL, icon) : null;\n\n return (\n <AvatarWithFallback\n className={className}\n avatarText={avatarText}\n icon={sourceIcon}\n variant=\"square\"\n rootClasses={classes}\n />\n );\n};\n\nexport default SourceIcon;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n color: string;\n containerWidth: number;\n};\n\nexport const useStyles = makeStyles(() => ({\n textField: {\n margin: 0\n },\n input: {\n borderRadius: 0\n },\n inputMultiline: {\n '&$input': {\n paddingTop: 0,\n paddingBottom: 0\n }\n },\n booleanEditor: {\n paddingLeft: '10px'\n },\n timestampEditor: {\n '&$paper': {\n minWidth: '255px'\n }\n },\n paper: ({color, containerWidth}: StylesProps) => ({\n border: `3px solid ${color}`,\n borderRadius: '4px',\n width: containerWidth,\n minWidth: '160px'\n }),\n popoverRoot: {\n zIndex: '10!important' as any\n }\n}));\n","import React, {KeyboardEvent, useState} from 'react';\nimport {Popover as Popover} from '@material-ui/core';\nimport {\n AttributeType,\n attributeUriToSearchUri,\n DataTypes,\n getAttrDataTypeDefinition,\n isBooleanType,\n isLookupAttrType,\n isNumericType,\n isTimestampBasedType,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {equals, isNil} from 'ramda';\nimport {DataTypeValueEditor} from '../../../editors';\nimport {attributeValueToEditorValue, editorValueToAttributeValue} from '../../editMode/SimpleAttributeEditor/utils';\nimport {useStyles} from './styles';\n\nconst DATA_TYPES_WITH_MULTILINE_EDITOR = [DataTypes.TYPE_TEXT, DataTypes.TYPE_BLOB];\n\ntype Props = {\n attributeType: AttributeType;\n attributeValue: SimpleAttributeValue;\n color: string;\n onClose: () => void;\n onEdit: (attributeValue: SimpleAttributeValue) => void;\n containerRef: React.RefObject<HTMLDivElement>;\n};\n\nexport const SimpleAttributeEditor = ({attributeType, attributeValue, color, containerRef, onClose, onEdit}: Props) => {\n const styles = useStyles({\n color,\n containerWidth: containerRef.current ? containerRef.current.getBoundingClientRect().width : 0\n });\n\n const dataTypeDefinition = getAttrDataTypeDefinition(attributeType);\n const initEditorValue = attributeValueToEditorValue(attributeValue, dataTypeDefinition);\n const [editorValue, changeEditorValue] = useState(initEditorValue);\n\n const TextFieldProps = {\n className: styles.textField,\n InputProps: {\n disableUnderline: true,\n classes: {\n root: styles.input,\n multiline: styles.inputMultiline\n }\n }\n };\n\n const applyChangesAndClose = () => {\n const editedValue = editorValueToAttributeValue(attributeType, editorValue);\n if (!isNil(editorValue) && !equals(editorValue, initEditorValue)) {\n const editedAttributeValue = isLookupAttrType(attributeType)\n ? {\n value: editedValue.value,\n lookupCode: editedValue.lookupCode\n }\n : {\n value: editorValue === '' && isNumericType(dataTypeDefinition.type) ? null : editedValue\n };\n onEdit({\n ...attributeValue,\n ...editedAttributeValue\n });\n }\n onClose();\n };\n\n const onKeyUp = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter' && !DATA_TYPES_WITH_MULTILINE_EDITOR.includes(dataTypeDefinition.type)) {\n applyChangesAndClose();\n } else if (event.key === 'Escape') onClose();\n };\n\n return (\n <Popover\n open={!!containerRef}\n anchorEl={containerRef.current}\n anchorOrigin={{vertical: 'top', horizontal: 'left'}}\n transformOrigin={{vertical: 'top', horizontal: 'left'}}\n classes={{\n paper: classnames(styles.paper, {\n [styles.booleanEditor]: isBooleanType(dataTypeDefinition.type),\n [styles.timestampEditor]: isTimestampBasedType(dataTypeDefinition.type)\n }),\n root: styles.popoverRoot\n }}\n onKeyUp={onKeyUp}\n onBackdropClick={applyChangesAndClose}\n >\n <DataTypeValueEditor\n autoFocus\n dataTypeDefinition={dataTypeDefinition}\n fieldName={attributeUriToSearchUri(attributeType.uri)}\n onChange={changeEditorValue}\n TextFieldProps={TextFieldProps}\n value={editorValue}\n fullWidth\n />\n </Popover>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n menuItem: {\n minHeight: '32px',\n color: theme.palette.text.secondary\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0,\n marginLeft: '16px'\n },\n sourceItem: {\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)',\n paddingBottom: '8px',\n paddingLeft: '16px',\n maxWidth: '200px'\n }\n}));\n","import {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport React, {forwardRef, ReactNode} from 'react';\nimport withTooltip from '../../../../../HOCs/withTooltip/withTooltip';\nimport SourceItem from '../../common/SourceItem';\nimport {useStyles} from './styles';\n\nconst MenuItemWithTooltip = withTooltip(MenuItem);\n\nexport type Item = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n icon?: ReactNode;\n crosswalk?: Crosswalk;\n color?: string;\n id?: string;\n onClick?: (e) => void;\n};\n\ntype Props = {\n item: Item;\n onMenuClose?: (e) => void;\n};\n\nconst MenuItemContent = ({styles, icon, text}: Item & {styles: Record<string, string>}) => {\n return (\n <>\n {icon}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </>\n );\n};\n\nconst CrosswalkMenuItem = forwardRef(({item, onMenuClose = () => {}}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {disabled, text, tooltip, onClick, id = '', icon, crosswalk, color} = item;\n const handleClick = (e) => {\n onMenuClose(e);\n onClick(e);\n };\n return crosswalk ? (\n <SourceItem className={styles.sourceItem} color={color} crosswalk={crosswalk} focusable />\n ) : (\n <MenuItemWithTooltip\n tooltipTitle={tooltip}\n showForDisabled={true}\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n data-reltio-id={`crosswalk-menu-item${id}`}\n >\n <MenuItemContent icon={icon} text={text} styles={styles} />\n </MenuItemWithTooltip>\n );\n});\n\nCrosswalkMenuItem.displayName = 'CrosswalkMenuItem';\n\nexport default CrosswalkMenuItem;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n variant: 'filled' | 'outlined';\n fullyColored: boolean;\n opaque: boolean;\n color: string;\n};\n\nexport const useStyles = makeStyles(() => ({\n root: ({fullyColored, opaque, color, variant}: StylesProps) => ({\n minHeight: '28px',\n wordBreak: 'break-word',\n ...(variant === 'filled' && {\n borderRadius: '4px',\n background: fullyColored ? color : `linear-gradient(to right, ${color} 8px, rgba(0,0,0,0.05) 8px)`\n }),\n ...(variant === 'outlined' && {\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n background: color,\n borderRadius: '4px 0px 0px 4px',\n width: '8px',\n height: '100%',\n pointerEvents: 'none'\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n boxSizing: 'border-box',\n borderRadius: '4px',\n border: fullyColored ? `${color} solid 2px` : 'rgba(0,0,0,0.12) solid 1px',\n width: '100%',\n height: '100%',\n pointerEvents: 'none'\n }\n }),\n display: 'flex',\n alignItems: 'center',\n opacity: opaque ? 1 : 0.38,\n transition: 'opacity 0.3s',\n position: 'relative'\n }),\n attributeValue: {\n marginLeft: '16px',\n padding: '6px 0',\n lineHeight: '14px',\n width: 'calc(100% - 71px)'\n },\n actions: {\n display: 'flex',\n width: '71px',\n justifyContent: 'flex-end',\n marginRight: '4px'\n }\n}));\n","import React, {useRef} from 'react';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport EditIcon from '@material-ui/icons/Edit';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {\n AttributeType,\n checkMetadataForDelete,\n checkMetadataForUpdate,\n Crosswalk,\n getAttrDataTypeDefinition,\n getAttributeValue,\n getLastUriPart,\n isCrosswalkDisabled,\n isTempUri,\n ModeTypes,\n RelationCrosswalk,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport DataTypeValue from '../../../DataTypeValue/DataTypeValue';\nimport DropDownMenuButton from '../../../DropDownMenuButton/DropDownMenuButton';\nimport {SimpleAttributeEditor} from '../SimpleAttributeEditor/SimpleAttributeEditor';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport IgnoreButton from '../common/IgnoreButton';\nimport PinButton from '../common/PinButton';\nimport CrosswalkMenuItem from './CrosswalkMenuItem/CrosswalkMenuItem';\nimport {useAttributeState} from '../hooks/useAttributeState';\nimport {useCrosswalkColor, useCrosswalkHighlight} from '../../../../contexts';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n dataReltioId?: string;\n attributeValue: SimpleAttributeValue;\n attributeType: AttributeType;\n crosswalk: Crosswalk | RelationCrosswalk;\n disableEdit?: boolean;\n disableDelete?: boolean;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n};\n\nconst SimpleAttribute = ({\n className,\n dataReltioId,\n attributeType = null,\n attributeValue,\n crosswalk,\n disableEdit,\n disableDelete,\n onIgnore,\n onEdit,\n onPin,\n onDelete\n}: Props) => {\n const {\n isReadingMode,\n isEditingMode,\n isHovered,\n onMouseEnter,\n onMouseLeave,\n setReadingMode,\n setEditingMode\n } = useAttributeState();\n\n const containerRef = useRef<HTMLDivElement>();\n\n const id = getLastUriPart(attributeValue.uri);\n const crosswalkDisabled = isCrosswalkDisabled(crosswalk);\n const canModifyAttribute = !attributeType.system && !crosswalkDisabled;\n const canEdit = canModifyAttribute && !disableEdit && checkMetadataForUpdate(ModeTypes.EDITING, attributeType);\n const canDelete = canModifyAttribute && !disableDelete && checkMetadataForDelete(ModeTypes.EDITING, attributeType);\n const isTemporary = isTempUri(attributeValue.uri);\n const showPin = !isTemporary && ((!isReadingMode && canEdit) || attributeValue.pin);\n const showIgnore = !isTemporary && ((!isReadingMode && canEdit) || attributeValue.ignored);\n\n const color = useCrosswalkColor(crosswalk);\n const {isHighlighted, isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(crosswalk);\n const styles = useStyles({\n variant: crosswalkDisabled ? 'outlined' : 'filled',\n opaque: !isDimmed,\n fullyColored: isHighlighted,\n color\n });\n const actions = [\n {\n crosswalk,\n color\n },\n {\n disabled: !canEdit,\n text: i18n.text('Edit'),\n icon: <EditIcon />,\n tooltip: canEdit ? null : i18n.text(\"You don't have permissions to edit\"),\n onClick: () => setEditingMode(),\n id: 'edit'\n },\n {\n disabled: !canDelete,\n text: i18n.text('Delete'),\n icon: <DeleteIcon />,\n tooltip: canDelete ? null : i18n.text(\"You don't have permissions to delete\"),\n onClick: () =>\n onDelete({\n attributeType,\n attributeValue,\n crosswalks: [crosswalk]\n }),\n id: 'delete'\n }\n ];\n\n const onClose = () => {\n removeHighlight();\n setReadingMode();\n };\n\n return (\n <div\n ref={containerRef}\n className={classnames(className, styles.root)}\n onMouseEnter={() => {\n highlightCrosswalk();\n onMouseEnter();\n }}\n onMouseLeave={() => {\n removeHighlight();\n onMouseLeave();\n }}\n data-reltio-id={dataReltioId}\n >\n <div className={styles.attributeValue}>\n <DataTypeValue\n value={getAttributeValue(attributeValue)}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n />\n </div>\n <div className={styles.actions}>\n {showPin && (\n <PinButton\n isPinned={attributeValue.pin}\n onClick={() => onPin({attributeValue})}\n disabled={!canEdit}\n />\n )}\n {showIgnore && (\n <IgnoreButton\n isIgnored={attributeValue.ignored}\n onClick={() => onIgnore({attributeValue})}\n disabled={!canEdit}\n />\n )}\n {isHovered && (\n <DropDownMenuButton\n MenuItemRenderer={CrosswalkMenuItem}\n menuId={`simple-attribute-additional-actions-${id}`}\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'XS',\n tooltipTitle: i18n.text('More actions')\n }}\n onMenuClose={onClose}\n menuItems={actions}\n />\n )}\n </div>\n {isEditingMode && (\n <SimpleAttributeEditor\n attributeType={attributeType}\n attributeValue={attributeValue}\n color={color}\n onClose={onClose}\n onEdit={(value) => onEdit({attributeType, attributeValue: value, crosswalk})}\n containerRef={containerRef}\n />\n )}\n </div>\n );\n};\nexport default SimpleAttribute;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n simpleAttributesWrapper: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: '4px',\n width: '100%',\n minHeight: '28px'\n },\n dropIndicator: {\n height: '28px',\n color: '#828282',\n fontSize: '13px',\n lineHeight: '28px',\n background: 'rgba(0, 0, 0, 0.04)',\n border: '1px dashed #828282',\n borderRadius: '4px',\n boxSizing: 'border-box',\n padding: '0 12px'\n }\n}));\n","import React from 'react';\nimport SimpleAttribute from '../SimpleAttribute';\nimport {\n AttributeType,\n checkMetadataForCreate,\n Crosswalk,\n isEntityTypeUri,\n isEntityUri,\n isRelationTypeUri,\n isRelationUri,\n ModeTypes,\n RelationCrosswalk,\n SimpleAttributeValue\n} from '@reltio/mdm-sdk';\nimport {CrosswalksMap} from '../types';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\nimport {useDrop} from 'react-dnd';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: SimpleAttributeValue[];\n crosswalksMap: CrosswalksMap;\n parentUri: string;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst SimpleAttributesBlock = ({\n attributeValues,\n attributeType,\n parentUri,\n disableEdit,\n crosswalksMap,\n onAdd,\n ...props\n}: Props) => {\n const styles = useStyles();\n const [{isDragItemOver}, drop] = useDrop<\n {crosswalk: Crosswalk | RelationCrosswalk; type: 'Crosswalk'},\n unknown,\n {isDragItemOver: boolean}\n >({\n accept: 'Crosswalk',\n canDrop: ({crosswalk}) => {\n const isRelationCrosswalk = isRelationUri(crosswalk.uri) || crosswalk.ownerType === 'relation';\n const isEntityCrosswalk = isEntityUri(crosswalk.uri) && crosswalk.ownerType === 'entity';\n return (\n checkMetadataForCreate(ModeTypes.EDITING, attributeType) &&\n !disableEdit &&\n ((isRelationCrosswalk && isRelationTypeUri(attributeType.uri)) ||\n (isEntityCrosswalk && isEntityTypeUri(attributeType.uri)))\n );\n },\n collect: (monitor) => ({\n isDragItemOver: monitor.isOver() && monitor.canDrop()\n }),\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n drop: ({crosswalk}, monitor) => {\n onAdd({attributeType, crosswalk, parentUri, index: attributeValues.length});\n }\n });\n let attributeIndex = 0;\n return (\n <div ref={drop} className={styles.simpleAttributesWrapper}>\n {attributeValues.map((value) =>\n crosswalksMap[value.uri]?.map((crosswalk) => (\n <SimpleAttribute\n key={value.uri + crosswalk.uri}\n attributeType={attributeType}\n attributeValue={value}\n crosswalk={crosswalk}\n disableEdit={disableEdit}\n dataReltioId={`value-index-${attributeIndex++}`}\n {...props}\n />\n ))\n )}\n {isDragItemOver && <div className={styles.dropIndicator}>{i18n.text('Drop here')}</div>}\n </div>\n );\n};\n\nexport default SimpleAttributesBlock;\n","import React from 'react';\nimport {AttributeType, checkMetadataForCreate, ModeTypes, NestedAttributeValue} from '@reltio/mdm-sdk';\nimport {CrosswalksMap} from '../types';\nimport NestedAttribute from '../NestedAttribute/NestedAttribute';\nimport {Button as Button} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\n\ntype Props = {\n className?: string;\n attributeType: AttributeType;\n attributeValues: NestedAttributeValue[];\n crosswalksMap: CrosswalksMap;\n parentUri: string;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst NestedAttributesBlock = ({\n className,\n attributeValues,\n attributeType,\n onAdd,\n parentUri,\n disableEdit,\n ...props\n}: Props) => {\n const canCreate = !disableEdit && checkMetadataForCreate(ModeTypes.EDITING, attributeType);\n return attributeValues.length === 0 && canCreate ? (\n <Button\n variant=\"text\"\n color=\"primary\"\n onClick={() =>\n onAdd({\n parentUri,\n attributeType,\n index: 0\n })\n }\n >\n {i18n.text('Create attribute')}\n </Button>\n ) : (\n <div className={className}>\n {attributeValues.map((value) => (\n <NestedAttribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n onAdd={onAdd}\n disableEdit={disableEdit}\n {...props}\n />\n ))}\n </div>\n );\n};\n\nexport default NestedAttributesBlock;\n","import React from 'react';\nimport {AttributeType, ReferenceAttributeValue} from '@reltio/mdm-sdk';\nimport {RelationCrosswalksMap} from '../types';\nimport ReferenceAttribute from '../ReferenceAttribute/ReferenceAttribute';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\n\ntype Props = {\n className?: string;\n attributeType: AttributeType;\n attributeValues: ReferenceAttributeValue[];\n crosswalksMap: RelationCrosswalksMap;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst ReferenceAttributesBlock = ({className, attributeValues, ...props}: Props) => {\n return (\n <div className={className}>\n {attributeValues.map((value) => (\n <ReferenceAttribute key={value.uri} attributeValue={value} {...props} />\n ))}\n </div>\n );\n};\n\nexport default ReferenceAttributesBlock;\n","import React from 'react';\nimport {AttributeType, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport ImageAttribute from '../ImageAttribute/ImageAttribute';\nimport {CrosswalksMap} from '../types';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\n\ntype Props = {\n className?: string;\n attributeType: AttributeType;\n attributeValues: ImageAttributeValue[];\n crosswalksMap: CrosswalksMap;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst ImageAttributesBlock = ({className, attributeValues, ...props}: Props) => {\n return (\n <div className={className}>\n {attributeValues.map((value) => (\n <ImageAttribute key={value.uri} attributeValue={value} {...props} />\n ))}\n </div>\n );\n};\n\nexport default ImageAttributesBlock;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start'\n },\n complexAttributesWrapper: {\n width: '100%'\n }\n}));\n","import React, {useState} from 'react';\nimport {AttributeType, AttributeValue, DataTypes, Paging} from '@reltio/mdm-sdk';\nimport {CrosswalksMap, RelationCrosswalksMap} from '../types';\nimport ShowMore from '../../pagersCommon/ShowMore';\nimport ShowLess from '../../pagersCommon/ShowLess';\nimport SimpleAttributesBlock from '../SimpleAttributesBlock/SimpleAttributesBlock';\nimport NestedAttributesBlock from '../NestedAttributesBlock/NestedAttributesBlock';\nimport ReferenceAttributesBlock from '../ReferenceAttributesBlock/ReferenceAttributesBlock';\nimport ImageAttributesBlock from '../ImageAttributesBlock/ImageAttributesBlock';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\nimport {propOr} from 'ramda';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeType: AttributeType;\n attributeValues: AttributeValue[];\n parentUri: string;\n paging?: Paging;\n max?: number;\n crosswalksMap: CrosswalksMap;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n requestNextPage?: () => void;\n};\n\nconst AttributesPager = ({\n attributeType,\n attributeValues = [],\n paging = {},\n max = Infinity,\n requestNextPage,\n ...props\n}: Props) => {\n const styles = useStyles();\n\n const [visibleValuesCount, setVisibleValuesCount] = useState(max);\n\n const totalValues = propOr(attributeValues.length, 'totalValues', paging);\n\n const hasPaging = max < totalValues;\n const showMore = hasPaging && visibleValuesCount < totalValues;\n const showLess = hasPaging && visibleValuesCount >= totalValues;\n const onShowMore = () => {\n if (attributeValues.length < totalValues) {\n requestNextPage(); // TODO: implement\n }\n setVisibleValuesCount(visibleValuesCount + max);\n };\n const onShowLess = () => {\n setVisibleValuesCount(max);\n };\n\n const shownValues = attributeValues.slice(0, visibleValuesCount);\n const hiddenValuesCount = totalValues - visibleValuesCount;\n\n const renderValues = (values) => {\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n return (\n <NestedAttributesBlock\n className={styles.complexAttributesWrapper}\n attributeValues={values}\n attributeType={attributeType}\n {...props}\n />\n );\n case DataTypes.TYPE_REFERENCE: {\n const {crosswalksMap, ...other} = props;\n return (\n <ReferenceAttributesBlock\n className={styles.complexAttributesWrapper}\n attributeValues={values}\n attributeType={attributeType}\n crosswalksMap={crosswalksMap as RelationCrosswalksMap}\n {...other}\n />\n );\n }\n case DataTypes.TYPE_IMAGE: {\n return (\n <ImageAttributesBlock\n className={styles.complexAttributesWrapper}\n attributeValues={values}\n attributeType={attributeType}\n {...props}\n />\n );\n }\n default:\n return <SimpleAttributesBlock attributeValues={values} attributeType={attributeType} {...props} />;\n }\n };\n\n return (\n <div className={styles.wrapper}>\n {renderValues(shownValues)}\n {showMore && (\n <ShowMore\n moreNumber={Math.min(max, hiddenValuesCount)}\n valueNumber={hiddenValuesCount}\n onClick={onShowMore}\n />\n )}\n {showLess && <ShowLess onClick={onShowLess} />}\n </div>\n );\n};\n\nexport default AttributesPager;\n","import React from 'react';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport {useCrosswalkColor, useCrosswalkHighlight} from '../../../../contexts';\nimport SourceItem from './SourceItem';\nimport LightArrowTooltip from '../../../LightArrowTooltip/LightArrowTooltip';\nimport classnames from 'classnames';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: Crosswalk;\n className?: string;\n};\n\nconst CrosswalkIcon = ({crosswalk, className}: Props) => {\n const color = useCrosswalkColor(crosswalk);\n const {isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(crosswalk);\n const styles = useStyles({isOpaque: !isDimmed, color});\n return (\n <LightArrowTooltip title={<SourceItem crosswalk={crosswalk} color={color} />} placement={'top'}>\n <div\n className={classnames(styles.crosswalkIcon, className)}\n onMouseEnter={() => highlightCrosswalk()}\n onMouseLeave={() => removeHighlight()}\n />\n </LightArrowTooltip>\n );\n};\n\nexport default CrosswalkIcon;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n title: {\n fontSize: '12px',\n lineHeight: '14px',\n paddingBottom: '4px',\n display: 'inline-block',\n color: theme.palette.text.secondary\n }\n}));\n","import React from 'react';\nimport {AttributeType, AttributeValue, isReadableAttribute, RecordAttributesType} from '@reltio/mdm-sdk';\nimport {CrosswalksMap} from '../types';\nimport AttributesPager from '../AttributesPager/AttributesPager';\nimport {path} from 'ramda';\nimport Title from '../../../Title/Title';\nimport BranchDecorator from '../../BranchDecorator/BranchDecorator';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeTypes: AttributeType[];\n attributes: RecordAttributesType;\n parentUri: string;\n crosswalksMap: CrosswalksMap;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst AttributesList = ({attributeTypes, attributes, ...props}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {attributeTypes.filter(isReadableAttribute).map((attributeType) => (\n <BranchDecorator key={attributeType.uri} enabled={true}>\n <Title className={styles.title} label={attributeType.label} />\n <AttributesPager\n attributeType={attributeType}\n attributeValues={attributes[attributeType.name] as AttributeValue[]}\n paging={path(['paging', attributeType.uri], attributes)}\n {...props}\n />\n </BranchDecorator>\n ))}\n </>\n );\n};\n\nexport default AttributesList;\n","import React from 'react';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n onClick: () => void;\n};\n\nconst DeleteButton = ({onClick}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n tooltipTitle={i18n.text('Delete')}\n onClick={onClick}\n size=\"XS\"\n disableRipple\n />\n );\n};\n\nexport default DeleteButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n minHeight: '20px'\n },\n actions: {\n display: 'flex',\n width: '65px',\n justifyContent: 'flex-end',\n flexShrink: 0,\n alignSelf: 'center'\n },\n crosswalkIcon: {\n display: 'inline-block',\n verticalAlign: 'middle',\n '& + &': {\n marginLeft: '4px'\n }\n }\n}));\n","import React, {useState} from 'react';\nimport {\n areOneHierarchyUris,\n AttributeType,\n checkMetadataForDelete,\n checkMetadataForUpdate,\n ComplexAttributeValue,\n Crosswalk,\n isTempUri,\n getCrosswalkId,\n ModeTypes\n} from '@reltio/mdm-sdk';\nimport {CrosswalksMap} from '../types';\nimport {useAttributeState} from '../hooks/useAttributeState';\nimport {Spacer} from '../../../index';\nimport CrosswalkIcon from '../common/CrosswalkIcon';\nimport {flatten, pickBy, pipe, prop, uniqBy, values} from 'ramda';\nimport ArrowExpandButton from '../../../ArrowExpandButton/ArrowExpandButton';\nimport AttributesList from '../AttributesList/AttributesList';\nimport PinButton from '../common/PinButton';\nimport IgnoreButton from '../common/IgnoreButton';\nimport DeleteButton from '../common/DeleteButton';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\nimport {useDidUpdateEffect} from '../../../../hooks';\nimport {useAttributeExpanded} from '../../../../contexts';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ComplexAttributeValue;\n attributeType: AttributeType;\n label: React.ReactNode;\n lazy?: boolean;\n attributeTypesList: AttributeType[];\n crosswalksMap: CrosswalksMap;\n disableEdit?: boolean;\n disableDelete?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst ComplexAttribute = ({\n attributeType,\n attributeValue,\n attributeTypesList,\n label,\n crosswalksMap,\n disableEdit,\n disableDelete,\n onPin,\n onIgnore,\n onDelete,\n onEdit,\n onAdd\n}: Props) => {\n const styles = useStyles();\n\n const {isReadingMode, onMouseEnter, onMouseLeave} = useAttributeState();\n const canEdit = !disableEdit && checkMetadataForUpdate(ModeTypes.EDITING, attributeType);\n const canDelete = !disableDelete && checkMetadataForDelete(ModeTypes.EDITING, attributeType);\n const isTemporary = isTempUri(attributeValue.uri);\n const showPin = !isTemporary && ((!isReadingMode && canEdit) || attributeValue.pin);\n const showIgnore = !isTemporary && ((!isReadingMode && canEdit) || attributeValue.ignored);\n const showDelete = !isReadingMode && canDelete;\n const expandedFromContext = useAttributeExpanded(attributeValue.uri);\n const [expanded, setExpanded] = useState(expandedFromContext || isTemporary);\n useDidUpdateEffect(() => {\n if (expandedFromContext) setExpanded(expandedFromContext);\n }, [expandedFromContext]);\n\n const crosswalks: Crosswalk[] = pipe(\n pickBy((val, attrUri) => areOneHierarchyUris(attrUri, attributeValue?.uri)),\n values,\n flatten,\n uniqBy(prop('uri'))\n )(crosswalksMap);\n\n return (\n <>\n <div className={styles.root} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <ArrowExpandButton onClick={() => setExpanded((value) => !value)} expanded={expanded} />\n <span>\n {label}\n {crosswalks.map((crosswalk) => (\n <CrosswalkIcon\n key={getCrosswalkId(crosswalk)}\n crosswalk={crosswalk}\n className={styles.crosswalkIcon}\n />\n ))}\n </span>\n <Spacer />\n <div className={styles.actions}>\n {showPin && (\n <PinButton\n disabled={!canEdit}\n isPinned={attributeValue.pin}\n onClick={() => onPin({attributeValue})}\n />\n )}\n {showIgnore && (\n <IgnoreButton\n disabled={!canEdit}\n isIgnored={attributeValue.ignored}\n onClick={() => onIgnore({attributeValue})}\n />\n )}\n {showDelete && (\n <DeleteButton\n onClick={() =>\n onDelete({\n attributeType,\n attributeValue,\n crosswalks: crosswalksMap[attributeValue.uri]\n })\n }\n />\n )}\n </div>\n </div>\n {expanded && (\n <AttributesList\n attributeTypes={attributeTypesList}\n attributes={attributeValue.value}\n parentUri={attributeValue.uri}\n crosswalksMap={crosswalksMap}\n disableEdit={!canEdit}\n disableDelete={!canDelete}\n onPin={onPin}\n onIgnore={onIgnore}\n onDelete={onDelete}\n onEdit={onEdit}\n onAdd={onAdd}\n />\n )}\n </>\n );\n};\n\nexport default ComplexAttribute;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n image: {\n borderRadius: '4px',\n background: 'white',\n display: 'inline-block',\n verticalAlign: 'middle'\n },\n imageContainer: {\n display: 'inline',\n lineHeight: '45px',\n paddingRight: '8px'\n }\n}));\n","import React from 'react';\nimport {AttributeType, getImageAttributeThumbnailUrl, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport Image from '../../../Image/Image';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {CrosswalksMap} from '../types';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {useStyles} from './styles';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\n\nconst IMAGE_SIZE = {imageWidth: 55, imageHeight: 45};\n\ntype Props = {\n attributeValue: ImageAttributeValue;\n attributeType: AttributeType;\n crosswalksMap: CrosswalksMap;\n disableEdit?: boolean;\n disableDelete?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst ImageAttribute = ({attributeValue, attributeType, ...other}: Props) => {\n const styles = useStyles();\n\n return (\n <ComplexAttribute\n attributeValue={attributeValue}\n attributeType={attributeType}\n attributeTypesList={attributeType.attributes}\n label={\n <Image\n containerClassName={styles.imageContainer}\n className={styles.image}\n src={getImageAttributeThumbnailUrl(attributeValue)}\n size={IMAGE_SIZE}\n />\n }\n {...other}\n />\n );\n};\n\nexport default ImageAttribute;\n","import React from 'react';\nimport {AttributeType, getLabel, NestedAttributeValue} from '@reltio/mdm-sdk';\nimport {CrosswalksMap} from '../types';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {ComplexAttributeLabel} from '../common/ComplexAttributeLabel';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\n\ntype Props = {\n attributeValue: NestedAttributeValue;\n attributeType: AttributeType;\n crosswalksMap: CrosswalksMap;\n disableEdit?: boolean;\n disableDelete?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst NestedAttribute = ({attributeValue, attributeType, ...other}: Props) => {\n const label = <ComplexAttributeLabel>{getLabel(attributeValue?.label)}</ComplexAttributeLabel>;\n return (\n <ComplexAttribute\n attributeValue={attributeValue}\n attributeType={attributeType}\n attributeTypesList={attributeType.attributes}\n label={label}\n {...other}\n />\n );\n};\n\nexport default NestedAttribute;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n relationshipLabel: {\n marginLeft: '4px',\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n AttributeType,\n findAttributeTypeByUri,\n getEntityLink,\n getLabel,\n getReferencedEntityUriFromAttrValue,\n getReferencedRelationAttrTypesUris,\n ReferenceAttributeValue\n} from '@reltio/mdm-sdk';\nimport {RelationCrosswalksMap} from '../types';\nimport ComplexAttribute from '../ComplexAttribute/ComplexAttribute';\nimport {isNil, map, pipe, reject} from 'ramda';\nimport {DeleteAttributeEvent} from '../types/DeleteAttributeEvent';\nimport {PinAttributeEvent} from '../types/PinAttributeEvent';\nimport {IgnoreAttributeEvent} from '../types/IgnoreAttributeEvent';\nimport {EditAttributeEvent} from '../types/EditAttributeEvent';\nimport {AddAttributeEvent} from '../types/AddAttributeEvent';\nimport {ComplexAttributeLabel} from '../common/ComplexAttributeLabel';\nimport InternalLink from '../../../InternalLink/InternalLink';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ReferenceAttributeValue;\n attributeType: AttributeType;\n crosswalksMap: RelationCrosswalksMap;\n disableEdit?: boolean;\n disableDelete?: boolean;\n onPin: (event: PinAttributeEvent) => void;\n onIgnore: (event: IgnoreAttributeEvent) => void;\n onDelete: (event: DeleteAttributeEvent) => void;\n onEdit: (event: EditAttributeEvent) => void;\n onAdd: (event: AddAttributeEvent) => void;\n};\n\nconst ReferenceAttribute = ({attributeValue, attributeType, ...other}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n\n const entityLabel = (\n <ComplexAttributeLabel>\n <InternalLink href={getEntityLink({uiPath, uri: getReferencedEntityUriFromAttrValue(attributeValue)})}>\n {getLabel(attributeValue.label)}\n {attributeValue.relationshipLabel && (\n <span className={styles.relationshipLabel}>{attributeValue.relationshipLabel}</span>\n )}\n </InternalLink>\n </ComplexAttributeLabel>\n );\n\n const attributeTypesList = pipe(\n getReferencedRelationAttrTypesUris,\n map((attrTypeUri) => findAttributeTypeByUri(metadata, attrTypeUri)),\n reject(isNil)\n )(attributeType);\n\n return (\n <ComplexAttribute\n attributeValue={attributeValue}\n attributeType={attributeType}\n attributeTypesList={attributeTypesList}\n label={entityLabel}\n {...other}\n />\n );\n};\n\nexport default ReferenceAttribute;\n","import React from 'react';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useComplexAttributeLabelStyles} from './styles';\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const ComplexAttributeLabel = ({children}: Props) => {\n const styles = useComplexAttributeLabelStyles();\n\n return (\n <Typography component=\"span\" variant=\"body2\" classes={{body2: styles.label}}>\n {children}\n </Typography>\n );\n};\n","import React from 'react';\n\nconst SvgIgnored: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 3.5A8.503 8.503 0 003.5 12c0 4.692 3.808 8.5 8.5 8.5s8.5-3.808 8.5-8.5-3.808-8.5-8.5-8.5zM6.1 12c0-3.26 2.64-5.9 5.9-5.9 1.161 0 2.24.336 3.149.917L7.017 15.15A5.821 5.821 0 016.101 12zm5.9 5.9c-1.16 0-2.24-.336-3.148-.917l8.131-8.131c.581.908.917 1.987.917 3.148 0 3.26-2.64 5.9-5.9 5.9z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgIgnored;\n","import React from 'react';\n\nconst SvgIgnoredOutlined: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M17.847 9.402a6.34 6.34 0 00-.8-1.322L8.08 17.048A6.34 6.34 0 0012 18.4a6.398 6.398 0 005.847-8.998zm-7.283 7.283l6.121-6.121a4.898 4.898 0 01-6.121 6.121zm1.437-11.084a6.334 6.334 0 013.92 1.352L6.953 15.92A6.334 6.334 0 015.6 12c0-3.536 2.864-6.4 6.4-6.4zm0 1.5c.5 0 .982.075 1.436.215l-6.121 6.12A4.898 4.898 0 0112 7.1zM6.6 17.903A7.967 7.967 0 0012 20c4.417-.001 8.001-3.585 8.001-8.001a7.967 7.967 0 00-2.601-5.902A7.988 7.988 0 0012 4c-4.416 0-8 3.584-8 8a7.967 7.967 0 002.602 5.902zM12 2.5c-5.244 0-9.5 4.256-9.5 9.5s4.256 9.5 9.5 9.5 9.5-4.256 9.5-9.5-4.256-9.5-9.5-9.5z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgIgnoredOutlined;\n","import React from 'react';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport IgnoredIcon from '../../../../icons/Ignored';\nimport IgnoredOutlinedIcon from '../../../../icons/IgnoredOutlined';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n isIgnored: boolean;\n onClick: () => void;\n disabled?: boolean;\n};\n\nconst IgnoreButton = ({isIgnored, onClick, disabled}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n disabled={disabled}\n showForDisabled={true}\n icon={isIgnored ? IgnoredIcon : IgnoredOutlinedIcon}\n tooltipTitle={disabled ? i18n.text(\"You don't have permissions to ignore\") : i18n.text('Ignore')}\n onClick={onClick}\n size=\"XS\"\n disableRipple\n />\n );\n};\n\nexport default IgnoreButton;\n","import React from 'react';\n\nconst SvgPin: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16 4v6l2 2v2h-5v7l-.992 1L11 21v-7H6v-2l2-2V4H7V2h10v2h-1z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgPin;\n","import React from 'react';\n\nconst SvgPinOutlined: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16 10V4h1V2H7v2h1v6l-2 2v2h5v7l1.008 1L13 21v-7h5v-2l-2-2zm-6-6h4v7l1 1H9l1-1V4z\"\n fill=\"#000\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgPinOutlined;\n","import React from 'react';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport PinIcon from '../../../../icons/Pin';\nimport PinOutlinedIcon from '../../../../icons/PinOutlined';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n isPinned: boolean;\n onClick: () => void;\n disabled?: boolean;\n};\n\nconst PinButton = ({isPinned, onClick, disabled}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n disabled={disabled}\n showForDisabled={true}\n onClick={onClick}\n icon={isPinned ? PinIcon : PinOutlinedIcon}\n tooltipTitle={disabled ? \"You don't have permissions to pin\" : i18n.text('Pin')}\n size=\"XS\"\n disableRipple\n />\n );\n};\n\nexport default PinButton;\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport mdmModule from '@reltio/mdm-module';\nimport {Crosswalk, findSourceSystemByUri, Source} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport SourceIcon from '../../../SourceIcon/SourceIcon';\nimport classnames from 'classnames';\n\nimport {useCrosswalkFocus} from '../../../../contexts';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: Crosswalk;\n color: string;\n focusable?: boolean;\n className?: string;\n};\n\nconst SourceItem = ({crosswalk, color, className, focusable = false}: Props) => {\n const {toggleCrosswalkFocus, isFocused} = useCrosswalkFocus(crosswalk);\n const styles = useStyles({color, isFocused});\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const {label} = findSourceSystemByUri(metadata, crosswalk.type) as Source;\n return (\n <div className={classnames(styles.sourceItem, className)}>\n <SourceIcon className={styles.sourceIcon} sourceType={crosswalk.type} />\n <div className={styles.sourceInfo}>\n <div>\n <span className={styles.label}>{label}</span>\n {focusable && (\n <SmallIconButtonWithTooltip\n icon={VisibilityIcon}\n className={styles.eyeIcon}\n size={'XXS'}\n tooltipTitle={i18n.text('Focus')}\n onClick={() => toggleCrosswalkFocus()}\n />\n )}\n </div>\n <div className={styles.crosswalkValue}>{crosswalk.value}</div>\n </div>\n </div>\n );\n};\n\nexport default SourceItem;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n color: string;\n isOpaque?: boolean;\n isFocused?: boolean;\n};\n\nexport const useStyles = makeStyles({\n sourceItem: {\n display: 'flex',\n overflow: 'hidden'\n },\n eyeIcon: ({isFocused}: StylesProps) => ({\n marginLeft: '10px',\n color: isFocused ? '#000' : 'rgba(0, 0, 0, 0.54)'\n }),\n label: {\n color: 'rgba(0, 0, 0, 0.87)',\n verticalAlign: 'top',\n fontSize: '13px',\n lineHeight: '16px'\n },\n sourceInfo: {\n overflow: 'hidden'\n },\n crosswalkValue: {\n color: 'rgba(0, 0, 0, 0.54)',\n fontSize: '12px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n sourceIcon: ({color}: StylesProps) => ({\n height: '16px',\n width: '16px',\n marginRight: '9px',\n fontSize: '14px',\n backgroundColor: color\n }),\n crosswalkIcon: ({color, isOpaque}: StylesProps) => ({\n backgroundColor: color,\n height: '12px',\n width: '12px',\n borderRadius: '30px',\n opacity: isOpaque ? 1 : 0.38,\n transition: 'opacity 0.3s'\n })\n});\n\nexport const useComplexAttributeLabelStyles = makeStyles(() => ({\n label: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 'normal',\n marginLeft: '2px',\n marginRight: '8px'\n }\n}));\n","import {debounce} from '@reltio/mdm-sdk';\nimport {useCallback, useEffect, useState} from 'react';\n\nenum AttributeStates {\n READING = 'READING',\n HOVERED = 'HOVERED',\n EDITING = 'EDITING'\n}\n\nconst HIDE_INTERVAL = 50;\n\nexport const useAttributeState = () => {\n const [attributeState, setAttributeState] = useState<AttributeStates>(null);\n const isReadingMode = attributeState === AttributeStates.READING;\n const isEditingMode = attributeState === AttributeStates.EDITING;\n const isHovered = attributeState === AttributeStates.HOVERED;\n\n useEffect(() => {\n setAttributeState(AttributeStates.READING);\n }, []);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const setAttributeStateDebounced = useCallback(debounce(setAttributeState, HIDE_INTERVAL), []);\n\n const onMouseEnter = useCallback(() => {\n if (!isEditingMode) setAttributeStateDebounced(AttributeStates.HOVERED);\n }, [setAttributeStateDebounced, isEditingMode]);\n\n const onMouseLeave = useCallback(() => {\n if (!isEditingMode) setAttributeStateDebounced(AttributeStates.READING);\n }, [setAttributeStateDebounced, isEditingMode]);\n\n const setReadingMode = useCallback(() => setAttributeState(AttributeStates.READING), [setAttributeState]);\n const setEditingMode = useCallback(() => setAttributeState(AttributeStates.EDITING), [setAttributeState]);\n\n return {\n setReadingMode,\n setEditingMode,\n onMouseLeave,\n onMouseEnter,\n isReadingMode,\n isEditingMode,\n isHovered\n };\n};\n","import {AttributeType, AttributeValue, DataTypes, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport React, {memo} from 'react';\nimport {ReadOnlyAttribute} from '../../..';\nimport ImageAttributesLine from '../ImageAttributesLine';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n expanded?: boolean;\n valueContainerClassName?: string;\n LabelRenderer?: ({attributeType: AttributeType, attributeValue: AttributeValue}) => JSX.Element;\n showNonOv?: boolean;\n};\n\nconst renderAttributesList = ({values, valueContainerClassName, ...props}: Props) => {\n return (\n <>\n {(values || []).map((attributeValue) => (\n <div key={attributeValue.uri} className={valueContainerClassName}>\n <ReadOnlyAttribute attributeValue={attributeValue} {...props} />\n </div>\n ))}\n </>\n );\n};\n\nconst AttributeValuesBlock = ({expanded, LabelRenderer, ...props}: Props) => {\n const {attributeType, values, valueContainerClassName} = props;\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n case DataTypes.TYPE_REFERENCE: {\n return renderAttributesList({expanded, LabelRenderer, ...props});\n }\n case DataTypes.TYPE_IMAGE: {\n return (\n <div className={valueContainerClassName}>\n <ImageAttributesLine\n attributeType={attributeType}\n attributeValues={values as ImageAttributeValue[]}\n imageSize={{imageHeight: 40, imageWidth: 40, imageMargin: 2}}\n />\n </div>\n );\n }\n default: {\n return renderAttributesList({...props});\n }\n }\n};\n\nexport default memo(AttributeValuesBlock);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n coloredCell: {\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: 'rgba(0,0,0,0.06)',\n pointerEvents: 'none'\n }\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '12px',\n height: '100%',\n color: theme.palette.text.secondary\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n cellValueWrapper: {\n padding: '15px 15px 0 15px',\n '&:last-child': {\n paddingBottom: '15px'\n }\n },\n attributeTitle: {\n display: 'block',\n marginLeft: '3px',\n '&:not(:last-child)': {\n marginBottom: '5px'\n }\n },\n ovValue: {\n '& + &': {\n marginTop: '4px'\n }\n },\n count: {\n textAlign: 'center'\n },\n ruleType: {\n display: 'flex',\n alignItems: 'center'\n },\n ruleTypeLabel: {\n marginRight: '5px'\n },\n rulePopup: {\n width: '270px',\n overflowY: 'hidden'\n },\n popupItem: {\n paddingBottom: '5px',\n paddingTop: '5px'\n },\n sourceIcon: {\n height: '16px',\n width: '16px',\n marginRight: '9px',\n fontSize: '14px'\n },\n closeButton: {\n height: 24,\n width: 24\n },\n popupTitle: {\n fontWeight: 500,\n marginLeft: '12px'\n },\n popupTitleWrapper: {\n display: 'flex',\n paddingLeft: 16,\n paddingTop: 16\n },\n popupItemsWrapper: {\n overflowY: 'auto',\n maxHeight: '280px'\n },\n winnerSourceItemWrapper: {\n paddingBottom: '2px',\n paddingTop: '2px'\n },\n winnerSourceItem: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n paddingLeft: '8px'\n },\n winnerSourceItemLabel: {\n fontSize: 13\n }\n}));\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props: React.PropsWithChildren<Record<string, unknown>>) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.headCell, styles.coloredCell)}>\n <DefaultHeadCellRenderer {...props} />\n {props.children}\n </div>\n );\n};\n\nexport default HeadCellRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n marginBottom: '-6px'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport {AddInlineAttributeEvent} from '../../../attributes/inline';\nimport MoreAttributesButton from '../../../attributes/editMode/MoreAttributesButton/MoreAttributesButton';\nimport {withTableContext} from '../../../BasicTableView';\nimport i18n from 'ui-i18n';\nimport {both, either, filter, pick, pipe, propEq, propOr, reject} from 'ramda';\nimport {\n AttributeType,\n checkCanCreateAttribute,\n isImage,\n isNested,\n isReadableAttribute,\n isReference,\n ModeTypes\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n parentUri: string;\n parentTypeUri: string;\n selectedAttributeTypes?: AttributeType[];\n onSelectAttributeTypes: (selected: AttributeType[]) => void;\n onAdd: (event: AddInlineAttributeEvent) => void;\n};\n\nexport const AddAttributesButton = ({\n parentTypeUri,\n parentUri,\n selectedAttributeTypes,\n onSelectAttributeTypes,\n onAdd\n}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const parentType = [...metadata.entityTypes, ...(metadata.relationTypes || [])].find(propEq('uri', parentTypeUri));\n const isNotSelected = (attrType: AttributeType) => !selectedAttributeTypes?.find(propEq('uri', attrType.uri));\n const canCreate = (attributeType) => checkCanCreateAttribute({attributeType, mode: ModeTypes.EDITING});\n\n const data = pipe(\n propOr([], 'attributes'),\n reject(either(isReference, isImage)),\n filter(either(isNested, isNotSelected)),\n filter(both(isReadableAttribute, canCreate))\n )(parentType);\n\n const handleAdd = (addedTypes: AttributeType[]) => {\n const typesToSelect = addedTypes.filter(isNotSelected);\n if (typesToSelect.length > 0) {\n onSelectAttributeTypes([...typesToSelect, ...selectedAttributeTypes]);\n }\n addedTypes.filter(isNested).forEach((attributeType) => {\n onAdd({attributeType, parentUri});\n });\n };\n\n return (\n <div className={styles.root}>\n <MoreAttributesButton\n label={i18n.text('Attribute')}\n popupTitle={i18n.text('Add attributes')}\n data={data}\n onApply={handleAdd}\n />\n </div>\n );\n};\n\nexport default withTableContext(\n pick(['parentUri', 'parentTypeUri', 'onAdd', 'selectedAttributeTypes', 'onSelectAttributeTypes'])\n)(AddAttributesButton);\n","import React from 'react';\nimport HeadCellRenderer from './HeadCellRenderer';\nimport AddAttributesButton from '../AddAttributesButton/AddAttributesButton';\nimport Spacer from '../../../Spacer/Spacer';\nimport {withTableContext} from '../../../BasicTableView';\nimport {pick} from 'ramda';\n\ntype Props = {\n readOnly?: boolean;\n headCellData: {\n label: string;\n };\n};\n\nexport const AttributesHeadCellRenderer = ({readOnly, ...props}: Props) => {\n return readOnly ? (\n <HeadCellRenderer {...props} />\n ) : (\n <HeadCellRenderer {...props}>\n <Spacer />\n <AddAttributesButton />\n </HeadCellRenderer>\n );\n};\n\nexport default withTableContext(pick(['readOnly']))(AttributesHeadCellRenderer);\n","import React from 'react';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: unknown;\n};\n\nconst DefaultCellValueRenderer = ({value}: Props) => {\n const styles = useStyles();\n return <div className={styles.cellValueWrapper}>{value}</div>;\n};\n\nexport default DefaultCellValueRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n simpleAttributeWrapper: {\n padding: '15px'\n },\n complexAttributeWrapper: {\n padding: '15px',\n '& + &': {\n borderTop: '1px solid rgba(0,0,0,.1)'\n }\n }\n}));\n","import React from 'react';\nimport {InlineAttributesPager} from '../../../../attributes/inline';\nimport {AttributesRendererProps} from './AttributesFactory';\nimport {SimpleAttributeValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst SimpleAttributesRenderer = ({attributeValues, ...props}: AttributesRendererProps) => {\n const styles = useStyles();\n return (\n <div className={styles.simpleAttributeWrapper}>\n <InlineAttributesPager attributeValues={attributeValues as SimpleAttributeValue[]} {...props} />\n </div>\n );\n};\n\nexport default SimpleAttributesRenderer;\n","import React from 'react';\nimport {AttributesRendererProps} from './AttributesFactory';\nimport {InlineNestedAttribute} from '../../../../attributes/inline';\nimport {NestedAttributeValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst NestedAttributesRenderer = ({attributeValues, ...props}: AttributesRendererProps) => {\n const styles = useStyles();\n const nestedValues = attributeValues?.map((attributeValue, i) => {\n return (\n <div\n key={attributeValue?.uri}\n className={styles.complexAttributeWrapper}\n data-reltio-id={`value-index-${i}`}\n >\n <InlineNestedAttribute attributeValue={attributeValue as NestedAttributeValue} {...props} />\n </div>\n );\n });\n return <>{nestedValues}</>;\n};\n\nexport default NestedAttributesRenderer;\n","import React from 'react';\nimport {AttributesRendererProps} from './AttributesFactory';\nimport {InlineReferenceAttribute, RelationCrosswalksMap} from '../../../../attributes/inline';\nimport {ReferenceAttributeValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst ReferenceAttributesRenderer = ({attributeValues, crosswalksMap, ...props}: AttributesRendererProps) => {\n const styles = useStyles();\n const referenceValues = attributeValues?.map((attributeValue, i) => {\n return (\n <div\n key={attributeValue?.uri}\n className={styles.complexAttributeWrapper}\n data-reltio-id={`value-index-${i}`}\n >\n <InlineReferenceAttribute\n attributeValue={attributeValue as ReferenceAttributeValue}\n crosswalksMap={crosswalksMap as RelationCrosswalksMap}\n {...props}\n />\n </div>\n );\n });\n return <>{referenceValues}</>;\n};\n\nexport default ReferenceAttributesRenderer;\n","import React from 'react';\nimport {AttributesRendererProps} from './AttributesFactory';\nimport {InlineImageAttribute} from '../../../../attributes/inline';\nimport {ImageAttributeValue} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst ImageAttributesRenderer = ({attributeValues, ...props}: AttributesRendererProps) => {\n const styles = useStyles();\n\n return (\n <>\n {attributeValues?.map((attributeValue, i) => (\n <div\n key={attributeValue?.uri}\n className={styles.complexAttributeWrapper}\n data-reltio-id={`value-index-${i}`}\n >\n <InlineImageAttribute attributeValue={attributeValue as ImageAttributeValue} {...props} />\n </div>\n ))}\n </>\n );\n};\n\nexport default ImageAttributesRenderer;\n","import {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\nimport AttributesFactory from './attribute-renderers/AttributesFactory';\nimport {\n AddInlineAttributeEvent,\n CrosswalksMap,\n DeleteInlineAttributeEvent,\n EditInlineAttributeEvent,\n IgnoreInlineAttributeEvent,\n PinInlineAttributeEvent\n} from '../../../attributes/inline';\nimport {withTableContext} from '../../../BasicTableView';\nimport {pick} from 'ramda';\n\ntype Props = {\n value: {\n attributeValues?: AttributeValue[];\n attributeType: AttributeType;\n crosswalksMap: CrosswalksMap;\n };\n onDelete: (event: DeleteInlineAttributeEvent) => void;\n onEdit: (event: EditInlineAttributeEvent) => void;\n onPin: (event: PinInlineAttributeEvent) => void;\n onIgnore: (event: IgnoreInlineAttributeEvent) => void;\n onAdd: (event: AddInlineAttributeEvent) => void;\n parentUri: string;\n readOnly?: boolean;\n};\n\nexport const AttributeValuesRenderer = ({\n value,\n onDelete,\n onEdit,\n onPin,\n onIgnore,\n onAdd,\n parentUri,\n readOnly\n}: Props) => {\n return AttributesFactory.build(value.attributeType.type, {\n ...value,\n parentUri,\n onDelete,\n onEdit,\n onPin,\n onIgnore,\n onAdd,\n disableEdit: readOnly,\n disableDelete: readOnly\n });\n};\n\nexport default withTableContext(pick(['onDelete', 'onPin', 'onIgnore', 'onEdit', 'onAdd', 'parentUri', 'readOnly']))(\n AttributeValuesRenderer\n);\n","import React from 'react';\nimport {AttributeType, AttributeValue, DataTypes} from '@reltio/mdm-sdk';\nimport SimpleAttributesRenderer from './SimpleAttributesRenderer';\nimport NestedAttributesRenderer from './NestedAttributesRenderer';\nimport ReferenceAttributesRenderer from './ReferenceAttributesRenderer';\nimport ImageAttributesRenderer from './ImageAttributesRenderer';\nimport {\n AddInlineAttributeEvent,\n CrosswalksMap,\n DeleteInlineAttributeEvent,\n EditInlineAttributeEvent,\n IgnoreInlineAttributeEvent,\n PinInlineAttributeEvent\n} from '../../../../attributes/inline';\n\nexport type AttributesRendererProps = {\n attributeValues?: AttributeValue[];\n attributeType: AttributeType;\n crosswalksMap: CrosswalksMap;\n parentUri: string;\n disableDelete?: boolean;\n disableEdit?: boolean;\n onDelete: (event: DeleteInlineAttributeEvent) => void;\n onEdit: (event: EditInlineAttributeEvent) => void;\n onPin: (event: PinInlineAttributeEvent) => void;\n onIgnore: (event: IgnoreInlineAttributeEvent) => void;\n onAdd: (event: AddInlineAttributeEvent) => void;\n};\n\nexport default class AttributesFactory {\n static build(type: string, props: AttributesRendererProps) {\n switch (type) {\n case DataTypes.TYPE_NESTED:\n return <NestedAttributesRenderer {...props} />;\n case DataTypes.TYPE_REFERENCE:\n return <ReferenceAttributesRenderer {...props} />;\n case DataTypes.TYPE_IMAGE:\n return <ImageAttributesRenderer {...props} />;\n default:\n return <SimpleAttributesRenderer {...props} />;\n }\n }\n}\n","import React from 'react';\nimport AttributeTitle from '../../../Title/Title';\nimport ReadOnlyAttributeValuesBlock from '../../../attributes/readMode/AttributeValuesBlock/AttributeValuesBlock';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n values?: AttributeValue[];\n attributeType: AttributeType;\n };\n};\n\nconst OvValuesRenderer = ({value: {values, attributeType}}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.cellValueWrapper}>\n <AttributeTitle className={styles.attributeTitle} label={attributeType.label} />\n <ReadOnlyAttributeValuesBlock\n values={values}\n attributeType={attributeType}\n valueContainerClassName={styles.ovValue}\n />\n </div>\n );\n};\n\nexport default OvValuesRenderer;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: number;\n};\n\nconst CountRenderer = ({value}: Props) => {\n const styles = useStyles();\n return <div className={classnames(styles.cellValueWrapper, styles.count)}>{value}</div>;\n};\n\nexport default CountRenderer;\n","import React, {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {cond, prop} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {IconButton as IconButton} from '@material-ui/core';\nimport {List as List} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {ListItemText as ListItemText} from '@material-ui/core';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport InfoIcon from '@material-ui/icons/Info';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport SourceIcon from '../../../SourceIcon/SourceIcon';\nimport mdmModule from '@reltio/mdm-module';\nimport {findAttributeTypeByUri, getLabel, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst SourcesRenderer = ({sourcesUriOrder}: {sourcesUriOrder: string[]}) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n return (\n <>\n {sourcesUriOrder.map((sourceUri) => (\n <ListItem key={sourceUri} className={styles.popupItem}>\n <SourceIcon className={styles.sourceIcon} sourceType={sourceUri} />\n <ListItemText\n primary={getSourceSystemLabel(metadata, sourceUri)}\n primaryTypographyProps={{variant: 'body2'}}\n />\n </ListItem>\n ))}\n </>\n );\n};\n\nconst AttributeRenderer = ({attributeUri}: {attributeUri: string}) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const attributeType = findAttributeTypeByUri(metadata, attributeUri);\n return (\n <ListItem key={attributeType.uri} className={styles.popupItem}>\n <ListItemText primary={getLabel(attributeType.label)} primaryTypographyProps={{variant: 'body2'}} />\n </ListItem>\n );\n};\n\nconst getInfoTitle = cond([\n [prop('sourcesUriOrder'), () => i18n.text('Source sequence')],\n [prop('primaryAttributeUri'), () => i18n.text('Attribute winner')],\n [prop('comparisonAttributeUri'), () => i18n.text('Comparison attribute')]\n]);\n\nconst getInfoContent = cond([\n // eslint-disable-next-line react/display-name\n [prop('sourcesUriOrder'), ({sourcesUriOrder}) => <SourcesRenderer sourcesUriOrder={sourcesUriOrder} />],\n // eslint-disable-next-line react/display-name\n [prop('primaryAttributeUri'), ({primaryAttributeUri}) => <AttributeRenderer attributeUri={primaryAttributeUri} />],\n [\n prop('comparisonAttributeUri'),\n // eslint-disable-next-line react/display-name\n ({comparisonAttributeUri}) => <AttributeRenderer attributeUri={comparisonAttributeUri} />\n ]\n]);\n\ntype Props = {\n info: {\n sourcesUriOrder?: string[];\n primaryAttributeUri?: string;\n comparisonAttributeUri?: string;\n };\n};\n\nconst RuleTypeInfoButton = ({info}: Props) => {\n const styles = useStyles();\n const [anchorEl, setAnchorEl] = useState(null);\n const openPopup = (event) => setAnchorEl(event.currentTarget);\n const closePopup = () => setAnchorEl(null);\n\n return (\n <>\n <SmallIconButtonWithTooltip\n icon={InfoIcon}\n tooltipTitle={i18n.text('View details')}\n size={'XS'}\n onClick={openPopup}\n />\n <Popover\n classes={{paper: styles.rulePopup}}\n open={!!anchorEl}\n anchorEl={anchorEl}\n onClose={closePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <div className={styles.popupTitleWrapper}>\n <IconButton className={styles.closeButton} onClick={closePopup}>\n <CloseIcon />\n </IconButton>\n <Typography variant={'subtitle1'} className={styles.popupTitle}>\n {getInfoTitle(info)}\n </Typography>\n </div>\n <List component=\"div\" className={styles.popupItemsWrapper}>\n {getInfoContent(info)}\n </List>\n </Popover>\n </>\n );\n};\n\nexport default RuleTypeInfoButton;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {SurvivorStrategy} from '@reltio/mdm-sdk';\nimport RuleTypeInfoButton from './RuleTypeInfoButton';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n ruleType: SurvivorStrategy;\n sourcesUriOrder?: string[];\n primaryAttributeUri?: string;\n comparisonAttributeUri?: string;\n };\n};\n\nconst RuleTypeRenderer = ({value: {ruleType, sourcesUriOrder, primaryAttributeUri, comparisonAttributeUri}}: Props) => {\n const styles = useStyles();\n const showInfoIcon = sourcesUriOrder || primaryAttributeUri || comparisonAttributeUri;\n\n return (\n <div className={classnames(styles.cellValueWrapper, styles.ruleType)}>\n <div className={styles.ruleTypeLabel}>{ruleType.label}</div>\n {showInfoIcon && (\n <RuleTypeInfoButton\n info={{\n sourcesUriOrder,\n primaryAttributeUri,\n comparisonAttributeUri\n }}\n />\n )}\n </div>\n );\n};\n\nexport default RuleTypeRenderer;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport {List as List} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {ListItemText as ListItemText} from '@material-ui/core';\nimport {CrosswalkBase, getCrosswalkColor, getCrosswalkId, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport SourceIcon from '../../../SourceIcon/SourceIcon';\nimport {useCrosswalkHighlight} from '../../../../contexts';\nimport mdmModule from '@reltio/mdm-module';\nimport ColoredBlock from '../../ColoredBlock/ColoredBlock';\nimport {useStyles} from './styles';\n\nconst WinnerSource = ({crosswalk}: {crosswalk: CrosswalkBase}) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const {isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(crosswalk);\n\n return (\n <ColoredBlock\n className={styles.winnerSourceItem}\n color={getCrosswalkColor(getCrosswalkId(crosswalk))}\n opacity={isDimmed ? 0.38 : 1}\n onMouseEnter={() => highlightCrosswalk()}\n onMouseLeave={() => removeHighlight()}\n >\n <SourceIcon className={styles.sourceIcon} sourceType={crosswalk.type} />\n <ListItemText\n primary={getSourceSystemLabel(metadata, crosswalk.type)}\n primaryTypographyProps={{variant: 'body2'}}\n classes={{primary: styles.winnerSourceItemLabel}}\n />\n </ColoredBlock>\n );\n};\n\ntype Props = {\n value: {\n crosswalks: CrosswalkBase[];\n };\n};\n\nconst WinnerSourcesRenderer = ({value: {crosswalks}}: Props) => {\n const styles = useStyles();\n return (\n <List component=\"div\">\n {crosswalks.map((crosswalk) => (\n <ListItem key={crosswalk.uri} className={styles.winnerSourceItemWrapper}>\n <WinnerSource crosswalk={crosswalk} />\n </ListItem>\n ))}\n </List>\n );\n};\n\nexport default WinnerSourcesRenderer;\n","import i18n from 'ui-i18n';\nimport {\n assoc,\n chain,\n curry,\n descend,\n filter,\n find,\n flatten,\n map,\n pickBy,\n pipe,\n prop,\n propEq,\n propOr,\n reduce,\n sortWith,\n uniq,\n uniqBy,\n values\n} from 'ramda';\n\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport AttributesHeadCellRenderer from './cell-renderers/AttributesHeadCellRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport AttributeValuesRenderer from './cell-renderers/AttributeValuesRenderer';\nimport OvValuesRenderer from './cell-renderers/OvValuesRenderer';\nimport CountRenderer from './cell-renderers/CountRenderer';\nimport RuleTypeRenderer from './cell-renderers/RuleTypeRenderer';\nimport WinnerSourcesRenderer from './cell-renderers/WinnerSourcesRenderer';\nimport {\n areOneHierarchyUris,\n AttributeType,\n AttributeValue,\n DataTypes,\n findValueInAttributesByUriSuffix,\n getBaseUri,\n getCrosswalksTypes,\n getDefaultSurvivorshipStrategy,\n getLastUriPart,\n getReferencedAttrTypeUrisFromAttrType,\n getSurvivorshipStrategy,\n isComplexAttribute,\n isOv,\n isReference,\n isTempUri,\n Metadata,\n RecordAttributesType,\n SurvivorStrategy\n} from '@reltio/mdm-sdk';\nimport {CrosswalksMap} from '../../attributes/inline';\nimport {CrosswalksByOwnerTypeMap} from '../types';\n\nexport const COLUMNS_DATA = [\n {\n id: 'ovValues',\n get label() {\n return i18n.text('Attributes & OV');\n },\n hideable: false,\n initialWidth: 360,\n minWidth: 250\n },\n {\n id: 'winnerSources',\n get label() {\n return i18n.text('Winner source systems');\n },\n initialWidth: 220\n },\n {\n id: 'ruleType',\n get label() {\n return i18n.text('Rule type');\n },\n initialWidth: 200\n },\n {\n id: 'count',\n get label() {\n return i18n.text('Count');\n },\n initialWidth: 80,\n minWidth: 80\n },\n {\n id: 'values',\n get label() {\n return i18n.text('Attribute values');\n },\n hideable: false\n }\n];\n\nconst isOvValue = (value: AttributeValue) => isOv(value) && !isTempUri(value.uri);\n\nexport const DEFAULT_VISIBLE_COLUMNS = ['ovValues', 'ruleType', 'values'];\n\nconst getCellValueRenderer = (columnId: string) => {\n switch (columnId) {\n case 'ovValues':\n return OvValuesRenderer;\n case 'values':\n return AttributeValuesRenderer;\n case 'count':\n return CountRenderer;\n case 'ruleType':\n return RuleTypeRenderer;\n case 'winnerSources':\n return WinnerSourcesRenderer;\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nexport const countAttributeValues = (\n type: string,\n values: AttributeValue[] = [],\n crosswalksMap: CrosswalksMap\n): number => {\n switch (type) {\n case DataTypes.TYPE_REFERENCE:\n case DataTypes.TYPE_NESTED:\n case DataTypes.TYPE_IMAGE:\n return values.length;\n default:\n return values.reduce((acc, value) => acc + crosswalksMap[value.uri].length, 0);\n }\n};\n\nconst isSourceSystemRule = (ruleType: SurvivorStrategy) =>\n ruleType?.uri === 'configuration/survivorshipStrategies/SRC_SYS';\nconst isOtherAttributeWinnerRule = (ruleType: SurvivorStrategy) =>\n ruleType?.uri === 'configuration/survivorshipStrategies/OtherAttributeWinnerCrosswalk';\nconst isMinMaxValueRule = (ruleType: SurvivorStrategy) =>\n ruleType?.uri === 'configuration/survivorshipStrategies/MinValue' ||\n ruleType?.uri === 'configuration/survivorshipStrategies/MaxValue';\n\nconst getSourcesUriOrderFromMetadata = pipe(\n getCrosswalksTypes,\n sortWith([descend(propOr(-1, 'priority'))]),\n map(prop('uri'))\n);\n\nconst fixReferencedAttributeUri = curry((parentType: AttributeType, attrTypeUri: string) => {\n if (isReference(parentType) && attrTypeUri) {\n const referencedAttrUri = pipe(\n getReferencedAttrTypeUrisFromAttrType,\n find((uri) => uri.slice(getBaseUri(uri).length) === attrTypeUri.slice(parentType.uri.length))\n )(parentType);\n return referencedAttrUri || attrTypeUri;\n } else {\n return attrTypeUri;\n }\n});\n\nexport const getRuleTypeValues = (metadata: Metadata, attributeType: AttributeType, parentTypeUri: string) => {\n const parentType = [...metadata.entityTypes, ...(metadata.relationTypes || [])].find(propEq('uri', parentTypeUri));\n const defaultSurvivorshipGroup = parentType?.survivorshipGroups?.find(propEq('default', true));\n const mapping = defaultSurvivorshipGroup?.mapping?.find(propEq('attribute', attributeType.uri));\n const ruleType =\n getSurvivorshipStrategy(metadata, mapping?.survivorshipStrategy) || getDefaultSurvivorshipStrategy(metadata);\n const sourcesUriOrder = isSourceSystemRule(ruleType)\n ? uniq([\n ...(mapping?.sourcesUriOrder || []),\n ...(defaultSurvivorshipGroup?.sourcesUriOrder || []),\n ...getSourcesUriOrderFromMetadata(metadata)\n ])\n : undefined;\n const fixUri = fixReferencedAttributeUri(attributeType);\n const primaryAttributeUri = isOtherAttributeWinnerRule(ruleType) ? fixUri(mapping?.primaryAttributeUri) : undefined;\n const comparisonAttributeUri =\n isComplexAttribute(attributeType) && isMinMaxValueRule(ruleType)\n ? fixUri(mapping?.comparisonAttributeUri)\n : undefined;\n return {\n ruleType,\n sourcesUriOrder,\n primaryAttributeUri,\n comparisonAttributeUri\n };\n};\n\nexport const getWinnerCrosswalks = (attributeValues: AttributeValue[] = [], crosswalksMap: CrosswalksMap) => {\n return pipe(\n filter(isOvValue),\n chain((value: AttributeValue) =>\n pipe(\n pickBy((_, attrUri) => {\n const isInHierarchy = areOneHierarchyUris(attrUri, value.uri);\n const subAttrUriSuffix = isInHierarchy ? attrUri.slice(value.uri.length + 1) : '';\n const subAttrValue =\n subAttrUriSuffix && findValueInAttributesByUriSuffix(value.value, subAttrUriSuffix);\n return isInHierarchy && (!subAttrValue || isOvValue(subAttrValue));\n }),\n values,\n flatten\n )(crosswalksMap)\n ),\n uniqBy(prop('uri'))\n )(attributeValues);\n};\n\nexport const getBasicTableColumnsData = map(({id, label, initialWidth, minWidth}) => ({\n id,\n label,\n initialWidth,\n minWidth,\n autoResize: !initialWidth,\n resizable: true,\n sortable: false,\n headCellRenderer: id === 'ovValues' ? AttributesHeadCellRenderer : HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(id)\n}));\n\nconst getRowValueForColumn = (\n columnId: string,\n metadata: Metadata,\n parentTypeUri: string,\n attributeType: AttributeType,\n crosswalksMap: CrosswalksMap,\n attributeValues: AttributeValue[]\n) => {\n switch (columnId) {\n case 'ovValues':\n return {\n attributeType,\n values: attributeValues?.filter(isOvValue)\n };\n case 'values':\n return {\n attributeType,\n attributeValues,\n crosswalksMap\n };\n case 'count':\n return countAttributeValues(attributeType.type, attributeValues, crosswalksMap);\n case 'ruleType':\n return getRuleTypeValues(metadata, attributeType, parentTypeUri);\n case 'winnerSources':\n return {crosswalks: getWinnerCrosswalks(attributeValues, crosswalksMap)};\n default:\n return null;\n }\n};\n\nexport const getBasicTableRowsData = (\n metadata: Metadata,\n parentTypeUri: string,\n attrTypes: AttributeType[] = [],\n columns: string[],\n crosswalksMap: CrosswalksByOwnerTypeMap,\n attributes: RecordAttributesType\n) => {\n return attrTypes.map((attributeType: AttributeType) => {\n const attrName = getLastUriPart(attributeType.uri);\n const attrValues = attributes[attrName] as AttributeValue[];\n const crosswalksMapForAttribute = isReference(attributeType) ? crosswalksMap.relation : crosswalksMap.entity;\n return pipe(\n reduce(\n (acc, columnId) =>\n assoc(\n columnId,\n getRowValueForColumn(\n columnId,\n metadata,\n parentTypeUri,\n attributeType,\n crosswalksMapForAttribute,\n attrValues\n ),\n acc\n ),\n {}\n ),\n assoc('rawValue', attrValues)\n )(columns);\n });\n};\n","import React from 'react';\nimport classnames from 'classnames';\n// eslint-disable-next-line import/named\nimport {ColumnData} from '../../../BasicTableView';\nimport {useStyles} from './styles';\n\ntype Props = {\n cell: {\n values: unknown[];\n };\n columnData: ColumnData;\n CellValueRenderer: React.ElementType;\n columnIndex: number;\n};\n\nconst RowCellRenderer = ({cell, CellValueRenderer, columnIndex, columnData, ...otherProps}: Props) => {\n const styles = useStyles();\n const isFirstColumn = columnIndex === 0;\n return (\n <div\n className={classnames(styles.rowCell, isFirstColumn && styles.coloredCell)}\n data-reltio-id={`column-name-${columnData.id}`}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default RowCellRenderer;\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogContentText as DialogContentText} from '@material-ui/core';\nimport {Radio as Radio} from '@material-ui/core';\nimport {RadioGroup as RadioGroup} from '@material-ui/core';\nimport {FormControlLabel as FormControlLabel} from '@material-ui/core';\nimport {FormControl as FormControl} from '@material-ui/core';\nimport {FormLabel as FormLabel} from '@material-ui/core';\nimport {getValue} from '../../../../core';\nimport {pipe} from 'ramda';\n\ntype Props = {\n open: boolean;\n onClose: () => void;\n onConfirmEditWithIgnore: () => void;\n onConfirmEditWithoutIgnore: () => void;\n};\n\nconst ConfirmEditIgnoredDialog = ({open, onClose, onConfirmEditWithoutIgnore, onConfirmEditWithIgnore}: Props) => {\n const [option, setOption] = useState<'with' | 'without'>('without');\n\n return (\n <Dialog open={open} onEnter={() => setOption('without')}>\n <DialogContent>\n <DialogContentText>\n {i18n.text('You are attempting to change a value that is presently ignored.')}\n </DialogContentText>\n <FormControl component=\"fieldset\">\n <FormLabel component=\"legend\">{i18n.text('Please choose an option:')}</FormLabel>\n <RadioGroup value={option} onChange={pipe(getValue, setOption)}>\n <FormControlLabel\n value=\"without\"\n control={<Radio />}\n label={i18n.text('Save without Ignore')}\n />\n <FormControlLabel\n value=\"with\"\n control={<Radio />}\n label={i18n.text('Save and apply Ignore to new value')}\n />\n </RadioGroup>\n </FormControl>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} color=\"primary\">\n {i18n.text('Cancel')}\n </Button>\n <Button\n onClick={() => {\n option === 'with' ? onConfirmEditWithIgnore() : onConfirmEditWithoutIgnore();\n onClose();\n }}\n color=\"primary\"\n >\n {i18n.text('Ok')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default ConfirmEditIgnoredDialog;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n tableContainer: {\n height: '100%',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column'\n },\n tableHeader: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between'\n },\n tableContent: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflow: 'hidden',\n position: 'relative'\n }\n});\n","import React, {memo, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n AttributeType,\n Entity,\n findAttributeTypeByUri,\n isReadableAttribute,\n makeAttrTypeUri,\n Relation\n} from '@reltio/mdm-sdk';\nimport {\n AddInlineAttributeEvent,\n DeleteInlineAttributeEvent,\n EditInlineAttributeEvent,\n IgnoreInlineAttributeEvent,\n PinInlineAttributeEvent\n} from '../../attributes/inline';\nimport {BasicTable, ColumnsSettings, RowCellAutoSizer, useDynamicRowCellHeight} from '../../BasicTableView';\nimport BasicViewHeader from '../../BasicViewHeader/BasicViewHeader';\nimport {COLUMNS_DATA, DEFAULT_VISIBLE_COLUMNS, getBasicTableColumnsData, getBasicTableRowsData} from './helpers';\nimport {always, either, filter, isNil, keys, map, pipe, without} from 'ramda';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport LinearLoadIndicator from '../../LinearLoadIndicator/LinearLoadIndicator';\nimport ConfirmDeleteDialog from '../../ConfirmDeleteDialog/ConfirmDeleteDialog';\nimport {CrosswalksByOwnerTypeMap} from '../types';\nimport ConfirmEditIgnoredDialog from './ConfirmEditIgnoredDialog/ConfirmEditIgnoredDialog';\nimport {noop} from '../../../core';\n\nimport {useStyles} from './styles';\n\nconst DEFAULT_ROW_HEIGHT = 68;\n\ntype Props = {\n entity?: Entity | Relation;\n isLoading?: boolean;\n crosswalksMap: CrosswalksByOwnerTypeMap;\n visibleColumns?: string[];\n onChangeVisibleColumns?: (visibleColumns: string[]) => void;\n readOnly?: boolean;\n onDelete?: (event: DeleteInlineAttributeEvent) => void;\n onPin?: (event: PinInlineAttributeEvent) => void;\n onIgnore?: (event: IgnoreInlineAttributeEvent) => void;\n onEdit?: (event: EditInlineAttributeEvent) => void;\n onAdd?: (event: AddInlineAttributeEvent) => void;\n selectedAttributeTypes?: AttributeType[];\n onSelectAttributeTypes?: (selected: AttributeType[]) => void;\n};\n\nconst AttributesTable = ({\n entity,\n isLoading,\n crosswalksMap,\n visibleColumns = DEFAULT_VISIBLE_COLUMNS,\n onChangeVisibleColumns,\n readOnly,\n onDelete = noop,\n onPin = noop,\n onIgnore = noop,\n onEdit = noop,\n onAdd = noop,\n selectedAttributeTypes,\n onSelectAttributeTypes = noop\n}: Props) => {\n const styles = useStyles();\n\n const visibleColumnsData = useMemo(() => {\n return pipe(\n filter(({id}) => visibleColumns.includes(id)),\n getBasicTableColumnsData\n )(COLUMNS_DATA);\n }, [visibleColumns]);\n\n const {type: parentTypeUri, uri: parentUri, attributes = {}} = entity || {};\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n useEffect(() => {\n if (entity && isNil(selectedAttributeTypes)) {\n const initialAttrTypes = pipe(\n keys,\n without(['paging']),\n map(makeAttrTypeUri(parentTypeUri)),\n map((attrTypeUri: string) => findAttributeTypeByUri(metadata, attrTypeUri, parentTypeUri)),\n filter(isReadableAttribute)\n )(attributes);\n onSelectAttributeTypes(initialAttrTypes);\n }\n }, [entity, selectedAttributeTypes]);\n\n const rowsData = useMemo(() => {\n return parentTypeUri\n ? getBasicTableRowsData(\n metadata,\n parentTypeUri,\n selectedAttributeTypes,\n visibleColumns,\n crosswalksMap,\n attributes\n )\n : [];\n }, [metadata, parentTypeUri, selectedAttributeTypes, visibleColumns, attributes, crosswalksMap]);\n\n const {getDynamicRowCellHeight, changeRowCellHeight} = useDynamicRowCellHeight();\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} />\n </RowCellAutoSizer>\n ),\n [changeRowCellHeight]\n );\n\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, always(DEFAULT_ROW_HEIGHT)), [\n getDynamicRowCellHeight\n ]);\n\n const [pendingDeletion, setPendingDeletion] = useState<DeleteInlineAttributeEvent>(null);\n const [pendingIgnoredEditing, setPendingIgnoredEditing] = useState<EditInlineAttributeEvent>(null);\n\n const handleEdit = useCallback(\n (event: EditInlineAttributeEvent) => {\n event.attributeValue.ignored ? setPendingIgnoredEditing(event) : onEdit(event);\n },\n [onEdit, setPendingIgnoredEditing]\n );\n\n const tableContext = useMemo(\n () => ({\n onDelete: setPendingDeletion,\n onPin,\n onIgnore,\n onEdit: handleEdit,\n onAdd,\n parentUri,\n parentTypeUri,\n selectedAttributeTypes,\n onSelectAttributeTypes,\n readOnly\n }),\n [\n setPendingDeletion,\n onPin,\n onIgnore,\n handleEdit,\n onAdd,\n parentUri,\n parentTypeUri,\n selectedAttributeTypes,\n onSelectAttributeTypes,\n readOnly\n ]\n );\n\n return (\n <div className={styles.tableContainer}>\n <BasicViewHeader classes={{root: styles.tableHeader}} title={i18n.text('Sources')}>\n <ColumnsSettings\n columnsData={COLUMNS_DATA}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeVisibleColumns}\n />\n </BasicViewHeader>\n <div className={styles.tableContent}>\n {isLoading && <LinearLoadIndicator />}\n <BasicTable\n fixFirstColumn\n headRowHeight={48}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n columnsData={visibleColumnsData}\n rowsData={rowsData}\n renderRowCell={renderRowCell}\n getRowCellHeight={getRowCellHeight}\n context={tableContext}\n />\n </div>\n <ConfirmDeleteDialog\n open={!!pendingDeletion}\n onClose={() => setPendingDeletion(null)}\n onConfirm={() => onDelete(pendingDeletion)}\n />\n <ConfirmEditIgnoredDialog\n open={!!pendingIgnoredEditing}\n onClose={() => setPendingIgnoredEditing(null)}\n onConfirmEditWithIgnore={() => onEdit(pendingIgnoredEditing)}\n onConfirmEditWithoutIgnore={() => {\n onIgnore({attributeValue: pendingIgnoredEditing.attributeValue});\n onEdit(pendingIgnoredEditing);\n }}\n />\n </div>\n );\n};\n\nexport default memo(AttributesTable);\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n color?: string;\n opacity?: number;\n variant: 'filled' | 'outlined';\n};\n\nexport const useColoredItemStyles = makeStyles({\n item: ({color, opacity, variant}: StylesProps) => ({\n ...(variant === 'filled' && {backgroundColor: color}),\n ...(variant === 'outlined' && {border: `${color} solid 2px`}),\n opacity,\n transition: 'opacity 0.3s',\n boxSizing: 'border-box'\n })\n});\n","import React, {ForwardedRef, forwardRef} from 'react';\nimport classnames from 'classnames';\nimport {useColoredItemStyles} from './styles';\n\ntype Props = React.HTMLAttributes<HTMLDivElement> & {\n color: string;\n opacity?: number;\n variant?: 'filled' | 'outlined';\n};\n\nconst ColoredBlock = forwardRef(\n ({color, opacity, variant = 'filled', children, className, ...props}: Props, ref: ForwardedRef<HTMLDivElement>) => {\n const styles = useColoredItemStyles({color, opacity, variant});\n return (\n <div ref={ref} className={classnames(styles.item, className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nexport default ColoredBlock;\n","import React from 'react';\n\nconst SvgCopy: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M20.222 6C21.21 6 22 6.8 22 7.778v12.444C22 21.2 21.209 22 20.222 22H7.778C6.79 22 6 21.2 6 20.222V7.778C6 6.8 6.791 6 7.778 6h12.444zM20 8H8v12h12V8zM4 18H2V4c0-1.1.9-2 2-2h14v2H4v14z\"\n id=\"Copy_svg__a\"\n />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"Copy_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Copy_svg__a\" />\n </mask>\n <path fillOpacity={0.54} fill=\"#000\" mask=\"url(#Copy_svg__b)\" d=\"M0 0h24v24H0z\" />\n </g>\n </svg>\n );\n};\n\nexport default SvgCopy;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n overflowWrap: 'anywhere'\n },\n text: {\n fontSize: 13\n },\n button: {\n flexShrink: 0,\n marginLeft: 8,\n padding: 0,\n textTransform: 'none'\n }\n}));\n","import React from 'react';\nimport SmallIconButton from '../../SmallIconButton/SmallIconButton';\nimport {Typography as Typography} from '@material-ui/core';\nimport CopyIcon from '../../../icons/Copy';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: string;\n};\n\nconst CopyableValueField = ({value}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n <Typography className={styles.text} variant={'body2'}>\n {value}\n </Typography>\n <SmallIconButton\n size=\"XXS\"\n icon={CopyIcon}\n color=\"primary\"\n className={styles.button}\n onClick={() => navigator.clipboard.writeText(value)}\n />\n </div>\n );\n};\n\nexport default CopyableValueField;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n timestampEditorInput: {\n paddingTop: 15,\n paddingBottom: 15,\n fontSize: 13\n },\n timestampEditor: {\n height: 38\n }\n}));\n","import React, {useState} from 'react';\nimport {always, unless} from 'ramda';\nimport classnames from 'classnames';\nimport TimestampEditor from '../../editors/TimestampEditor/TimestampEditor';\nimport {useStyles} from './styles';\n\ntype Props = {\n value?: number;\n classes?: {\n root?: string;\n };\n disabled?: boolean;\n onChange: (value: number) => void;\n};\n\nconst CrosswalkDateEditor = ({value, classes = {}, disabled = false, onChange}: Props) => {\n const styles = useStyles();\n\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const handleChange = (date: Date) => onChange(date.valueOf());\n\n return (\n <TimestampEditor\n variant=\"filled\"\n value={value ? new Date(value) : null}\n disabled={disabled}\n onChange={unless(always(isOpen), handleChange)}\n onAccept={handleChange}\n onOpen={() => setIsOpen(true)}\n onClose={() => setIsOpen(false)}\n InputProps={{\n disableUnderline: true,\n classes: {input: styles.timestampEditorInput, root: classnames(styles.timestampEditor, classes.root)}\n }}\n />\n );\n};\n\nexport default CrosswalkDateEditor;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n text: {\n fontSize: 13\n },\n attributeWrapper: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: 5,\n paddingBottom: 5,\n marginLeft: 12\n },\n attributeTitle: {\n fontSize: 13,\n width: 135,\n color: theme.palette.text.secondary\n },\n attributeValue: {\n paddingLeft: 10,\n display: 'flex',\n alignItems: 'center',\n flexGrow: 1\n },\n input: {\n paddingTop: 14,\n paddingBottom: 14,\n fontSize: 13\n },\n editor: {\n flexGrow: 1\n },\n moreButton: {\n marginLeft: 24\n },\n sourceIcon: {\n height: '16px',\n width: '16px',\n marginRight: '9px',\n fontSize: '14px'\n }\n}));\n","import React, {useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport ConfirmDeleteDialog from '../../ConfirmDeleteDialog/ConfirmDeleteDialog';\nimport MoreAttributesButton from '../../attributes/editMode/MoreAttributesButton';\nimport SimpleDropDownSelector from '../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport SourceIcon from '../../SourceIcon/SourceIcon';\nimport {TextEditor} from '../../editors';\nimport {Typography as Typography} from '@material-ui/core';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport {\n CrosswalkBase,\n CrosswalksAttrTypes,\n formatDateTime,\n getCrosswalksTypes,\n getSourceSystemLabel,\n parseTimestamp\n} from '@reltio/mdm-sdk';\nimport {ascend, filter, has, isNil, map, pipe, prop, propEq, without} from 'ramda';\nimport i18n from 'ui-i18n';\nimport mdmModule from '@reltio/mdm-module';\nimport CopyableValueField from '../CopyableValueField/CopyableValueField';\nimport CrosswalkDateEditor from '../CrosswalkDateEditor/CrosswalkDateEditor';\nimport moment from 'moment';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: CrosswalkBase | Omit<CrosswalkBase, 'uri'>;\n canEditAttribute?: boolean;\n onEditAttribute: (attributeName: string, value: any) => void;\n onDeleteAttribute: (attributeName: string) => void;\n};\n\nconst CrosswalkAttributes = ({crosswalk, canEditAttribute = true, onEditAttribute, onDeleteAttribute}: Props) => {\n const styles = useStyles();\n\n const isTempCrosswalk = !('uri' in crosswalk);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const [addedAttributes, setAddedAttributes] = useState<string[]>([]);\n const [pendingDeletionAttrUri, setPendingDeletionAttrUri] = useState<string>(null);\n const addSelectedAttributes = (selectedAttributes) => {\n if (selectedAttributes.length > 0) {\n setAddedAttributes((addedAttributes) => addedAttributes.concat(map(prop('uri'), selectedAttributes)));\n }\n };\n const handleDeleteAttribute = (attributeName: string) => {\n setAddedAttributes((addedAttributes) => without([attributeName], addedAttributes));\n if (!isNil(crosswalk[attributeName])) {\n onDeleteAttribute(attributeName);\n }\n };\n\n const attributes = useMemo(\n () => [\n {\n label: CrosswalksAttrTypes.sourceSystems.label,\n uri: 'type'\n },\n {\n label: CrosswalksAttrTypes.value.label,\n uri: 'value'\n },\n {\n label: CrosswalksAttrTypes.sourceTable.label,\n uri: 'sourceTable',\n canBeAdded: isTempCrosswalk,\n canBeDeleted: isTempCrosswalk\n },\n {\n label: CrosswalksAttrTypes.createDate.label,\n uri: 'createDate'\n },\n {\n label: CrosswalksAttrTypes.updateDate.label,\n uri: 'updateDate'\n },\n {\n label: CrosswalksAttrTypes.deleteDate.label,\n uri: 'deleteDate',\n canBeAdded: true,\n canBeDeleted: true\n },\n {\n label: CrosswalksAttrTypes.reltioLoadDate.label,\n uri: 'reltioLoadDate'\n },\n {\n label: CrosswalksAttrTypes.publishDate.label,\n uri: 'sourcePublishDate'\n }\n ],\n []\n );\n\n const extraAttributes = pipe(\n filter(propEq('canBeAdded', true)),\n filter((item) => !has(item.uri, crosswalk)),\n filter((item) => !addedAttributes.includes(item.uri))\n )(attributes);\n\n const renderAttributeValue = (attributeName: string, attributeValue: string) => {\n switch (attributeName) {\n case 'type': {\n const sourceSystemLabel = getSourceSystemLabel(metadata, attributeValue);\n return isTempCrosswalk ? (\n <SimpleDropDownSelector\n label={''}\n placeholder={attributeValue}\n className={styles.editor}\n value={{value: attributeValue, label: sourceSystemLabel}}\n options={getCrosswalksTypes(metadata)\n .sort(ascend(prop('label')))\n .map(({uri, label}) => ({\n value: uri,\n label: label\n }))}\n onChange={({value}) => onEditAttribute(attributeName, value)}\n TextFieldProps={{\n InputProps: {\n disableUnderline: true\n }\n }}\n />\n ) : (\n <>\n <SourceIcon className={styles.sourceIcon} sourceType={attributeValue} />\n <Typography className={styles.text} variant={'body2'}>\n {sourceSystemLabel}\n </Typography>\n </>\n );\n }\n case 'sourceTable':\n return isTempCrosswalk ? (\n <TextEditor\n multiple={false}\n multiline={false}\n getValueLabel={undefined}\n classes={{root: styles.editor}}\n required\n variant=\"filled\"\n value={attributeValue}\n onInput={(e) => onEditAttribute(attributeName, e.target.value)}\n margin=\"dense\"\n InputProps={{\n disableUnderline: true,\n classes: {input: styles.input}\n }}\n />\n ) : (\n <Typography className={styles.text} variant={'body2'}>\n {attributeValue}\n </Typography>\n );\n case 'value':\n return isTempCrosswalk ? (\n <TextEditor\n multiple={false}\n multiline={false}\n getValueLabel={undefined}\n classes={{root: styles.editor}}\n required\n variant=\"filled\"\n value={attributeValue}\n onInput={(e) => onEditAttribute(attributeName, e.target.value)}\n margin=\"dense\"\n InputProps={{\n disableUnderline: true,\n classes: {input: styles.input}\n }}\n />\n ) : (\n <CopyableValueField value={attributeValue} />\n );\n case 'deleteDate':\n return (\n <CrosswalkDateEditor\n value={attributeValue && moment.utc(parseTimestamp(attributeValue)).valueOf()}\n onChange={(value) => onEditAttribute(attributeName, value.toString())}\n classes={{root: styles.editor}}\n disabled={!canEditAttribute}\n />\n );\n case 'sourcePublishDate':\n case 'createDate':\n case 'updateDate':\n case 'reltioLoadDate':\n return (\n <Typography className={styles.text} variant={'body2'}>\n {formatDateTime(attributeValue)}\n </Typography>\n );\n default:\n return null;\n }\n };\n\n return (\n <>\n {extraAttributes.length > 0 && canEditAttribute && (\n <MoreAttributesButton\n label={i18n.text('Add attributes')}\n onApply={addSelectedAttributes}\n data={extraAttributes}\n />\n )}\n {attributes.map((attribute) =>\n attribute.uri in crosswalk || addedAttributes.includes(attribute.uri) ? (\n <div key={attribute.uri} className={styles.attributeWrapper}>\n <Typography variant={'body2'} className={styles.attributeTitle}>\n {`${attribute.label}:`}\n </Typography>\n <div className={styles.attributeValue}>\n {renderAttributeValue(attribute.uri, crosswalk[attribute.uri])}\n {attribute.canBeDeleted && (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n disabled={!canEditAttribute}\n onClick={() => setPendingDeletionAttrUri(attribute.uri)}\n size=\"XS\"\n tooltipTitle={i18n.text('Delete attribute')}\n showForDisabled={true}\n />\n )}\n </div>\n </div>\n ) : null\n )}\n <ConfirmDeleteDialog\n open={!!pendingDeletionAttrUri}\n onClose={() => setPendingDeletionAttrUri(null)}\n onConfirm={() => handleDeleteAttribute(pendingDeletionAttrUri)}\n />\n </>\n );\n};\n\nexport default CrosswalkAttributes;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n dragLayer: {\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n zIndex: 1300,\n pointerEvents: 'none'\n },\n crosswalkPreview: {\n height: '28px',\n maxWidth: '394px',\n display: 'flex',\n overflow: 'hidden',\n padding: '6px',\n alignItems: 'center',\n boxSizing: 'border-box'\n },\n sourceLabel: {\n fontSize: '13px',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n overflow: 'hidden'\n },\n sourceIcon: {\n width: '16px',\n height: '16px',\n marginRight: '9px'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport {CrosswalkBase, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport ColoredBlock from '../ColoredBlock/ColoredBlock';\nimport {useCrosswalkColor} from '../../../contexts/CrosswalksDisplayContext';\nimport SourceIcon from '../../SourceIcon/SourceIcon';\nimport {Typography as Typography} from '@material-ui/core';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: CrosswalkBase;\n};\n\nconst CrosswalkDragPreview = ({crosswalk}: Props) => {\n const styles = useStyles();\n const color = useCrosswalkColor(crosswalk);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const sourceSystemLabel = getSourceSystemLabel(metadata, crosswalk.type);\n return (\n <ColoredBlock color={color} className={styles.crosswalkPreview}>\n <SourceIcon className={styles.sourceIcon} sourceType={crosswalk.type} />\n <Typography className={styles.sourceLabel} variant={'body2'}>\n {sourceSystemLabel}\n </Typography>\n </ColoredBlock>\n );\n};\n\nexport default CrosswalkDragPreview;\n","import React, {memo, useRef} from 'react';\nimport {useDragLayer} from 'react-dnd';\nimport CrosswalkDragPreview from './CrosswalkDragPreview';\nimport {CrosswalkBase} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst CrosswalkDragLayer = () => {\n const styles = useStyles();\n\n const {isDragging, clientOffset, item} = useDragLayer((monitor) => ({\n isDragging: monitor.isDragging(),\n clientOffset: monitor.getClientOffset(),\n item: monitor.getItem()\n }));\n const dragLayerRef = useRef<HTMLDivElement>();\n const dragLayerRect = dragLayerRef.current?.getBoundingClientRect() || {x: 0, y: 0};\n const dragItemX = clientOffset?.x - dragLayerRect?.x;\n const dragItemY = clientOffset?.y - dragLayerRect?.y;\n const dragItemTransform = `translate(${dragItemX}px, ${dragItemY}px`;\n\n return (\n isDragging && (\n <div ref={dragLayerRef} className={styles.dragLayer}>\n <div\n style={{\n display: 'flex',\n transform: dragItemTransform,\n WebkitTransform: dragItemTransform\n }}\n >\n {item.type === 'Crosswalk' && <CrosswalkDragPreview crosswalk={item.crosswalk as CrosswalkBase} />}\n </div>\n </div>\n )\n );\n};\n\nexport default memo(CrosswalkDragLayer);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n caption: {\n paddingLeft: 15,\n paddingTop: 16,\n paddingBottom: 8\n },\n controlButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n paddingBottom: 10,\n paddingTop: 20\n },\n cancelButton: {\n marginRight: 20\n }\n});\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport CrosswalkAttributes from '../CrosswalkAttributes/CrosswalkAttributes';\nimport {assoc, dissoc} from 'ramda';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n onAdd: (event: Omit<Crosswalk, 'uri'>) => void;\n onClose: () => void;\n};\n\nconst CrosswalkEditor = ({className, onAdd, onClose}: Props) => {\n const styles = useStyles();\n\n const [newCrosswalk, setNewCrosswalk] = useState<Omit<Crosswalk, 'uri'>>({type: '', value: ''});\n\n const handleAdd = () => {\n onAdd(newCrosswalk);\n onClose();\n };\n\n return (\n <div className={className}>\n <Typography variant={'body1'} className={styles.caption}>\n {i18n.text('Add crosswalk')}\n </Typography>\n <CrosswalkAttributes\n crosswalk={newCrosswalk}\n onDeleteAttribute={(attributeName: string) => {\n setNewCrosswalk(dissoc(attributeName));\n }}\n onEditAttribute={(attributeName: string, value: any) => {\n setNewCrosswalk(assoc(attributeName, value));\n }}\n />\n <div className={styles.controlButtons}>\n <Button className={styles.cancelButton} onClick={onClose}>\n {i18n.text('Cancel')}\n </Button>\n <Button color=\"primary\" onClick={handleAdd} disabled={!newCrosswalk.type || !newCrosswalk.value}>\n {i18n.text('Add')}\n </Button>\n </div>\n </div>\n );\n};\n\nexport default CrosswalkEditor;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n isOpaque?: boolean;\n};\n\nexport const useStyles = makeStyles(() => ({\n root: ({isOpaque}: StylesProps) => ({\n display: 'flex',\n opacity: isOpaque ? 1 : 0.38,\n transition: 'opacity 0.3s'\n }),\n wrapper: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n height: 28,\n backgroundImage:\n 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDcvMjYvMTMEw7WpAAAAeElEQVQ4ja3VuwrAIBBE0aup0uX/v9ImCCGSdIL4WF136+EwxcC6+3k/hAsxSREArvPAW2LAGFzFhqAG64JarAnuYBW4ixWgBZZBKwzAW2Ig7HAVCzHJ4AoGQsNVbAhqsC6oxZrgDlaBu1gBWmAZtMIA3MwLmMUAfmyqQ9/LD+oDAAAAAElFTkSuQmCC)'\n },\n focusedIcon: {\n width: 28,\n height: 28,\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\n borderRadius: 0,\n borderRight: '1px solid #fff'\n },\n sourceIcon: {\n height: '16px',\n width: '16px',\n marginLeft: '16px',\n marginRight: '9px',\n fontSize: '14px'\n }\n}));\n","import React, {memo} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {Typography as Typography} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport SourceIcon from '../../SourceIcon/SourceIcon';\nimport SmallIconButton from '../../SmallIconButton/SmallIconButton';\nimport {useCrosswalkHighlight} from '../../../contexts/CrosswalksDisplayContext';\nimport mdmModule from '@reltio/mdm-module';\nimport {getSourceSystemLabel} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalkType: string;\n focusable?: boolean;\n};\n\nconst DummyCrosswalkRow = ({crosswalkType, focusable = true}: Props) => {\n const {isDimmed} = useCrosswalkHighlight();\n const styles = useStyles({isOpaque: !isDimmed});\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const sourceSystemLabel = getSourceSystemLabel(metadata, crosswalkType);\n return (\n <div className={styles.root}>\n <SmallIconButton size=\"XXS\" className={styles.focusedIcon} icon={focusable && VisibilityIcon} disabled />\n <div className={styles.wrapper}>\n <SourceIcon className={styles.sourceIcon} sourceType={crosswalkType} />\n <Typography variant={'body2'}>{sourceSystemLabel}</Typography>\n </div>\n </div>\n );\n};\n\nexport default memo(DummyCrosswalkRow);\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n color?: string;\n isOpaque?: boolean;\n isFocused?: boolean;\n};\n\nexport const useStyles = makeStyles({\n root: ({isOpaque}: StylesProps) => ({\n display: 'flex',\n opacity: isOpaque ? 1 : 0.19,\n transition: 'opacity 0.3s'\n }),\n header: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n height: '28px'\n },\n focusedIcon: ({isFocused}: StylesProps) => ({\n width: '26px',\n '&:not([disabled])': {\n border: '1px solid rgba(0, 0, 0, 0.12)'\n },\n height: '28px',\n color: isFocused ? '#000' : 'rgba(0, 0, 0, 0.54)',\n borderRadius: 0,\n margin: '0px 1px'\n }),\n crosswalkWrapper: {\n width: '100%',\n overflow: 'hidden'\n },\n sourceIcon: {\n height: '16px',\n width: '16px',\n marginRight: '9px',\n fontSize: '14px'\n },\n attributesWrapper: ({color}: StylesProps) => ({\n border: '1px solid',\n borderColor: color,\n position: 'relative'\n }),\n deleteCrosswalkButton: {\n position: 'absolute',\n top: 5,\n right: 5\n },\n labelValue: {\n marginLeft: 5,\n marginRight: 8\n },\n dependentIcon: {\n width: '16px',\n height: '16px',\n fillOpacity: 0.38\n }\n});\n","import React, {memo, useEffect, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport {\n Crosswalk,\n eqCrosswalks,\n getLastUriPart,\n getSourceSystemLabel,\n isCrosswalkDisabled,\n RelationCrosswalk\n} from '@reltio/mdm-sdk';\nimport ArrowExpandButton from '../../ArrowExpandButton/ArrowExpandButton';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport ColoredBlock from '../ColoredBlock/ColoredBlock';\nimport ConfirmDeleteDialog from '../../ConfirmDeleteDialog/ConfirmDeleteDialog';\nimport {SmallIconButtonWithTooltip} from '../../SmallIconButton';\nimport SourceIcon from '../../SourceIcon/SourceIcon';\nimport Spacer from '../../Spacer/Spacer';\nimport {\n useCrosswalkColor,\n useCrosswalkFocus,\n useCrosswalkHighlight,\n useHighlightedCrosswalks\n} from '../../../contexts/CrosswalksDisplayContext';\nimport mdmModule from '@reltio/mdm-module';\nimport DependentIcon from '../../../icons/NestedAttribute';\nimport {useDrag} from 'react-dnd';\nimport {getEmptyImage} from 'react-dnd-html5-backend';\nimport CrosswalkAttributes from '../CrosswalkAttributes/CrosswalkAttributes';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: Crosswalk | RelationCrosswalk;\n isDependent?: boolean;\n focusable?: boolean;\n isEmpty?: boolean;\n isColored?: boolean;\n disableEdit: boolean;\n disableDelete: boolean;\n onDelete: (crosswalkId: string) => void;\n onEdit: (event: {crosswalkId: string; attributeName: string; value?: string}) => void;\n};\n\nconst CrosswalkRow = ({\n crosswalk,\n isDependent,\n isEmpty = false,\n isColored = true,\n focusable = true,\n disableEdit,\n disableDelete,\n onDelete,\n onEdit\n}: Props) => {\n const ref = useRef(null);\n const crosswalkColor = useCrosswalkColor(crosswalk);\n const {toggleCrosswalkFocus, isFocused} = useCrosswalkFocus(crosswalk);\n const color = isEmpty ? '#FFF' : isColored ? crosswalkColor : '#CACCD1';\n const {isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(crosswalk);\n const [scrollToCrosswalk] = useHighlightedCrosswalks();\n const styles = useStyles({color, isOpaque: !isDimmed, isFocused});\n const [expanded, setExpanded] = useState(false);\n const [isDeleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const sourceSystemLabel = getSourceSystemLabel(metadata, crosswalk.type);\n const crosswalkId = getLastUriPart(crosswalk.uri);\n const crosswalkDisabled = isCrosswalkDisabled(crosswalk);\n\n const [, drag, preview] = useDrag({\n item: {\n type: 'Crosswalk',\n crosswalk\n },\n canDrag: !crosswalkDisabled\n });\n\n const canDelete = !crosswalkDisabled && crosswalk.ownerType !== 'relation';\n\n useEffect(() => {\n preview(getEmptyImage(), {captureDraggingState: true});\n }, []);\n\n useEffect(() => {\n if (\n focusable &&\n scrollToCrosswalk &&\n eqCrosswalks(scrollToCrosswalk, crosswalk) &&\n scrollToCrosswalk !== crosswalk\n ) {\n ref?.current?.scrollIntoView({behavior: 'smooth'});\n }\n }, [scrollToCrosswalk]);\n\n const handleDeleteCrosswalk = () => {\n if (isFocused) toggleCrosswalkFocus();\n onDelete(crosswalkId);\n };\n\n return (\n <div className={styles.root} ref={ref}>\n <SmallIconButtonWithTooltip\n size=\"XXS\"\n className={styles.focusedIcon}\n icon={focusable && VisibilityIcon}\n onClick={() => toggleCrosswalkFocus()}\n disabled={!focusable}\n tooltipTitle={focusable && i18n.text('Focus')}\n />\n <div className={styles.crosswalkWrapper}>\n <ColoredBlock\n ref={drag}\n className={styles.header}\n color={color}\n variant={crosswalkDisabled ? 'outlined' : 'filled'}\n onMouseEnter={() => highlightCrosswalk()}\n onMouseLeave={() => removeHighlight()}\n >\n {isDependent && <DependentIcon className={styles.dependentIcon} />}\n <ArrowExpandButton onClick={() => setExpanded((value) => !value)} expanded={expanded} />\n <SourceIcon className={styles.sourceIcon} sourceType={crosswalk.type} />\n <ExpandedValueTooltip value={sourceSystemLabel}>\n <Typography variant={'body2'} noWrap>\n {sourceSystemLabel}\n </Typography>\n </ExpandedValueTooltip>\n <Spacer />\n <ExpandedValueTooltip value={crosswalk.value}>\n <Typography variant={'body2'} className={styles.labelValue} noWrap>\n {crosswalk.value}\n </Typography>\n </ExpandedValueTooltip>\n </ColoredBlock>\n {expanded && (\n <div className={styles.attributesWrapper}>\n {canDelete && (\n <div className={styles.deleteCrosswalkButton}>\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n disabled={disableDelete}\n onClick={() => setDeleteDialogOpen(true)}\n size=\"XS\"\n tooltipTitle={\n disableDelete\n ? i18n.text(\"You don't have permissions to delete\")\n : i18n.text('Delete crosswalk')\n }\n showForDisabled={true}\n />\n <ConfirmDeleteDialog\n open={isDeleteDialogOpen}\n onConfirm={handleDeleteCrosswalk}\n onClose={() => setDeleteDialogOpen(false)}\n />\n </div>\n )}\n <CrosswalkAttributes\n crosswalk={crosswalk}\n canEditAttribute={!disableEdit}\n onEditAttribute={(attributeName: string, value: any) => {\n onEdit({\n crosswalkId,\n attributeName,\n value\n });\n }}\n onDeleteAttribute={(attributeName: string) => {\n onEdit({\n crosswalkId,\n attributeName\n });\n }}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default memo(CrosswalkRow);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n height: '28px',\n paddingLeft: '37px'\n }\n}));\n","import React from 'react';\nimport {Link as Link} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n showMore: boolean;\n onClick: () => void;\n};\n\nconst ShowDependentLink = ({showMore, onClick}: Props) => {\n const styles = useStyles();\n return (\n <Link className={styles.root} component=\"button\" variant=\"caption\" underline=\"none\" onClick={onClick}>\n <span>{showMore ? i18n.text('View dependent crosswalks') : i18n.text('Hide dependent crosswalks')}</span>\n </Link>\n );\n};\n\nexport default ShowDependentLink;\n","import React, {useEffect} from 'react';\nimport {useHighlightedCrosswalks} from '../../../contexts/CrosswalksDisplayContext';\nimport {CrosswalksByTypes, CrosswalkType} from '../types';\nimport {eqCrosswalks} from '@reltio/mdm-sdk';\nimport DummyCrosswalkRow from '../DummyCrosswalkRow/DummyCrosswalkRow';\nimport CrosswalkRow from '../CrosswalkRow/CrosswalkRow';\nimport ShowDependentLink from '../ShowDependentLink/ShowDependentLink';\n\ntype Props = {\n source: string;\n crosswalksByTypes: CrosswalksByTypes;\n showCrosswalkColors?: boolean;\n crosswalksFocusEnabled?: boolean;\n expanded?: boolean;\n disableEditCrosswalk: boolean;\n disableDeleteCrosswalk: boolean;\n onEdit: (event: {crosswalkId: string; attributeName: string; value?: string}) => void;\n onDelete: (crosswalkId: string) => void;\n onToggleExpanded: () => void;\n};\n\nconst SourceCrosswalksRow = ({\n source,\n crosswalksByTypes,\n showCrosswalkColors = true,\n crosswalksFocusEnabled = true,\n expanded,\n disableEditCrosswalk,\n disableDeleteCrosswalk,\n onEdit,\n onDelete,\n onToggleExpanded\n}: Props) => {\n const highlightedCrosswalks = useHighlightedCrosswalks();\n useEffect(() => {\n if (\n !expanded &&\n crosswalksFocusEnabled &&\n crosswalksByTypes[CrosswalkType.Dependent].some((dependentCrosswalk) =>\n highlightedCrosswalks.some(eqCrosswalks(dependentCrosswalk))\n )\n ) {\n onToggleExpanded();\n }\n }, [highlightedCrosswalks]);\n\n return (\n <>\n {crosswalksByTypes[CrosswalkType.Simple].length === 0 &&\n crosswalksByTypes[CrosswalkType.Empty].length === 0 && (\n <DummyCrosswalkRow crosswalkType={source} focusable={crosswalksFocusEnabled} />\n )}\n {crosswalksByTypes[CrosswalkType.Simple].map((crosswalk) => (\n <CrosswalkRow\n key={crosswalk.uri}\n crosswalk={crosswalk}\n focusable={crosswalksFocusEnabled}\n disableEdit={disableEditCrosswalk}\n disableDelete={disableDeleteCrosswalk}\n onDelete={onDelete}\n onEdit={onEdit}\n isColored={showCrosswalkColors}\n />\n ))}\n {crosswalksByTypes[CrosswalkType.Empty].map((crosswalk) => (\n <CrosswalkRow\n key={crosswalk.uri}\n crosswalk={crosswalk}\n focusable={crosswalksFocusEnabled}\n isEmpty={true}\n disableEdit={disableEditCrosswalk}\n disableDelete={disableDeleteCrosswalk}\n onDelete={onDelete}\n onEdit={onEdit}\n isColored={showCrosswalkColors}\n />\n ))}\n {expanded &&\n crosswalksByTypes[CrosswalkType.Dependent].map((crosswalk) => (\n <CrosswalkRow\n key={crosswalk.uri}\n crosswalk={crosswalk}\n isDependent={true}\n disableEdit={disableEditCrosswalk}\n disableDelete={disableDeleteCrosswalk}\n onDelete={onDelete}\n onEdit={onEdit}\n focusable={crosswalksFocusEnabled}\n isColored={showCrosswalkColors}\n />\n ))}\n {crosswalksByTypes[CrosswalkType.Dependent].length > 0 && (\n <ShowDependentLink showMore={!expanded} onClick={() => onToggleExpanded()} />\n )}\n </>\n );\n};\n\nexport default SourceCrosswalksRow;\n","import {useCallback} from 'react';\nimport {andThen, ifElse, isNil, pipe} from 'ramda';\nimport {\n addCrosswalk,\n addCrosswalkInContributor,\n deleteCrosswalk,\n deleteCrosswalkAttribute,\n editCrosswalkAttribute\n} from '@reltio/mdm-sdk';\nimport {AddCrosswalkEvent, DeleteCrosswalkEvent, EditCrosswalkEvent} from '../types';\nimport {noop} from '../../../core';\n\ntype Props = {\n onLoad?: () => void;\n onSuccess?: () => void;\n onError?: (error: unknown) => void;\n};\n\nexport const useCrosswalkActions = ({onLoad = noop, onSuccess = noop, onError = noop}: Props) => {\n const handleRequest = useCallback(\n (request: Promise<unknown>) => {\n onLoad();\n request\n .then(({errors}) => {\n if (errors) throw errors;\n onSuccess();\n })\n .catch(onError);\n },\n [onLoad, onError, onSuccess]\n );\n\n const addCrosswalkAction = useCallback(\n ({entity, contributorCrosswalk, crosswalk}: AddCrosswalkEvent) => {\n const addRequest = contributorCrosswalk\n ? addCrosswalkInContributor({\n entityTypeUri: entity.type,\n contributorCrosswalkType: contributorCrosswalk.type,\n contributorCrosswalkValue: contributorCrosswalk.value,\n contributorCrosswalkSourceTable: contributorCrosswalk.sourceTable,\n crosswalkType: crosswalk.type,\n crosswalkValue: crosswalk.value,\n crosswalkSourceTable: crosswalk.sourceTable,\n crosswalkDeleteDate: crosswalk.deleteDate\n })\n : addCrosswalk({entityUri: entity.uri, crosswalk});\n pipe(\n andThen(([response]) => response),\n handleRequest\n )(addRequest);\n },\n [handleRequest]\n );\n\n const editCrosswalkAction = useCallback(\n ({entityUri, crosswalkId, attributeName, value}: EditCrosswalkEvent) => {\n pipe(\n ifElse(({value}) => isNil(value), deleteCrosswalkAttribute, editCrosswalkAttribute),\n andThen(([response]) => response),\n handleRequest\n )({\n entityUri,\n crosswalkId,\n attributeName,\n value\n });\n },\n [handleRequest]\n );\n\n const deleteCrosswalkAction = useCallback(\n ({entityUri, crosswalkId}: DeleteCrosswalkEvent) => {\n pipe(\n deleteCrosswalk,\n handleRequest\n )({\n entityUri,\n crosswalkId\n });\n },\n [handleRequest]\n );\n\n return {\n addCrosswalk: addCrosswalkAction,\n editCrosswalk: editCrosswalkAction,\n deleteCrosswalk: deleteCrosswalkAction\n };\n};\n","import {useCallback, useEffect, useRef, useState} from 'react';\nimport {useAttributeActions} from './useAttributeActions';\nimport {\n addNewAttribute,\n areOneHierarchyUris,\n createNewAttribute,\n Crosswalk,\n CrosswalkBase,\n editAttribute,\n Entity,\n findAttributeValueByUri,\n findAttributeValues,\n getAttributeValue,\n getCrosswalkAttributes,\n getRelationCrosswalks,\n isTempUri,\n Relation,\n RelationCrosswalk,\n removeAttribute\n} from '@reltio/mdm-sdk';\nimport {\n AddInlineAttributeEvent,\n CrosswalksMap,\n DeleteInlineAttributeEvent,\n EditInlineAttributeEvent\n} from '../../attributes/inline';\nimport {CrosswalksByOwnerTypeMap} from '../types';\nimport {difference, dissoc, evolve, isNil, pipe, without} from 'ramda';\nimport {noop} from '../../../core';\n\ntype Props = {\n entity: Entity | Relation;\n onLoad?: () => void;\n onModify?: () => void;\n onError?: (error: unknown) => void;\n};\n\nconst emptyArray = [];\n\nexport const useModifiedEntity = ({entity, onLoad = noop, onModify = noop, onError = noop}: Props) => {\n const [modifiedEntity, setModifiedEntity] = useState<Entity | Relation>(null);\n const [crosswalksMap, setCrosswalksMap] = useState<CrosswalksByOwnerTypeMap>(null);\n const temporaryAttributes = useRef<string[]>([]);\n const crosswalkForNewAttributes = useRef<CrosswalkBase>(null);\n const resetCrosswalkForNewAttributes = useCallback(() => {\n crosswalkForNewAttributes.current = null;\n }, []);\n const [newlyCreatedAttributes, setNewlyCreatedAttributes] = useState<string[]>(emptyArray);\n\n const groupCrosswalksByAttrUri = (crosswalks: (Crosswalk | RelationCrosswalk)[] = []): CrosswalksMap =>\n crosswalks.reduce((acc, crosswalk: Crosswalk | RelationCrosswalk) => {\n getCrosswalkAttributes(crosswalk).forEach((uri: string) => {\n acc[uri] = [...(acc[uri] || []), crosswalk];\n });\n return acc;\n }, {});\n\n useEffect(() => {\n const newCrosswalksMap = {\n entity: groupCrosswalksByAttrUri(entity?.crosswalks),\n relation: pipe(getRelationCrosswalks, groupCrosswalksByAttrUri)(entity)\n };\n if (modifiedEntity?.uri === entity?.uri && crosswalkForNewAttributes.current) {\n const {ownerType} = crosswalkForNewAttributes.current;\n const newAttributes = Object.keys(newCrosswalksMap[ownerType]);\n const oldAttributes = Object.keys(crosswalksMap[ownerType]);\n setNewlyCreatedAttributes(difference(newAttributes, oldAttributes));\n } else {\n setNewlyCreatedAttributes(emptyArray);\n }\n resetCrosswalkForNewAttributes();\n setModifiedEntity(entity);\n setCrosswalksMap(newCrosswalksMap);\n temporaryAttributes.current = [];\n }, [entity]);\n\n const handleError = useCallback(pipe(onError, resetCrosswalkForNewAttributes), [\n onError,\n resetCrosswalkForNewAttributes\n ]);\n\n const {deleteAttribute, ignoreAttribute, pinAttribute, createAttribute, updateAttribute} = useAttributeActions({\n onLoad,\n onSuccess: onModify,\n onError: handleError\n });\n\n const onAddAttribute = useCallback(({attributeType, parentUri, crosswalk, index}: AddInlineAttributeEvent) => {\n const newAttribute = createNewAttribute({parentUri, attributeType});\n const {uri} = newAttribute;\n if (crosswalk) {\n const {ownerType} = crosswalk;\n setCrosswalksMap((crosswalksMap) => ({\n ...crosswalksMap,\n [ownerType]: {\n ...crosswalksMap[ownerType],\n [uri]: [crosswalk]\n }\n }));\n }\n setModifiedEntity((entity) => {\n if (isNil(index)) {\n index = findAttributeValues(entity, parentUri, attributeType.name)?.length;\n }\n return addNewAttribute({entity, attributeType, newAttribute, index});\n });\n if (!temporaryAttributes.current.some((tempUri) => areOneHierarchyUris(uri, tempUri))) {\n temporaryAttributes.current.push(uri);\n }\n }, []);\n\n const onDeleteAttribute = useCallback(\n (event: DeleteInlineAttributeEvent) => {\n const {\n attributeValue: {uri},\n attributeType\n } = event;\n if (isTempUri(uri)) {\n setModifiedEntity((entity) => removeAttribute({entity, attributeType, uri}));\n setCrosswalksMap(\n evolve({\n entity: dissoc(uri),\n relation: dissoc(uri)\n })\n );\n temporaryAttributes.current = without([uri], temporaryAttributes.current);\n } else {\n deleteAttribute(event);\n }\n },\n [deleteAttribute]\n );\n\n const onEditAttribute = useCallback(\n (event: EditInlineAttributeEvent) => {\n if (isTempUri(event.attributeValue.uri)) {\n const {attributeValue, attributeType, crosswalk} = event;\n if (!isNil(attributeValue.value)) {\n const {uri} = attributeValue;\n const tempAttributeUri = temporaryAttributes.current.find((tempUri) =>\n areOneHierarchyUris(uri, tempUri)\n );\n const editedEntity = editAttribute({\n entity: modifiedEntity,\n attributeType,\n uri,\n value: getAttributeValue(attributeValue)\n });\n createAttribute({\n attributeValue: findAttributeValueByUri(editedEntity, tempAttributeUri),\n crosswalk\n });\n crosswalkForNewAttributes.current = crosswalk;\n }\n } else {\n updateAttribute(event);\n }\n },\n [createAttribute, updateAttribute, modifiedEntity]\n );\n\n return {\n modifiedEntity,\n crosswalksMap,\n onAddAttribute,\n onDeleteAttribute,\n onPinAttribute: pinAttribute,\n onIgnoreAttribute: ignoreAttribute,\n onEditAttribute,\n newlyCreatedAttributes\n };\n};\n","import {useCallback} from 'react';\nimport {\n createAttribute,\n deleteAttribute,\n getReferencedRelationFromAttrValue,\n ignoreAttribute,\n isComplexAttribute,\n isImage,\n isLookupAttrType,\n isReference,\n pinAttribute,\n removeRelation,\n updateAttribute\n} from '@reltio/mdm-sdk';\nimport {\n DeleteInlineAttributeEvent,\n EditInlineAttributeEvent,\n IgnoreInlineAttributeEvent,\n PinInlineAttributeEvent\n} from '../../attributes/inline';\nimport {andThen, pipe, prop} from 'ramda';\nimport {CreateAttributeEvent} from '../types';\nimport {noop} from '../../../core';\n\ntype Props = {\n onLoad?: () => void;\n onSuccess?: () => void;\n onError?: (error: unknown) => void;\n};\n\nexport const useAttributeActions = ({onSuccess = noop, onError = noop, onLoad = noop}: Props) => {\n const handleAction = useCallback(\n (request: Promise<unknown>) => {\n onLoad();\n request\n .then(() => {\n onSuccess();\n })\n .catch(onError);\n },\n [onError, onSuccess, onLoad]\n );\n const handleErrorResponse = useCallback((request: Promise<{error?: unknown}>) => {\n return request.then((response) => {\n if ('error' in response) throw response.error;\n return response;\n });\n }, []);\n\n const deleteAttributeAction = useCallback(\n ({attributeValue, attributeType, crosswalks}: DeleteInlineAttributeEvent) => {\n const action = isReference(attributeType)\n ? pipe(\n getReferencedRelationFromAttrValue,\n prop('objectURI'),\n removeRelation,\n handleErrorResponse\n )(attributeValue)\n : Promise.all(\n (crosswalks || []).map(({type, value, sourceTable}) =>\n handleErrorResponse(\n deleteAttribute({\n attributeUri: attributeValue.uri,\n sourceUri: type,\n crosswalkValue: value,\n crosswalkSourceTable: sourceTable\n })\n )\n )\n );\n handleAction(action);\n },\n [handleAction, handleErrorResponse]\n );\n\n const pinAttributeAction = useCallback(\n ({attributeValue}: PinInlineAttributeEvent) => {\n pipe(\n pinAttribute,\n handleErrorResponse,\n handleAction\n )({\n attributeUri: attributeValue.uri,\n value: !attributeValue.pin\n });\n },\n [handleAction, handleErrorResponse]\n );\n\n const ignoreAttributeAction = useCallback(\n ({attributeValue}: IgnoreInlineAttributeEvent) => {\n pipe(\n ignoreAttribute,\n handleErrorResponse,\n handleAction\n )({\n attributeUri: attributeValue.uri,\n value: !attributeValue.ignored\n });\n },\n [handleAction, handleErrorResponse]\n );\n\n const updateAttributeAction = useCallback(\n ({attributeValue, attributeType, crosswalk}: EditInlineAttributeEvent) => {\n if (isComplexAttribute(attributeType) || isImage(attributeType)) return;\n pipe(\n updateAttribute,\n handleErrorResponse,\n handleAction\n )({\n attributeUri: attributeValue.uri,\n sourceUri: crosswalk.type,\n crosswalkValue: crosswalk.value,\n crosswalkSourceTable: crosswalk.sourceTable,\n value: isLookupAttrType(attributeType) ? attributeValue.lookupCode : attributeValue.value\n });\n },\n [handleAction, handleErrorResponse]\n );\n\n const createAttributeAction = useCallback(\n ({attributeValue, crosswalk}: CreateAttributeEvent) => {\n pipe(\n createAttribute,\n andThen(([{errors}]) => {\n if (errors) throw errors;\n }),\n handleAction\n )({\n attributeUri: attributeValue.uri,\n sourceUri: crosswalk.type,\n crosswalkValue: crosswalk.value,\n crosswalkSourceTable: crosswalk.sourceTable,\n value: attributeValue.value\n });\n },\n [handleAction]\n );\n\n return {\n deleteAttribute: deleteAttributeAction,\n pinAttribute: pinAttributeAction,\n ignoreAttribute: ignoreAttributeAction,\n updateAttribute: updateAttributeAction,\n createAttribute: createAttributeAction\n };\n};\n","export enum CrosswalkType {\n Simple = 'simple',\n Empty = 'empty',\n Dependent = 'dependent'\n}\n","import {\n AttributeType,\n Crosswalk,\n getAttributeTypeUriByValueUri,\n getCrosswalkAttributes,\n isComplexAttribute,\n RelationCrosswalk\n} from '@reltio/mdm-sdk';\nimport {curry, evolve, propEq, sort} from 'ramda';\nimport {CrosswalksByTypes, CrosswalkType} from '../types';\n\nconst isEmptyCrosswalk = (\n entityTypeUri: string,\n selectedAttributeTypes: AttributeType[],\n crosswalk: Crosswalk | RelationCrosswalk\n) => {\n const visibleAttributes = getCrosswalkAttributes(crosswalk).filter((attributeUri: string) => {\n const attributeTypeUri = getAttributeTypeUriByValueUri(attributeUri, entityTypeUri);\n return selectedAttributeTypes.some(propEq('uri', attributeTypeUri));\n });\n return visibleAttributes.length === 0;\n};\n\nconst isCrosswalkWithoutSimple = (\n entityTypeUri: string,\n selectedAttributeTypes: AttributeType[],\n crosswalk: Crosswalk | RelationCrosswalk\n) => {\n return !getCrosswalkAttributes(crosswalk).some((attributeUri) => {\n const attributeTypeUri = getAttributeTypeUriByValueUri(attributeUri, entityTypeUri);\n const attributeType = selectedAttributeTypes.find(propEq('uri', attributeTypeUri));\n return attributeType && !isComplexAttribute(attributeType);\n });\n};\n\nconst getCrosswalksWeight = (crosswalks: CrosswalksByTypes) => {\n if (crosswalks[CrosswalkType.Simple].length > 0) {\n return 1;\n }\n if (crosswalks[CrosswalkType.Dependent].length > 0) {\n return crosswalks[CrosswalkType.Empty].length > 0 ? 2 : 3;\n }\n return 4;\n};\n\nconst sortDependentCrosswalksBySourceTable = evolve({\n [CrosswalkType.Dependent]: sort((cwA, cwB) => {\n const sourceTableA = cwA.sourceTable || '';\n const sourceTableB = cwB.sourceTable || '';\n if (sourceTableA === sourceTableB) return 0;\n if (!sourceTableA) return 1;\n if (!sourceTableB) return -1;\n return sourceTableA < sourceTableB ? -1 : 1;\n })\n});\n\nexport const groupCrosswalksByTypesAndSources = curry(\n (entityTypeUri: string, selectedAttributeTypes: AttributeType[], crosswalks: (Crosswalk | RelationCrosswalk)[]) => {\n const crosswalksBySourcesMap = (crosswalks || []).reduce((acc, crosswalk: Crosswalk | RelationCrosswalk) => {\n if (!acc[crosswalk.type]) {\n acc[crosswalk.type] = {\n [CrosswalkType.Simple]: [],\n [CrosswalkType.Empty]: [],\n [CrosswalkType.Dependent]: []\n };\n }\n if (crosswalk.ownerType === 'relation') {\n acc[crosswalk.type][CrosswalkType.Dependent].push(crosswalk);\n } else if (isEmptyCrosswalk(entityTypeUri, selectedAttributeTypes, crosswalk)) {\n acc[crosswalk.type][CrosswalkType.Empty].push(crosswalk);\n } else if (isCrosswalkWithoutSimple(entityTypeUri, selectedAttributeTypes, crosswalk)) {\n acc[crosswalk.type][CrosswalkType.Dependent].push(crosswalk);\n } else {\n acc[crosswalk.type][CrosswalkType.Simple].push(crosswalk);\n }\n return acc;\n }, {});\n return Object.keys(crosswalksBySourcesMap)\n .sort((sourceA, sourceB) => {\n const weightA = getCrosswalksWeight(crosswalksBySourcesMap[sourceA]);\n const weightB = getCrosswalksWeight(crosswalksBySourcesMap[sourceB]);\n const weightDiff = weightA - weightB;\n return weightDiff || (sourceA < sourceB ? -1 : 1);\n })\n .map((source: string) => ({\n source,\n crosswalksByTypes: sortDependentCrosswalksBySourceTable(crosswalksBySourcesMap[source])\n }));\n }\n);\n","import React, {createContext, useCallback, useContext} from 'react';\nimport {CrosswalkBase, getCrosswalkColor, getCrosswalkId} from '@reltio/mdm-sdk';\nimport {pipe, eqBy} from 'ramda';\nimport {noop} from '../../core';\n\nconst CrosswalksDisplayContext = createContext(null);\n\ntype ProviderProps = {\n children: React.ReactNode;\n getCrosswalkColor?: (crosswalk: CrosswalkBase) => string;\n focusedCrosswalks?: CrosswalkBase[];\n highlightedCrosswalks?: CrosswalkBase[];\n toggleCrosswalkFocus?: (crosswalk: CrosswalkBase) => void;\n setCrosswalkHighlighted?: (crosswalk: CrosswalkBase, highlighted: boolean) => void;\n};\n\nexport const CrosswalksDisplayProvider = ({children, ...props}: ProviderProps) => {\n return <CrosswalksDisplayContext.Provider value={props}>{children}</CrosswalksDisplayContext.Provider>;\n};\n\nexport const useCrosswalkColor = (crosswalk?: CrosswalkBase) => {\n const {getCrosswalkColor: getColor = pipe(getCrosswalkId, getCrosswalkColor)} =\n useContext(CrosswalksDisplayContext) || {};\n return crosswalk ? getColor(crosswalk) : '';\n};\n\nexport const useHighlightedCrosswalks = () => {\n const {highlightedCrosswalks = []} = useContext(CrosswalksDisplayContext) || {};\n return highlightedCrosswalks;\n};\n\nexport const useCrosswalkHighlight = (crosswalk?: CrosswalkBase) => {\n const {highlightedCrosswalks = [], setCrosswalkHighlighted = noop} = useContext(CrosswalksDisplayContext) || {};\n const isHighlighted = !!crosswalk && !!highlightedCrosswalks.find(eqBy(getCrosswalkId, crosswalk));\n return {\n isHighlighted,\n isDimmed: highlightedCrosswalks.length > 0 && !isHighlighted,\n highlightCrosswalk: useCallback(() => setCrosswalkHighlighted(crosswalk, true), [\n crosswalk,\n setCrosswalkHighlighted\n ]),\n removeHighlight: useCallback(() => setCrosswalkHighlighted(crosswalk, false), [\n crosswalk,\n setCrosswalkHighlighted\n ])\n };\n};\n\nexport const useCrosswalkFocus = (crosswalk?: CrosswalkBase) => {\n const {toggleCrosswalkFocus = noop, focusedCrosswalks = []} = useContext(CrosswalksDisplayContext) || {};\n const isFocused = !!crosswalk && focusedCrosswalks.some(eqBy(getCrosswalkId, crosswalk));\n return {\n isFocused,\n toggleCrosswalkFocus: useCallback(() => toggleCrosswalkFocus(crosswalk), [crosswalk, toggleCrosswalkFocus])\n };\n};\n","import React, {createContext, useContext} from 'react';\nimport {areOneHierarchyUris} from '@reltio/mdm-sdk';\n\nconst ExpandedAttributesContext = createContext(null);\n\ntype ProviderProps = {\n children: React.ReactNode;\n attributeUris: string[];\n};\n\nexport const ExpandedAttributesProvider = ({children, attributeUris}: ProviderProps) => {\n return <ExpandedAttributesContext.Provider value={attributeUris}>{children}</ExpandedAttributesContext.Provider>;\n};\n\nexport const useAttributeExpanded = (attributeUri: string) => {\n const expandedAttributes = useContext(ExpandedAttributesContext) || [];\n return expandedAttributes.some((uri) => areOneHierarchyUris(uri, attributeUri));\n};\n"],"names":["AvatarStates","className","icon","avatarText","rootClasses","otherProps","state","setState","useState","useEffect","ICON_MODE","TEXT_MODE","onImageLoadFail","ERROR_MODE","Avatar","classnames","iconRoot","src","onError","textRoot","getRowCellKey","rowIndex","columnData","id","cellIndex","rowCellHeightsMap","setRowCellHeightsMap","rowCellHeightsMapCache","useRef","flushHeightUpdates","useCallback","debounce","current","clearHeightsCache","getDynamicRowCellHeight","pipe","prop","__","changeRowCellHeight","curry","useWith","key","value","identity","RowCellAutoSizer","onChangeHeight","children","cell","cellProps","cellRef","rowValue","changeCellHeight","adjustCellHeight","clientHeight","useDidUpdateEffect","rawValue","handleHeight","onResize","RootRef","rootRef","propTypes","PropTypes","open","onClose","onConfirm","Dialog","DialogContent","DialogContentText","i18n","DialogActions","Button","onClick","color","useStyles","makeStyles","theme","tooltip","backgroundColor","palette","background","paper","text","primary","filter","padding","maxWidth","arrow","props","styles","Tooltip","classes","container","position","zIndex","boxSizing","backgroundClip","cursor","height","margin","backgroundImage","backgroundRepeat","backgroundSize","backgroundPosition","width","marginBottom","marginRight","isHorizontal","orientation","ResizablePanes","defaultSize","size","minSize","maxSize","allowResize","onChange","useTheme","containerEl","setContainerEl","isPaneAnimationEnabled","setIsPaneAnimationEnabled","enableAnimation","disableAnimation","getContainerSize","clientWidth","handleChange","containerSize","percentageSize","isMaxSize","isMinSize","paneAnimationStyle","useMemo","transition","transitions","create","easing","sharp","duration","leavingScreen","ref","split","onDragStarted","onDragFinished","pane1Style","undefined","SizePropType","isRequired","sourceType","metadata","useSelector","mdmModule","uri","findSourceSystemByUri","getSourceSystemLabel","sourceIcon","getAbsoluteImageUrl","variant","textField","input","borderRadius","inputMultiline","paddingTop","paddingBottom","booleanEditor","paddingLeft","timestampEditor","minWidth","containerWidth","border","popoverRoot","DATA_TYPES_WITH_MULTILINE_EDITOR","DataTypes","SimpleAttributeEditor","attributeType","attributeValue","containerRef","onEdit","getBoundingClientRect","dataTypeDefinition","getAttrDataTypeDefinition","initEditorValue","attributeValueToEditorValue","editorValue","changeEditorValue","TextFieldProps","InputProps","disableUnderline","root","multiline","applyChangesAndClose","editedValue","editorValueToAttributeValue","isNil","equals","editedAttributeValue","isLookupAttrType","lookupCode","isNumericType","type","Popover","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","isBooleanType","isTimestampBasedType","onKeyUp","event","includes","onBackdropClick","DataTypeValueEditor","autoFocus","fieldName","attributeUriToSearchUri","fullWidth","menuItem","minHeight","secondary","menuText","fontSize","lineHeight","letterSpacing","marginLeft","sourceItem","borderBottom","MenuItemWithTooltip","withTooltip","MenuItem","MenuItemContent","Typography","CrosswalkMenuItem","forwardRef","item","onMenuClose","disabled","crosswalk","SourceItem","focusable","tooltipTitle","showForDisabled","e","displayName","fullyColored","opaque","wordBreak","content","pointerEvents","display","alignItems","opacity","actions","justifyContent","dataReltioId","disableEdit","disableDelete","onIgnore","onPin","onDelete","isReadingMode","isEditingMode","isHovered","onMouseEnter","onMouseLeave","setReadingMode","setEditingMode","useAttributeState","getLastUriPart","crosswalkDisabled","isCrosswalkDisabled","canModifyAttribute","system","canEdit","checkMetadataForUpdate","ModeTypes","canDelete","checkMetadataForDelete","isTemporary","isTempUri","showPin","pin","showIgnore","ignored","useCrosswalkColor","isHighlighted","isDimmed","highlightCrosswalk","removeHighlight","useCrosswalkHighlight","Edit","Delete","crosswalks","DataTypeValue","getAttributeValue","PinButton","isPinned","IgnoreButton","isIgnored","DropDownMenuButton","MenuItemRenderer","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","MoreVertIcon","menuItems","simpleAttributesWrapper","flexWrap","gap","dropIndicator","attributeValues","parentUri","crosswalksMap","onAdd","isDragItemOver","drop","useDrop","accept","canDrop","isRelationCrosswalk","isRelationUri","ownerType","isEntityCrosswalk","isEntityUri","checkMetadataForCreate","isRelationTypeUri","isEntityTypeUri","collect","monitor","isOver","index","length","attributeIndex","map","canCreate","NestedAttribute","ReferenceAttribute","ImageAttribute","wrapper","flexDirection","complexAttributesWrapper","paging","max","Infinity","requestNextPage","visibleValuesCount","setVisibleValuesCount","totalValues","propOr","hasPaging","showMore","showLess","shownValues","slice","hiddenValuesCount","values","other","renderValues","ShowMore","moreNumber","Math","min","valueNumber","ShowLess","isOpaque","LightArrowTooltip","title","placement","crosswalkIcon","attributeTypes","attributes","isReadableAttribute","BranchDecorator","enabled","Title","label","AttributesPager","name","path","SmallIconButton","DeleteIcon","disableRipple","flexShrink","alignSelf","verticalAlign","attributeTypesList","showDelete","expandedFromContext","useAttributeExpanded","expanded","setExpanded","pickBy","val","attrUri","areOneHierarchyUris","flatten","uniqBy","ArrowExpandButton","getCrosswalkId","Spacer","image","imageContainer","paddingRight","IMAGE_SIZE","imageWidth","imageHeight","ComplexAttribute","Image","containerClassName","getImageAttributeThumbnailUrl","getLabel","relationshipLabel","uiPath","entityLabel","ComplexAttributeLabel","InternalLink","href","getEntityLink","getReferencedEntityUriFromAttrValue","getReferencedRelationAttrTypesUris","attrTypeUri","findAttributeTypeByUri","reject","useComplexAttributeLabelStyles","component","body2","viewBox","fill","xmlns","fillRule","clipRule","d","fillOpacity","IgnoredIcon","IgnoredOutlinedIcon","PinIcon","PinOutlinedIcon","toggleCrosswalkFocus","isFocused","useCrosswalkFocus","sourceInfo","VisibilityIcon","eyeIcon","crosswalkValue","overflow","whiteSpace","textOverflow","AttributeStates","attributeState","setAttributeState","READING","EDITING","HOVERED","setAttributeStateDebounced","renderAttributesList","valueContainerClassName","memo","LabelRenderer","imageSize","imageMargin","coloredCell","right","top","headCell","rowCell","cellValueWrapper","attributeTitle","ovValue","marginTop","count","textAlign","ruleType","ruleTypeLabel","rulePopup","overflowY","popupItem","closeButton","popupTitle","fontWeight","popupTitleWrapper","popupItemsWrapper","maxHeight","winnerSourceItemWrapper","winnerSourceItem","winnerSourceItemLabel","DefaultHeadCellRenderer","withTableContext","pick","parentTypeUri","selectedAttributeTypes","onSelectAttributeTypes","parentType","entityTypes","relationTypes","find","propEq","isNotSelected","attrType","data","either","isReference","isImage","isNested","both","checkCanCreateAttribute","mode","MoreAttributesButton","onApply","addedTypes","typesToSelect","forEach","readOnly","simpleAttributeWrapper","complexAttributeWrapper","borderTop","nestedValues","i","referenceValues","build","SourcesRenderer","sourcesUriOrder","sourceUri","ListItem","SourceIcon","ListItemText","primaryTypographyProps","AttributeRenderer","attributeUri","getInfoTitle","cond","getInfoContent","primaryAttributeUri","comparisonAttributeUri","info","setAnchorEl","closePopup","InfoIcon","currentTarget","IconButton","Close","List","showInfoIcon","WinnerSource","ColoredBlock","getCrosswalkColor","COLUMNS_DATA","hideable","initialWidth","isOvValue","isOv","DEFAULT_VISIBLE_COLUMNS","getCellValueRenderer","columnId","OvValuesRenderer","AttributeValuesRenderer","CountRenderer","RuleTypeRenderer","WinnerSourcesRenderer","DefaultCellValueRenderer","getSourcesUriOrderFromMetadata","getCrosswalksTypes","sortWith","descend","fixReferencedAttributeUri","getReferencedAttrTypeUrisFromAttrType","getBaseUri","getWinnerCrosswalks","chain","_","isInHierarchy","subAttrUriSuffix","subAttrValue","findValueInAttributesByUriSuffix","getBasicTableColumnsData","autoResize","resizable","sortable","headCellRenderer","AttributesHeadCellRenderer","HeadCellRenderer","rowCellValueRenderer","getRowValueForColumn","reduce","acc","countAttributeValues","defaultSurvivorshipGroup","survivorshipGroups","mapping","getSurvivorshipStrategy","survivorshipStrategy","getDefaultSurvivorshipStrategy","isSourceSystemRule","uniq","fixUri","isOtherAttributeWinnerRule","isComplexAttribute","isMinMaxValueRule","getRuleTypeValues","CellValueRenderer","columnIndex","isFirstColumn","onConfirmEditWithoutIgnore","onConfirmEditWithIgnore","option","setOption","onEnter","FormControl","FormLabel","RadioGroup","getValue","FormControlLabel","control","Radio","tableContainer","tableHeader","tableContent","flex","entity","isLoading","visibleColumns","onChangeVisibleColumns","noop","visibleColumnsData","initialAttrTypes","keys","without","makeAttrTypeUri","rowsData","columns","attrName","attrValues","crosswalksMapForAttribute","relation","assoc","getBasicTableRowsData","useDynamicRowCellHeight","renderRowCell","getRowCellHeight","always","pendingDeletion","setPendingDeletion","pendingIgnoredEditing","setPendingIgnoredEditing","handleEdit","tableContext","BasicViewHeader","ColumnsSettings","columnsData","selectedColumns","onChangeColumns","LinearLoadIndicator","BasicTable","fixFirstColumn","headRowHeight","defaultColumnWidth","defaultColumnMinWidth","context","ConfirmDeleteDialog","useColoredItemStyles","xmlnsXlink","stroke","strokeWidth","xlinkHref","mask","overflowWrap","button","textTransform","CopyIcon","navigator","clipboard","writeText","timestampEditorInput","isOpen","setIsOpen","date","valueOf","TimestampEditor","Date","unless","onAccept","onOpen","attributeWrapper","flexGrow","editor","moreButton","canEditAttribute","onEditAttribute","onDeleteAttribute","isTempCrosswalk","addedAttributes","setAddedAttributes","pendingDeletionAttrUri","setPendingDeletionAttrUri","CrosswalksAttrTypes","canBeAdded","canBeDeleted","extraAttributes","has","selectedAttributes","concat","attribute","attributeName","sourceSystemLabel","SimpleDropDownSelector","placeholder","options","sort","ascend","TextEditor","multiple","getValueLabel","required","onInput","target","moment","parseTimestamp","toString","formatDateTime","renderAttributeValue","handleDeleteAttribute","dragLayer","left","crosswalkPreview","sourceLabel","isDragging","clientOffset","useDragLayer","getClientOffset","getItem","dragLayerRef","dragLayerRect","x","y","dragItemTransform","style","transform","WebkitTransform","caption","controlButtons","cancelButton","newCrosswalk","setNewCrosswalk","CrosswalkAttributes","dissoc","focusedIcon","borderRight","crosswalkType","header","crosswalkWrapper","attributesWrapper","borderColor","deleteCrosswalkButton","labelValue","dependentIcon","isDependent","isEmpty","isColored","crosswalkColor","scrollToCrosswalk","useHighlightedCrosswalks","isDeleteDialogOpen","setDeleteDialogOpen","crosswalkId","drag","preview","useDrag","canDrag","getEmptyImage","captureDraggingState","eqCrosswalks","scrollIntoView","behavior","ExpandedValueTooltip","noWrap","Link","underline","source","crosswalksByTypes","showCrosswalkColors","crosswalksFocusEnabled","disableEditCrosswalk","disableDeleteCrosswalk","onToggleExpanded","highlightedCrosswalks","CrosswalkType","some","dependentCrosswalk","useCrosswalkActions","onLoad","onSuccess","handleRequest","request","then","errors","catch","addCrosswalk","contributorCrosswalk","addRequest","addCrosswalkInContributor","entityTypeUri","contributorCrosswalkType","contributorCrosswalkValue","contributorCrosswalkSourceTable","sourceTable","crosswalkSourceTable","crosswalkDeleteDate","deleteDate","entityUri","andThen","response","editCrosswalk","ifElse","deleteCrosswalkAttribute","editCrosswalkAttribute","deleteCrosswalk","emptyArray","useModifiedEntity","onModify","modifiedEntity","setModifiedEntity","setCrosswalksMap","temporaryAttributes","crosswalkForNewAttributes","resetCrosswalkForNewAttributes","newlyCreatedAttributes","setNewlyCreatedAttributes","groupCrosswalksByAttrUri","getCrosswalkAttributes","newCrosswalksMap","getRelationCrosswalks","newAttributes","Object","oldAttributes","difference","handleError","deleteAttribute","ignoreAttribute","pinAttribute","createAttribute","updateAttribute","handleAction","handleErrorResponse","error","action","getReferencedRelationFromAttrValue","removeRelation","Promise","all","useAttributeActions","onAddAttribute","newAttribute","createNewAttribute","findAttributeValues","addNewAttribute","tempUri","push","removeAttribute","evolve","tempAttributeUri","editedEntity","editAttribute","findAttributeValueByUri","onPinAttribute","onIgnoreAttribute","getCrosswalksWeight","sortDependentCrosswalksBySourceTable","cwA","cwB","sourceTableA","sourceTableB","groupCrosswalksByTypesAndSources","crosswalksBySourcesMap","attributeTypeUri","getAttributeTypeUriByValueUri","isEmptyCrosswalk","isCrosswalkWithoutSimple","sourceA","sourceB","CrosswalksDisplayContext","createContext","CrosswalksDisplayProvider","Provider","getColor","useContext","setCrosswalkHighlighted","eqBy","focusedCrosswalks","ExpandedAttributesContext","ExpandedAttributesProvider","attributeUris"],"sourceRoot":""}
|