@reltio/remotes 1.4.1249 → 1.4.1252

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/8439.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"8439.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeSelector/AttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/HOCs/withTableContext.js","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/DateIntervalSelector.tsx","webpack://@reltio/remotes/../components/src/components/EntityTypeBadge/styles.ts","webpack://@reltio/remotes/../components/src/components/EntityTypeBadge/EntityTypeBadge.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBand/styles.js","webpack://@reltio/remotes/../components/src/components/ProfileBand/ProfileBand.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/CreatableSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/Option.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/index.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/MultiSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/index.js","webpack://@reltio/remotes/../components/src/components/SideIconPanel/styles.ts","webpack://@reltio/remotes/../components/src/components/SideIconPanel/SideButtonsPanel.tsx","webpack://@reltio/remotes/../components/src/components/UserSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/UserSelector/UserSelector.tsx","webpack://@reltio/remotes/../components/src/components/activityLog/types/ActivityTypes.ts","webpack://@reltio/remotes/../components/src/components/activityLog/utils/activities.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/CustomDateRangeEditor.tsx","webpack://@reltio/remotes/../components/src/hooks/useSavedState.ts","webpack://@reltio/remotes/../components/src/hooks/useSnackbar.tsx","webpack://@reltio/remotes/../components/src/types/index.ts","webpack://@reltio/remotes/../sources/src/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../sources/src/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../sources/src/types/LegendMode.ts","webpack://@reltio/remotes/../sources/src/components/SankeyChart/sankey.ts","webpack://@reltio/remotes/../sources/src/components/SankeyChart/useSankey.tsx","webpack://@reltio/remotes/../sources/src/components/SankeyChart/styles.ts","webpack://@reltio/remotes/../sources/src/components/SankeyChart/MergeTooltip.tsx","webpack://@reltio/remotes/../sources/src/components/SankeyChart/Node.tsx","webpack://@reltio/remotes/../sources/src/components/SankeyChart/Link.tsx","webpack://@reltio/remotes/../sources/src/components/SankeyChart/SankeyChart.tsx","webpack://@reltio/remotes/../sources/src/components/CrosswalkTreeView/helpers.ts","webpack://@reltio/remotes/../sources/src/components/CrosswalkTreeView/styles.ts","webpack://@reltio/remotes/../sources/src/components/CrosswalkTreeView/CrosswalkTreeView.tsx","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/icons/notMatch.svg","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/ContributorRow/styles.ts","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/ContributorRow/ContributorRow.tsx","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/styles.ts","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/LegendTableRow.tsx","webpack://@reltio/remotes/../sources/src/components/LegendTable/styles.ts","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTable.tsx","webpack://@reltio/remotes/../sources/src/components/LegendTable/helpers.ts","webpack://@reltio/remotes/../sources/src/components/SelectableTree/styles.ts","webpack://@reltio/remotes/../sources/src/components/SelectableTree/SelectableTree.tsx","webpack://@reltio/remotes/../sources/src/components/UnmergeDialog/styles.ts","webpack://@reltio/remotes/../sources/src/components/UnmergeDialog/UnmergeDialog.tsx","webpack://@reltio/remotes/../sources/src/components/UnsubscribeDialog/styles.ts","webpack://@reltio/remotes/../sources/src/components/UnsubscribeDialog/UnsubscribeDialog.tsx","webpack://@reltio/remotes/../sources/src/components/LegendView/styles.ts","webpack://@reltio/remotes/../sources/src/components/LegendView/LegendView.tsx","webpack://@reltio/remotes/../sources/src/components/SourcesView/icons/LegendIcon.svg","webpack://@reltio/remotes/../sources/src/services/errors.ts","webpack://@reltio/remotes/../sources/src/components/EmptyState/icons/EmptySources.svg","webpack://@reltio/remotes/../sources/src/components/EmptyState/styles.ts","webpack://@reltio/remotes/../sources/src/components/EmptyState/EmptyState.tsx","webpack://@reltio/remotes/../sources/src/components/TreeActionSnackbar/styles.ts","webpack://@reltio/remotes/../sources/src/components/TreeActionSnackbar/TreeActionSnackbar.tsx","webpack://@reltio/remotes/../sources/src/components/SourcesView/styles.ts","webpack://@reltio/remotes/../sources/src/components/SourcesView/SourcesView.tsx","webpack://@reltio/remotes/../sources/src/hooks/useCrosswalkTree.ts","webpack://@reltio/remotes/../sources/src/hooks/useCrosswalkTreeActions.ts","webpack://@reltio/remotes/../sources/src/hooks/useCrosswalksDisplay.ts","webpack://@reltio/remotes/../sources/src/components/SourcesView/index.tsx","webpack://@reltio/remotes/./src/sources.ts"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n },\n noOptionsMessage: {\n fontSize: '14px'\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe, defaultTo} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {AttributeOption} from '../../types';\nimport mdmModule from '@reltio/mdm-module';\nimport {MultiValueProps, OptionProps} from 'react-select';\nimport {AttributeType, getAttributeTypeSubAttributes, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport MultiValue from '../ReactSelect/commonComponents/MultiValue';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n entityType: TEntityType;\n selectedAttributes: AttributeOption[];\n className?: string;\n onChange?: (attributes: AttributeOption[]) => void;\n title?: string;\n disableUnderline?: boolean;\n menuPlacement?: string;\n};\n\nconst AttributeSelector = ({\n entityType,\n selectedAttributes,\n className,\n onChange,\n title,\n disableUnderline,\n menuPlacement = 'bottom'\n}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const styles = useStyles();\n\n const prepareItems = useCallback(\n (data: AttributeType[], level = 0, prevLabel = ''): AttributeOption[] => {\n return data.reduce((acc, item) => {\n if (item.hidden) return acc;\n const chipLabel = `${prevLabel && prevLabel + ' / '}${item.label}`;\n acc.push({\n label: item.label,\n value: item.uri,\n attrType: item,\n chipLabel,\n level\n });\n const subAttributes = getAttributeTypeSubAttributes(metadata, item);\n return acc.concat(subAttributes ? prepareItems(subAttributes, level + 1, chipLabel) : []);\n }, []);\n },\n [metadata]\n );\n\n const options = useMemo(() => prepareItems(entityType?.attributes || []), [entityType, prepareItems]);\n\n const CustomOption = ({isFocused, isSelected, data, label, innerProps}: OptionProps<AttributeOption, true>) => (\n <div {...innerProps}>\n <AttributeListItem\n checked={isSelected}\n level={data.level}\n data={data}\n label={label}\n labelInText={label}\n isFocused={isFocused}\n />\n </div>\n );\n\n const CustomMultiValue = ({data, ...props}: MultiValueProps<AttributeOption>) => (\n <MultiValue {...props}>{data.chipLabel}</MultiValue>\n );\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {title || i18n.text('Attribute')}\n </Typography>\n <MultiSelect\n value={selectedAttributes}\n options={options}\n TextFieldProps={{\n InputProps: {disableUnderline},\n classes: {root: styles.dropDownInput}\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton,\n MultiValue: CustomMultiValue,\n Option: CustomOption\n }}\n onChange={pipe(defaultTo([]), onChange)}\n styles={customStyles}\n classes={styles}\n menuPlacement={menuPlacement}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default AttributeSelector;\n","import {TableContext} from '../contexts/TableContext';\nimport {withContext} from '../../../../HOCs/withContext/withContext';\n\nconst withTableContext = (contextSelector) => (CellRenderer) =>\n withContext(TableContext, contextSelector, CellRenderer);\n\nexport default withTableContext;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flex: 1\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px',\n fontSize: '14px'\n },\n inputNumber: {\n minWidth: '60px',\n marginRight: 10,\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n inputUnit: {\n width: '100%'\n }\n});\n","import React from 'react';\nimport {pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport capitalize from '@material-ui/core/utils/capitalize';\nimport {TextField as TextField} from '@material-ui/core';\nimport SimpleDropDownSelector from '../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {getValue} from '../../core/utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n interval: [number, string];\n onChange: ([number, string]) => void;\n onFocus?: () => void;\n};\n\nconst periods = [\n i18n.text('minutes'),\n i18n.text('hours'),\n i18n.text('days'),\n i18n.text('weeks'),\n i18n.text('months'),\n i18n.text('years')\n];\n\nconst DateIntervalSelector = ({interval: [value, unit], onChange, onFocus}: Props) => {\n const styles = useStyles();\n const getIntervalFromValue = (newValue: number) => [newValue, unit];\n const getIntervalFromUnit = ({value: newUnit}: {value: string}) => [value, newUnit];\n const onNumberChange = pipe(getValue, parseInt, getIntervalFromValue, onChange);\n const onUnitChange = pipe(getIntervalFromUnit, onChange);\n return (\n <div className={styles.root}>\n <TextField\n type=\"number\"\n value={value || ''}\n onChange={onNumberChange}\n inputProps={{min: 1, onFocus: onFocus}}\n InputProps={{classes: {root: styles.input}}}\n className={styles.inputNumber}\n />\n <SimpleDropDownSelector\n label={''}\n placeholder={capitalize(unit)}\n className={styles.inputUnit}\n value={{value: unit, label: capitalize(unit)}}\n options={periods.map((value) => ({\n value,\n label: capitalize(value)\n }))}\n onChange={onUnitChange}\n TextFieldProps={{\n inputProps: {onFocus: onFocus},\n InputProps: {classes: {root: styles.input}}\n }}\n />\n </div>\n );\n};\n\nexport default DateIntervalSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n 'entityType-overflow': {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n\n 'entityType-small': {\n padding: '1px 4px',\n fontSize: '10px',\n lineHeight: 'normal',\n marginRight: '12px',\n borderRadius: '2px'\n },\n 'entityType-medium': {\n padding: '2px 8px 3px',\n borderRadius: '2px',\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px',\n marginRight: '16px'\n }\n});\n\nexport default useStyles;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {getEntityType, getEntityTypeLabel, getPropWithInheritance, theme, utils, Entity} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport ExpandedValueTooltip from '../ExpandedValueTooltip/ExpandedValueTooltip';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n className?: string;\n size?: 'small' | 'medium';\n};\n\nconst EntityTypeBadge = ({entity, className, size = 'small'}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityTypeUri = entity.type;\n const entityType = getEntityType(metadata, entityTypeUri) || {};\n const entityTypeColor = getPropWithInheritance(metadata, entityType, 'typeColor') || theme.palette.primary.main;\n const entityTypeLabel = getEntityTypeLabel(metadata, entity);\n\n return (\n <ExpandedValueTooltip value={entityTypeLabel} placement=\"top\">\n <Typography\n style={{\n backgroundColor: entityTypeColor,\n color: utils.Colors.getColor(entityTypeColor) ? '#FFFFFF' : '#212121'\n }}\n className={classnames(styles[`entityType-${size}`], styles['entityType-overflow'], className)}\n component=\"div\"\n >\n {entityTypeLabel}\n </Typography>\n </ExpandedValueTooltip>\n );\n};\n\nexport default EntityTypeBadge;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n profileBandWrapper: {\n // especially for IE (overflow fix)\n flexShrink: 0\n },\n profileBand: {\n display: 'flex',\n padding: '16px 12px 16px 16px',\n alignItems: 'flex-start',\n backgroundColor: '#fff',\n boxShadow: 'inset 0 -1px 0 0 rgba(0,114,206,0.06), inset 0 1px 0 0 rgba(0,114,206,0.06);',\n\n '&:after': {\n // IE workaround for minHeight and centering items\n content: '\"\"',\n minHeight: 'inherit',\n fontSize: 0\n }\n },\n inactive: {\n background: theme.inactiveBackground\n },\n profileIcon: {\n marginRight: '12px'\n },\n imageProfileIcon: {\n width: '48px',\n height: '48px'\n },\n profileInfo: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 50%'\n },\n badge: {},\n label: {\n lineHeight: '1.2',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary,\n wordBreak: 'break-word',\n\n '&+ $specialInfo': {\n marginTop: '4px'\n }\n },\n secondaryLabel: {\n display: 'inline-flex',\n color: theme.palette.text.primary,\n marginTop: '2px',\n lineHeight: '16px',\n fontSize: '14px',\n fontWeight: 400,\n\n '&+ $businessCard': {\n marginLeft: '12px'\n }\n },\n businessCard: {\n color: theme.palette.text.secondary,\n display: 'inline-flex',\n fontSize: '14px',\n marginTop: '4px',\n lineHeight: '1.2'\n },\n specialInfo: {\n display: 'flex',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n width: '100%',\n marginTop: '8px'\n },\n entityType: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n entityId: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {isNil} from 'ramda';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {getLabel, isActiveObject, getBusinessCardAttributesText, getEntityId, isTempUri} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport EntityAvatar from '../EntityAvatar/EntityAvatar';\nimport EntityTypeBadge from '../EntityTypeBadge/EntityTypeBadge';\n\nimport useStyles from './styles';\n\nconst ProfileBand = ({className, entity, children, classes, showEntityId = true}) => {\n const styles = useStyles({classes});\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const handleCopyEntityIdToClipboard = useCallback(() => {\n navigator.clipboard.writeText(getEntityId(entity));\n }, [entity]);\n\n if (isNil(entity)) {\n return null;\n }\n\n const label = getLabel(entity.label);\n const secondaryLabel = entity.secondaryLabel;\n const businessCardText = getBusinessCardAttributesText(metadata, entity);\n const isActive = isActiveObject(entity);\n const entityUri = entity.uri;\n const entityId = getEntityId(entity);\n return (\n <div className={classnames(styles.profileBandWrapper, className)}>\n <div\n className={classnames(styles.profileBand, {\n [styles.inactive]: !isActive\n })}\n data-entity-uri={entityUri}\n >\n <EntityAvatar\n key={entity.uri}\n entity={entity}\n avatarClassName={styles.profileIcon}\n imageClassName={styles.imageProfileIcon}\n />\n <div className={styles.profileInfo}>\n <div>\n <Typography variant=\"h6\" className={styles.label}>\n {label}\n </Typography>\n {secondaryLabel && (\n <Typography variant=\"subtitle2\" className={styles.secondaryLabel}>\n {secondaryLabel}\n </Typography>\n )}\n {businessCardText && (\n <Typography variant=\"subtitle1\" className={styles.businessCard}>\n {businessCardText}\n </Typography>\n )}\n </div>\n <div className={styles.specialInfo}>\n <div className={styles.entityType}>\n <EntityTypeBadge entity={entity} size=\"medium\" className={styles.badge} />\n {!isTempUri(entityUri) && showEntityId && (\n <Tooltip title={i18n.text('Copy to clipboard')}>\n <Typography\n display=\"inline\"\n variant=\"body2\"\n className={styles.entityId}\n onClick={handleCopyEntityIdToClipboard}\n >\n {i18n.text('Entity ID')}: {entityId}\n </Typography>\n </Tooltip>\n )}\n </div>\n </div>\n </div>\n {children && <div>{children}</div>}\n </div>\n </div>\n );\n};\n\nProfileBand.propTypes = {\n className: PropTypes.string,\n entity: PropTypes.object,\n children: PropTypes.node,\n classes: PropTypes.object,\n showEntityId: PropTypes.bool\n};\n\nexport default ProfileBand;\n","import CreatableSelect from 'react-select/creatable';\nimport withMuiSkin from './withMuiSkin';\n\nexport default withMuiSkin(CreatableSelect);\n","import {MenuItem as MenuItem} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport ExpandedValueTooltip from '../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nexport default function Option(props) {\n const {\n innerProps,\n innerRef,\n children,\n isFocused,\n isSelected,\n selectProps: {classes},\n label\n } = props;\n\n return (\n <MenuItem\n className={classNames(classes.option, {[classes['option--selected']]: isSelected})}\n ref={innerRef}\n selected={isFocused}\n component=\"div\"\n {...innerProps}\n >\n <Checkbox color=\"primary\" checked={isSelected} />\n <ExpandedValueTooltip value={label}>\n <div className={classes['option--item']}>{children}</div>\n </ExpandedValueTooltip>\n </MenuItem>\n );\n}\n\nOption.propTypes = {\n children: PropTypes.node,\n innerProps: PropTypes.shape({\n id: PropTypes.string.isRequired,\n key: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onMouseMove: PropTypes.func.isRequired,\n onMouseOver: PropTypes.func.isRequired,\n tabIndex: PropTypes.number.isRequired\n }).isRequired,\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n isFocused: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n label: PropTypes.string,\n selectProps: PropTypes.shape({\n classes: PropTypes.shape({\n option: PropTypes.string\n })\n })\n};\n","import Option from './Option';\n\nconst components = {\n Option\n};\n\nexport default components;\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {omit} from 'ramda';\nimport CreatableSelect from '../CreatableSelect';\nimport Select from '../Select';\nimport AsyncSelect from '../AsyncSelect';\nimport multiSelectComponents from './components';\nimport {makeStyles} from '@material-ui/core/styles';\nimport {mergeClasses} from '../../../core/utils';\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n top: 6,\n left: 16\n },\n placeholder: (props) => ({\n display: !props.placeholder || props.label ? 'none' : undefined\n }),\n 'option--selected': {\n fontWeight: 400\n },\n clearIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n },\n dropdownIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n }\n}));\n\nlet id = 0;\nconst getInputId = () => `custom-select-${id++}`;\n\nfunction MultiSelect(props) {\n const {\n label,\n creatable,\n getOptions,\n loadingIndicator,\n components: componentsProp,\n classes: classesProp,\n styles: stylesProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n menuPlacement = 'auto',\n ...reactSelectProps\n } = props;\n\n const SelectComponent = creatable ? CreatableSelect : getOptions ? AsyncSelect : Select;\n\n const [inputValue, setInputValue] = useState('');\n const multiSelectClasses = useStyles(omit(['classes'], props));\n const inputId = getInputId();\n\n const components = {\n ...multiSelectComponents,\n ...componentsProp\n };\n\n const classes = mergeClasses(multiSelectClasses, classesProp);\n\n function handleInputChange(value, {action}) {\n onInputChangeProp(value, {action});\n if (action !== 'set-value') {\n setInputValue(value);\n }\n }\n\n function handleChange(value, actionMeta) {\n onChangeProp(value, actionMeta);\n if (actionMeta.action === 'create-option') {\n setInputValue('');\n onInputChangeProp('', {action: 'input-change'});\n }\n }\n\n const styles = {\n indicatorSeparator: (base) => ({\n ...base,\n margin: '10px 0'\n }),\n loadingIndicator: (base) => ({\n ...base,\n display: loadingIndicator ? base.display : 'none'\n }),\n loadingMessage: (base) => ({\n ...base,\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif'\n }),\n ...stylesProp\n };\n\n const labelProps = label\n ? {\n inputId,\n TextFieldProps: {\n label,\n InputLabelProps: {\n htmlFor: inputId,\n shrink: props.value && props.value.length ? true : undefined,\n className: classes.label\n },\n ...props.TextFieldProps\n }\n }\n : {};\n\n return (\n <SelectComponent\n isMulti\n inputId={inputId}\n inputValue={inputValue}\n onChange={handleChange}\n onInputChange={handleInputChange}\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n classes={classes}\n components={components}\n styles={styles}\n menuPlacement={menuPlacement}\n loadOptions={getOptions}\n {...labelProps}\n {...reactSelectProps}\n />\n );\n}\n\nMultiSelect.defaultProps = {\n creatable: false,\n cacheOptions: true,\n components: {},\n classes: {},\n placeholder: '',\n loadingIndicator: false,\n onInputChange: () => {},\n onChange: () => {}\n};\n\nMultiSelect.propTypes = {\n /**\n * Async creatable multi select with optional placeholder, shrink-label, non-closing menu and options with checkboxes.\n * Based on react-select/creatable and react-select/async.\n * See react-select docs: https://react-select.com\n *\n * Below are listed only props used in the MultiSelect component. Check https://react-select.com/props first.\n * */\n\n /** Ability to create values. React-select/async-creatable is used internally */\n creatable: PropTypes.bool,\n /** True for enabling cache. Recommended. */\n cacheOptions: PropTypes.bool,\n defaultOptions: PropTypes.bool,\n /** Array of selected options. */\n value: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n /** Way to receive updated values */\n onChange: PropTypes.func,\n /** Way to receive updated inputValue */\n onInputChange: PropTypes.func,\n /** Input placeholder. Will not be shown if the label prop is specified */\n placeholder: PropTypes.string,\n /** Floating label from @material-ui/core/TextField component */\n label: PropTypes.string,\n /** Enable to show default react-select's indicator */\n loadingIndicator: PropTypes.bool,\n /** You could redefine any of these components */\n components: PropTypes.shape({\n ClearIndicator: PropTypes.func,\n Control: PropTypes.func,\n DropdownIndicator: PropTypes.func,\n DownChevron: PropTypes.func,\n CrossIcon: PropTypes.func,\n Group: PropTypes.func,\n GroupHeading: PropTypes.func,\n IndicatorsContainer: PropTypes.func,\n IndicatorSeparator: PropTypes.func,\n Input: PropTypes.func,\n LoadingIndicator: PropTypes.func,\n Menu: PropTypes.func,\n MenuList: PropTypes.func,\n MenuPortal: PropTypes.func,\n LoadingMessage: PropTypes.func,\n NoOptionsMessage: PropTypes.func,\n MultiValue: PropTypes.func,\n MultiValueContainer: PropTypes.func,\n MultiValueLabel: PropTypes.func,\n MultiValueRemove: PropTypes.func,\n Option: PropTypes.func,\n Placeholder: PropTypes.func,\n SelectContainer: PropTypes.func,\n SingleValue: PropTypes.func,\n ValueContainer: PropTypes.func\n }),\n /** Classes are passed to mui skin components. Provided classes will be merged with existing ones. */\n classes: PropTypes.shape({\n control: PropTypes.string,\n valueContainer: PropTypes.string,\n multiValue: PropTypes.string,\n noOptionsMessage: PropTypes.string,\n singleValue: PropTypes.string,\n placeholder: PropTypes.string,\n menu: PropTypes.string,\n clearIndicator: PropTypes.string,\n dropdownIndicator: PropTypes.string,\n option: PropTypes.string,\n 'option--selected': PropTypes.string,\n label: PropTypes.string\n }),\n /**\n * React-select's way to customise style. Could be used to style default react-select components.\n * In other cases better to use classes and components props\n * */\n styles: PropTypes.shape({\n clearIndicator: PropTypes.func,\n container: PropTypes.func,\n control: PropTypes.func,\n dropdownIndicator: PropTypes.func,\n group: PropTypes.func,\n groupHeading: PropTypes.func,\n indicatorsContainer: PropTypes.func,\n indicatorSeparator: PropTypes.func,\n input: PropTypes.func,\n loadingIndicator: PropTypes.func,\n loadingMessage: PropTypes.func,\n menu: PropTypes.func,\n menuList: PropTypes.func,\n menuPortal: PropTypes.func,\n multiValue: PropTypes.func,\n multiValueLabel: PropTypes.func,\n multiValueRemove: PropTypes.func,\n noOptionsMessage: PropTypes.func,\n option: PropTypes.func,\n placeholder: PropTypes.func,\n singleValue: PropTypes.func,\n valueContainer: PropTypes.func\n }),\n /** Props from https://material-ui.com/api/text-field/ */\n TextFieldProps: PropTypes.object /* eslint-disable-line react/forbid-prop-types */,\n getOptions: PropTypes.func,\n menuPlacement: PropTypes.string,\n menuPortalTarget: PropTypes.object,\n getOptionValue: PropTypes.func,\n isSearchable: PropTypes.bool,\n inputRef: PropTypes.shape({current: PropTypes.object})\n};\n\nexport default MultiSelect;\n","import MultiSelect from './MultiSelect';\n\nexport default MultiSelect;\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n width: '64px',\n paddingTop: '8px',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)'\n },\n active: {\n backgroundColor: fade(theme.palette.primary.main, 0.12),\n color: theme.palette.primary.main,\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n height: '42px',\n width: '3px',\n backgroundColor: theme.palette.primary.main,\n left: '-8px',\n borderRadius: '0 6px 6px 0'\n }\n },\n buttonWrapper: {\n position: 'relative',\n width: '48px',\n height: '44px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '6px',\n margin: '2px 8px',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {VFC, ElementType} from 'react';\nimport classnames from 'classnames';\nimport {IconButtonProps} from '@material-ui/core/IconButton';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n buttonsProps: {\n icon: ElementType;\n tooltipTitle: string;\n id: number;\n }[];\n classes?: {active?: string; buttonWrapper?: string} & IconButtonProps['classes'];\n activeIndexId: number;\n className?: string;\n onButtonClick: (id: number) => void;\n};\n\nexport const SideButtonsPanel: VFC<Props> = ({buttonsProps, activeIndexId, className, onButtonClick, classes = {}}) => {\n const styles = useStyles();\n const {active, buttonWrapper, ...iconButtonClasses} = classes;\n\n return (\n <div className={classnames(styles.container, className)}>\n {buttonsProps.map(({id, ...buttonProps}) => {\n return (\n <SmallIconButtonWithTooltip\n {...buttonProps}\n classes={iconButtonClasses}\n size=\"S\"\n key={id}\n className={classnames(\n {[classnames(styles.active, active)]: activeIndexId === id},\n styles.buttonWrapper,\n buttonWrapper\n )}\n onClick={() => onButtonClick(id)}\n data-reltio-id={`reltio-profile-right-side-button-${id}`}\n />\n );\n })}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n loadingMessage: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n }\n});\n","import React, {useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {defaultTo, pipe, pluck, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getAllUsersForTenant, User, utils} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n selectedUsers: string[];\n onChange: (activities: string[]) => void;\n className?: string;\n disableUnderline?: boolean;\n};\n\nconst UserSelector = ({selectedUsers, onChange, className, disableUnderline}: Props) => {\n const styles = useStyles();\n\n const valueToOption = (value: string) => ({value, label: value});\n const prepareValues = (values: string[]) => values.map(valueToOption);\n const filterUsers = (inputValue) => (users) =>\n inputValue ? users.filter((username) => utils.strings.search(username, inputValue)) : users;\n\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n\n const cachedRequest = useRef<Promise<{array: User[]}>>();\n const getOptions = (inputValue) => {\n if (!cachedRequest.current) {\n cachedRequest.current = getAllUsersForTenant({tenant, servicesPath});\n }\n return cachedRequest.current.then(\n pipe(prop('array'), pluck('username'), filterUsers(inputValue), prepareValues)\n );\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('User')}\n </Typography>\n <MultiSelect\n value={prepareValues(selectedUsers)}\n onChange={pipe(defaultTo([]), pluck('value'), onChange)}\n defaultOptions={true}\n getOptions={getOptions}\n TextFieldProps={{\n InputProps: {disableUnderline},\n className: styles.dropDownInput\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default UserSelector;\n","export enum ActivityTypes {\n MODEL_UPDATED = 'MODEL_UPDATED',\n ENTITY_REMOVED = 'ENTITY_REMOVED',\n ENTITY_CREATED = 'ENTITY_CREATED',\n ENTITY_CHANGED = 'ENTITY_CHANGED',\n ENTITIES_MERGED = 'ENTITIES_MERGED',\n ENTITIES_SPLITTED = 'ENTITIES_SPLITTED',\n ENTITY_LOST_MERGE = 'ENTITY_LOST_MERGE',\n RELATIONSHIP_CREATED = 'RELATIONSHIP_CREATED',\n RELATIONSHIP_REMOVED = 'RELATIONSHIP_REMOVED',\n RELATIONSHIP_CHANGED = 'RELATIONSHIP_CHANGED',\n POTENTIAL_MATCHES_FOUND = 'POTENTIAL_MATCHES_FOUND',\n NOT_MATCHES_SET = 'NOT_MATCHES_SET',\n NOT_MATCHES_RESET = 'NOT_MATCHES_RESET',\n PERIODIC_TASK_SCHEDULED = 'PERIODIC_TASK_SCHEDULED',\n ENTITIES_MERGED_MANUALLY = 'ENTITIES_MERGED_MANUALLY',\n POTENTIAL_MATCHES_REMOVED = 'POTENTIAL_MATCHES_REMOVED',\n ENTITIES_MERGED_ON_THE_FLY = 'ENTITIES_MERGED_ON_THE_FLY',\n USER_LOGIN = 'USER_LOGIN',\n USER_LOGOUT = 'USER_LOGOUT',\n USER_SEARCH = 'USER_SEARCH',\n USER_PROFILE_VIEW = 'USER_PROFILE_VIEW',\n COMMENT_ADDED = 'COMMENT_ADDED',\n COMMENT_UPDATED = 'COMMENT_UPDATED',\n COMMENT_DELETED = 'COMMENT_DELETED',\n ANALYTICS_ATTRIBUTES_CHANGED = 'ANALYTICS_ATTRIBUTES_CHANGED',\n SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE = 'SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE',\n GROUP_CREATED = 'GROUP_CREATED',\n GROUP_REMOVED = 'GROUP_REMOVED',\n GROUP_CHANGED = 'GROUP_CHANGED'\n}\n","import {groupBy, ifElse, map, path, pipe, propOr, values, is, isNil, includes} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActivityData, ActivityTypes, DeltaValue} from '../types';\n\nconst getItemDataType = path(['data', 'type']);\n\nexport const getActivityType = (activity: ActivityData) => {\n const {items, label} = activity;\n const [firstItem] = items || [];\n return getItemDataType(firstItem) || label;\n};\n\nexport const isValidActivityType = (type: string): boolean => pipe(values, includes(type))(ActivityTypes);\n\nexport const isValidActivity = pipe(getActivityType, isValidActivityType);\n\nexport const splitActivityByType = (activity: ActivityData) => {\n return pipe(\n propOr([], 'items'),\n groupBy(getItemDataType),\n values,\n ifElse(\n ({length}) => length > 1,\n map((items) => ({\n ...activity,\n items,\n itemsTotal: items.length\n })),\n () => [activity]\n )\n )(activity);\n};\n\nexport const stringifyDeltaValue = (delta: string | Record<string, DeltaValue[]> | DeltaValue | DeltaValue[]) => {\n if (isNil(delta)) {\n return '';\n } else if (typeof delta === 'string') {\n return delta;\n } else if (Array.isArray(delta)) {\n return delta.map(stringifyDeltaValue).join(', ');\n } else if (is(Object, delta)) {\n return 'value' in delta ? stringifyDeltaValue(delta.value) : stringifyDeltaValue(Object.values(delta));\n } else {\n return delta.toString();\n }\n};\n\nexport const getActivityLabel = (type: ActivityTypes) => {\n const labels = {\n [ActivityTypes.COMMENT_ADDED]: i18n.text('Comment added'),\n [ActivityTypes.COMMENT_DELETED]: i18n.text('Comment deleted'),\n [ActivityTypes.COMMENT_UPDATED]: i18n.text('Comment updated'),\n [ActivityTypes.ENTITIES_MERGED]: i18n.text('Profile merged'),\n [ActivityTypes.ENTITIES_MERGED_MANUALLY]: i18n.text('Profile merged manually'),\n [ActivityTypes.ENTITIES_MERGED_ON_THE_FLY]: i18n.text('Profile merged on the fly'),\n [ActivityTypes.ENTITIES_SPLITTED]: i18n.text('Profile un-merged'),\n [ActivityTypes.ENTITY_CHANGED]: i18n.text('Profile updated'),\n [ActivityTypes.ENTITY_CREATED]: i18n.text('Profile created'),\n [ActivityTypes.ENTITY_LOST_MERGE]: i18n.text('Profile lost merge'),\n [ActivityTypes.ENTITY_REMOVED]: i18n.text('Profile removed'),\n [ActivityTypes.GROUP_CHANGED]: i18n.text('Group updated'),\n [ActivityTypes.GROUP_CREATED]: i18n.text('Group created'),\n [ActivityTypes.GROUP_REMOVED]: i18n.text('Group removed'),\n [ActivityTypes.MODEL_UPDATED]: i18n.text('Model was updated'),\n [ActivityTypes.NOT_MATCHES_RESET]: i18n.text('Not matches reset'),\n [ActivityTypes.NOT_MATCHES_SET]: i18n.text('Not matches set'),\n [ActivityTypes.PERIODIC_TASK_SCHEDULED]: i18n.text('Periodic task was scheduled'),\n [ActivityTypes.POTENTIAL_MATCHES_FOUND]: i18n.text('Potential matches found'),\n [ActivityTypes.POTENTIAL_MATCHES_REMOVED]: i18n.text('Potential matches removed'),\n [ActivityTypes.RELATIONSHIP_CHANGED]: i18n.text('Relationship updated'),\n [ActivityTypes.RELATIONSHIP_CREATED]: i18n.text('Relationship created'),\n [ActivityTypes.RELATIONSHIP_REMOVED]: i18n.text('Relationship removed'),\n [ActivityTypes.USER_LOGIN]: i18n.text('Logged in'),\n [ActivityTypes.USER_LOGOUT]: i18n.text('Logged out'),\n [ActivityTypes.USER_PROFILE_VIEW]: i18n.text('Profile viewed'),\n [ActivityTypes.USER_SEARCH]: i18n.text('Searched'),\n [ActivityTypes.ANALYTICS_ATTRIBUTES_CHANGED]: i18n.text('Analytics attribute changed'),\n [ActivityTypes.SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE]: i18n.text('SFDC connector synchronization issue')\n };\n return labels[type] || '';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n dropdownIndicator: {\n transition: 'transform .15s ease'\n },\n inputRoot: {\n fontSize: '14px',\n height: 46\n },\n input: {\n padding: '0 12px 0'\n },\n dateOptionLabel: {\n minWidth: '100px'\n },\n paper: {\n minWidth: '112px'\n }\n});\n","import React, {useCallback, useRef, useState} from 'react';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {DataTypes, formatDataTypeValue} from '@reltio/mdm-sdk';\n\nimport {TextField as TextField} from '@material-ui/core';\nimport {Menu as Menu} from '@material-ui/core';\nimport DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport DateRangePicker from '../../DateRangePicker/DateRangePicker';\nimport {useStyles} from './styles';\n\ntype DateValues = [Date, Date];\ntype Props = {\n values: DateValues;\n onChange: (values: DateValues) => void;\n onFocus?: () => void;\n};\n\nconst localeFormat = moment.localeData().longDateFormat('L');\n\nconst formatValue = (value: Date, placeholder: string) => {\n return isNil(value)\n ? `${placeholder}`\n : `${formatDataTypeValue({dataTypeDefinition: {type: DataTypes.TYPE_ACTIVENESS_DATE}}, value)}`;\n};\n\nconst CustomDateRangeEditor = ({values, onChange, onFocus}: Props) => {\n const placeholder = localeFormat;\n const inputRef = useRef(null);\n const [open, setOpen] = useState(false);\n const styles = useStyles();\n\n const onApply = (values: DateValues) => {\n onChange(values);\n setOpen(false);\n };\n\n const handleToggle = useCallback(() => {\n setOpen((open) => !open);\n onFocus();\n }, [onFocus]);\n\n const onCancel = () => {\n setOpen(false);\n };\n\n return (\n <div className={styles.root}>\n <TextField\n fullWidth\n value={values.map((value) => formatValue(value, placeholder)).join(' \\u2014 ')}\n onClick={handleToggle}\n variant=\"filled\"\n ref={inputRef}\n InputProps={{\n endAdornment: (\n <DropdownIndicatorWithIconButton\n selectProps={{classes: styles, menuIsOpen: open}}\n innerProps={{}}\n />\n ),\n disableUnderline: isNil(values),\n readOnly: true,\n classes: {\n root: styles.inputRoot,\n input: styles.input\n }\n }}\n InputLabelProps={{\n shrink: false\n }}\n placeholder={i18n.text(`${placeholder} \\u2014 ${placeholder}`)}\n />\n <Menu\n variant=\"menu\"\n open={open}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={inputRef.current}\n onClose={onCancel}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{\n autoFocusItem: open,\n style: {width: '100%'}\n }}\n >\n <DateRangePicker\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n values={values}\n onCancel={onCancel}\n onApply={onApply}\n type={DataTypes.TYPE_ACTIVENESS_DATE}\n />\n </Menu>\n </div>\n );\n};\n\nexport default CustomDateRangeEditor;\n","import {useEffect, useState} from 'react';\n\nexport const useSavedState = <T>(getSavedState: () => Promise<T>) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const [savedState, setSavedState] = useState<T | Record<string, never>>({});\n\n useEffect(() => {\n getSavedState()\n .then((savedState) => {\n setSavedState(savedState || {});\n })\n .then((_) => setIsLoaded(true))\n .catch((_) => setIsLoaded(true));\n }, []); // eslint-disable-line\n\n return {isLoaded, savedState};\n};\n","import React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Portal as Portal} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport Snackbar, {SnackbarOrigin} from '@material-ui/core/Snackbar';\n\ntype SnackbarOptions = {\n anchorOrigin?: SnackbarOrigin;\n showDismiss?: boolean;\n};\nconst FIVE_MINUTES = 5 * 60 * 1000;\nexport const useSnackbar = (options: SnackbarOptions = {}) => {\n const {anchorOrigin, showDismiss} = options;\n const [isOpenSnackbar, setIsOpenSnackbar] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = useState('');\n\n const closeSnackbar = useCallback(() => {\n setIsOpenSnackbar(false);\n setSnackbarMessage('');\n }, []);\n\n const showSnackbarMessage = useCallback((message) => {\n setIsOpenSnackbar(true);\n setSnackbarMessage(message);\n }, []);\n\n const SnackbarRenderer = useCallback(() => {\n return (\n <Portal container={document.body}>\n <Snackbar\n open={isOpenSnackbar}\n anchorOrigin={anchorOrigin}\n autoHideDuration={FIVE_MINUTES}\n onClose={closeSnackbar}\n message={snackbarMessage}\n action={\n showDismiss ? (\n <Button color=\"primary\" onClick={closeSnackbar}>\n {i18n.text('Dismiss')}\n </Button>\n ) : undefined\n }\n />\n </Portal>\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpenSnackbar, closeSnackbar, snackbarMessage]);\n\n return {SnackbarRenderer, showSnackbarMessage};\n};\n","import {AttributeType} from '@reltio/mdm-sdk';\n\nexport type ReactGridLayoutItem = {\n i: string;\n x: number;\n y: number;\n w: number;\n h: number;\n minW?: number;\n minH?: number;\n maxW?: number;\n maxH?: number;\n static?: boolean;\n};\n\nexport type ReltioGridLayoutItem = {\n id: string;\n x: number;\n y: number;\n width: number;\n height: number;\n minWidth?: number;\n minHeight?: number;\n maxWidth?: number;\n maxHeight?: number;\n isStatic?: boolean;\n autosizing?: boolean;\n};\n\nexport type AttributeOption = {\n label: string;\n value: string;\n attrType: AttributeType;\n chipLabel: string;\n level: number;\n};\n\nexport enum DateRangeTypes {\n WITHIN = 'within',\n AGO = 'ago',\n BETWEEN = 'between'\n}\n\nexport type DateRangeFilter = {\n type: DateRangeTypes;\n period: [number, string] | [Date, Date];\n};\n\nexport type QueryBuilderAttributeData = {\n title: string;\n pathToTitle: Array<string>;\n fieldName: string;\n entityTypeUri: string;\n attrType: AttributeType;\n uri: string;\n groupName: string;\n filterOptions: Array<string>;\n};\n\nexport type QueryBuilderAttribute = {\n id: string;\n values: Array<unknown>;\n data: QueryBuilderAttributeData;\n filter: string;\n operator: string;\n};\n\nexport type AttributeSelectorItem = {\n attrType: AttributeType;\n entityTypeUri: string;\n fieldName: string;\n groupName: string;\n title: string;\n uri: string;\n children?: AttributeSelectorItem[];\n pathToTitle?: string[];\n};\n\nexport type AttributeSelectorItemsGroup = {\n id?: string;\n title: string;\n attributes: AttributeSelectorItem[];\n};\n\nexport type AttributeSelectionInfo = {\n index: number;\n checked: boolean;\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n};\n\nexport type BasicAttributeSelectorProps = {\n className?: string;\n itemsGroups: AttributeSelectorItemsGroup[];\n value: AttributeSelectorItem;\n onSelect: (selectInfo: AttributeSelectionInfo) => void;\n onRestoreFocus?: () => void;\n onOpenPopup?: () => void;\n getLabel?: (value: {fieldName?: string; pathToTitle?: string[]; title: string}) => string;\n disableRestoreFocus?: boolean;\n disableEnforceFocus?: boolean;\n single?: boolean;\n ungroup?: boolean;\n disabled?: boolean;\n hideCheckBox?: boolean;\n};\nexport enum RequestStates {\n INIT = 'init',\n LOADING = 'loading',\n LOADED = 'loaded',\n ERROR = 'error'\n}\n\nexport type SelectableItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selected?: boolean;\n};\n\nexport type DropDownMenuItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selectable?: boolean;\n selected?: boolean;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n padding: '16px 12px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12);'\n },\n closeButton: {\n marginRight: '12px'\n }\n});\n","import React from 'react';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {SmallIconButton} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n title: React.ReactNode;\n className: string;\n onClose: () => void;\n children?: React.ReactNode;\n};\n\nexport const RightSidePanel = ({title, className, onClose, children}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={className}>\n <div className={styles.header}>\n <SmallIconButton className={styles.closeButton} icon={CloseIcon} onClick={onClose} />\n {title}\n </div>\n {children}\n </div>\n );\n};\n","export enum LegendMode {\n Crosswalk = 'crosswalks',\n Source = 'source',\n Contributor = 'contributor'\n}\n","import {sum, map, pipe, groupBy, toPairs, sort, nth, prop, reduce, last} from 'ramda';\nimport {SankeyLink, SankeyData} from '../../types/SankeyChartData';\n\nconst sumValues = (links: SankeyLink[]): number => pipe(map(prop('value')), sum)(links);\nconst interpolateNumber = (a: number, b: number) => ((a = +a), (b = +b), (t) => a * (1 - t) + b * t);\n\nexport default function Sankey() {\n const lastLinksSize = 22;\n\n let nodeWidth = 24,\n smallestNodeMaxHeight = 15,\n smallestNodeMinHeight = 10,\n nodePadding = 8,\n size = [1, 1] as [number, number];\n\n function sankey({nodes, links}: SankeyData) {\n const graph = {nodes, links};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeBreadths(graph);\n computeNodeDepths(graph);\n computeLinkDepths(graph);\n correctNodesDepth(graph);\n return graph;\n }\n\n sankey.nodeWidth = () => nodeWidth;\n sankey.setNodeWidth = (width: number) => ((nodeWidth = +width), sankey);\n\n sankey.nodePadding = () => nodePadding;\n sankey.setNodePadding = (padding: number) => ((nodePadding = +padding), sankey);\n\n sankey.smallestNodeMaxHeight = () => smallestNodeMaxHeight;\n sankey.setSmallestNodeMaxHeight = (height: number) => ((smallestNodeMaxHeight = +height), sankey);\n\n sankey.smallestNodeMinHeight = () => smallestNodeMinHeight;\n sankey.setSmallestNodeMinHeight = (height: number) => ((smallestNodeMinHeight = +height), sankey);\n\n sankey.size = () => size;\n sankey.setSize = (newSize: [number, number]) => ((size = newSize), sankey);\n\n sankey.update = (graph) => {\n computeLinkDepths(graph);\n return graph;\n };\n\n sankey.link = () => {\n let curvature = 0.5;\n\n function link(d) {\n const lastLine = !d.target.sourceLinks || d.target.sourceLinks.length == 0;\n const addPixels = 0.13;\n const x0 = d.source.x + d.source.dx,\n x1 = d.target.x,\n xi = interpolateNumber(x0, x1),\n x2 = xi(curvature),\n x3 = xi(1 - curvature),\n y0 = d.source.y + d.sy - addPixels,\n y1 = d.target.y + d.ty - addPixels;\n const appendix = !lastLine\n ? `L${x1 + nodeWidth},${y1} L${x1 + nodeWidth},${y1 + d.dy + 2 * addPixels}`\n : '';\n\n return y0 === y1\n ? `M${x0},${y0} \n L${x1},${y1}${appendix} \n L${x1},${y1 + d.dy + 2 * addPixels} \n L${x0},${y0 + d.dy + 2 * addPixels} Z`\n : `M${x0},${y0}\n C${x2},${y0} ${x3},${y1} ${x1},${y1}${appendix} \n L${x1},${y1 + d.dy + 2 * addPixels} \n C${x3},${y1 + d.dy + 2 * addPixels} ${x2},${y0 + d.dy + 2 * addPixels} \n ${x0},${y0 + d.dy + 2 * addPixels} Z`;\n }\n\n link.curvature = function (_) {\n if (!arguments.length) return curvature;\n curvature = +_;\n return link;\n };\n\n return link;\n };\n\n // Populate the sourceLinks and targetLinks for each node.\n function computeNodeLinks({nodes, links}: SankeyData) {\n nodes.forEach((node) => {\n node.sourceLinks = [];\n node.targetLinks = [];\n });\n links.forEach((link) => {\n link.source.sourceLinks.push(link);\n link.target.targetLinks.push(link);\n });\n }\n\n // Compute the value (size) of each node by summing the associated links.\n function computeNodeValues({nodes}: SankeyData) {\n nodes.forEach((node) => {\n node.value = Math.max(sumValues(node.sourceLinks), sumValues(node.targetLinks));\n });\n }\n\n // Iteratively assign the breadth (x-position) for each node.\n // Nodes are assigned the maximum breadth of incoming neighbors plus one;\n // nodes with no incoming links are assigned breadth zero, while\n // nodes with no outgoing links are assigned the maximum breadth.\n function computeNodeBreadths({nodes}: SankeyData) {\n if (!nodes.length) return;\n let remainingNodes = [nodes[0]],\n nextNodes,\n x = 0;\n\n while (remainingNodes.length) {\n nextNodes = [];\n remainingNodes.forEach((node) => {\n node.x = x;\n node.dx = nodeWidth;\n node.targetLinks.forEach((link) => {\n if (nextNodes.indexOf(link.source) < 0) {\n nextNodes.push(link.source);\n }\n });\n });\n remainingNodes = nextNodes;\n ++x;\n }\n\n nodes.forEach((node) => {\n node.x = x - 1 - node.x;\n });\n\n if (x > 2) {\n const w = (size[0] - 2 * nodeWidth - lastLinksSize) / (x - 2);\n nodes.forEach((node) => {\n if (!node.sourceLinks || node.sourceLinks.length == 0) node.x = size[0] - nodeWidth;\n else node.x *= w;\n });\n } else {\n nodes[0].x = size[0] - nodeWidth;\n nodes[1].x = nodes[0].x - lastLinksSize - nodeWidth;\n }\n }\n\n function computeNodeDepths({nodes, links}: SankeyData) {\n const nodesByBreadth = pipe(\n groupBy(prop('x')),\n toPairs,\n sort((a, b) => a[0] - b[0]),\n map(nth(1))\n )(nodes);\n\n //\n initializeNodeDepth();\n resolveCollisions();\n\n const max = pipe(\n map((nodes) => (nodes.length - 1) * nodePadding + sum(map((node) => node.dy, nodes))),\n reduce(Math.max, 0)\n )(nodesByBreadth);\n\n const y1 = (size[1] - max) / 2;\n\n nodesByBreadth.forEach((nodes) => {\n const {y, dy} = last(nodes);\n const y0 = size[1] - (y + dy);\n nodes.forEach((node) => {\n node.y += y0;\n if (y1 > 0) node.y -= y1;\n });\n });\n\n function initializeNodeDepth() {\n let ky = pipe(\n map((nodes) => (size[1] - (nodes.length - 1) * nodePadding) / sumValues(nodes)),\n reduce(Math.min, Infinity)\n )(nodesByBreadth);\n\n const min = pipe(\n map((node) => node.value / (node.targetLinks?.length || 1)),\n reduce(Math.min, Infinity)\n )(nodes);\n\n ky = Math.max(Math.min(ky, smallestNodeMaxHeight / min), smallestNodeMinHeight / min);\n\n nodesByBreadth.forEach((nodes) => {\n nodes.forEach((node, i) => {\n node.y = i;\n node.dy = node.value * ky;\n });\n });\n\n links.forEach((link) => {\n link.dy = link.value * ky;\n });\n }\n\n function resolveCollisions() {\n nodesByBreadth.forEach((nodes) => {\n let node,\n dy,\n y0 = 0,\n i;\n const n = nodes.length;\n\n // Push any overlapping nodes down.\n nodes.sort((a, b) => a.y - b.y);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dy = y0 - node.y;\n if (dy > 0) node.y += dy;\n y0 = node.y + node.dy + nodePadding;\n }\n\n // If the bottommost node goes outside the bounds, push it back up.\n dy = y0 - nodePadding - size[1];\n if (dy > 0) {\n y0 = node.y -= dy;\n\n // Push any overlapping nodes back up.\n for (i = n - 2; i >= 0; --i) {\n node = nodes[i];\n dy = node.y + node.dy + nodePadding - y0;\n if (dy > 0) node.y -= dy;\n y0 = node.y;\n }\n }\n });\n }\n }\n\n function computeLinkDepths({nodes}: SankeyData) {\n const nodesByBreadth = pipe(\n groupBy(prop('x')),\n toPairs,\n sort((a: number, b: number) => a[0] - b[0]),\n map(nth(1))\n )(nodes);\n\n nodesByBreadth.forEach((nodes) => {\n nodes.forEach((node) => {\n if (node.targetLinks?.length) {\n const result = [];\n const linksByUuid = node.targetLinks.map((l) => l.crosswalk.uuid);\n const sourceNodes = [];\n node.targetLinks.forEach(function (l) {\n if (this.indexOf(l.source) == -1) this.push(l.source);\n }, sourceNodes);\n for (let i = 0; i < sourceNodes.length; i++)\n for (let j = 0; j < sourceNodes[i].sourceLinks.length; j++) {\n const index = linksByUuid.indexOf(sourceNodes[i].sourceLinks[j].crosswalk.uuid);\n if (index != -1) result.push(node.targetLinks[index]);\n }\n node.targetLinks = result;\n }\n\n if (node.sourceLinks?.length) {\n const result = [];\n if (node.targetLinks?.length) {\n const linksByUuid = node.sourceLinks.map((l) => l.crosswalk.uuid);\n for (let i = 0; i < node.targetLinks.length; i++) {\n const index = linksByUuid.indexOf(node.targetLinks[i].crosswalk.uuid);\n if (index != -1) result.push(node.sourceLinks[index]);\n }\n }\n\n const resultByUuid = result.map((l) => l.crosswalk.uuid);\n const newSources = node.sourceLinks.filter(function (l) {\n return this.indexOf(l.crosswalk.uuid) == -1;\n }, resultByUuid);\n\n node.sourceLinks = newSources.concat(result);\n if (result.length > 0) {\n let sizeForNewSources = 0;\n for (let i = 0; i < newSources.length; i++) sizeForNewSources += newSources[i].dy;\n node.sizeForNewSources = sizeForNewSources;\n }\n }\n });\n });\n\n nodes.forEach((node) => {\n let sy = 0,\n ty = node.sizeForNewSources || 0;\n delete node.sizeForNewSources;\n node.sourceLinks.forEach((link) => {\n link.sy = sy;\n sy += link.dy;\n });\n node.targetLinks.forEach((link) => {\n link.ty = ty;\n ty += link.dy;\n });\n });\n }\n\n function correctNodesDepth({nodes}: SankeyData) {\n const nodesByBreadth = pipe(\n groupBy(prop('x')),\n toPairs,\n sort((a: number, b: number) => b[0] - a[0]),\n map(nth(1))\n )(nodes);\n\n nodesByBreadth.forEach((nodes) => {\n nodes = nodes.concat().sort((a, b) => a.y - b.y);\n nodes.forEach((node, i) => {\n if (node.sourceLinks?.length) {\n const {target, ty, dy} = last(node.sourceLinks);\n let y0 = target.y + ty + dy - node.dy;\n if (nodes[i - 1]?.x == node.x && y0 < nodes[i - 1]?.y + nodes[i - 1]?.dy + nodePadding)\n y0 = nodes[i - 1].y + nodes[i - 1].dy + nodePadding;\n if (node.y > y0) {\n node.y = y0;\n }\n }\n });\n });\n }\n\n return sankey;\n}\n","import {useMemo} from 'react';\nimport {SankeyData, SankeyNode} from '../../types/SankeyChartData';\nimport sankey from './sankey';\n\ntype Props = {\n width: number;\n height: number;\n data: SankeyData;\n};\n\nconst useSankey = ({data, width, height}: Props) =>\n useMemo(() => {\n if (!width || !height) return {nodes: [], links: []};\n\n const shallowCopy = (data: SankeyData): SankeyData => {\n const safeNodes = data.nodes.map((node) => ({...node}));\n const getSafeNode = (originalNode: SankeyNode) => {\n const index = data.nodes.indexOf(originalNode);\n return safeNodes[index];\n };\n\n const safeLinks = data.links.map((link) => ({\n ...link,\n source: getSafeNode(link.source),\n target: getSafeNode(link.target)\n }));\n return {nodes: safeNodes, links: safeLinks};\n };\n\n const sankeyLayout = sankey()\n .setNodeWidth(14)\n .setNodePadding(20)\n .setSize([height - 2, width - 2]);\n\n const nodeWidth = sankeyLayout.nodeWidth();\n const path = sankeyLayout.link();\n\n const safeData = shallowCopy(data);\n const {nodes, links}: SankeyData = sankeyLayout(safeData);\n\n return {nodes, links, nodeWidth, path};\n }, [data, height, width]);\n\nexport default useSankey;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n tooltipTitle: {\n fontWeight: 500,\n fontSize: '16px',\n lineHeight: '24px',\n letterSpacing: '0.15px',\n marginBottom: '8px',\n userSelect: 'none'\n },\n tooltipRow: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '13px',\n lineHeight: '15px',\n fontWeight: 'normal',\n '&:not(:last-child)': {\n marginBottom: '4px'\n }\n },\n tooltipIcon: {\n fontSize: '18px',\n color: 'rgba(0, 0, 0, 0.54)',\n marginRight: '8px'\n },\n node: {\n stroke: '#000000',\n strokeWidth: 1,\n strokeOpacity: 0.38\n },\n rootNode: {\n transform: 'rotate(90deg)',\n userSelect: 'none',\n fontSize: '13px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {LightArrowTooltip} from '@reltio/components';\nimport CalendarTodayIcon from '@material-ui/icons/CalendarToday';\nimport PersonIcon from '@material-ui/icons/Person';\nimport {useStyles} from './styles';\n\ntype Props = {\n user: string;\n time: number;\n children: React.ReactElement;\n};\n\nexport const MergeTooltip = ({user, time, children}: Props) => {\n const styles = useStyles();\n const tooltipTitle = (\n <div>\n <span className={styles.tooltipTitle}>{i18n.text('Merge details')}</span>\n <div className={styles.tooltipRow}>\n <CalendarTodayIcon className={styles.tooltipIcon} />\n {i18n.date(time, 'L LTS')}\n </div>\n <div className={styles.tooltipRow}>\n <PersonIcon className={styles.tooltipIcon} />\n {user}\n </div>\n </div>\n );\n\n return (\n <LightArrowTooltip title={tooltipTitle} placement={'top'}>\n {children}\n </LightArrowTooltip>\n );\n};\n\nexport default MergeTooltip;\n","import React, {useEffect, useRef, useState} from 'react';\nimport MergeTooltip from './MergeTooltip';\nimport {SankeyNode} from '../../types/SankeyChartData';\nimport {useCrosswalkColor, useCrosswalkHighlight} from '@reltio/components';\nimport {groupBy, prop, pipe, map, head, last, max, min} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n nodeWidth: number;\n node: SankeyNode;\n highlightEnabled: boolean;\n isColored: boolean;\n};\n\nexport const Node = ({node, nodeWidth, highlightEnabled, isColored}: Props) => {\n const styles = useStyles();\n const [labelX, setLabelX] = useState(0);\n const textRef = useRef(null);\n const {\n x,\n y,\n name,\n label,\n targetLinks,\n sourceLinks,\n entity: {crosswalks = [], merges}\n } = node;\n const [firstCrosswalk] = crosswalks;\n const {isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(firstCrosswalk);\n const color = useCrosswalkColor(firstCrosswalk);\n const startNodeHeight = crosswalks?.length\n ? sourceLinks[crosswalks.length - 1].sy + sourceLinks[crosswalks.length - 1].dy\n : 0;\n\n const renderMergeNodes = () => {\n const timeMap = pipe(map(prop('source')), groupBy(prop('time')))(targetLinks);\n\n return merges?.map(({time, user}, index) => {\n const sources = timeMap[time];\n if (!sources) return;\n\n const [start, end] = sources.reduce(\n (acc, {sourceLinks}) => [\n min(head(sourceLinks).ty, acc[0]),\n max(last(sourceLinks).ty + last(sourceLinks).dy, acc[1])\n ],\n [Infinity, 0]\n );\n\n return (\n <MergeTooltip user={user} time={time} key={'node-' + index}>\n <rect\n transform={`translate(0,${start})`}\n height={end - start}\n width={nodeWidth}\n className={styles.node}\n fillOpacity={0.54}\n fill={'#F0F0F0'}\n opacity={highlightEnabled && isDimmed ? 0.38 : 1}\n />\n </MergeTooltip>\n );\n });\n };\n\n useEffect(() => {\n const nodeHeight = node.dy;\n const textWidth = textRef?.current?.clientWidth || 0;\n if (nodeHeight < textWidth) setLabelX(nodeHeight / 2 - textWidth / 2);\n }, []);\n\n return (\n <g transform={`translate(${x},${y})`}>\n {name === 'ROOT' ? (\n <text dy={-5} dx={labelX} ref={textRef} className={styles.rootNode}>\n {label || ''}\n </text>\n ) : (\n <>\n <rect\n height={startNodeHeight}\n width={14}\n className={styles.node}\n fill={isColored ? color : '#F0F0F0'}\n key={'node-main'}\n opacity={highlightEnabled && isDimmed ? 0.19 : 1}\n onMouseEnter={() => {\n if (highlightEnabled) highlightCrosswalk();\n }}\n onMouseLeave={() => {\n if (highlightEnabled) removeHighlight();\n }}\n />\n {!!targetLinks?.length && renderMergeNodes()}\n </>\n )}\n </g>\n );\n};\n\nexport default Node;\n","import React from 'react';\nimport {useCrosswalkColor, useCrosswalkHighlight} from '@reltio/components';\nimport {SankeyLink} from '../../types/SankeyChartData';\n\ntype Props = {\n link: SankeyLink;\n path: string;\n highlightEnabled: boolean;\n isColored: boolean;\n};\n\nexport const Link = ({link, path, highlightEnabled, isColored}: Props) => {\n const {crosswalk} = link;\n const color = useCrosswalkColor(crosswalk);\n const {isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(crosswalk);\n return (\n <path\n d={path}\n fill={isColored ? color : '#F0F0F0'}\n opacity={highlightEnabled && isDimmed ? 0.1 : 1}\n onMouseEnter={() => {\n if (highlightEnabled) highlightCrosswalk();\n }}\n onMouseLeave={() => {\n if (highlightEnabled) removeHighlight();\n }}\n />\n );\n};\n\nexport default Link;\n","import React, {useMemo, useState, useEffect} from 'react';\nimport useSankey from './useSankey';\nimport Node from './Node';\nimport Link from './Link';\nimport {SankeyData} from '../../types/SankeyChartData';\n\ntype Props = {\n width: number;\n height: number;\n data: SankeyData;\n accentContributors?: boolean;\n};\n\nconst SankeyChart = ({width, height, data, accentContributors}: Props) => {\n const [isDragging, setDragging] = useState(false);\n const [previousPageX, setPreviousPageX] = useState(0);\n const [offsetX, setOffsetX] = useState(0);\n const {links, nodes, nodeWidth, path} = useSankey({data, width, height});\n\n useEffect(() => {\n setOffsetX(0);\n setPreviousPageX(0);\n }, [width, height]);\n\n const sankeyNodes = useMemo(\n () =>\n nodes.map((node, index) => (\n <Node\n highlightEnabled={accentContributors}\n isColored={accentContributors}\n node={node}\n nodeWidth={nodeWidth}\n key={`SankeyNode-${index}`}\n />\n )),\n [nodes, accentContributors, nodeWidth, width, height]\n );\n\n const sankeyLinks = useMemo(\n () =>\n links.map((link, index) => (\n <Link\n highlightEnabled={!accentContributors}\n isColored={!accentContributors}\n link={link}\n path={path(link)}\n key={`SankeyLink-${index}`}\n />\n )),\n [accentContributors, links, path]\n );\n\n const extractPositionDelta = (event: React.PointerEvent) => {\n const left = event.pageX;\n const offsetX = left - previousPageX;\n setPreviousPageX(left);\n return offsetX;\n };\n\n const onDown = (event: React.PointerEvent) => {\n event.preventDefault();\n setDragging(true);\n extractPositionDelta(event);\n };\n const onMove = (event: React.PointerEvent) => {\n if (!isDragging) return;\n const left = extractPositionDelta(event);\n setOffsetX(offsetX + left);\n };\n const onUp = () => setDragging(false);\n\n const pointerEvents = isDragging ? 'none' : 'auto';\n const cursor = isDragging ? 'move' : 'default';\n\n return (\n <svg\n width={width}\n height={height}\n cursor={cursor}\n onPointerDown={onDown}\n onPointerMove={onMove}\n onPointerUp={onUp}\n onPointerLeave={onUp}\n >\n <g transform={`translate(${offsetX},${height - 1}) rotate(-90)`} pointerEvents={pointerEvents}>\n <g>{sankeyLinks}</g>\n <g>{sankeyNodes}</g>\n </g>\n </svg>\n );\n};\n\nexport default SankeyChart;\n","import {chain, concat, curry, evolve, filter, map, pipe, uniq} from 'ramda';\nimport {CrosswalkBase, CrosswalkTree, eqCrosswalks} from '@reltio/mdm-sdk';\nimport {SankeyLink, SankeyNode} from '../../types/SankeyChartData';\n\nconst isCrosswalkDisplayed = curry(\n (displayedCrosswalks: CrosswalkBase[], crosswalk: CrosswalkBase) =>\n !displayedCrosswalks || displayedCrosswalks.some(eqCrosswalks(crosswalk))\n);\n\nconst filterDisplayedCrosswalks = curry((displayedCrosswalks: CrosswalkBase[], tree: CrosswalkTree) => {\n return evolve(\n {\n crosswalks: filter(isCrosswalkDisplayed(displayedCrosswalks)),\n merges: map(\n evolve({\n losers: map(filterDisplayedCrosswalks(displayedCrosswalks))\n })\n )\n },\n tree\n );\n});\n\nconst addCrosswalkUniqueId = (tree: CrosswalkTree) => {\n let count = 1;\n const addIdToSubtree = pipe(\n evolve({crosswalks: map((crosswalk) => ({...crosswalk, uuid: count++}))}),\n evolve({\n merges: map(\n evolve({\n losers: map((loser) => addIdToSubtree(loser))\n })\n )\n })\n );\n return addIdToSubtree(tree);\n};\n\nconst processTree = (tree: CrosswalkTree & {label?: string}) => {\n const nodes: SankeyNode[] = [];\n const links: SankeyLink[] = [];\n\n const processSubTree = (tree, parentIndex, time) => {\n const {crosswalks = [], merges = [], uri = '', label} = tree;\n\n nodes.push({entity: tree, name: uri, time, label});\n const index = nodes.length - 1;\n\n const mergesCrosswalks = pipe(\n chain(({losers, time}) => {\n return pipe(\n filter((loser) => loser.crosswalks?.length || loser.merges?.length),\n chain((loser) => processSubTree(loser, index, time))\n )(losers);\n }),\n concat(crosswalks)\n )(merges);\n\n if (parentIndex != -1)\n mergesCrosswalks.forEach((crosswalk) =>\n links.push({\n source: nodes[index],\n target: nodes[parentIndex],\n value: 10,\n crosswalk\n })\n );\n\n return mergesCrosswalks;\n };\n processSubTree(tree, -1, Date.now());\n\n const linkedNodes = pipe(\n chain(({source, target}) => [source, target]),\n uniq\n )(links);\n\n return {nodes: nodes.filter((node) => linkedNodes.includes(node)), links};\n};\n\nexport const getSankeyData = (\n crosswalkTree: CrosswalkTree,\n entityLabel = '',\n displayedCrosswalks?: CrosswalkBase[]\n) => {\n return pipe(\n filterDisplayedCrosswalks(displayedCrosswalks),\n addCrosswalkUniqueId,\n processTree\n )({uri: 'ROOT', label: entityLabel, crosswalks: [], merges: [{time: Date.now(), losers: [crosswalkTree]}]});\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n graph: {\n padding: '8px 0px',\n boxSizing: 'border-box',\n height: '100%',\n width: '100%'\n }\n}));\n","import React, {memo} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport SankeyChart from '../SankeyChart/SankeyChart';\nimport {getSankeyData} from './helpers';\nimport {CrosswalkBase, CrosswalkTree} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalkTree: CrosswalkTree;\n entityLabel?: string;\n visibleCrosswalks?: CrosswalkBase[];\n accentContributors?: boolean;\n};\n\nconst CrosswalkTreeView = ({crosswalkTree, entityLabel, visibleCrosswalks, accentContributors}: Props) => {\n const styles = useStyles();\n const sankeyData = getSankeyData(crosswalkTree, entityLabel, visibleCrosswalks);\n\n return (\n <div className={styles.graph}>\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleWidth handleHeight>\n {({width = 0, height = 200}: {width: number; height: number}) => (\n <SankeyChart\n width={width}\n height={height}\n data={sankeyData}\n accentContributors={accentContributors}\n />\n )}\n </ReactResizeDetector>\n </div>\n );\n};\n\nexport default memo(CrosswalkTreeView);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M17 13.138l4.5 4.5-4.5 4.5V18.5h-1.247l-3.488-3.479 1.413-1.414 2.901 2.893H17v-3.362zM17 1.5L21.5 6 17 10.5V7.138h-.421l-11.03 11H2v-2h2.723l11.03-11H17V1.5zm-11.45 4l3.294 3.286-1.414 1.413L4.723 7.5H2v-2h3.55z\",\n id: \"svg1833706754a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg1833706754b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1833706754a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg1833706754b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n isFocused?: boolean;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n paddingRight: '8px',\n '& button + button': {\n marginLeft: '4px'\n }\n },\n focusedIcon: ({isFocused}: StylesProps) => ({\n width: 28,\n height: 28,\n color: isFocused ? '#000' : 'rgba(0, 0, 0, 0.54)',\n borderRadius: 0\n }),\n title: {\n color: theme.palette.text.secondary,\n paddingLeft: '6px',\n paddingRight: '2px'\n },\n uri: {\n lineHeight: '15px',\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport {SmallIconButtonWithTooltip, Spacer} from '@reltio/components';\nimport {getLastUriPart} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype ContributorAction = React.ComponentPropsWithRef<typeof SmallIconButtonWithTooltip> & {\n show: boolean;\n};\n\ntype Props = {\n contributorUri: string;\n isFocused: boolean;\n focusable: boolean;\n onToggleFocus: () => void;\n contributorActions: ContributorAction[];\n};\n\nconst ContributorRow = ({contributorUri, focusable, contributorActions, onToggleFocus, isFocused}: Props) => {\n const styles = useStyles({isFocused});\n return (\n <div className={styles.root}>\n <SmallIconButtonWithTooltip\n size=\"XXS\"\n onClick={() => onToggleFocus()}\n className={styles.focusedIcon}\n icon={focusable && VisibilityIcon}\n disabled={!focusable}\n tooltipTitle={focusable && i18n.text('Focus')}\n />\n <Typography variant={'body2'} className={styles.uri}>\n <span className={styles.title}>{i18n.text('Entity ID:')}</span>\n {getLastUriPart(contributorUri)}\n </Typography>\n <Spacer />\n {contributorActions.map(({show, ...buttonProps}, i) => {\n return show && <SmallIconButtonWithTooltip key={i} size=\"XS\" showForDisabled {...buttonProps} />;\n })}\n </div>\n );\n};\n\nexport default ContributorRow;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n contributorColor: string;\n};\n\nexport const useStyles = makeStyles(() => ({\n root: ({contributorColor}: StylesProps) => ({\n fontSize: '13px',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n border: '1px solid rgba(0, 0, 0, 0.05)',\n paddingLeft: '8px',\n '&:before': {\n content: '\" \"',\n borderLeft: `8px solid ${contributorColor}`,\n position: 'absolute',\n top: -1,\n left: 0,\n bottom: -1\n },\n '& > div + div': {\n marginTop: '1px'\n }\n }),\n editor: {\n padding: '0px 30px 0px 25px'\n }\n}));\n","import React, {useEffect, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {\n CrosswalkEditor,\n SourceCrosswalksRow,\n CrosswalksByTypes,\n CrosswalkType,\n useCrosswalkFocus,\n useHighlightedCrosswalks\n} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {\n Crosswalk,\n DataTenant,\n eqCrosswalks,\n getContributorColor,\n getDataTenantFromCrosswalks,\n RelationCrosswalk\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {chain, find, flatten, head, pipe, pluck, propOr, props, values} from 'ramda';\nimport AddIcon from '@material-ui/icons/Add';\nimport UnmergeIcon from './icons/notMatch.svg';\nimport UnsubscribeIcon from '@material-ui/icons/Delete';\nimport ContributorRow from './ContributorRow/ContributorRow';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n contributorUri: string;\n accentContributor?: boolean;\n crosswalksBySources: {\n source: string;\n crosswalksByTypes: CrosswalksByTypes;\n }[];\n canUnmerge: boolean;\n disableAddCrosswalk: boolean;\n disableEditCrosswalk: boolean;\n disableDeleteCrosswalk: boolean;\n disableUnmergeContributor: boolean;\n onAdd: (event: {contributorCrosswalk: Crosswalk; crosswalk: Omit<Crosswalk, 'uri'>}) => void;\n onDelete: (crosswalkId: string) => void;\n onEdit: (event: {crosswalkId: string; attributeName: string; value?: string}) => void;\n onUnmerge: () => void;\n expandedSources?: string[];\n onToggleSourceExpanded: (sourceUri: string) => void;\n onUnsubscribeContributor: (event: {contributorUri: string; dataTenant: DataTenant; crosswalk: Crosswalk}) => void;\n};\n\nconst LegendTableRow = ({\n className,\n contributorUri,\n accentContributor,\n crosswalksBySources,\n expandedSources,\n canUnmerge,\n disableAddCrosswalk,\n disableEditCrosswalk,\n disableDeleteCrosswalk,\n disableUnmergeContributor,\n onUnmerge,\n onEdit,\n onDelete,\n onAdd,\n onToggleSourceExpanded,\n onUnsubscribeContributor\n}: Props) => {\n const contributorColor = accentContributor ? getContributorColor(contributorUri) : 'rgba(0, 0, 0, 0.38)';\n const styles = useStyles({contributorColor});\n const dataTenants = useSelector(mdm.selectors.getDataTenants);\n\n const ref = useRef(null);\n const [scrollToCrosswalk] = useHighlightedCrosswalks();\n useEffect(() => {\n if (accentContributor && scrollToCrosswalk) {\n const crosswalks = pipe(\n find(({source}) => source === scrollToCrosswalk.type),\n propOr({}, 'crosswalksByTypes'),\n values,\n flatten\n )(crosswalksBySources);\n if (\n crosswalks.some(\n (crosswalk) => eqCrosswalks(scrollToCrosswalk, crosswalk) && crosswalk !== scrollToCrosswalk\n )\n ) {\n ref?.current?.scrollIntoView({behavior: 'smooth'});\n }\n }\n }, [scrollToCrosswalk]);\n\n const [showEditor, setShowEditor] = useState(false);\n\n const contributorCrosswalk: Crosswalk = pipe(\n pluck('crosswalksByTypes'),\n find((crosswalks) => crosswalks[CrosswalkType.Simple].length || crosswalks[CrosswalkType.Empty].length),\n props([CrosswalkType.Simple, CrosswalkType.Empty]),\n flatten,\n head\n )(crosswalksBySources);\n const {toggleCrosswalkFocus, isFocused} = useCrosswalkFocus(contributorCrosswalk);\n\n const allContributorCrosswalks: (Crosswalk | RelationCrosswalk)[] = pipe(\n pluck('crosswalksByTypes'),\n chain(values),\n flatten\n )(crosswalksBySources);\n\n const dataTenantForExternalCrosswalk = getDataTenantFromCrosswalks(allContributorCrosswalks, dataTenants);\n\n const unsubscribeContributor = () =>\n onUnsubscribeContributor({\n contributorUri,\n dataTenant: dataTenantForExternalCrosswalk,\n crosswalk: contributorCrosswalk\n });\n\n const contributorActions = [\n {\n icon: AddIcon,\n tooltipTitle: i18n.text('Add crosswalk'),\n onClick: () => setShowEditor(true),\n disabled: disableAddCrosswalk,\n show: !!contributorCrosswalk\n },\n {\n icon: UnmergeIcon,\n tooltipTitle: i18n.text('Unmerge'),\n onClick: () => onUnmerge(),\n disabled: disableUnmergeContributor,\n show: canUnmerge\n },\n {\n icon: UnsubscribeIcon,\n tooltipTitle: i18n.text('Unsubscribe'),\n onClick: () => unsubscribeContributor(),\n disabled: disableUnmergeContributor,\n show: canUnmerge && !!dataTenantForExternalCrosswalk\n }\n ];\n\n return (\n <div ref={ref} className={classnames(styles.root, className)}>\n <ContributorRow\n contributorUri={contributorUri}\n focusable={accentContributor && !!contributorCrosswalk}\n isFocused={accentContributor && isFocused}\n onToggleFocus={toggleCrosswalkFocus}\n contributorActions={contributorActions}\n />\n {crosswalksBySources.map(({source, crosswalksByTypes}) => (\n <SourceCrosswalksRow\n key={source}\n source={source}\n crosswalksByTypes={crosswalksByTypes}\n showCrosswalkColors={!accentContributor}\n crosswalksFocusEnabled={!accentContributor}\n expanded={expandedSources?.includes(source)}\n disableEditCrosswalk={disableEditCrosswalk}\n disableDeleteCrosswalk={disableDeleteCrosswalk}\n onEdit={onEdit}\n onDelete={onDelete}\n onToggleExpanded={() => onToggleSourceExpanded(source)}\n />\n ))}\n {showEditor && (\n <CrosswalkEditor\n className={styles.editor}\n onAdd={(crosswalk) => onAdd({contributorCrosswalk, crosswalk})}\n onClose={() => setShowEditor(false)}\n />\n )}\n </div>\n );\n};\n\nexport default LegendTableRow;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n table: {\n overflowY: 'auto',\n overflowX: 'hidden',\n paddingLeft: '16px',\n paddingRight: '6px'\n },\n tableRow: {\n '& + &': {\n marginTop: '10px'\n },\n margin: 'auto',\n maxWidth: '448px'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n AttributeType,\n checkCanCreateCrosswalk,\n checkCanDeleteCrosswalk,\n checkCanEditCrosswalk,\n checkMetadataPermission,\n Contributor,\n CrosswalkBase,\n Entity,\n getEntityType,\n Metadata,\n MetadataPermissions,\n TEntityType\n} from '@reltio/mdm-sdk';\nimport {AddCrosswalkEvent, DeleteCrosswalkEvent, EditCrosswalkEvent, noop} from '@reltio/components';\nimport {buildTableRowsData, collectVisibleCrosswalks} from './helpers';\nimport LegendTableRow from './LegendTableRow/LegendTableRow';\nimport {append, assoc, evolve, has, ifElse, includes, pipe, unless, without} from 'ramda';\nimport {UnsubscribeContributorEvent} from '../../types';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n contributors: Contributor[];\n accentContributors?: boolean;\n selectedAttributeTypes?: AttributeType[];\n onChangeVisibleCrosswalks: (visibleCrosswalks: CrosswalkBase[]) => void;\n readOnly?: boolean;\n canUnmerge: boolean;\n onAddCrosswalk?: (event: AddCrosswalkEvent) => void;\n onEditCrosswalk?: (event: EditCrosswalkEvent) => void;\n onDeleteCrosswalk?: (event: DeleteCrosswalkEvent) => void;\n onUnmergeContributor?: (contributorUri: string) => void;\n onUnsubscribeContributor?: (event: UnsubscribeContributorEvent & {contributorUri: string}) => void;\n};\n\nconst LegendTable = ({\n accentContributors,\n entity,\n contributors,\n selectedAttributeTypes,\n onChangeVisibleCrosswalks,\n readOnly,\n canUnmerge,\n onAddCrosswalk = noop,\n onEditCrosswalk = noop,\n onDeleteCrosswalk = noop,\n onUnmergeContributor = noop,\n onUnsubscribeContributor = noop\n}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityType: TEntityType = getEntityType(metadata, entity.type);\n\n const styles = useStyles();\n\n const rowsData = useMemo(() => buildTableRowsData(entity, contributors, selectedAttributeTypes), [\n entity,\n contributors,\n selectedAttributeTypes\n ]);\n const [expandedByContributor, setExpandedByContributor] = useState<{[contributorUri: string]: string[]}>({});\n const visibleCrosswalks = useMemo(() => collectVisibleCrosswalks(rowsData, expandedByContributor), [\n rowsData,\n expandedByContributor\n ]);\n useEffect(() => {\n onChangeVisibleCrosswalks(visibleCrosswalks);\n }, [visibleCrosswalks]);\n\n const handleDelete = useCallback(\n (crosswalkId: string) => {\n onDeleteCrosswalk({entityUri: entity?.uri, crosswalkId});\n },\n [entity?.uri, onDeleteCrosswalk]\n );\n\n const handleEdit = useCallback(\n (params: Omit<EditCrosswalkEvent, 'entityUri'>) => {\n onEditCrosswalk({...params, entityUri: entity?.uri});\n },\n [entity?.uri, onEditCrosswalk]\n );\n\n return (\n <div className={styles.table}>\n {rowsData.map(({contributorUri, crosswalksBySources}) => {\n return (\n <LegendTableRow\n key={contributorUri}\n className={styles.tableRow}\n canUnmerge={canUnmerge}\n contributorUri={contributorUri}\n accentContributor={accentContributors}\n crosswalksBySources={crosswalksBySources}\n disableAddCrosswalk={readOnly || !checkCanCreateCrosswalk(entityType)}\n disableEditCrosswalk={readOnly || !checkCanEditCrosswalk(entityType)}\n disableDeleteCrosswalk={readOnly || !checkCanDeleteCrosswalk(entityType)}\n disableUnmergeContributor={\n readOnly || !checkMetadataPermission(MetadataPermissions.UNMERGE, entityType)\n }\n onAdd={(params) => onAddCrosswalk({...params, entity})}\n onDelete={handleDelete}\n onEdit={handleEdit}\n onUnmerge={() => onUnmergeContributor(contributorUri)}\n onUnsubscribeContributor={onUnsubscribeContributor}\n expandedSources={expandedByContributor[contributorUri]}\n onToggleSourceExpanded={(sourceUri: string) => {\n setExpandedByContributor(\n pipe(\n unless(has(contributorUri), assoc(contributorUri, [])),\n evolve({\n [contributorUri]: ifElse(\n includes(sourceUri),\n without([sourceUri]),\n append(sourceUri)\n )\n })\n )\n );\n }}\n />\n );\n })}\n </div>\n );\n};\n\nexport default memo(LegendTable);\n","import {\n AttributeType,\n Contributor,\n Crosswalk,\n Entity,\n eqCrosswalks,\n getRelationCrosswalks,\n isEmptyValue,\n RelationCrosswalk\n} from '@reltio/mdm-sdk';\nimport {chain, filter, map, pipe} from 'ramda';\nimport {CrosswalksByTypes, CrosswalkType, groupCrosswalksByTypesAndSources} from '@reltio/components';\n\ntype TableRow = {\n contributorUri: string;\n crosswalksBySources: {\n source: string;\n crosswalksByTypes: CrosswalksByTypes;\n }[];\n};\n\nexport const buildTableRowsData = (\n entity: Entity,\n contributors: Contributor[],\n selectedAttributeTypes: AttributeType[] = []\n): TableRow[] => {\n const entityCrosswalks: Crosswalk[] = entity.crosswalks;\n const relationCrosswalks: RelationCrosswalk[] = getRelationCrosswalks(entity);\n return contributors\n .filter((contributor) => !isEmptyValue(contributor.crosswalks))\n .map(({uri, crosswalks}) => {\n const crosswalksBySources = pipe(\n map((crosswalk) => {\n if (crosswalk.ownerType === 'relation') {\n const relationCrosswalk = relationCrosswalks.find(eqCrosswalks(crosswalk));\n return relationCrosswalk && {ownerType: 'relation', ...relationCrosswalk};\n } else {\n const entityCrosswalk = entityCrosswalks.find(eqCrosswalks(crosswalk));\n return entityCrosswalk && {ownerType: 'entity', ...entityCrosswalk};\n }\n }),\n filter((crosswalk) => !!crosswalk),\n groupCrosswalksByTypesAndSources(entity.type, selectedAttributeTypes)\n )(crosswalks);\n\n return {contributorUri: uri, crosswalksBySources};\n })\n .filter(({crosswalksBySources}) => crosswalksBySources.length > 0);\n};\n\nexport const collectVisibleCrosswalks = (\n rowsData: TableRow[],\n expandedByContributor: {[contributorUri: string]: string[]}\n) => {\n return rowsData.reduce((acc, {contributorUri, crosswalksBySources}) => {\n const visibleCrosswalks = chain(({source, crosswalksByTypes}) => {\n const isExpandedSource = expandedByContributor[contributorUri]?.includes(source);\n return crosswalksByTypes[CrosswalkType.Simple]\n .concat(crosswalksByTypes[CrosswalkType.Empty])\n .concat(isExpandedSource ? crosswalksByTypes[CrosswalkType.Dependent] : []);\n }, crosswalksBySources);\n return acc.concat(visibleCrosswalks);\n }, []);\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n '& + &': {\n marginLeft: '16px'\n }\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n color: '#666666',\n marginBottom: '7px'\n },\n hintIcon: {\n width: '16px',\n height: '16px',\n verticalAlign: 'middle'\n },\n graph: {\n width: '400px',\n height: '300px',\n borderRadius: '8px',\n background: 'rgba(0, 0, 0, 0.03)',\n border: '1px solid rgba(0, 0, 0, 0.03)',\n position: 'relative'\n },\n checkedIcon: {\n position: 'absolute',\n height: '20px',\n width: '20px',\n right: '10px',\n top: '10px',\n color: theme.palette.primary.main\n },\n selectedTree: {\n border: `1px solid ${theme.palette.primary.main}`,\n background: 'rgba(0, 114, 206, 0.05)'\n }\n}));\n","import React, {useCallback} from 'react';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport InfoIcon from '@material-ui/icons/Info';\nimport {CrosswalksDisplayProvider, noop} from '@reltio/components';\nimport {\n CrosswalkBase,\n CrosswalkTree,\n getCrosswalkColor as getUniqueCrosswalkColor,\n getCrosswalkId\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport CrosswalkTreeView from '../CrosswalkTreeView/CrosswalkTreeView';\nimport {useStyles} from './styles';\n\ntype Props = {\n coloredCrosswalks: string[];\n crosswalkTree: CrosswalkTree;\n selected: boolean;\n title: string;\n onSelect?: () => void;\n};\n\nexport const SelectableTree = ({coloredCrosswalks, crosswalkTree, selected, title, onSelect = noop}: Props) => {\n const styles = useStyles();\n const getCrosswalkColor = useCallback(\n (crosswalk: CrosswalkBase) => {\n return coloredCrosswalks.includes(crosswalk.uri)\n ? getUniqueCrosswalkColor(getCrosswalkId(crosswalk))\n : '#CACCD1';\n },\n [coloredCrosswalks]\n );\n return (\n <CrosswalksDisplayProvider getCrosswalkColor={getCrosswalkColor}>\n <div className={styles.container} onClick={onSelect}>\n <span className={styles.title}>\n {title} <InfoIcon className={styles.hintIcon} />\n </span>\n <div className={classnames(styles.graph, {[`${styles.selectedTree}`]: selected})}>\n {selected && <CheckCircleIcon className={styles.checkedIcon} />}\n <CrosswalkTreeView crosswalkTree={crosswalkTree} />\n </div>\n </div>\n </CrosswalksDisplayProvider>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n dialogContainer: {\n maxWidth: 'unset'\n },\n dialogTitle: {\n padding: '13px 16px 0 16px',\n fontWeight: 500,\n fontSize: '20px',\n lineHeight: '23px',\n letterSpacing: '0.25px'\n },\n dialogContent: {\n display: 'flex',\n flexDirection: 'column',\n padding: '13px 16px 0 16px'\n },\n trees: {\n display: 'flex'\n },\n uri: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.primary,\n marginBottom: '15px'\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.secondary,\n paddingRight: '2px'\n }\n}));\n","import React, {useCallback, 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 {DialogTitle as DialogTitle} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SelectableTree} from '../SelectableTree/SelectableTree';\nimport {\n collectCrosswalksFromContributor,\n Contributor,\n CrosswalkTree,\n getLastUriPart,\n UnmergeOperation\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n contributor: Contributor;\n crosswalkTree: CrosswalkTree;\n canUnmerge?: boolean;\n onClose: () => void;\n onUnmergeContributor: (operationType: UnmergeOperation) => void;\n};\n\nexport const UnmergeDialog = ({canUnmerge, contributor, crosswalkTree, onClose, onUnmergeContributor}: Props) => {\n const styles = useStyles();\n\n const [unmergeOperation, setUnmergeOperation] = useState(UnmergeOperation.Unmerge);\n\n const getColoredCrosswalks = useCallback(\n (includeMerges: boolean) => collectCrosswalksFromContributor(contributor, includeMerges).map(({uri}) => uri),\n [contributor]\n );\n\n const unmergeContributor = () => {\n onUnmergeContributor(unmergeOperation);\n onClose();\n };\n\n return (\n <Dialog open={true} onClose={onClose} classes={{paper: styles.dialogContainer}}>\n <DialogTitle classes={{root: styles.dialogTitle}}>{i18n.text('Unmerge')}</DialogTitle>\n <DialogContent classes={{root: styles.dialogContent}}>\n <Typography variant={'body2'} className={styles.uri}>\n <span className={styles.title}>{i18n.text('Entity URI:')}</span>\n {getLastUriPart(contributor.uri).toUpperCase()}\n </Typography>\n <div className={styles.trees}>\n <SelectableTree\n onSelect={() => setUnmergeOperation(UnmergeOperation.Unmerge)}\n selected={unmergeOperation === UnmergeOperation.Unmerge}\n title={i18n.text('Unmerge')}\n crosswalkTree={crosswalkTree}\n coloredCrosswalks={getColoredCrosswalks(true)}\n />\n {contributor.merges && contributor.uri !== crosswalkTree.uri && (\n <SelectableTree\n onSelect={() => setUnmergeOperation(UnmergeOperation.TreeUnmerge)}\n selected={unmergeOperation === UnmergeOperation.TreeUnmerge}\n title={i18n.text('Tree unmerge')}\n crosswalkTree={crosswalkTree}\n coloredCrosswalks={getColoredCrosswalks(false)}\n />\n )}\n </div>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}>{i18n.text('Cancel')}</Button>\n <Button disabled={!canUnmerge} onClick={unmergeContributor} color=\"primary\">\n {i18n.text('Unmerge')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n dialogContainer: {\n maxWidth: 'unset'\n },\n dialogTitle: {\n padding: '13px 16px 0 16px',\n fontWeight: 500,\n fontSize: '20px',\n lineHeight: '23px',\n letterSpacing: '0.25px'\n },\n dialogContent: {\n display: 'flex',\n flexDirection: 'column',\n padding: '13px 16px 0 16px'\n },\n uri: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.primary,\n marginBottom: '15px'\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.secondary,\n paddingRight: '2px'\n }\n}));\n","import React, {useMemo} 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 {DialogTitle as DialogTitle} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SelectableTree} from '../SelectableTree/SelectableTree';\nimport {collectCrosswalksFromContributor, Contributor, CrosswalkTree, getLastUriPart} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n contributor: Contributor;\n crosswalkTree: CrosswalkTree;\n canUnsubscribe?: boolean;\n onClose: () => void;\n onUnsubscribeContributor: () => void;\n};\n\nexport const UnsubscribeDialog = ({\n canUnsubscribe,\n contributor,\n crosswalkTree,\n onClose,\n onUnsubscribeContributor\n}: Props) => {\n const styles = useStyles();\n\n const coloredCrosswalks = useMemo(() => collectCrosswalksFromContributor(contributor, true).map(({uri}) => uri), [\n contributor\n ]);\n\n const unsubscribeContributor = () => {\n onUnsubscribeContributor();\n onClose();\n };\n\n return (\n <Dialog open={true} onClose={onClose} classes={{paper: styles.dialogContainer}}>\n <DialogTitle classes={{root: styles.dialogTitle}}>{i18n.text('Unsubscribe')}</DialogTitle>\n <DialogContent classes={{root: styles.dialogContent}}>\n <Typography variant={'body2'} className={styles.uri}>\n <span className={styles.title}>{i18n.text('Entity URI:')}</span>\n {getLastUriPart(contributor.uri).toUpperCase()}\n </Typography>\n <SelectableTree\n selected\n title={i18n.text('Unsubscribe')}\n crosswalkTree={crosswalkTree}\n coloredCrosswalks={coloredCrosswalks}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}>{i18n.text('Cancel')}</Button>\n <Button disabled={!canUnsubscribe} onClick={unsubscribeContributor} color=\"primary\">\n {i18n.text('Unsubscribe')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n height: '100%'\n },\n modeSwitcher: {\n backgroundColor: theme.palette.background.paper,\n marginTop: '8px'\n },\n infoIcon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n hint: {\n color: theme.palette.text.secondary,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n alignSelf: 'flex-start',\n margin: '5px 12px 10px 12px'\n },\n hintText: {\n fontSize: '12px',\n lineHeight: '16px'\n },\n crosswalksList: {\n height: '100%',\n width: 'calc(100% - 24px)',\n margin: '8px 12px',\n background: theme.palette.divider,\n opacity: 0.2\n },\n pane: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n resizablePanesWrapper: {\n flexGrow: 1,\n width: '100%'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport InfoIcon from '@material-ui/icons/Info';\nimport i18n from 'ui-i18n';\nimport {isEmpty} from 'ramda';\nimport {\n AttributeType,\n calculateCrosswalkTreeDeep,\n Contributor,\n Crosswalk,\n CrosswalkBase,\n CrosswalkTree,\n DataTenant,\n Entity,\n getLabel,\n UnmergeOperation\n} from '@reltio/mdm-sdk';\nimport {\n AddCrosswalkEvent,\n DeleteCrosswalkEvent,\n EditCrosswalkEvent,\n ModeSwitcher,\n noop,\n ResizablePanes\n} from '@reltio/components';\nimport {LegendMode, UnmergeContributorEvent, UnsubscribeContributorEvent} from '../../types';\nimport CrosswalkTreeView from '../CrosswalkTreeView/CrosswalkTreeView';\nimport LegendTable from '../LegendTable/LegendTable';\nimport {UnmergeDialog} from '../UnmergeDialog/UnmergeDialog';\nimport {UnsubscribeDialog} from '../UnsubscribeDialog/UnsubscribeDialog';\n\nimport {useStyles} from './styles';\n\nexport const DEFAULT_LINK_HEIGHT = 60;\nexport const MIN_PANE1_SIZE = 170;\nexport const MIN_PANE2_SIZE = 170;\n\ntype Props = {\n activeMode: LegendMode;\n onChangeMode: (mode: LegendMode) => void;\n crosswalkTree: CrosswalkTree;\n entity: Entity;\n contributors: Contributor[];\n selectedAttributeTypes?: AttributeType[];\n readOnly?: boolean;\n onAddCrosswalk?: (event: AddCrosswalkEvent) => void;\n onEditCrosswalk?: (event: EditCrosswalkEvent) => void;\n onDeleteCrosswalk?: (event: DeleteCrosswalkEvent) => void;\n onUnmergeContributor?: (event: UnmergeContributorEvent) => void;\n onUnsubscribeContributor?: (event: UnsubscribeContributorEvent) => void;\n};\n\nconst LegendView = ({\n activeMode,\n contributors,\n crosswalkTree,\n entity,\n onChangeMode,\n onUnmergeContributor = noop,\n onUnsubscribeContributor = noop,\n ...tableProps\n}: Props) => {\n const styles = useStyles();\n const viewRef = useRef<HTMLDivElement>();\n const [paneSize, setPaneSize] = useState(MIN_PANE1_SIZE);\n const handlePaneSizeChange = useCallback(({percentageSize}) => setPaneSize(percentageSize), []);\n\n const [contributorForUnmerge, setContributorForUnmerge] = useState<string>();\n const [unsubscribeInfo, setUnsubscribeInfo] = useState<{\n contributorUri: string;\n dataTenant: DataTenant;\n crosswalk: Crosswalk;\n }>();\n\n const crosswalkTreeDeep = useMemo(() => calculateCrosswalkTreeDeep(crosswalkTree), [crosswalkTree]);\n const canUnmerge = crosswalkTreeDeep > 1;\n\n useEffect(() => {\n const height = Math.max(MIN_PANE1_SIZE, crosswalkTreeDeep * DEFAULT_LINK_HEIGHT);\n const maxPaneHeight = viewRef.current?.clientHeight - MIN_PANE2_SIZE;\n setPaneSize(Math.min(maxPaneHeight, height));\n }, [crosswalkTreeDeep]);\n\n const modes = useMemo(\n () => [\n {\n id: LegendMode.Crosswalk,\n title: i18n.text('Crosswalk')\n },\n {\n id: LegendMode.Source,\n title: i18n.text('Source')\n },\n {\n id: LegendMode.Contributor,\n title: i18n.text('Contributor')\n }\n ],\n []\n );\n\n const [visibleCrosswalks, setVisibleCrosswalks] = useState<CrosswalkBase[]>();\n const accentContributors = activeMode === LegendMode.Contributor;\n\n return (\n <div className={styles.root} ref={viewRef}>\n {contributorForUnmerge && (\n <UnmergeDialog\n canUnmerge={canUnmerge}\n onClose={() => setContributorForUnmerge(null)}\n onUnmergeContributor={(operationType: UnmergeOperation) => {\n onUnmergeContributor({\n entityUri: entity.uri,\n contributorUri: contributorForUnmerge,\n operationType\n });\n }}\n crosswalkTree={crosswalkTree}\n contributor={contributors.find(({uri}) => uri === contributorForUnmerge)}\n />\n )}\n {unsubscribeInfo && (\n <UnsubscribeDialog\n canUnsubscribe={canUnmerge}\n onClose={() => setUnsubscribeInfo(null)}\n onUnsubscribeContributor={() =>\n onUnsubscribeContributor({\n dataTenant: unsubscribeInfo.dataTenant,\n crosswalk: unsubscribeInfo.crosswalk\n })\n }\n crosswalkTree={crosswalkTree}\n contributor={contributors.find(({uri}) => uri === unsubscribeInfo.contributorUri)}\n />\n )}\n <ModeSwitcher<LegendMode>\n modes={modes}\n modeId={activeMode}\n className={styles.modeSwitcher}\n onChange={onChangeMode}\n />\n <ResizablePanes\n className={styles.resizablePanesWrapper}\n orientation=\"horizontal\"\n size={paneSize}\n minSize={MIN_PANE1_SIZE}\n maxSize={-MIN_PANE2_SIZE}\n allowResize\n onChange={handlePaneSizeChange}\n >\n <div className={styles.pane}>\n {crosswalkTree && !isEmpty(visibleCrosswalks) && (\n <CrosswalkTreeView\n entityLabel={getLabel(entity?.label)}\n crosswalkTree={crosswalkTree}\n visibleCrosswalks={visibleCrosswalks}\n accentContributors={accentContributors}\n />\n )}\n </div>\n <div className={styles.pane}>\n <div className={styles.hint}>\n <InfoIcon className={styles.infoIcon} />\n <span className={styles.hintText}>\n {i18n.text('You can drag a crosswalk to add values to attributes swimlanes')}\n </span>\n </div>\n {entity && (\n <LegendTable\n onUnmergeContributor={setContributorForUnmerge}\n onUnsubscribeContributor={setUnsubscribeInfo}\n accentContributors={accentContributors}\n contributors={contributors}\n entity={entity}\n onChangeVisibleCrosswalks={setVisibleCrosswalks}\n canUnmerge={canUnmerge}\n {...tableProps}\n />\n )}\n </div>\n </ResizablePanes>\n </div>\n );\n};\n\nexport default memo(LegendView);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg4041339336a\",\n masktype: \"alpha\",\n maskUnits: \"userSpaceOnUse\",\n x: \"2\",\n y: \"3\",\n width: \"19\",\n height: \"17\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.5 5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S4.83 6.5 4 6.5 2.5 5.83 2.5 5zM21 20H8v-2h13v2zM8 10h13V8H8v2zm0-4V4h13v2H8zm0 10h13v-2H8v2zm-2.5.5v-3h-3v3h3z\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg4041339336a)\"\n}, React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n d: \"M0 0h24v24H0z\"\n}))));","import {ErrorPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {getRequestErrorMessage} from '@reltio/mdm-sdk';\n\nexport const showErrorMessage = (error: unknown) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: getRequestErrorMessage(error, i18n.text('Something went wrong'))\n });\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"90\",\n height: \"90\",\n viewBox: \"0 0 90 90\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"45\",\n cy: \"45\",\n r: \"45\",\n fill: \"#0072CE\",\n fillOpacity: \".1\"\n}), React.createElement(\"mask\", {\n id: \"svg985456408a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"90\",\n height: \"90\"\n}, React.createElement(\"circle\", {\n cx: \"45\",\n cy: \"45\",\n r: \"45\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg985456408a)\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M-5.625 3.164h90V90h-90V3.164z\",\n fill: \"url(#paint0_linear)\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M66.01 19.992l20.615 20.615v52.337H32.83L18.281 79.131V19.99H66.01z\",\n fill: \"url(#paint1_linear)\"\n}), React.createElement(\"path\", {\n opacity: \".06\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.523 20.39H87.54A2.46 2.46 0 0190 22.853v55.195a2.46 2.46 0 01-2.46 2.46H16.522a2.46 2.46 0 01-2.46-2.46V22.852a2.46 2.46 0 012.46-2.461z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.578 19.688h70.664c.971 0 1.758.787 1.758 1.757v55.196c0 .97-.787 1.757-1.758 1.757H17.578c-.97 0-1.758-.787-1.758-1.757V21.445c0-.97.787-1.758 1.758-1.758z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.046 25.536c0-.583.472-1.055 1.055-1.055h14.633a1.055 1.055 0 110 2.11H38.101a1.055 1.055 0 01-1.055-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.914 29.754c0-.582.472-1.054 1.055-1.054H60.54a1.055 1.055 0 110 2.11H37.969a1.055 1.055 0 01-1.055-1.056z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.046 57.305c0-.583.472-1.055 1.055-1.055h14.633a1.055 1.055 0 110 2.11H38.101a1.055 1.055 0 01-1.055-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.914 61.523c0-.582.472-1.054 1.055-1.054H60.54a1.055 1.055 0 110 2.11H37.969a1.055 1.055 0 01-1.055-1.056z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.046 67.852c0-.583.472-1.055 1.055-1.055h28.696a1.055 1.055 0 110 2.11H38.1a1.055 1.055 0 01-1.055-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.914 72.07c0-.582.472-1.054 1.055-1.054h26.087a1.055 1.055 0 110 2.109H37.97a1.055 1.055 0 01-1.055-1.055z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.648 36.21c0-.582.472-1.054 1.054-1.054h28.696a1.055 1.055 0 110 2.11H49.702a1.055 1.055 0 01-1.054-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.516 40.43c0-.583.472-1.055 1.054-1.055h22.572a1.055 1.055 0 110 2.11H49.57a1.055 1.055 0 01-1.054-1.055z\",\n fill: \"#979797\"\n}), React.createElement(\"circle\", {\n cx: \"23.555\",\n cy: \"27.773\",\n r: \"3.164\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.555\",\n cy: \"27.773\",\n r: \"3.164\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"42.188\",\n cy: \"37.266\",\n r: \"2.109\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"42.188\",\n cy: \"47.813\",\n r: \"2.109\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.555\",\n cy: \"59.414\",\n r: \"3.164\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.555\",\n cy: \"69.961\",\n r: \"3.164\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.648 46.758c0-.583.472-1.055 1.054-1.055h28.696a1.055 1.055 0 110 2.11H49.702a1.055 1.055 0 01-1.054-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.516 50.977c0-.583.472-1.055 1.054-1.055h26.088a1.055 1.055 0 110 2.11H49.57a1.055 1.055 0 01-1.054-1.055z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.524 37.969v-2.813h-.703v14.191h3.93v-.703h-3.227v-9.972h3.227v-.703h-3.227z\",\n fill: \"#2B98F0\"\n}), React.createElement(\"path\", {\n opacity: \".54\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M33.423 27.07l-1.242 1.243-1.243-1.243h2.485z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n opacity: \".6\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.578 7.734h65.39a2.11 2.11 0 012.11 2.11v6.328a2.11 2.11 0 01-2.11 2.11h-65.39a2.11 2.11 0 01-2.11-2.11V9.844a2.11 2.11 0 012.11-2.11z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20.39 13.008a2.11 2.11 0 012.11-2.11h24.61a2.11 2.11 0 110 4.22H22.5a2.11 2.11 0 01-2.11-2.11zM52.031 13.008a2.11 2.11 0 012.11-2.11h3.515a2.11 2.11 0 110 4.22h-3.515a2.11 2.11 0 01-2.11-2.11z\",\n fill: \"#979797\"\n})), React.createElement(\"defs\", null, React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: \"-5.625\",\n y1: \"3.164\",\n x2: \"-5.625\",\n y2: \"90\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#FAFAFA\",\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#F4F4F4\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint1_linear\",\n x1: \"93.557\",\n y1: \"63.672\",\n x2: \"54.451\",\n y2: \"27.31\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n height: '100%',\n overflow: 'hidden',\n background: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: '115px'\n },\n info: {\n color: theme.palette.text.secondary,\n fontSize: '16px',\n lineHeight: '24px',\n marginTop: '16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport EmptyIcon from './icons/EmptySources.svg';\n\nimport {useStyles} from './styles';\n\nconst EmptyState = () => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n <EmptyIcon />\n <span className={styles.info}>\n {i18n.text('Please persist your profile to be able to edit crosswalks')}\n </span>\n </div>\n );\n};\n\nexport default EmptyState;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n snackbarMessage: {\n display: 'flex',\n alignItems: 'center'\n },\n snackbarIcon: {\n paddingRight: 16\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getEntityLink, getLabel} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport InfoIcon from '@material-ui/icons/Info';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n message: string;\n};\n\nconst TreeActionSnackbar = ({entity, message}: Props) => {\n const styles = useStyles();\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n const entityLink = getEntityLink({uiPath, uri: entity.uri});\n\n return (\n <div className={styles.snackbarMessage}>\n <InfoIcon className={styles.snackbarIcon} />\n <Typography>\n {getLabel(entity.label)}{' '}\n <Link href={entityLink} target=\"_blank\">\n {i18n.text('lookup profile')}\n </Link>{' '}\n {message}\n </Typography>\n </div>\n );\n};\n\nexport default TreeActionSnackbar;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n sourcesView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflowX: 'hidden',\n overflowY: 'auto',\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n display: 'flex'\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n resizablePanesWrapper: {\n flexGrow: 1,\n height: '100%'\n },\n pane: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n tabs: {\n marginLeft: '1px'\n }\n});\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport {Dispatch} from 'redux';\nimport {connect} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport mdmModule, {HistoryEvent, profile} from '@reltio/mdm-module';\nimport {\n ApiError,\n ApiErrorCode,\n AttributeType,\n collectContributorsFromTree,\n Entity,\n getEntityType,\n Metadata,\n SourcesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {\n AttributesTable,\n CrosswalkDragLayer,\n CrosswalksDisplayProvider,\n ExpandedAttributesProvider,\n HistoryHeader,\n HistoryPanelEmptyState,\n HistoryView,\n ProfileBand,\n ProfileBandHistory,\n ProfileBandNavigation,\n ResizablePanes,\n SideButtonsPanel,\n useDidUpdateEffect,\n useHistory,\n useHistoryEnabled,\n useHistorySlice,\n useModifiedEntity,\n useSavedState,\n useSnackbar\n} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport HistoryIcon from '@material-ui/icons/History';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\nimport LegendView from '../LegendView/LegendView';\nimport {LegendMode, SourcesSavedState} from '../../types';\nimport {useCrosswalkTree} from '../../hooks/useCrosswalkTree';\nimport LegendIcon from './icons/LegendIcon.svg';\nimport {showErrorMessage} from '../../services/errors';\nimport {equals, pipe, pluck, propEq, reject} from 'ramda';\nimport {useCrosswalkTreeActions} from '../../hooks/useCrosswalkTreeActions';\nimport {useCrosswalksDisplay} from '../../hooks/useCrosswalksDisplay';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport {DndProvider} from 'react-dnd';\nimport EmptyState from '../EmptyState/EmptyState';\nimport TreeActionSnackbar from '../TreeActionSnackbar/TreeActionSnackbar';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: SourcesPerspectiveConfig;\n entity: Entity;\n metadata: Metadata;\n saveState: (state: SourcesSavedState) => void;\n getSavedState: () => Promise<SourcesSavedState>;\n dispatch: Dispatch;\n historyEvent: HistoryEvent;\n};\n\nconst MIN_PANE1_SIZE = 480;\nconst MIN_PANE2_SIZE = 480;\nconst MAX_PANE1_SIZE = -MIN_PANE2_SIZE;\nenum ActivePanel {\n Legend,\n History\n}\n\nconst SourcesView = ({config, entity, metadata, getSavedState, saveState, dispatch, historyEvent}: Props) => {\n const styles = useStyles();\n const [activeMode, setActiveMode] = useState(LegendMode.Crosswalk);\n\n const [activeTab, setActiveTab] = useState(0);\n const toggleActive = (newIndex: number) => setActiveTab((active) => (active === newIndex ? null : newIndex));\n const isSidePanelOpen = activeTab !== null;\n\n const isHistoryTabActive = activeTab === ActivePanel.History;\n const {isHistoryEnabled, isProfilePersisted} = useHistoryEnabled({isHistoryTabActive, entity});\n\n const persistedEntity = isProfilePersisted ? entity : null;\n\n const entityUri = persistedEntity?.uri;\n const entityType = getEntityType(metadata, entity?.type);\n\n const {historySlice} = useHistorySlice({entity: persistedEntity, historyEvent});\n\n const [selectedAttrTypes, setSelectedAttrTypes] = useState<AttributeType[]>();\n useDidUpdateEffect(() => {\n setSelectedAttrTypes(undefined);\n }, [historySlice]);\n useDidUpdateEffect(() => {\n setSelectedAttrTypes(undefined);\n }, [entityUri]);\n\n const [paneSize, setPaneSize] = useState(MAX_PANE1_SIZE);\n const handlePaneSizeChange = useCallback(({percentageSize}) => setPaneSize(percentageSize), []);\n\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar({\n anchorOrigin: {vertical: 'top', horizontal: 'center'},\n showDismiss: true\n });\n const {isLoaded, savedState} = useSavedState<SourcesSavedState>(getSavedState);\n const [visibleColumns, setVisibleColumns] = useState<string[]>();\n useEffect(() => {\n if (isLoaded) {\n setVisibleColumns(savedState.visibleColumns);\n }\n }, [isLoaded]); // eslint-disable-line\n useEffect(() => {\n const hasVisibleColumnsChanged = !equals(visibleColumns, savedState.visibleColumns);\n if (isLoaded && hasVisibleColumnsChanged) {\n saveState({visibleColumns});\n }\n }, [visibleColumns]); // eslint-disable-line\n\n const {crosswalkTree, reload: reloadCrosswalkTree} = useCrosswalkTree(historySlice?.aEntity.uri || entityUri);\n const contributors = useMemo(() => collectContributorsFromTree(crosswalkTree), [crosswalkTree]);\n\n const refreshEntity = useCallback(() => {\n entityUri &&\n dispatch(\n profile.entity.actions.loadEntity({\n viewId: config.id,\n uri: entityUri\n })\n );\n }, [entityUri, config, dispatch]);\n\n const refreshData = useCallback(pipe(refreshEntity, reloadCrosswalkTree), [refreshEntity, reloadCrosswalkTree]);\n\n const onShowMessage = useCallback((message: string, entity?: Entity) => {\n showSnackbarMessage(entity ? <TreeActionSnackbar entity={entity} message={message} /> : message);\n }, []);\n\n const {\n modifiedEntity,\n crosswalksMap,\n newlyCreatedAttributes,\n onDeleteAttribute,\n onPinAttribute,\n onIgnoreAttribute,\n onEditAttribute,\n onAddAttribute\n } = useModifiedEntity({\n entity: historySlice?.aEntity || persistedEntity,\n onModify: refreshData,\n onError: showErrorMessage\n });\n\n const {\n addCrosswalk,\n deleteCrosswalk,\n editCrosswalk,\n unmergeContributor,\n unsubscribeContributor\n } = useCrosswalkTreeActions({\n onShowMessage,\n onSuccess: refreshData,\n onError: useCallback(\n (error: ApiError) => {\n showErrorMessage(error);\n if (error.errorCode === ApiErrorCode.CROSSWALK_NOT_FOUND) {\n refreshData();\n }\n },\n [refreshData]\n )\n });\n\n const {\n historyFilter,\n onApplyFilter,\n isLoading,\n historicUris,\n historyWithTotal,\n canLoadMore,\n onLoadMore\n } = useHistory({entity: persistedEntity, enabled: isHistoryEnabled});\n\n const displayProps = useCrosswalksDisplay({activeMode, contributors});\n const tabs = [\n {\n buttonProps: {\n id: ActivePanel.Legend,\n icon: LegendIcon,\n tooltipTitle: i18n.text('Legend')\n },\n title: <Typography variant=\"h6\">{i18n.text('Legend')}</Typography>,\n content: (\n <LegendView\n activeMode={activeMode}\n onChangeMode={setActiveMode}\n entity={historySlice?.aEntity || persistedEntity}\n crosswalkTree={crosswalkTree}\n contributors={contributors}\n selectedAttributeTypes={selectedAttrTypes}\n readOnly={!!historySlice}\n onAddCrosswalk={addCrosswalk}\n onUnmergeContributor={unmergeContributor}\n onUnsubscribeContributor={unsubscribeContributor}\n onEditCrosswalk={editCrosswalk}\n onDeleteCrosswalk={deleteCrosswalk}\n />\n )\n },\n {\n buttonProps: {\n id: ActivePanel.History,\n icon: HistoryIcon,\n tooltipTitle: i18n.text('History')\n },\n title: (\n <HistoryHeader\n total={(historicUris?.length || 0) + 1}\n entityType={entityType}\n filter={historyFilter}\n onApplyFilter={onApplyFilter}\n />\n ),\n content: isProfilePersisted ? (\n <HistoryView\n isLoading={isLoading}\n historyWithTotal={historyWithTotal}\n contributorsUris={historicUris}\n entityUri={entityUri}\n historyEvent={historyEvent}\n onLoadMore={onLoadMore}\n canLoadMore={canLoadMore}\n />\n ) : (\n <HistoryPanelEmptyState />\n )\n }\n ];\n\n return (\n <div className={styles.sourcesView}>\n <CrosswalksDisplayProvider {...displayProps}>\n <DndProvider backend={HTML5Backend}>\n <CrosswalkDragLayer />\n <ResizablePanes\n className={styles.resizablePanesWrapper}\n orientation=\"vertical\"\n size={isSidePanelOpen ? paneSize : '100%'}\n minSize={MIN_PANE1_SIZE}\n maxSize={MAX_PANE1_SIZE}\n allowResize={isSidePanelOpen}\n onChange={handlePaneSizeChange}\n >\n <div className={styles.pane}>\n <ProfileBand entity={historySlice?.aEntity || entity}>\n {historySlice ? <ProfileBandHistory /> : <ProfileBandNavigation />}\n </ProfileBand>\n {isProfilePersisted ? (\n <ExpandedAttributesProvider attributeUris={newlyCreatedAttributes}>\n <AttributesTable\n visibleColumns={visibleColumns}\n onChangeVisibleColumns={setVisibleColumns}\n entity={modifiedEntity}\n crosswalksMap={crosswalksMap}\n selectedAttributeTypes={selectedAttrTypes}\n onSelectAttributeTypes={setSelectedAttrTypes}\n readOnly={!!historySlice}\n onDelete={onDeleteAttribute}\n onPin={onPinAttribute}\n onIgnore={onIgnoreAttribute}\n onEdit={onEditAttribute}\n onAdd={onAddAttribute}\n />\n </ExpandedAttributesProvider>\n ) : (\n <EmptyState />\n )}\n </div>\n <RightSidePanel\n className={styles.pane}\n title={tabs[activeTab]?.title}\n onClose={() => toggleActive(activeTab)}\n >\n {tabs[activeTab]?.content}\n </RightSidePanel>\n </ResizablePanes>\n </DndProvider>\n </CrosswalksDisplayProvider>\n <SideButtonsPanel\n className={styles.tabs}\n buttonsProps={pipe(reject(propEq('hidden', true)), pluck('buttonProps'))(tabs)}\n onButtonClick={toggleActive}\n activeIndexId={activeTab}\n />\n <SnackbarRenderer />\n </div>\n );\n};\n\nconst mapStateToProps = (state) => {\n return {\n entity: mdmModule.selectors.getEntity(state),\n metadata: mdmModule.selectors.getMetadata(state),\n historyEvent: mdmModule.selectors.getHistoryEvent(state)\n };\n};\n\nexport default connect(mapStateToProps)(SourcesView);\n","import {useCallback, useEffect, useState} from 'react';\nimport {getCrosswalkTree, CrosswalkTree} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nexport const useCrosswalkTree = (entityUri: string) => {\n const [crosswalkTree, setCrosswalkTree] = useState<CrosswalkTree>(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n\n const onError = (e) => {\n console.warn('Failed to load crosswalk tree', e);\n setCrosswalkTree(null);\n };\n\n const loadData = useCallback(() => {\n if (entityUri) {\n setIsLoading(true);\n safePromise(getCrosswalkTree({entityUri}))\n .then((results) => {\n setCrosswalkTree(results);\n })\n .catch(onError)\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n setCrosswalkTree(null);\n }\n }, [entityUri]);\n\n useEffect(() => {\n loadData();\n }, [loadData]);\n\n return {isLoading, crosswalkTree, reload: loadData};\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {andThen, pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport {\n Entity,\n unmergeContributor as unmergeContributorRequest,\n unsubscribeEntityFromDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport {useCrosswalkActions, noop} from '@reltio/components';\nimport {UnmergeContributorEvent, UnsubscribeContributorEvent} from '../types';\n\ntype Props = {\n onLoad?: () => void;\n onSuccess?: () => void;\n onError?: (error: unknown) => void;\n onShowMessage?: (message: string, entity?: Entity) => void;\n};\n\nexport const useCrosswalkTreeActions = ({\n onLoad = noop,\n onSuccess = noop,\n onError = noop,\n onShowMessage = noop\n}: Props) => {\n const {addCrosswalk, editCrosswalk, deleteCrosswalk} = useCrosswalkActions({onLoad, onSuccess, onError});\n const dtssPath = useSelector(mdm.selectors.getDtssPath);\n const tenant = useSelector(mdm.selectors.getTenant);\n\n const handleAction = useCallback(\n (request: Promise<unknown>) => {\n onLoad();\n request\n .then(() => {\n onSuccess();\n })\n .catch(onError);\n },\n [onLoad, onError, onSuccess]\n );\n\n const unmergeContributor = useCallback(\n (event: UnmergeContributorEvent) =>\n pipe(\n unmergeContributorRequest,\n andThen((response) => {\n onShowMessage(i18n.text('has been unmerged'), response.b);\n return response;\n }),\n handleAction\n )(event),\n [handleAction, onShowMessage]\n );\n\n const unsubscribeContributor = useCallback(\n ({crosswalk, dataTenant}: UnsubscribeContributorEvent) =>\n pipe(\n unsubscribeEntityFromDataTenantEntity,\n andThen((response) => {\n if (!response.successful) throw new Error(i18n.text('Failed to unsubscribe contributor'));\n return response;\n }),\n handleAction\n )({\n dtssPath,\n value: crosswalk.value,\n type: crosswalk.type,\n sourceTable: crosswalk.sourceTable,\n dataTenant: dataTenant.id,\n customerTenant: tenant\n }),\n [handleAction, dtssPath, tenant]\n );\n\n return {\n addCrosswalk,\n editCrosswalk,\n deleteCrosswalk,\n unmergeContributor,\n unsubscribeContributor\n };\n};\n","import {useCallback, useEffect, useMemo, useState, useRef} from 'react';\nimport {any, concat} from 'ramda';\nimport {LegendMode} from '../types';\nimport {\n Contributor,\n CrosswalkBase,\n debounce,\n eqCrosswalks,\n findContributorForCrosswalk,\n getContributorColor,\n getCrosswalkColor,\n getCrosswalkId,\n getSourceColor\n} from '@reltio/mdm-sdk';\n\ntype Props = {\n activeMode: LegendMode;\n contributors: Contributor[];\n};\n\nexport const useCrosswalksDisplay = ({activeMode, contributors}: Props) => {\n const getCrosswalkColorForActiveMode = useCallback(\n (crosswalk: CrosswalkBase) => {\n switch (activeMode) {\n case LegendMode.Source:\n return getSourceColor(crosswalk.type);\n case LegendMode.Contributor:\n return getContributorColor(findContributorForCrosswalk(contributors, crosswalk)?.uri || '');\n case LegendMode.Crosswalk:\n return getCrosswalkColor(getCrosswalkId(crosswalk));\n }\n },\n [activeMode, contributors]\n );\n const [highlightedCrosswalks, setHighlightedCrosswalks] = useState<CrosswalkBase[]>([]);\n const highlightedCrosswalksCache = useRef([]);\n const applyHighlightedCrosswalks = useCallback(\n debounce(() => {\n setHighlightedCrosswalks([...highlightedCrosswalksCache.current]);\n }, 50),\n []\n );\n const cacheHighlightedCrosswalks = useCallback(\n (arr) => {\n highlightedCrosswalksCache.current = arr;\n applyHighlightedCrosswalks(arr);\n },\n [applyHighlightedCrosswalks]\n );\n\n const setCrosswalkHighlighted = useCallback(\n (crosswalk: CrosswalkBase, highlighted: boolean) => {\n if (!crosswalk) return;\n if (highlighted) {\n if (activeMode === LegendMode.Contributor) {\n const contributor = findContributorForCrosswalk(contributors, crosswalk);\n cacheHighlightedCrosswalks([crosswalk, ...(contributor?.crosswalks || [])]);\n } else {\n cacheHighlightedCrosswalks([crosswalk]);\n }\n } else {\n cacheHighlightedCrosswalks([]);\n }\n },\n [activeMode, cacheHighlightedCrosswalks, contributors]\n );\n\n const [focusedCrosswalks, setFocusedCrosswalks] = useState<CrosswalkBase[]>([]);\n const calculateFocusedCrosswalks = useCallback(\n (prev: CrosswalkBase[], next: CrosswalkBase[]) =>\n concat(\n prev.filter((prevCrosswalk) => !any(eqCrosswalks(prevCrosswalk), next)),\n next.filter((nextCrosswalk) => !any(eqCrosswalks(nextCrosswalk), prev))\n ),\n []\n );\n const toggleCrosswalkFocus = useCallback(\n (crosswalk: CrosswalkBase) => {\n if (!crosswalk) return;\n if (activeMode === LegendMode.Contributor) {\n const contributor = findContributorForCrosswalk(contributors, crosswalk);\n setFocusedCrosswalks((prevValue) =>\n calculateFocusedCrosswalks([crosswalk, ...(contributor?.crosswalks || [])], prevValue)\n );\n } else {\n setFocusedCrosswalks((prevValue) => calculateFocusedCrosswalks([crosswalk], prevValue));\n }\n },\n [activeMode, calculateFocusedCrosswalks, contributors]\n );\n\n useEffect(() => {\n setFocusedCrosswalks([]);\n }, [activeMode]);\n\n return {\n getCrosswalkColor: getCrosswalkColorForActiveMode,\n highlightedCrosswalks: useMemo(() => [...highlightedCrosswalks, ...focusedCrosswalks], [\n highlightedCrosswalks,\n focusedCrosswalks\n ]),\n focusedCrosswalks,\n toggleCrosswalkFocus,\n setCrosswalkHighlighted\n };\n};\n","import React, {useCallback} from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\n\nimport MomentUtils from '@date-io/moment';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {SourcesSavedState} from '../../types';\nimport SourcesView from './SourcesView';\nimport {promisifyCallback, SourcesPerspectiveConfig} from '@reltio/mdm-sdk';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'sourcesPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: SourcesPerspectiveConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n saveState: (state: SourcesSavedState) => void;\n getSavedState: (clb: (state: SourcesSavedState) => void) => void;\n};\n\nconst SourcesPerspective = ({config, store, onResize, saveState, getSavedState}: Props) => {\n const getSavedStatePromisified: () => Promise<SourcesSavedState> = useCallback(promisifyCallback(getSavedState), [\n getSavedState\n ]);\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize?.(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <SourcesView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n )}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default SourcesPerspective;\n","import {SourcesView} from '@reltio/sources';\n\nexport default SourcesView;\n"],"names":["customStyles","input","currentStyles","fontSize","menuPortal","zIndex","useStyles","makeStyles","root","flex","title","paddingBottom","paddingLeft","dropDownInput","width","justifyContent","backgroundColor","borderTop","option","height","noOptionsMessage","entityType","selectedAttributes","className","onChange","disableUnderline","menuPlacement","metadata","useSelector","mdmModule","styles","prepareItems","useCallback","data","level","prevLabel","reduce","acc","item","hidden","chipLabel","label","push","value","uri","attrType","subAttributes","getAttributeTypeSubAttributes","concat","options","useMemo","attributes","classnames","Typography","variant","i18n","MultiSelect","TextFieldProps","InputProps","classes","components","DropdownIndicator","DropdownIndicatorWithIconButton","MultiValue","props","Option","isFocused","isSelected","innerProps","AttributeListItem","checked","labelInText","pipe","defaultTo","menuPortalTarget","document","body","contextSelector","CellRenderer","withContext","TableContext","display","paddingRight","inputNumber","minWidth","marginRight","inputUnit","periods","interval","unit","onFocus","onNumberChange","getValue","parseInt","newValue","onUnitChange","newUnit","TextField","type","inputProps","min","SimpleDropDownSelector","placeholder","capitalize","map","textOverflow","overflow","whiteSpace","padding","lineHeight","borderRadius","fontWeight","entity","size","entityTypeUri","getEntityType","entityTypeColor","getPropWithInheritance","theme","entityTypeLabel","getEntityTypeLabel","ExpandedValueTooltip","placement","style","color","utils","component","profileBandWrapper","flexShrink","profileBand","alignItems","boxShadow","content","minHeight","inactive","background","inactiveBackground","profileIcon","imageProfileIcon","profileInfo","flexDirection","badge","letterSpacing","palette","text","primary","wordBreak","marginTop","secondaryLabel","marginLeft","businessCard","secondary","specialInfo","flexWrap","entityId","cursor","textDecoration","ProfileBand","children","showEntityId","handleCopyEntityIdToClipboard","navigator","clipboard","writeText","getEntityId","isNil","getLabel","businessCardText","getBusinessCardAttributesText","isActive","isActiveObject","entityUri","EntityAvatar","key","avatarClassName","imageClassName","EntityTypeBadge","isTempUri","Tooltip","onClick","propTypes","PropTypes","withMuiSkin","CreatableSelect","innerRef","selectProps","MenuItem","classNames","ref","selected","Checkbox","id","onMouseMove","onMouseOver","tabIndex","isRequired","current","top","left","undefined","clearIndicator","spacing","margin","dropdownIndicator","creatable","getOptions","loadingIndicator","componentsProp","classesProp","stylesProp","onChangeProp","onInputChange","onInputChangeProp","reactSelectProps","SelectComponent","AsyncSelect","Select","inputValue","setInputValue","useState","multiSelectClasses","omit","inputId","multiSelectComponents","mergeClasses","indicatorSeparator","base","loadingMessage","fontFamily","labelProps","InputLabelProps","htmlFor","shrink","length","isMulti","actionMeta","action","closeMenuOnSelect","hideSelectedOptions","loadOptions","defaultProps","cacheOptions","defaultOptions","ClearIndicator","Control","DownChevron","CrossIcon","Group","GroupHeading","IndicatorsContainer","IndicatorSeparator","Input","LoadingIndicator","Menu","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","MultiValueContainer","MultiValueLabel","MultiValueRemove","Placeholder","SelectContainer","SingleValue","ValueContainer","control","valueContainer","multiValue","singleValue","menu","container","group","groupHeading","indicatorsContainer","menuList","multiValueLabel","multiValueRemove","getOptionValue","isSearchable","inputRef","paddingTop","paper","active","fade","main","position","buttonWrapper","SideButtonsPanel","buttonsProps","activeIndexId","onButtonClick","iconButtonClasses","buttonProps","SmallIconButton","selectedUsers","valueToOption","prepareValues","values","tenant","servicesPath","cachedRequest","useRef","pluck","getAllUsersForTenant","then","prop","users","filter","username","filterUsers","ActivityTypes","getItemDataType","path","getActivityType","activity","items","firstItem","isValidActivity","includes","splitActivityByType","propOr","groupBy","ifElse","itemsTotal","stringifyDeltaValue","delta","Array","isArray","join","is","Object","toString","getActivityLabel","transition","inputRoot","dateOptionLabel","localeFormat","moment","longDateFormat","open","setOpen","handleToggle","onCancel","fullWidth","formatDataTypeValue","dataTypeDefinition","DataTypes","formatValue","endAdornment","menuIsOpen","readOnly","autoFocus","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","DateRangePicker","onApply","useSavedState","getSavedState","isLoaded","setIsLoaded","savedState","setSavedState","useEffect","_","catch","FIVE_MINUTES","useSnackbar","showDismiss","isOpenSnackbar","setIsOpenSnackbar","snackbarMessage","setSnackbarMessage","closeSnackbar","showSnackbarMessage","message","SnackbarRenderer","Portal","autoHideDuration","Button","DateRangeTypes","RequestStates","header","borderBottom","closeButton","RightSidePanel","icon","CloseIcon","LegendMode","sumValues","links","sum","nodes","sankeyLayout","nodeWidth","smallestNodeMaxHeight","smallestNodeMinHeight","nodePadding","sankey","graph","forEach","node","sourceLinks","targetLinks","link","source","target","computeNodeLinks","Math","max","computeNodeValues","nextNodes","remainingNodes","x","dx","indexOf","w","computeNodeBreadths","nodesByBreadth","toPairs","sort","a","b","nth","ky","Infinity","i","y","dy","initializeNodeDepth","y0","n","y1","last","computeNodeDepths","computeLinkDepths","ty","correctNodesDepth","result","linksByUuid","l","crosswalk","uuid","sourceNodes","this","j","index","resultByUuid","newSources","sizeForNewSources","sy","setNodeWidth","setNodePadding","setSmallestNodeMaxHeight","setSmallestNodeMinHeight","setSize","newSize","update","curvature","d","lastLine","x0","x1","xi","t","x2","x3","appendix","arguments","safeData","safeNodes","getSafeNode","originalNode","safeLinks","shallowCopy","tooltipTitle","marginBottom","userSelect","tooltipRow","tooltipIcon","stroke","strokeWidth","strokeOpacity","rootNode","transform","user","time","CalendarToday","Person","LightArrowTooltip","highlightEnabled","isColored","labelX","setLabelX","textRef","name","crosswalks","merges","firstCrosswalk","isDimmed","highlightCrosswalk","removeHighlight","useCrosswalkHighlight","useCrosswalkColor","startNodeHeight","nodeHeight","textWidth","clientWidth","fill","opacity","onMouseEnter","onMouseLeave","timeMap","sources","start","end","head","fillOpacity","renderMergeNodes","accentContributors","isDragging","setDragging","previousPageX","setPreviousPageX","offsetX","setOffsetX","useSankey","sankeyNodes","sankeyLinks","extractPositionDelta","event","pageX","onUp","pointerEvents","onPointerDown","preventDefault","onPointerMove","onPointerUp","onPointerLeave","isCrosswalkDisplayed","curry","displayedCrosswalks","some","eqCrosswalks","filterDisplayedCrosswalks","tree","evolve","losers","addCrosswalkUniqueId","count","addIdToSubtree","loser","processTree","processSubTree","parentIndex","mergesCrosswalks","chain","Date","now","linkedNodes","uniq","boxSizing","memo","crosswalkTree","entityLabel","visibleCrosswalks","sankeyData","getSankeyData","refreshMode","refreshRate","handleWidth","handleHeight","_extends","assign","prototype","hasOwnProperty","call","apply","React","viewBox","version","xmlns","xmlnsXlink","fillRule","xlinkHref","mask","focusedIcon","contributorUri","focusable","contributorActions","onToggleFocus","VisibilityIcon","disabled","getLastUriPart","Spacer","show","showForDisabled","contributorColor","border","borderLeft","bottom","editor","accentContributor","crosswalksBySources","expandedSources","canUnmerge","disableAddCrosswalk","disableEditCrosswalk","disableDeleteCrosswalk","disableUnmergeContributor","onUnmerge","onEdit","onDelete","onAdd","onToggleSourceExpanded","onUnsubscribeContributor","getContributorColor","dataTenants","mdm","scrollToCrosswalk","useHighlightedCrosswalks","find","flatten","scrollIntoView","behavior","showEditor","setShowEditor","contributorCrosswalk","CrosswalkType","toggleCrosswalkFocus","useCrosswalkFocus","allContributorCrosswalks","dataTenantForExternalCrosswalk","getDataTenantFromCrosswalks","AddIcon","UnmergeIcon","UnsubscribeIcon","dataTenant","crosswalksByTypes","SourceCrosswalksRow","showCrosswalkColors","crosswalksFocusEnabled","expanded","onToggleExpanded","CrosswalkEditor","table","overflowY","overflowX","tableRow","maxWidth","contributors","selectedAttributeTypes","onChangeVisibleCrosswalks","onAddCrosswalk","noop","onEditCrosswalk","onDeleteCrosswalk","onUnmergeContributor","rowsData","entityCrosswalks","relationCrosswalks","getRelationCrosswalks","contributor","isEmptyValue","ownerType","relationCrosswalk","entityCrosswalk","groupCrosswalksByTypesAndSources","buildTableRowsData","expandedByContributor","setExpandedByContributor","isExpandedSource","collectVisibleCrosswalks","handleDelete","crosswalkId","handleEdit","params","checkCanCreateCrosswalk","checkCanEditCrosswalk","checkCanDeleteCrosswalk","checkMetadataPermission","MetadataPermissions","sourceUri","unless","has","assoc","without","append","hintIcon","verticalAlign","checkedIcon","right","selectedTree","SelectableTree","coloredCrosswalks","onSelect","getCrosswalkColor","getUniqueCrosswalkColor","getCrosswalkId","Info","CheckCircle","dialogContainer","dialogTitle","dialogContent","trees","UnmergeDialog","unmergeOperation","setUnmergeOperation","UnmergeOperation","getColoredCrosswalks","includeMerges","collectCrosswalksFromContributor","Dialog","DialogTitle","DialogContent","toUpperCase","DialogActions","UnsubscribeDialog","canUnsubscribe","modeSwitcher","infoIcon","hint","alignSelf","hintText","crosswalksList","divider","pane","resizablePanesWrapper","flexGrow","activeMode","onChangeMode","tableProps","viewRef","paneSize","setPaneSize","handlePaneSizeChange","percentageSize","contributorForUnmerge","setContributorForUnmerge","unsubscribeInfo","setUnsubscribeInfo","crosswalkTreeDeep","calculateCrosswalkTreeDeep","maxPaneHeight","clientHeight","modes","Crosswalk","Source","Contributor","setVisibleCrosswalks","operationType","ModeSwitcher","modeId","ResizablePanes","orientation","minSize","maxSize","allowResize","isEmpty","masktype","maskUnits","clipRule","showErrorMessage","error","console","ErrorPopup","getRequestErrorMessage","cx","cy","r","maskType","y2","gradientUnits","stopColor","stopOpacity","offset","default","info","snackbarIcon","uiPath","entityLink","getEntityLink","Link","href","sourcesView","tabs","ActivePanel","connect","state","historyEvent","config","saveState","dispatch","setActiveMode","activeTab","setActiveTab","toggleActive","newIndex","isSidePanelOpen","isHistoryTabActive","History","isHistoryEnabled","isProfilePersisted","useHistoryEnabled","persistedEntity","historySlice","useHistorySlice","selectedAttrTypes","setSelectedAttrTypes","useDidUpdateEffect","visibleColumns","setVisibleColumns","hasVisibleColumnsChanged","equals","reload","reloadCrosswalkTree","setCrosswalkTree","isLoading","setIsLoading","safePromise","useSafePromise","onError","e","warn","loadData","getCrosswalkTree","results","finally","useCrosswalkTree","aEntity","collectContributorsFromTree","refreshEntity","profile","viewId","refreshData","onShowMessage","modifiedEntity","crosswalksMap","newlyCreatedAttributes","onDeleteAttribute","onPinAttribute","onIgnoreAttribute","onEditAttribute","onAddAttribute","useModifiedEntity","onModify","addCrosswalk","deleteCrosswalk","editCrosswalk","unmergeContributor","unsubscribeContributor","onLoad","onSuccess","useCrosswalkActions","dtssPath","handleAction","request","unmergeContributorRequest","andThen","response","unsubscribeEntityFromDataTenantEntity","successful","Error","sourceTable","customerTenant","useCrosswalkTreeActions","errorCode","ApiErrorCode","historyFilter","onApplyFilter","historicUris","historyWithTotal","canLoadMore","onLoadMore","useHistory","enabled","displayProps","getCrosswalkColorForActiveMode","getSourceColor","findContributorForCrosswalk","highlightedCrosswalks","setHighlightedCrosswalks","highlightedCrosswalksCache","applyHighlightedCrosswalks","debounce","cacheHighlightedCrosswalks","arr","setCrosswalkHighlighted","highlighted","focusedCrosswalks","setFocusedCrosswalks","calculateFocusedCrosswalks","prev","next","prevCrosswalk","any","nextCrosswalk","prevValue","useCrosswalksDisplay","Legend","LegendIcon","HistoryIcon","HistoryHeader","total","HistoryView","contributorsUris","HistoryPanelEmptyState","DndProvider","backend","HTML5Backend","CrosswalkDragLayer","ProfileBandHistory","ProfileBandNavigation","attributeUris","AttributesTable","onChangeVisibleColumns","onSelectAttributeTypes","onPin","onIgnore","reject","propEq","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","onResize","getSavedStatePromisified","promisifyCallback","Provider","ViewIdContext","StylesProvider","MuiPickersUtilsProvider","MomentUtils","floor"],"sourceRoot":""}
1
+ {"version":3,"file":"8439.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeSelector/AttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/HOCs/withTableContext.js","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/DateIntervalSelector.tsx","webpack://@reltio/remotes/../components/src/components/EntityTypeBadge/styles.ts","webpack://@reltio/remotes/../components/src/components/EntityTypeBadge/EntityTypeBadge.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBand/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileBand/ProfileBand.tsx","webpack://@reltio/remotes/../components/src/components/ReactSelect/CreatableSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/Option.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/index.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/MultiSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/index.js","webpack://@reltio/remotes/../components/src/components/SideIconPanel/styles.ts","webpack://@reltio/remotes/../components/src/components/SideIconPanel/SideButtonsPanel.tsx","webpack://@reltio/remotes/../components/src/components/UserSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/UserSelector/UserSelector.tsx","webpack://@reltio/remotes/../components/src/components/activityLog/types/ActivityTypes.ts","webpack://@reltio/remotes/../components/src/components/activityLog/utils/activities.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/CustomDateRangeEditor.tsx","webpack://@reltio/remotes/../components/src/hooks/useSavedState.ts","webpack://@reltio/remotes/../components/src/hooks/useSnackbar.tsx","webpack://@reltio/remotes/../components/src/types/index.ts","webpack://@reltio/remotes/../sources/src/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../sources/src/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../sources/src/types/LegendMode.ts","webpack://@reltio/remotes/../sources/src/components/SankeyChart/sankey.ts","webpack://@reltio/remotes/../sources/src/components/SankeyChart/useSankey.tsx","webpack://@reltio/remotes/../sources/src/components/SankeyChart/styles.ts","webpack://@reltio/remotes/../sources/src/components/SankeyChart/MergeTooltip.tsx","webpack://@reltio/remotes/../sources/src/components/SankeyChart/Node.tsx","webpack://@reltio/remotes/../sources/src/components/SankeyChart/Link.tsx","webpack://@reltio/remotes/../sources/src/components/SankeyChart/SankeyChart.tsx","webpack://@reltio/remotes/../sources/src/components/CrosswalkTreeView/helpers.ts","webpack://@reltio/remotes/../sources/src/components/CrosswalkTreeView/styles.ts","webpack://@reltio/remotes/../sources/src/components/CrosswalkTreeView/CrosswalkTreeView.tsx","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/icons/notMatch.svg","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/ContributorRow/styles.ts","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/ContributorRow/ContributorRow.tsx","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/styles.ts","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/LegendTableRow.tsx","webpack://@reltio/remotes/../sources/src/components/LegendTable/styles.ts","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTable.tsx","webpack://@reltio/remotes/../sources/src/components/LegendTable/helpers.ts","webpack://@reltio/remotes/../sources/src/components/SelectableTree/styles.ts","webpack://@reltio/remotes/../sources/src/components/SelectableTree/SelectableTree.tsx","webpack://@reltio/remotes/../sources/src/components/UnmergeDialog/styles.ts","webpack://@reltio/remotes/../sources/src/components/UnmergeDialog/UnmergeDialog.tsx","webpack://@reltio/remotes/../sources/src/components/UnsubscribeDialog/styles.ts","webpack://@reltio/remotes/../sources/src/components/UnsubscribeDialog/UnsubscribeDialog.tsx","webpack://@reltio/remotes/../sources/src/components/LegendView/styles.ts","webpack://@reltio/remotes/../sources/src/components/LegendView/LegendView.tsx","webpack://@reltio/remotes/../sources/src/components/SourcesView/icons/LegendIcon.svg","webpack://@reltio/remotes/../sources/src/services/errors.ts","webpack://@reltio/remotes/../sources/src/components/EmptyState/icons/EmptySources.svg","webpack://@reltio/remotes/../sources/src/components/EmptyState/styles.ts","webpack://@reltio/remotes/../sources/src/components/EmptyState/EmptyState.tsx","webpack://@reltio/remotes/../sources/src/components/TreeActionSnackbar/styles.ts","webpack://@reltio/remotes/../sources/src/components/TreeActionSnackbar/TreeActionSnackbar.tsx","webpack://@reltio/remotes/../sources/src/components/SourcesView/styles.ts","webpack://@reltio/remotes/../sources/src/components/SourcesView/SourcesView.tsx","webpack://@reltio/remotes/../sources/src/hooks/useCrosswalkTree.ts","webpack://@reltio/remotes/../sources/src/hooks/useCrosswalkTreeActions.ts","webpack://@reltio/remotes/../sources/src/hooks/useCrosswalksDisplay.ts","webpack://@reltio/remotes/../sources/src/components/SourcesView/index.tsx","webpack://@reltio/remotes/./src/sources.ts"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n },\n noOptionsMessage: {\n fontSize: '14px'\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe, defaultTo} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {AttributeOption} from '../../types';\nimport mdmModule from '@reltio/mdm-module';\nimport {MultiValueProps, OptionProps} from 'react-select';\nimport {AttributeType, getAttributeTypeSubAttributes, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport MultiValue from '../ReactSelect/commonComponents/MultiValue';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n entityType: TEntityType;\n selectedAttributes: AttributeOption[];\n className?: string;\n onChange?: (attributes: AttributeOption[]) => void;\n title?: string;\n disableUnderline?: boolean;\n menuPlacement?: string;\n};\n\nconst AttributeSelector = ({\n entityType,\n selectedAttributes,\n className,\n onChange,\n title,\n disableUnderline,\n menuPlacement = 'bottom'\n}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const styles = useStyles();\n\n const prepareItems = useCallback(\n (data: AttributeType[], level = 0, prevLabel = ''): AttributeOption[] => {\n return data.reduce((acc, item) => {\n if (item.hidden) return acc;\n const chipLabel = `${prevLabel && prevLabel + ' / '}${item.label}`;\n acc.push({\n label: item.label,\n value: item.uri,\n attrType: item,\n chipLabel,\n level\n });\n const subAttributes = getAttributeTypeSubAttributes(metadata, item);\n return acc.concat(subAttributes ? prepareItems(subAttributes, level + 1, chipLabel) : []);\n }, []);\n },\n [metadata]\n );\n\n const options = useMemo(() => prepareItems(entityType?.attributes || []), [entityType, prepareItems]);\n\n const CustomOption = ({isFocused, isSelected, data, label, innerProps}: OptionProps<AttributeOption, true>) => (\n <div {...innerProps}>\n <AttributeListItem\n checked={isSelected}\n level={data.level}\n data={data}\n label={label}\n labelInText={label}\n isFocused={isFocused}\n />\n </div>\n );\n\n const CustomMultiValue = ({data, ...props}: MultiValueProps<AttributeOption>) => (\n <MultiValue {...props}>{data.chipLabel}</MultiValue>\n );\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {title || i18n.text('Attribute')}\n </Typography>\n <MultiSelect\n value={selectedAttributes}\n options={options}\n TextFieldProps={{\n InputProps: {disableUnderline},\n classes: {root: styles.dropDownInput}\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton,\n MultiValue: CustomMultiValue,\n Option: CustomOption\n }}\n onChange={pipe(defaultTo([]), onChange)}\n styles={customStyles}\n classes={styles}\n menuPlacement={menuPlacement}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default AttributeSelector;\n","import {TableContext} from '../contexts/TableContext';\nimport {withContext} from '../../../../HOCs/withContext/withContext';\n\nconst withTableContext = (contextSelector) => (CellRenderer) =>\n withContext(TableContext, contextSelector, CellRenderer);\n\nexport default withTableContext;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flex: 1\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px',\n fontSize: '14px'\n },\n inputNumber: {\n minWidth: '60px',\n marginRight: 10,\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n inputUnit: {\n width: '100%'\n }\n});\n","import React from 'react';\nimport {pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport capitalize from '@material-ui/core/utils/capitalize';\nimport {TextField as TextField} from '@material-ui/core';\nimport SimpleDropDownSelector from '../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {getValue} from '../../core/utils';\nimport {useStyles} from './styles';\n\ntype Props = {\n interval: [number, string];\n onChange: ([number, string]) => void;\n onFocus?: () => void;\n};\n\nconst periods = [\n i18n.text('minutes'),\n i18n.text('hours'),\n i18n.text('days'),\n i18n.text('weeks'),\n i18n.text('months'),\n i18n.text('years')\n];\n\nconst DateIntervalSelector = ({interval: [value, unit], onChange, onFocus}: Props) => {\n const styles = useStyles();\n const getIntervalFromValue = (newValue: number) => [newValue, unit];\n const getIntervalFromUnit = ({value: newUnit}: {value: string}) => [value, newUnit];\n const onNumberChange = pipe(getValue, parseInt, getIntervalFromValue, onChange);\n const onUnitChange = pipe(getIntervalFromUnit, onChange);\n return (\n <div className={styles.root}>\n <TextField\n type=\"number\"\n value={value || ''}\n onChange={onNumberChange}\n inputProps={{min: 1, onFocus: onFocus}}\n InputProps={{classes: {root: styles.input}}}\n className={styles.inputNumber}\n />\n <SimpleDropDownSelector\n label={''}\n placeholder={capitalize(unit)}\n className={styles.inputUnit}\n value={{value: unit, label: capitalize(unit)}}\n options={periods.map((value) => ({\n value,\n label: capitalize(value)\n }))}\n onChange={onUnitChange}\n TextFieldProps={{\n inputProps: {onFocus: onFocus},\n InputProps: {classes: {root: styles.input}}\n }}\n />\n </div>\n );\n};\n\nexport default DateIntervalSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n 'entityType-overflow': {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n\n 'entityType-small': {\n padding: '1px 4px',\n fontSize: '10px',\n lineHeight: 'normal',\n marginRight: '12px',\n borderRadius: '2px'\n },\n 'entityType-medium': {\n padding: '2px 8px 3px',\n borderRadius: '2px',\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px',\n marginRight: '16px'\n }\n});\n\nexport default useStyles;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {getEntityType, getEntityTypeLabel, getPropWithInheritance, theme, utils, Entity} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport ExpandedValueTooltip from '../ExpandedValueTooltip/ExpandedValueTooltip';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n className?: string;\n size?: 'small' | 'medium';\n};\n\nconst EntityTypeBadge = ({entity, className, size = 'small'}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityTypeUri = entity.type;\n const entityType = getEntityType(metadata, entityTypeUri) || {};\n const entityTypeColor = getPropWithInheritance(metadata, entityType, 'typeColor') || theme.palette.primary.main;\n const entityTypeLabel = getEntityTypeLabel(metadata, entity);\n\n return (\n <ExpandedValueTooltip value={entityTypeLabel} placement=\"top\">\n <Typography\n style={{\n backgroundColor: entityTypeColor,\n color: utils.Colors.getColor(entityTypeColor) ? '#FFFFFF' : '#212121'\n }}\n className={classnames(styles[`entityType-${size}`], styles['entityType-overflow'], className)}\n component=\"div\"\n >\n {entityTypeLabel}\n </Typography>\n </ExpandedValueTooltip>\n );\n};\n\nexport default EntityTypeBadge;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string}) => ({\n profileBandWrapper: {\n // especially for IE (overflow fix)\n flexShrink: 0\n },\n profileBand: {\n display: 'flex',\n padding: '16px 12px 16px 16px',\n alignItems: 'flex-start',\n backgroundColor: '#fff',\n boxShadow: 'inset 0 -1px 0 0 rgba(0,114,206,0.06), inset 0 1px 0 0 rgba(0,114,206,0.06);',\n\n '&:after': {\n // IE workaround for minHeight and centering items\n content: '\"\"',\n minHeight: 'inherit',\n fontSize: 0\n }\n },\n inactive: {\n background: theme.inactiveBackground\n },\n profileIcon: {\n marginRight: '12px'\n },\n imageProfileIcon: {\n width: '48px',\n height: '48px'\n },\n profileInfo: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 50%'\n },\n badge: {},\n label: {\n lineHeight: '1.2',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary,\n wordBreak: 'break-word',\n\n '&+ $specialInfo': {\n marginTop: '4px'\n }\n },\n secondaryLabel: {\n display: 'inline-flex',\n color: theme.palette.text.primary,\n marginTop: '2px',\n lineHeight: '16px',\n fontSize: '14px',\n fontWeight: 400,\n\n '&+ $businessCard': {\n marginLeft: '12px'\n }\n },\n businessCard: {\n color: theme.palette.text.secondary,\n display: 'inline-flex',\n fontSize: '14px',\n marginTop: '4px',\n lineHeight: '1.2'\n },\n specialInfo: {\n display: 'flex',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n width: '100%',\n marginTop: '8px'\n },\n entityType: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n entityId: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n}));\n\nexport default useStyles;\n","import React, {ReactNode, useCallback} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {isNil} from 'ramda';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {getLabel, isActiveObject, getBusinessCardAttributesText, getEntityId, isTempUri, Entity} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport EntityAvatar from '../EntityAvatar/EntityAvatar';\nimport EntityTypeBadge from '../EntityTypeBadge/EntityTypeBadge';\n\nimport useStyles from './styles';\n\ntype Props = {\n className?: string;\n entity?: Entity;\n children?: ReactNode;\n};\n\nconst ProfileBand = ({className, entity, children}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const showEntityId = useSelector(mdmModule.selectors.getShowEntityId);\n const handleCopyEntityIdToClipboard = useCallback(() => {\n navigator.clipboard.writeText(getEntityId(entity));\n }, [entity]);\n\n if (isNil(entity)) {\n return null;\n }\n\n const label = getLabel(entity.label);\n const secondaryLabel = entity.secondaryLabel;\n const businessCardText = getBusinessCardAttributesText(metadata, entity);\n const isActive = isActiveObject(entity);\n const entityUri = entity.uri;\n const entityId = getEntityId(entity);\n return (\n <div className={classnames(styles.profileBandWrapper, className)}>\n <div\n className={classnames(styles.profileBand, {\n [styles.inactive]: !isActive\n })}\n data-entity-uri={entityUri}\n >\n <EntityAvatar\n key={entity.uri}\n entity={entity}\n avatarClassName={styles.profileIcon}\n imageClassName={styles.imageProfileIcon}\n />\n <div className={styles.profileInfo}>\n <div>\n <Typography variant=\"h6\" className={styles.label}>\n {label}\n </Typography>\n {secondaryLabel && (\n <Typography variant=\"subtitle2\" className={styles.secondaryLabel}>\n {secondaryLabel}\n </Typography>\n )}\n {businessCardText && (\n <Typography variant=\"subtitle1\" className={styles.businessCard}>\n {businessCardText}\n </Typography>\n )}\n </div>\n <div className={styles.specialInfo}>\n <div className={styles.entityType}>\n <EntityTypeBadge entity={entity} size=\"medium\" className={styles.badge} />\n {!isTempUri(entityUri) && showEntityId && (\n <Tooltip title={i18n.text('Copy to clipboard')}>\n <Typography\n display=\"inline\"\n variant=\"body2\"\n className={styles.entityId}\n onClick={handleCopyEntityIdToClipboard}\n >\n {i18n.text('Entity ID')}: {entityId}\n </Typography>\n </Tooltip>\n )}\n </div>\n </div>\n </div>\n {children && <div>{children}</div>}\n </div>\n </div>\n );\n};\n\nexport default ProfileBand;\n","import CreatableSelect from 'react-select/creatable';\nimport withMuiSkin from './withMuiSkin';\n\nexport default withMuiSkin(CreatableSelect);\n","import {MenuItem as MenuItem} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport ExpandedValueTooltip from '../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nexport default function Option(props) {\n const {\n innerProps,\n innerRef,\n children,\n isFocused,\n isSelected,\n selectProps: {classes},\n label\n } = props;\n\n return (\n <MenuItem\n className={classNames(classes.option, {[classes['option--selected']]: isSelected})}\n ref={innerRef}\n selected={isFocused}\n component=\"div\"\n {...innerProps}\n >\n <Checkbox color=\"primary\" checked={isSelected} />\n <ExpandedValueTooltip value={label}>\n <div className={classes['option--item']}>{children}</div>\n </ExpandedValueTooltip>\n </MenuItem>\n );\n}\n\nOption.propTypes = {\n children: PropTypes.node,\n innerProps: PropTypes.shape({\n id: PropTypes.string.isRequired,\n key: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onMouseMove: PropTypes.func.isRequired,\n onMouseOver: PropTypes.func.isRequired,\n tabIndex: PropTypes.number.isRequired\n }).isRequired,\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n isFocused: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n label: PropTypes.string,\n selectProps: PropTypes.shape({\n classes: PropTypes.shape({\n option: PropTypes.string\n })\n })\n};\n","import Option from './Option';\n\nconst components = {\n Option\n};\n\nexport default components;\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {omit} from 'ramda';\nimport CreatableSelect from '../CreatableSelect';\nimport Select from '../Select';\nimport AsyncSelect from '../AsyncSelect';\nimport multiSelectComponents from './components';\nimport {makeStyles} from '@material-ui/core/styles';\nimport {mergeClasses} from '../../../core/utils';\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n top: 6,\n left: 16\n },\n placeholder: (props) => ({\n display: !props.placeholder || props.label ? 'none' : undefined\n }),\n 'option--selected': {\n fontWeight: 400\n },\n clearIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n },\n dropdownIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n }\n}));\n\nlet id = 0;\nconst getInputId = () => `custom-select-${id++}`;\n\nfunction MultiSelect(props) {\n const {\n label,\n creatable,\n getOptions,\n loadingIndicator,\n components: componentsProp,\n classes: classesProp,\n styles: stylesProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n menuPlacement = 'auto',\n ...reactSelectProps\n } = props;\n\n const SelectComponent = creatable ? CreatableSelect : getOptions ? AsyncSelect : Select;\n\n const [inputValue, setInputValue] = useState('');\n const multiSelectClasses = useStyles(omit(['classes'], props));\n const inputId = getInputId();\n\n const components = {\n ...multiSelectComponents,\n ...componentsProp\n };\n\n const classes = mergeClasses(multiSelectClasses, classesProp);\n\n function handleInputChange(value, {action}) {\n onInputChangeProp(value, {action});\n if (action !== 'set-value') {\n setInputValue(value);\n }\n }\n\n function handleChange(value, actionMeta) {\n onChangeProp(value, actionMeta);\n if (actionMeta.action === 'create-option') {\n setInputValue('');\n onInputChangeProp('', {action: 'input-change'});\n }\n }\n\n const styles = {\n indicatorSeparator: (base) => ({\n ...base,\n margin: '10px 0'\n }),\n loadingIndicator: (base) => ({\n ...base,\n display: loadingIndicator ? base.display : 'none'\n }),\n loadingMessage: (base) => ({\n ...base,\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif'\n }),\n ...stylesProp\n };\n\n const labelProps = label\n ? {\n inputId,\n TextFieldProps: {\n label,\n InputLabelProps: {\n htmlFor: inputId,\n shrink: props.value && props.value.length ? true : undefined,\n className: classes.label\n },\n ...props.TextFieldProps\n }\n }\n : {};\n\n return (\n <SelectComponent\n isMulti\n inputId={inputId}\n inputValue={inputValue}\n onChange={handleChange}\n onInputChange={handleInputChange}\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n classes={classes}\n components={components}\n styles={styles}\n menuPlacement={menuPlacement}\n loadOptions={getOptions}\n {...labelProps}\n {...reactSelectProps}\n />\n );\n}\n\nMultiSelect.defaultProps = {\n creatable: false,\n cacheOptions: true,\n components: {},\n classes: {},\n placeholder: '',\n loadingIndicator: false,\n onInputChange: () => {},\n onChange: () => {}\n};\n\nMultiSelect.propTypes = {\n /**\n * Async creatable multi select with optional placeholder, shrink-label, non-closing menu and options with checkboxes.\n * Based on react-select/creatable and react-select/async.\n * See react-select docs: https://react-select.com\n *\n * Below are listed only props used in the MultiSelect component. Check https://react-select.com/props first.\n * */\n\n /** Ability to create values. React-select/async-creatable is used internally */\n creatable: PropTypes.bool,\n /** True for enabling cache. Recommended. */\n cacheOptions: PropTypes.bool,\n defaultOptions: PropTypes.bool,\n /** Array of selected options. */\n value: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n /** Way to receive updated values */\n onChange: PropTypes.func,\n /** Way to receive updated inputValue */\n onInputChange: PropTypes.func,\n /** Input placeholder. Will not be shown if the label prop is specified */\n placeholder: PropTypes.string,\n /** Floating label from @material-ui/core/TextField component */\n label: PropTypes.string,\n /** Enable to show default react-select's indicator */\n loadingIndicator: PropTypes.bool,\n /** You could redefine any of these components */\n components: PropTypes.shape({\n ClearIndicator: PropTypes.func,\n Control: PropTypes.func,\n DropdownIndicator: PropTypes.func,\n DownChevron: PropTypes.func,\n CrossIcon: PropTypes.func,\n Group: PropTypes.func,\n GroupHeading: PropTypes.func,\n IndicatorsContainer: PropTypes.func,\n IndicatorSeparator: PropTypes.func,\n Input: PropTypes.func,\n LoadingIndicator: PropTypes.func,\n Menu: PropTypes.func,\n MenuList: PropTypes.func,\n MenuPortal: PropTypes.func,\n LoadingMessage: PropTypes.func,\n NoOptionsMessage: PropTypes.func,\n MultiValue: PropTypes.func,\n MultiValueContainer: PropTypes.func,\n MultiValueLabel: PropTypes.func,\n MultiValueRemove: PropTypes.func,\n Option: PropTypes.func,\n Placeholder: PropTypes.func,\n SelectContainer: PropTypes.func,\n SingleValue: PropTypes.func,\n ValueContainer: PropTypes.func\n }),\n /** Classes are passed to mui skin components. Provided classes will be merged with existing ones. */\n classes: PropTypes.shape({\n control: PropTypes.string,\n valueContainer: PropTypes.string,\n multiValue: PropTypes.string,\n noOptionsMessage: PropTypes.string,\n singleValue: PropTypes.string,\n placeholder: PropTypes.string,\n menu: PropTypes.string,\n clearIndicator: PropTypes.string,\n dropdownIndicator: PropTypes.string,\n option: PropTypes.string,\n 'option--selected': PropTypes.string,\n label: PropTypes.string\n }),\n /**\n * React-select's way to customise style. Could be used to style default react-select components.\n * In other cases better to use classes and components props\n * */\n styles: PropTypes.shape({\n clearIndicator: PropTypes.func,\n container: PropTypes.func,\n control: PropTypes.func,\n dropdownIndicator: PropTypes.func,\n group: PropTypes.func,\n groupHeading: PropTypes.func,\n indicatorsContainer: PropTypes.func,\n indicatorSeparator: PropTypes.func,\n input: PropTypes.func,\n loadingIndicator: PropTypes.func,\n loadingMessage: PropTypes.func,\n menu: PropTypes.func,\n menuList: PropTypes.func,\n menuPortal: PropTypes.func,\n multiValue: PropTypes.func,\n multiValueLabel: PropTypes.func,\n multiValueRemove: PropTypes.func,\n noOptionsMessage: PropTypes.func,\n option: PropTypes.func,\n placeholder: PropTypes.func,\n singleValue: PropTypes.func,\n valueContainer: PropTypes.func\n }),\n /** Props from https://material-ui.com/api/text-field/ */\n TextFieldProps: PropTypes.object /* eslint-disable-line react/forbid-prop-types */,\n getOptions: PropTypes.func,\n menuPlacement: PropTypes.string,\n menuPortalTarget: PropTypes.object,\n getOptionValue: PropTypes.func,\n isSearchable: PropTypes.bool,\n inputRef: PropTypes.shape({current: PropTypes.object})\n};\n\nexport default MultiSelect;\n","import MultiSelect from './MultiSelect';\n\nexport default MultiSelect;\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n width: '64px',\n paddingTop: '8px',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)'\n },\n active: {\n backgroundColor: fade(theme.palette.primary.main, 0.12),\n color: theme.palette.primary.main,\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n height: '42px',\n width: '3px',\n backgroundColor: theme.palette.primary.main,\n left: '-8px',\n borderRadius: '0 6px 6px 0'\n }\n },\n buttonWrapper: {\n position: 'relative',\n width: '48px',\n height: '44px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '6px',\n margin: '2px 8px',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {VFC, ElementType} from 'react';\nimport classnames from 'classnames';\nimport {IconButtonProps} from '@material-ui/core/IconButton';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n buttonsProps: {\n icon: ElementType;\n tooltipTitle: string;\n id: number;\n }[];\n classes?: {active?: string; buttonWrapper?: string} & IconButtonProps['classes'];\n activeIndexId: number;\n className?: string;\n onButtonClick: (id: number) => void;\n};\n\nexport const SideButtonsPanel: VFC<Props> = ({buttonsProps, activeIndexId, className, onButtonClick, classes = {}}) => {\n const styles = useStyles();\n const {active, buttonWrapper, ...iconButtonClasses} = classes;\n\n return (\n <div className={classnames(styles.container, className)}>\n {buttonsProps.map(({id, ...buttonProps}) => {\n return (\n <SmallIconButtonWithTooltip\n {...buttonProps}\n classes={iconButtonClasses}\n size=\"S\"\n key={id}\n className={classnames(\n {[classnames(styles.active, active)]: activeIndexId === id},\n styles.buttonWrapper,\n buttonWrapper\n )}\n onClick={() => onButtonClick(id)}\n data-reltio-id={`reltio-profile-right-side-button-${id}`}\n />\n );\n })}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n loadingMessage: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n }\n});\n","import React, {useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {defaultTo, pipe, pluck, prop} from 'ramda';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getAllUsersForTenant, User, utils} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n selectedUsers: string[];\n onChange: (activities: string[]) => void;\n className?: string;\n disableUnderline?: boolean;\n};\n\nconst UserSelector = ({selectedUsers, onChange, className, disableUnderline}: Props) => {\n const styles = useStyles();\n\n const valueToOption = (value: string) => ({value, label: value});\n const prepareValues = (values: string[]) => values.map(valueToOption);\n const filterUsers = (inputValue) => (users) =>\n inputValue ? users.filter((username) => utils.strings.search(username, inputValue)) : users;\n\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n\n const cachedRequest = useRef<Promise<{array: User[]}>>();\n const getOptions = (inputValue) => {\n if (!cachedRequest.current) {\n cachedRequest.current = getAllUsersForTenant({tenant, servicesPath});\n }\n return cachedRequest.current.then(\n pipe(prop('array'), pluck('username'), filterUsers(inputValue), prepareValues)\n );\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('User')}\n </Typography>\n <MultiSelect\n value={prepareValues(selectedUsers)}\n onChange={pipe(defaultTo([]), pluck('value'), onChange)}\n defaultOptions={true}\n getOptions={getOptions}\n TextFieldProps={{\n InputProps: {disableUnderline},\n className: styles.dropDownInput\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default UserSelector;\n","export enum ActivityTypes {\n MODEL_UPDATED = 'MODEL_UPDATED',\n ENTITY_REMOVED = 'ENTITY_REMOVED',\n ENTITY_CREATED = 'ENTITY_CREATED',\n ENTITY_CHANGED = 'ENTITY_CHANGED',\n ENTITIES_MERGED = 'ENTITIES_MERGED',\n ENTITIES_SPLITTED = 'ENTITIES_SPLITTED',\n ENTITY_LOST_MERGE = 'ENTITY_LOST_MERGE',\n RELATIONSHIP_CREATED = 'RELATIONSHIP_CREATED',\n RELATIONSHIP_REMOVED = 'RELATIONSHIP_REMOVED',\n RELATIONSHIP_CHANGED = 'RELATIONSHIP_CHANGED',\n POTENTIAL_MATCHES_FOUND = 'POTENTIAL_MATCHES_FOUND',\n NOT_MATCHES_SET = 'NOT_MATCHES_SET',\n NOT_MATCHES_RESET = 'NOT_MATCHES_RESET',\n PERIODIC_TASK_SCHEDULED = 'PERIODIC_TASK_SCHEDULED',\n ENTITIES_MERGED_MANUALLY = 'ENTITIES_MERGED_MANUALLY',\n POTENTIAL_MATCHES_REMOVED = 'POTENTIAL_MATCHES_REMOVED',\n ENTITIES_MERGED_ON_THE_FLY = 'ENTITIES_MERGED_ON_THE_FLY',\n USER_LOGIN = 'USER_LOGIN',\n USER_LOGOUT = 'USER_LOGOUT',\n USER_SEARCH = 'USER_SEARCH',\n USER_PROFILE_VIEW = 'USER_PROFILE_VIEW',\n COMMENT_ADDED = 'COMMENT_ADDED',\n COMMENT_UPDATED = 'COMMENT_UPDATED',\n COMMENT_DELETED = 'COMMENT_DELETED',\n ANALYTICS_ATTRIBUTES_CHANGED = 'ANALYTICS_ATTRIBUTES_CHANGED',\n SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE = 'SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE',\n GROUP_CREATED = 'GROUP_CREATED',\n GROUP_REMOVED = 'GROUP_REMOVED',\n GROUP_CHANGED = 'GROUP_CHANGED'\n}\n","import {groupBy, ifElse, map, path, pipe, propOr, values, is, isNil, includes} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActivityData, ActivityTypes, DeltaValue} from '../types';\n\nconst getItemDataType = path(['data', 'type']);\n\nexport const getActivityType = (activity: ActivityData) => {\n const {items, label} = activity;\n const [firstItem] = items || [];\n return getItemDataType(firstItem) || label;\n};\n\nexport const isValidActivityType = (type: string): boolean => pipe(values, includes(type))(ActivityTypes);\n\nexport const isValidActivity = pipe(getActivityType, isValidActivityType);\n\nexport const splitActivityByType = (activity: ActivityData) => {\n return pipe(\n propOr([], 'items'),\n groupBy(getItemDataType),\n values,\n ifElse(\n ({length}) => length > 1,\n map((items) => ({\n ...activity,\n items,\n itemsTotal: items.length\n })),\n () => [activity]\n )\n )(activity);\n};\n\nexport const stringifyDeltaValue = (delta: string | Record<string, DeltaValue[]> | DeltaValue | DeltaValue[]) => {\n if (isNil(delta)) {\n return '';\n } else if (typeof delta === 'string') {\n return delta;\n } else if (Array.isArray(delta)) {\n return delta.map(stringifyDeltaValue).join(', ');\n } else if (is(Object, delta)) {\n return 'value' in delta ? stringifyDeltaValue(delta.value) : stringifyDeltaValue(Object.values(delta));\n } else {\n return delta.toString();\n }\n};\n\nexport const getActivityLabel = (type: ActivityTypes) => {\n const labels = {\n [ActivityTypes.COMMENT_ADDED]: i18n.text('Comment added'),\n [ActivityTypes.COMMENT_DELETED]: i18n.text('Comment deleted'),\n [ActivityTypes.COMMENT_UPDATED]: i18n.text('Comment updated'),\n [ActivityTypes.ENTITIES_MERGED]: i18n.text('Profile merged'),\n [ActivityTypes.ENTITIES_MERGED_MANUALLY]: i18n.text('Profile merged manually'),\n [ActivityTypes.ENTITIES_MERGED_ON_THE_FLY]: i18n.text('Profile merged on the fly'),\n [ActivityTypes.ENTITIES_SPLITTED]: i18n.text('Profile un-merged'),\n [ActivityTypes.ENTITY_CHANGED]: i18n.text('Profile updated'),\n [ActivityTypes.ENTITY_CREATED]: i18n.text('Profile created'),\n [ActivityTypes.ENTITY_LOST_MERGE]: i18n.text('Profile lost merge'),\n [ActivityTypes.ENTITY_REMOVED]: i18n.text('Profile removed'),\n [ActivityTypes.GROUP_CHANGED]: i18n.text('Group updated'),\n [ActivityTypes.GROUP_CREATED]: i18n.text('Group created'),\n [ActivityTypes.GROUP_REMOVED]: i18n.text('Group removed'),\n [ActivityTypes.MODEL_UPDATED]: i18n.text('Model was updated'),\n [ActivityTypes.NOT_MATCHES_RESET]: i18n.text('Not matches reset'),\n [ActivityTypes.NOT_MATCHES_SET]: i18n.text('Not matches set'),\n [ActivityTypes.PERIODIC_TASK_SCHEDULED]: i18n.text('Periodic task was scheduled'),\n [ActivityTypes.POTENTIAL_MATCHES_FOUND]: i18n.text('Potential matches found'),\n [ActivityTypes.POTENTIAL_MATCHES_REMOVED]: i18n.text('Potential matches removed'),\n [ActivityTypes.RELATIONSHIP_CHANGED]: i18n.text('Relationship updated'),\n [ActivityTypes.RELATIONSHIP_CREATED]: i18n.text('Relationship created'),\n [ActivityTypes.RELATIONSHIP_REMOVED]: i18n.text('Relationship removed'),\n [ActivityTypes.USER_LOGIN]: i18n.text('Logged in'),\n [ActivityTypes.USER_LOGOUT]: i18n.text('Logged out'),\n [ActivityTypes.USER_PROFILE_VIEW]: i18n.text('Profile viewed'),\n [ActivityTypes.USER_SEARCH]: i18n.text('Searched'),\n [ActivityTypes.ANALYTICS_ATTRIBUTES_CHANGED]: i18n.text('Analytics attribute changed'),\n [ActivityTypes.SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE]: i18n.text('SFDC connector synchronization issue')\n };\n return labels[type] || '';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n dropdownIndicator: {\n transition: 'transform .15s ease'\n },\n inputRoot: {\n fontSize: '14px',\n height: 46\n },\n input: {\n padding: '0 12px 0'\n },\n dateOptionLabel: {\n minWidth: '100px'\n },\n paper: {\n minWidth: '112px'\n }\n});\n","import React, {useCallback, useRef, useState} from 'react';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {DataTypes, formatDataTypeValue} from '@reltio/mdm-sdk';\n\nimport {TextField as TextField} from '@material-ui/core';\nimport {Menu as Menu} from '@material-ui/core';\nimport DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport DateRangePicker from '../../DateRangePicker/DateRangePicker';\nimport {useStyles} from './styles';\n\ntype DateValues = [Date, Date];\ntype Props = {\n values: DateValues;\n onChange: (values: DateValues) => void;\n onFocus?: () => void;\n};\n\nconst localeFormat = moment.localeData().longDateFormat('L');\n\nconst formatValue = (value: Date, placeholder: string) => {\n return isNil(value)\n ? `${placeholder}`\n : `${formatDataTypeValue({dataTypeDefinition: {type: DataTypes.TYPE_ACTIVENESS_DATE}}, value)}`;\n};\n\nconst CustomDateRangeEditor = ({values, onChange, onFocus}: Props) => {\n const placeholder = localeFormat;\n const inputRef = useRef(null);\n const [open, setOpen] = useState(false);\n const styles = useStyles();\n\n const onApply = (values: DateValues) => {\n onChange(values);\n setOpen(false);\n };\n\n const handleToggle = useCallback(() => {\n setOpen((open) => !open);\n onFocus();\n }, [onFocus]);\n\n const onCancel = () => {\n setOpen(false);\n };\n\n return (\n <div className={styles.root}>\n <TextField\n fullWidth\n value={values.map((value) => formatValue(value, placeholder)).join(' \\u2014 ')}\n onClick={handleToggle}\n variant=\"filled\"\n ref={inputRef}\n InputProps={{\n endAdornment: (\n <DropdownIndicatorWithIconButton\n selectProps={{classes: styles, menuIsOpen: open}}\n innerProps={{}}\n />\n ),\n disableUnderline: isNil(values),\n readOnly: true,\n classes: {\n root: styles.inputRoot,\n input: styles.input\n }\n }}\n InputLabelProps={{\n shrink: false\n }}\n placeholder={i18n.text(`${placeholder} \\u2014 ${placeholder}`)}\n />\n <Menu\n variant=\"menu\"\n open={open}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={inputRef.current}\n onClose={onCancel}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{\n autoFocusItem: open,\n style: {width: '100%'}\n }}\n >\n <DateRangePicker\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n values={values}\n onCancel={onCancel}\n onApply={onApply}\n type={DataTypes.TYPE_ACTIVENESS_DATE}\n />\n </Menu>\n </div>\n );\n};\n\nexport default CustomDateRangeEditor;\n","import {useEffect, useState} from 'react';\n\nexport const useSavedState = <T>(getSavedState: () => Promise<T>) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const [savedState, setSavedState] = useState<T | Record<string, never>>({});\n\n useEffect(() => {\n getSavedState()\n .then((savedState) => {\n setSavedState(savedState || {});\n })\n .then((_) => setIsLoaded(true))\n .catch((_) => setIsLoaded(true));\n }, []); // eslint-disable-line\n\n return {isLoaded, savedState};\n};\n","import React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Portal as Portal} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport Snackbar, {SnackbarOrigin} from '@material-ui/core/Snackbar';\n\ntype SnackbarOptions = {\n anchorOrigin?: SnackbarOrigin;\n showDismiss?: boolean;\n};\nconst FIVE_MINUTES = 5 * 60 * 1000;\nexport const useSnackbar = (options: SnackbarOptions = {}) => {\n const {anchorOrigin, showDismiss} = options;\n const [isOpenSnackbar, setIsOpenSnackbar] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = useState('');\n\n const closeSnackbar = useCallback(() => {\n setIsOpenSnackbar(false);\n setSnackbarMessage('');\n }, []);\n\n const showSnackbarMessage = useCallback((message) => {\n setIsOpenSnackbar(true);\n setSnackbarMessage(message);\n }, []);\n\n const SnackbarRenderer = useCallback(() => {\n return (\n <Portal container={document.body}>\n <Snackbar\n open={isOpenSnackbar}\n anchorOrigin={anchorOrigin}\n autoHideDuration={FIVE_MINUTES}\n onClose={closeSnackbar}\n message={snackbarMessage}\n action={\n showDismiss ? (\n <Button color=\"primary\" onClick={closeSnackbar}>\n {i18n.text('Dismiss')}\n </Button>\n ) : undefined\n }\n />\n </Portal>\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpenSnackbar, closeSnackbar, snackbarMessage]);\n\n return {SnackbarRenderer, showSnackbarMessage};\n};\n","import {AttributeType} from '@reltio/mdm-sdk';\n\nexport type ReactGridLayoutItem = {\n i: string;\n x: number;\n y: number;\n w: number;\n h: number;\n minW?: number;\n minH?: number;\n maxW?: number;\n maxH?: number;\n static?: boolean;\n};\n\nexport type ReltioGridLayoutItem = {\n id: string;\n x: number;\n y: number;\n width: number;\n height: number;\n minWidth?: number;\n minHeight?: number;\n maxWidth?: number;\n maxHeight?: number;\n isStatic?: boolean;\n autosizing?: boolean;\n};\n\nexport type AttributeOption = {\n label: string;\n value: string;\n attrType: AttributeType;\n chipLabel: string;\n level: number;\n};\n\nexport enum DateRangeTypes {\n WITHIN = 'within',\n AGO = 'ago',\n BETWEEN = 'between'\n}\n\nexport type DateRangeFilter = {\n type: DateRangeTypes;\n period: [number, string] | [Date, Date];\n};\n\nexport type QueryBuilderAttributeData = {\n title: string;\n pathToTitle: Array<string>;\n fieldName: string;\n entityTypeUri: string;\n attrType: AttributeType;\n uri: string;\n groupName: string;\n filterOptions: Array<string>;\n};\n\nexport type QueryBuilderAttribute = {\n id: string;\n values: Array<unknown>;\n data: QueryBuilderAttributeData;\n filter: string;\n operator: string;\n};\n\nexport type AttributeSelectorItem = {\n attrType: AttributeType;\n entityTypeUri: string;\n fieldName: string;\n groupName: string;\n title: string;\n uri: string;\n children?: AttributeSelectorItem[];\n pathToTitle?: string[];\n};\n\nexport type AttributeSelectorItemsGroup = {\n id?: string;\n title: string;\n attributes: AttributeSelectorItem[];\n};\n\nexport type AttributeSelectionInfo = {\n index: number;\n checked: boolean;\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n};\n\nexport type BasicAttributeSelectorProps = {\n className?: string;\n itemsGroups: AttributeSelectorItemsGroup[];\n value: AttributeSelectorItem;\n onSelect: (selectInfo: AttributeSelectionInfo) => void;\n onRestoreFocus?: () => void;\n onOpenPopup?: () => void;\n getLabel?: (value: {fieldName?: string; pathToTitle?: string[]; title: string}) => string;\n disableRestoreFocus?: boolean;\n disableEnforceFocus?: boolean;\n single?: boolean;\n ungroup?: boolean;\n disabled?: boolean;\n hideCheckBox?: boolean;\n};\nexport enum RequestStates {\n INIT = 'init',\n LOADING = 'loading',\n LOADED = 'loaded',\n ERROR = 'error'\n}\n\nexport type SelectableItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selected?: boolean;\n};\n\nexport type DropDownMenuItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selectable?: boolean;\n selected?: boolean;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n padding: '16px 12px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12);'\n },\n closeButton: {\n marginRight: '12px'\n }\n});\n","import React from 'react';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {SmallIconButton} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n title: React.ReactNode;\n className: string;\n onClose: () => void;\n children?: React.ReactNode;\n};\n\nexport const RightSidePanel = ({title, className, onClose, children}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={className}>\n <div className={styles.header}>\n <SmallIconButton className={styles.closeButton} icon={CloseIcon} onClick={onClose} />\n {title}\n </div>\n {children}\n </div>\n );\n};\n","export enum LegendMode {\n Crosswalk = 'crosswalks',\n Source = 'source',\n Contributor = 'contributor'\n}\n","import {sum, map, pipe, groupBy, toPairs, sort, nth, prop, reduce, last} from 'ramda';\nimport {SankeyLink, SankeyData} from '../../types/SankeyChartData';\n\nconst sumValues = (links: SankeyLink[]): number => pipe(map(prop('value')), sum)(links);\nconst interpolateNumber = (a: number, b: number) => ((a = +a), (b = +b), (t) => a * (1 - t) + b * t);\n\nexport default function Sankey() {\n const lastLinksSize = 22;\n\n let nodeWidth = 24,\n smallestNodeMaxHeight = 15,\n smallestNodeMinHeight = 10,\n nodePadding = 8,\n size = [1, 1] as [number, number];\n\n function sankey({nodes, links}: SankeyData) {\n const graph = {nodes, links};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeBreadths(graph);\n computeNodeDepths(graph);\n computeLinkDepths(graph);\n correctNodesDepth(graph);\n return graph;\n }\n\n sankey.nodeWidth = () => nodeWidth;\n sankey.setNodeWidth = (width: number) => ((nodeWidth = +width), sankey);\n\n sankey.nodePadding = () => nodePadding;\n sankey.setNodePadding = (padding: number) => ((nodePadding = +padding), sankey);\n\n sankey.smallestNodeMaxHeight = () => smallestNodeMaxHeight;\n sankey.setSmallestNodeMaxHeight = (height: number) => ((smallestNodeMaxHeight = +height), sankey);\n\n sankey.smallestNodeMinHeight = () => smallestNodeMinHeight;\n sankey.setSmallestNodeMinHeight = (height: number) => ((smallestNodeMinHeight = +height), sankey);\n\n sankey.size = () => size;\n sankey.setSize = (newSize: [number, number]) => ((size = newSize), sankey);\n\n sankey.update = (graph) => {\n computeLinkDepths(graph);\n return graph;\n };\n\n sankey.link = () => {\n let curvature = 0.5;\n\n function link(d) {\n const lastLine = !d.target.sourceLinks || d.target.sourceLinks.length == 0;\n const addPixels = 0.13;\n const x0 = d.source.x + d.source.dx,\n x1 = d.target.x,\n xi = interpolateNumber(x0, x1),\n x2 = xi(curvature),\n x3 = xi(1 - curvature),\n y0 = d.source.y + d.sy - addPixels,\n y1 = d.target.y + d.ty - addPixels;\n const appendix = !lastLine\n ? `L${x1 + nodeWidth},${y1} L${x1 + nodeWidth},${y1 + d.dy + 2 * addPixels}`\n : '';\n\n return y0 === y1\n ? `M${x0},${y0} \n L${x1},${y1}${appendix} \n L${x1},${y1 + d.dy + 2 * addPixels} \n L${x0},${y0 + d.dy + 2 * addPixels} Z`\n : `M${x0},${y0}\n C${x2},${y0} ${x3},${y1} ${x1},${y1}${appendix} \n L${x1},${y1 + d.dy + 2 * addPixels} \n C${x3},${y1 + d.dy + 2 * addPixels} ${x2},${y0 + d.dy + 2 * addPixels} \n ${x0},${y0 + d.dy + 2 * addPixels} Z`;\n }\n\n link.curvature = function (_) {\n if (!arguments.length) return curvature;\n curvature = +_;\n return link;\n };\n\n return link;\n };\n\n // Populate the sourceLinks and targetLinks for each node.\n function computeNodeLinks({nodes, links}: SankeyData) {\n nodes.forEach((node) => {\n node.sourceLinks = [];\n node.targetLinks = [];\n });\n links.forEach((link) => {\n link.source.sourceLinks.push(link);\n link.target.targetLinks.push(link);\n });\n }\n\n // Compute the value (size) of each node by summing the associated links.\n function computeNodeValues({nodes}: SankeyData) {\n nodes.forEach((node) => {\n node.value = Math.max(sumValues(node.sourceLinks), sumValues(node.targetLinks));\n });\n }\n\n // Iteratively assign the breadth (x-position) for each node.\n // Nodes are assigned the maximum breadth of incoming neighbors plus one;\n // nodes with no incoming links are assigned breadth zero, while\n // nodes with no outgoing links are assigned the maximum breadth.\n function computeNodeBreadths({nodes}: SankeyData) {\n if (!nodes.length) return;\n let remainingNodes = [nodes[0]],\n nextNodes,\n x = 0;\n\n while (remainingNodes.length) {\n nextNodes = [];\n remainingNodes.forEach((node) => {\n node.x = x;\n node.dx = nodeWidth;\n node.targetLinks.forEach((link) => {\n if (nextNodes.indexOf(link.source) < 0) {\n nextNodes.push(link.source);\n }\n });\n });\n remainingNodes = nextNodes;\n ++x;\n }\n\n nodes.forEach((node) => {\n node.x = x - 1 - node.x;\n });\n\n if (x > 2) {\n const w = (size[0] - 2 * nodeWidth - lastLinksSize) / (x - 2);\n nodes.forEach((node) => {\n if (!node.sourceLinks || node.sourceLinks.length == 0) node.x = size[0] - nodeWidth;\n else node.x *= w;\n });\n } else {\n nodes[0].x = size[0] - nodeWidth;\n nodes[1].x = nodes[0].x - lastLinksSize - nodeWidth;\n }\n }\n\n function computeNodeDepths({nodes, links}: SankeyData) {\n const nodesByBreadth = pipe(\n groupBy(prop('x')),\n toPairs,\n sort((a, b) => a[0] - b[0]),\n map(nth(1))\n )(nodes);\n\n //\n initializeNodeDepth();\n resolveCollisions();\n\n const max = pipe(\n map((nodes) => (nodes.length - 1) * nodePadding + sum(map((node) => node.dy, nodes))),\n reduce(Math.max, 0)\n )(nodesByBreadth);\n\n const y1 = (size[1] - max) / 2;\n\n nodesByBreadth.forEach((nodes) => {\n const {y, dy} = last(nodes);\n const y0 = size[1] - (y + dy);\n nodes.forEach((node) => {\n node.y += y0;\n if (y1 > 0) node.y -= y1;\n });\n });\n\n function initializeNodeDepth() {\n let ky = pipe(\n map((nodes) => (size[1] - (nodes.length - 1) * nodePadding) / sumValues(nodes)),\n reduce(Math.min, Infinity)\n )(nodesByBreadth);\n\n const min = pipe(\n map((node) => node.value / (node.targetLinks?.length || 1)),\n reduce(Math.min, Infinity)\n )(nodes);\n\n ky = Math.max(Math.min(ky, smallestNodeMaxHeight / min), smallestNodeMinHeight / min);\n\n nodesByBreadth.forEach((nodes) => {\n nodes.forEach((node, i) => {\n node.y = i;\n node.dy = node.value * ky;\n });\n });\n\n links.forEach((link) => {\n link.dy = link.value * ky;\n });\n }\n\n function resolveCollisions() {\n nodesByBreadth.forEach((nodes) => {\n let node,\n dy,\n y0 = 0,\n i;\n const n = nodes.length;\n\n // Push any overlapping nodes down.\n nodes.sort((a, b) => a.y - b.y);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dy = y0 - node.y;\n if (dy > 0) node.y += dy;\n y0 = node.y + node.dy + nodePadding;\n }\n\n // If the bottommost node goes outside the bounds, push it back up.\n dy = y0 - nodePadding - size[1];\n if (dy > 0) {\n y0 = node.y -= dy;\n\n // Push any overlapping nodes back up.\n for (i = n - 2; i >= 0; --i) {\n node = nodes[i];\n dy = node.y + node.dy + nodePadding - y0;\n if (dy > 0) node.y -= dy;\n y0 = node.y;\n }\n }\n });\n }\n }\n\n function computeLinkDepths({nodes}: SankeyData) {\n const nodesByBreadth = pipe(\n groupBy(prop('x')),\n toPairs,\n sort((a: number, b: number) => a[0] - b[0]),\n map(nth(1))\n )(nodes);\n\n nodesByBreadth.forEach((nodes) => {\n nodes.forEach((node) => {\n if (node.targetLinks?.length) {\n const result = [];\n const linksByUuid = node.targetLinks.map((l) => l.crosswalk.uuid);\n const sourceNodes = [];\n node.targetLinks.forEach(function (l) {\n if (this.indexOf(l.source) == -1) this.push(l.source);\n }, sourceNodes);\n for (let i = 0; i < sourceNodes.length; i++)\n for (let j = 0; j < sourceNodes[i].sourceLinks.length; j++) {\n const index = linksByUuid.indexOf(sourceNodes[i].sourceLinks[j].crosswalk.uuid);\n if (index != -1) result.push(node.targetLinks[index]);\n }\n node.targetLinks = result;\n }\n\n if (node.sourceLinks?.length) {\n const result = [];\n if (node.targetLinks?.length) {\n const linksByUuid = node.sourceLinks.map((l) => l.crosswalk.uuid);\n for (let i = 0; i < node.targetLinks.length; i++) {\n const index = linksByUuid.indexOf(node.targetLinks[i].crosswalk.uuid);\n if (index != -1) result.push(node.sourceLinks[index]);\n }\n }\n\n const resultByUuid = result.map((l) => l.crosswalk.uuid);\n const newSources = node.sourceLinks.filter(function (l) {\n return this.indexOf(l.crosswalk.uuid) == -1;\n }, resultByUuid);\n\n node.sourceLinks = newSources.concat(result);\n if (result.length > 0) {\n let sizeForNewSources = 0;\n for (let i = 0; i < newSources.length; i++) sizeForNewSources += newSources[i].dy;\n node.sizeForNewSources = sizeForNewSources;\n }\n }\n });\n });\n\n nodes.forEach((node) => {\n let sy = 0,\n ty = node.sizeForNewSources || 0;\n delete node.sizeForNewSources;\n node.sourceLinks.forEach((link) => {\n link.sy = sy;\n sy += link.dy;\n });\n node.targetLinks.forEach((link) => {\n link.ty = ty;\n ty += link.dy;\n });\n });\n }\n\n function correctNodesDepth({nodes}: SankeyData) {\n const nodesByBreadth = pipe(\n groupBy(prop('x')),\n toPairs,\n sort((a: number, b: number) => b[0] - a[0]),\n map(nth(1))\n )(nodes);\n\n nodesByBreadth.forEach((nodes) => {\n nodes = nodes.concat().sort((a, b) => a.y - b.y);\n nodes.forEach((node, i) => {\n if (node.sourceLinks?.length) {\n const {target, ty, dy} = last(node.sourceLinks);\n let y0 = target.y + ty + dy - node.dy;\n if (nodes[i - 1]?.x == node.x && y0 < nodes[i - 1]?.y + nodes[i - 1]?.dy + nodePadding)\n y0 = nodes[i - 1].y + nodes[i - 1].dy + nodePadding;\n if (node.y > y0) {\n node.y = y0;\n }\n }\n });\n });\n }\n\n return sankey;\n}\n","import {useMemo} from 'react';\nimport {SankeyData, SankeyNode} from '../../types/SankeyChartData';\nimport sankey from './sankey';\n\ntype Props = {\n width: number;\n height: number;\n data: SankeyData;\n};\n\nconst useSankey = ({data, width, height}: Props) =>\n useMemo(() => {\n if (!width || !height) return {nodes: [], links: []};\n\n const shallowCopy = (data: SankeyData): SankeyData => {\n const safeNodes = data.nodes.map((node) => ({...node}));\n const getSafeNode = (originalNode: SankeyNode) => {\n const index = data.nodes.indexOf(originalNode);\n return safeNodes[index];\n };\n\n const safeLinks = data.links.map((link) => ({\n ...link,\n source: getSafeNode(link.source),\n target: getSafeNode(link.target)\n }));\n return {nodes: safeNodes, links: safeLinks};\n };\n\n const sankeyLayout = sankey()\n .setNodeWidth(14)\n .setNodePadding(20)\n .setSize([height - 2, width - 2]);\n\n const nodeWidth = sankeyLayout.nodeWidth();\n const path = sankeyLayout.link();\n\n const safeData = shallowCopy(data);\n const {nodes, links}: SankeyData = sankeyLayout(safeData);\n\n return {nodes, links, nodeWidth, path};\n }, [data, height, width]);\n\nexport default useSankey;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n tooltipTitle: {\n fontWeight: 500,\n fontSize: '16px',\n lineHeight: '24px',\n letterSpacing: '0.15px',\n marginBottom: '8px',\n userSelect: 'none'\n },\n tooltipRow: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '13px',\n lineHeight: '15px',\n fontWeight: 'normal',\n '&:not(:last-child)': {\n marginBottom: '4px'\n }\n },\n tooltipIcon: {\n fontSize: '18px',\n color: 'rgba(0, 0, 0, 0.54)',\n marginRight: '8px'\n },\n node: {\n stroke: '#000000',\n strokeWidth: 1,\n strokeOpacity: 0.38\n },\n rootNode: {\n transform: 'rotate(90deg)',\n userSelect: 'none',\n fontSize: '13px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {LightArrowTooltip} from '@reltio/components';\nimport CalendarTodayIcon from '@material-ui/icons/CalendarToday';\nimport PersonIcon from '@material-ui/icons/Person';\nimport {useStyles} from './styles';\n\ntype Props = {\n user: string;\n time: number;\n children: React.ReactElement;\n};\n\nexport const MergeTooltip = ({user, time, children}: Props) => {\n const styles = useStyles();\n const tooltipTitle = (\n <div>\n <span className={styles.tooltipTitle}>{i18n.text('Merge details')}</span>\n <div className={styles.tooltipRow}>\n <CalendarTodayIcon className={styles.tooltipIcon} />\n {i18n.date(time, 'L LTS')}\n </div>\n <div className={styles.tooltipRow}>\n <PersonIcon className={styles.tooltipIcon} />\n {user}\n </div>\n </div>\n );\n\n return (\n <LightArrowTooltip title={tooltipTitle} placement={'top'}>\n {children}\n </LightArrowTooltip>\n );\n};\n\nexport default MergeTooltip;\n","import React, {useEffect, useRef, useState} from 'react';\nimport MergeTooltip from './MergeTooltip';\nimport {SankeyNode} from '../../types/SankeyChartData';\nimport {useCrosswalkColor, useCrosswalkHighlight} from '@reltio/components';\nimport {groupBy, prop, pipe, map, head, last, max, min} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n nodeWidth: number;\n node: SankeyNode;\n highlightEnabled: boolean;\n isColored: boolean;\n};\n\nexport const Node = ({node, nodeWidth, highlightEnabled, isColored}: Props) => {\n const styles = useStyles();\n const [labelX, setLabelX] = useState(0);\n const textRef = useRef(null);\n const {\n x,\n y,\n name,\n label,\n targetLinks,\n sourceLinks,\n entity: {crosswalks = [], merges}\n } = node;\n const [firstCrosswalk] = crosswalks;\n const {isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(firstCrosswalk);\n const color = useCrosswalkColor(firstCrosswalk);\n const startNodeHeight = crosswalks?.length\n ? sourceLinks[crosswalks.length - 1].sy + sourceLinks[crosswalks.length - 1].dy\n : 0;\n\n const renderMergeNodes = () => {\n const timeMap = pipe(map(prop('source')), groupBy(prop('time')))(targetLinks);\n\n return merges?.map(({time, user}, index) => {\n const sources = timeMap[time];\n if (!sources) return;\n\n const [start, end] = sources.reduce(\n (acc, {sourceLinks}) => [\n min(head(sourceLinks).ty, acc[0]),\n max(last(sourceLinks).ty + last(sourceLinks).dy, acc[1])\n ],\n [Infinity, 0]\n );\n\n return (\n <MergeTooltip user={user} time={time} key={'node-' + index}>\n <rect\n transform={`translate(0,${start})`}\n height={end - start}\n width={nodeWidth}\n className={styles.node}\n fillOpacity={0.54}\n fill={'#F0F0F0'}\n opacity={highlightEnabled && isDimmed ? 0.38 : 1}\n />\n </MergeTooltip>\n );\n });\n };\n\n useEffect(() => {\n const nodeHeight = node.dy;\n const textWidth = textRef?.current?.clientWidth || 0;\n if (nodeHeight < textWidth) setLabelX(nodeHeight / 2 - textWidth / 2);\n }, []);\n\n return (\n <g transform={`translate(${x},${y})`}>\n {name === 'ROOT' ? (\n <text dy={-5} dx={labelX} ref={textRef} className={styles.rootNode}>\n {label || ''}\n </text>\n ) : (\n <>\n <rect\n height={startNodeHeight}\n width={14}\n className={styles.node}\n fill={isColored ? color : '#F0F0F0'}\n key={'node-main'}\n opacity={highlightEnabled && isDimmed ? 0.19 : 1}\n onMouseEnter={() => {\n if (highlightEnabled) highlightCrosswalk();\n }}\n onMouseLeave={() => {\n if (highlightEnabled) removeHighlight();\n }}\n />\n {!!targetLinks?.length && renderMergeNodes()}\n </>\n )}\n </g>\n );\n};\n\nexport default Node;\n","import React from 'react';\nimport {useCrosswalkColor, useCrosswalkHighlight} from '@reltio/components';\nimport {SankeyLink} from '../../types/SankeyChartData';\n\ntype Props = {\n link: SankeyLink;\n path: string;\n highlightEnabled: boolean;\n isColored: boolean;\n};\n\nexport const Link = ({link, path, highlightEnabled, isColored}: Props) => {\n const {crosswalk} = link;\n const color = useCrosswalkColor(crosswalk);\n const {isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(crosswalk);\n return (\n <path\n d={path}\n fill={isColored ? color : '#F0F0F0'}\n opacity={highlightEnabled && isDimmed ? 0.1 : 1}\n onMouseEnter={() => {\n if (highlightEnabled) highlightCrosswalk();\n }}\n onMouseLeave={() => {\n if (highlightEnabled) removeHighlight();\n }}\n />\n );\n};\n\nexport default Link;\n","import React, {useMemo, useState, useEffect} from 'react';\nimport useSankey from './useSankey';\nimport Node from './Node';\nimport Link from './Link';\nimport {SankeyData} from '../../types/SankeyChartData';\n\ntype Props = {\n width: number;\n height: number;\n data: SankeyData;\n accentContributors?: boolean;\n};\n\nconst SankeyChart = ({width, height, data, accentContributors}: Props) => {\n const [isDragging, setDragging] = useState(false);\n const [previousPageX, setPreviousPageX] = useState(0);\n const [offsetX, setOffsetX] = useState(0);\n const {links, nodes, nodeWidth, path} = useSankey({data, width, height});\n\n useEffect(() => {\n setOffsetX(0);\n setPreviousPageX(0);\n }, [width, height]);\n\n const sankeyNodes = useMemo(\n () =>\n nodes.map((node, index) => (\n <Node\n highlightEnabled={accentContributors}\n isColored={accentContributors}\n node={node}\n nodeWidth={nodeWidth}\n key={`SankeyNode-${index}`}\n />\n )),\n [nodes, accentContributors, nodeWidth, width, height]\n );\n\n const sankeyLinks = useMemo(\n () =>\n links.map((link, index) => (\n <Link\n highlightEnabled={!accentContributors}\n isColored={!accentContributors}\n link={link}\n path={path(link)}\n key={`SankeyLink-${index}`}\n />\n )),\n [accentContributors, links, path]\n );\n\n const extractPositionDelta = (event: React.PointerEvent) => {\n const left = event.pageX;\n const offsetX = left - previousPageX;\n setPreviousPageX(left);\n return offsetX;\n };\n\n const onDown = (event: React.PointerEvent) => {\n event.preventDefault();\n setDragging(true);\n extractPositionDelta(event);\n };\n const onMove = (event: React.PointerEvent) => {\n if (!isDragging) return;\n const left = extractPositionDelta(event);\n setOffsetX(offsetX + left);\n };\n const onUp = () => setDragging(false);\n\n const pointerEvents = isDragging ? 'none' : 'auto';\n const cursor = isDragging ? 'move' : 'default';\n\n return (\n <svg\n width={width}\n height={height}\n cursor={cursor}\n onPointerDown={onDown}\n onPointerMove={onMove}\n onPointerUp={onUp}\n onPointerLeave={onUp}\n >\n <g transform={`translate(${offsetX},${height - 1}) rotate(-90)`} pointerEvents={pointerEvents}>\n <g>{sankeyLinks}</g>\n <g>{sankeyNodes}</g>\n </g>\n </svg>\n );\n};\n\nexport default SankeyChart;\n","import {chain, concat, curry, evolve, filter, map, pipe, uniq} from 'ramda';\nimport {CrosswalkBase, CrosswalkTree, eqCrosswalks} from '@reltio/mdm-sdk';\nimport {SankeyLink, SankeyNode} from '../../types/SankeyChartData';\n\nconst isCrosswalkDisplayed = curry(\n (displayedCrosswalks: CrosswalkBase[], crosswalk: CrosswalkBase) =>\n !displayedCrosswalks || displayedCrosswalks.some(eqCrosswalks(crosswalk))\n);\n\nconst filterDisplayedCrosswalks = curry((displayedCrosswalks: CrosswalkBase[], tree: CrosswalkTree) => {\n return evolve(\n {\n crosswalks: filter(isCrosswalkDisplayed(displayedCrosswalks)),\n merges: map(\n evolve({\n losers: map(filterDisplayedCrosswalks(displayedCrosswalks))\n })\n )\n },\n tree\n );\n});\n\nconst addCrosswalkUniqueId = (tree: CrosswalkTree) => {\n let count = 1;\n const addIdToSubtree = pipe(\n evolve({crosswalks: map((crosswalk) => ({...crosswalk, uuid: count++}))}),\n evolve({\n merges: map(\n evolve({\n losers: map((loser) => addIdToSubtree(loser))\n })\n )\n })\n );\n return addIdToSubtree(tree);\n};\n\nconst processTree = (tree: CrosswalkTree & {label?: string}) => {\n const nodes: SankeyNode[] = [];\n const links: SankeyLink[] = [];\n\n const processSubTree = (tree, parentIndex, time) => {\n const {crosswalks = [], merges = [], uri = '', label} = tree;\n\n nodes.push({entity: tree, name: uri, time, label});\n const index = nodes.length - 1;\n\n const mergesCrosswalks = pipe(\n chain(({losers, time}) => {\n return pipe(\n filter((loser) => loser.crosswalks?.length || loser.merges?.length),\n chain((loser) => processSubTree(loser, index, time))\n )(losers);\n }),\n concat(crosswalks)\n )(merges);\n\n if (parentIndex != -1)\n mergesCrosswalks.forEach((crosswalk) =>\n links.push({\n source: nodes[index],\n target: nodes[parentIndex],\n value: 10,\n crosswalk\n })\n );\n\n return mergesCrosswalks;\n };\n processSubTree(tree, -1, Date.now());\n\n const linkedNodes = pipe(\n chain(({source, target}) => [source, target]),\n uniq\n )(links);\n\n return {nodes: nodes.filter((node) => linkedNodes.includes(node)), links};\n};\n\nexport const getSankeyData = (\n crosswalkTree: CrosswalkTree,\n entityLabel = '',\n displayedCrosswalks?: CrosswalkBase[]\n) => {\n return pipe(\n filterDisplayedCrosswalks(displayedCrosswalks),\n addCrosswalkUniqueId,\n processTree\n )({uri: 'ROOT', label: entityLabel, crosswalks: [], merges: [{time: Date.now(), losers: [crosswalkTree]}]});\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n graph: {\n padding: '8px 0px',\n boxSizing: 'border-box',\n height: '100%',\n width: '100%'\n }\n}));\n","import React, {memo} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport SankeyChart from '../SankeyChart/SankeyChart';\nimport {getSankeyData} from './helpers';\nimport {CrosswalkBase, CrosswalkTree} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalkTree: CrosswalkTree;\n entityLabel?: string;\n visibleCrosswalks?: CrosswalkBase[];\n accentContributors?: boolean;\n};\n\nconst CrosswalkTreeView = ({crosswalkTree, entityLabel, visibleCrosswalks, accentContributors}: Props) => {\n const styles = useStyles();\n const sankeyData = getSankeyData(crosswalkTree, entityLabel, visibleCrosswalks);\n\n return (\n <div className={styles.graph}>\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleWidth handleHeight>\n {({width = 0, height = 200}: {width: number; height: number}) => (\n <SankeyChart\n width={width}\n height={height}\n data={sankeyData}\n accentContributors={accentContributors}\n />\n )}\n </ReactResizeDetector>\n </div>\n );\n};\n\nexport default memo(CrosswalkTreeView);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M17 13.138l4.5 4.5-4.5 4.5V18.5h-1.247l-3.488-3.479 1.413-1.414 2.901 2.893H17v-3.362zM17 1.5L21.5 6 17 10.5V7.138h-.421l-11.03 11H2v-2h2.723l11.03-11H17V1.5zm-11.45 4l3.294 3.286-1.414 1.413L4.723 7.5H2v-2h3.55z\",\n id: \"svg1833706754a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg1833706754b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1833706754a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg1833706754b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n isFocused?: boolean;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n paddingRight: '8px',\n '& button + button': {\n marginLeft: '4px'\n }\n },\n focusedIcon: ({isFocused}: StylesProps) => ({\n width: 28,\n height: 28,\n color: isFocused ? '#000' : 'rgba(0, 0, 0, 0.54)',\n borderRadius: 0\n }),\n title: {\n color: theme.palette.text.secondary,\n paddingLeft: '6px',\n paddingRight: '2px'\n },\n uri: {\n lineHeight: '15px',\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport {SmallIconButtonWithTooltip, Spacer} from '@reltio/components';\nimport {getLastUriPart} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype ContributorAction = React.ComponentPropsWithRef<typeof SmallIconButtonWithTooltip> & {\n show: boolean;\n};\n\ntype Props = {\n contributorUri: string;\n isFocused: boolean;\n focusable: boolean;\n onToggleFocus: () => void;\n contributorActions: ContributorAction[];\n};\n\nconst ContributorRow = ({contributorUri, focusable, contributorActions, onToggleFocus, isFocused}: Props) => {\n const styles = useStyles({isFocused});\n return (\n <div className={styles.root}>\n <SmallIconButtonWithTooltip\n size=\"XXS\"\n onClick={() => onToggleFocus()}\n className={styles.focusedIcon}\n icon={focusable && VisibilityIcon}\n disabled={!focusable}\n tooltipTitle={focusable && i18n.text('Focus')}\n />\n <Typography variant={'body2'} className={styles.uri}>\n <span className={styles.title}>{i18n.text('Entity ID:')}</span>\n {getLastUriPart(contributorUri)}\n </Typography>\n <Spacer />\n {contributorActions.map(({show, ...buttonProps}, i) => {\n return show && <SmallIconButtonWithTooltip key={i} size=\"XS\" showForDisabled {...buttonProps} />;\n })}\n </div>\n );\n};\n\nexport default ContributorRow;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n contributorColor: string;\n};\n\nexport const useStyles = makeStyles(() => ({\n root: ({contributorColor}: StylesProps) => ({\n fontSize: '13px',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n border: '1px solid rgba(0, 0, 0, 0.05)',\n paddingLeft: '8px',\n '&:before': {\n content: '\" \"',\n borderLeft: `8px solid ${contributorColor}`,\n position: 'absolute',\n top: -1,\n left: 0,\n bottom: -1\n },\n '& > div + div': {\n marginTop: '1px'\n }\n }),\n editor: {\n padding: '0px 30px 0px 25px'\n }\n}));\n","import React, {useEffect, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {\n CrosswalkEditor,\n SourceCrosswalksRow,\n CrosswalksByTypes,\n CrosswalkType,\n useCrosswalkFocus,\n useHighlightedCrosswalks\n} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {\n Crosswalk,\n DataTenant,\n eqCrosswalks,\n getContributorColor,\n getDataTenantFromCrosswalks,\n RelationCrosswalk\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {chain, find, flatten, head, pipe, pluck, propOr, props, values} from 'ramda';\nimport AddIcon from '@material-ui/icons/Add';\nimport UnmergeIcon from './icons/notMatch.svg';\nimport UnsubscribeIcon from '@material-ui/icons/Delete';\nimport ContributorRow from './ContributorRow/ContributorRow';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n contributorUri: string;\n accentContributor?: boolean;\n crosswalksBySources: {\n source: string;\n crosswalksByTypes: CrosswalksByTypes;\n }[];\n canUnmerge: boolean;\n disableAddCrosswalk: boolean;\n disableEditCrosswalk: boolean;\n disableDeleteCrosswalk: boolean;\n disableUnmergeContributor: boolean;\n onAdd: (event: {contributorCrosswalk: Crosswalk; crosswalk: Omit<Crosswalk, 'uri'>}) => void;\n onDelete: (crosswalkId: string) => void;\n onEdit: (event: {crosswalkId: string; attributeName: string; value?: string}) => void;\n onUnmerge: () => void;\n expandedSources?: string[];\n onToggleSourceExpanded: (sourceUri: string) => void;\n onUnsubscribeContributor: (event: {contributorUri: string; dataTenant: DataTenant; crosswalk: Crosswalk}) => void;\n};\n\nconst LegendTableRow = ({\n className,\n contributorUri,\n accentContributor,\n crosswalksBySources,\n expandedSources,\n canUnmerge,\n disableAddCrosswalk,\n disableEditCrosswalk,\n disableDeleteCrosswalk,\n disableUnmergeContributor,\n onUnmerge,\n onEdit,\n onDelete,\n onAdd,\n onToggleSourceExpanded,\n onUnsubscribeContributor\n}: Props) => {\n const contributorColor = accentContributor ? getContributorColor(contributorUri) : 'rgba(0, 0, 0, 0.38)';\n const styles = useStyles({contributorColor});\n const dataTenants = useSelector(mdm.selectors.getDataTenants);\n\n const ref = useRef(null);\n const [scrollToCrosswalk] = useHighlightedCrosswalks();\n useEffect(() => {\n if (accentContributor && scrollToCrosswalk) {\n const crosswalks = pipe(\n find(({source}) => source === scrollToCrosswalk.type),\n propOr({}, 'crosswalksByTypes'),\n values,\n flatten\n )(crosswalksBySources);\n if (\n crosswalks.some(\n (crosswalk) => eqCrosswalks(scrollToCrosswalk, crosswalk) && crosswalk !== scrollToCrosswalk\n )\n ) {\n ref?.current?.scrollIntoView({behavior: 'smooth'});\n }\n }\n }, [scrollToCrosswalk]);\n\n const [showEditor, setShowEditor] = useState(false);\n\n const contributorCrosswalk: Crosswalk = pipe(\n pluck('crosswalksByTypes'),\n find((crosswalks) => crosswalks[CrosswalkType.Simple].length || crosswalks[CrosswalkType.Empty].length),\n props([CrosswalkType.Simple, CrosswalkType.Empty]),\n flatten,\n head\n )(crosswalksBySources);\n const {toggleCrosswalkFocus, isFocused} = useCrosswalkFocus(contributorCrosswalk);\n\n const allContributorCrosswalks: (Crosswalk | RelationCrosswalk)[] = pipe(\n pluck('crosswalksByTypes'),\n chain(values),\n flatten\n )(crosswalksBySources);\n\n const dataTenantForExternalCrosswalk = getDataTenantFromCrosswalks(allContributorCrosswalks, dataTenants);\n\n const unsubscribeContributor = () =>\n onUnsubscribeContributor({\n contributorUri,\n dataTenant: dataTenantForExternalCrosswalk,\n crosswalk: contributorCrosswalk\n });\n\n const contributorActions = [\n {\n icon: AddIcon,\n tooltipTitle: i18n.text('Add crosswalk'),\n onClick: () => setShowEditor(true),\n disabled: disableAddCrosswalk,\n show: !!contributorCrosswalk\n },\n {\n icon: UnmergeIcon,\n tooltipTitle: i18n.text('Unmerge'),\n onClick: () => onUnmerge(),\n disabled: disableUnmergeContributor,\n show: canUnmerge\n },\n {\n icon: UnsubscribeIcon,\n tooltipTitle: i18n.text('Unsubscribe'),\n onClick: () => unsubscribeContributor(),\n disabled: disableUnmergeContributor,\n show: canUnmerge && !!dataTenantForExternalCrosswalk\n }\n ];\n\n return (\n <div ref={ref} className={classnames(styles.root, className)}>\n <ContributorRow\n contributorUri={contributorUri}\n focusable={accentContributor && !!contributorCrosswalk}\n isFocused={accentContributor && isFocused}\n onToggleFocus={toggleCrosswalkFocus}\n contributorActions={contributorActions}\n />\n {crosswalksBySources.map(({source, crosswalksByTypes}) => (\n <SourceCrosswalksRow\n key={source}\n source={source}\n crosswalksByTypes={crosswalksByTypes}\n showCrosswalkColors={!accentContributor}\n crosswalksFocusEnabled={!accentContributor}\n expanded={expandedSources?.includes(source)}\n disableEditCrosswalk={disableEditCrosswalk}\n disableDeleteCrosswalk={disableDeleteCrosswalk}\n onEdit={onEdit}\n onDelete={onDelete}\n onToggleExpanded={() => onToggleSourceExpanded(source)}\n />\n ))}\n {showEditor && (\n <CrosswalkEditor\n className={styles.editor}\n onAdd={(crosswalk) => onAdd({contributorCrosswalk, crosswalk})}\n onClose={() => setShowEditor(false)}\n />\n )}\n </div>\n );\n};\n\nexport default LegendTableRow;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n table: {\n overflowY: 'auto',\n overflowX: 'hidden',\n paddingLeft: '16px',\n paddingRight: '6px'\n },\n tableRow: {\n '& + &': {\n marginTop: '10px'\n },\n margin: 'auto',\n maxWidth: '448px'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n AttributeType,\n checkCanCreateCrosswalk,\n checkCanDeleteCrosswalk,\n checkCanEditCrosswalk,\n checkMetadataPermission,\n Contributor,\n CrosswalkBase,\n Entity,\n getEntityType,\n Metadata,\n MetadataPermissions,\n TEntityType\n} from '@reltio/mdm-sdk';\nimport {AddCrosswalkEvent, DeleteCrosswalkEvent, EditCrosswalkEvent, noop} from '@reltio/components';\nimport {buildTableRowsData, collectVisibleCrosswalks} from './helpers';\nimport LegendTableRow from './LegendTableRow/LegendTableRow';\nimport {append, assoc, evolve, has, ifElse, includes, pipe, unless, without} from 'ramda';\nimport {UnsubscribeContributorEvent} from '../../types';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n contributors: Contributor[];\n accentContributors?: boolean;\n selectedAttributeTypes?: AttributeType[];\n onChangeVisibleCrosswalks: (visibleCrosswalks: CrosswalkBase[]) => void;\n readOnly?: boolean;\n canUnmerge: boolean;\n onAddCrosswalk?: (event: AddCrosswalkEvent) => void;\n onEditCrosswalk?: (event: EditCrosswalkEvent) => void;\n onDeleteCrosswalk?: (event: DeleteCrosswalkEvent) => void;\n onUnmergeContributor?: (contributorUri: string) => void;\n onUnsubscribeContributor?: (event: UnsubscribeContributorEvent & {contributorUri: string}) => void;\n};\n\nconst LegendTable = ({\n accentContributors,\n entity,\n contributors,\n selectedAttributeTypes,\n onChangeVisibleCrosswalks,\n readOnly,\n canUnmerge,\n onAddCrosswalk = noop,\n onEditCrosswalk = noop,\n onDeleteCrosswalk = noop,\n onUnmergeContributor = noop,\n onUnsubscribeContributor = noop\n}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityType: TEntityType = getEntityType(metadata, entity.type);\n\n const styles = useStyles();\n\n const rowsData = useMemo(() => buildTableRowsData(entity, contributors, selectedAttributeTypes), [\n entity,\n contributors,\n selectedAttributeTypes\n ]);\n const [expandedByContributor, setExpandedByContributor] = useState<{[contributorUri: string]: string[]}>({});\n const visibleCrosswalks = useMemo(() => collectVisibleCrosswalks(rowsData, expandedByContributor), [\n rowsData,\n expandedByContributor\n ]);\n useEffect(() => {\n onChangeVisibleCrosswalks(visibleCrosswalks);\n }, [visibleCrosswalks]);\n\n const handleDelete = useCallback(\n (crosswalkId: string) => {\n onDeleteCrosswalk({entityUri: entity?.uri, crosswalkId});\n },\n [entity?.uri, onDeleteCrosswalk]\n );\n\n const handleEdit = useCallback(\n (params: Omit<EditCrosswalkEvent, 'entityUri'>) => {\n onEditCrosswalk({...params, entityUri: entity?.uri});\n },\n [entity?.uri, onEditCrosswalk]\n );\n\n return (\n <div className={styles.table}>\n {rowsData.map(({contributorUri, crosswalksBySources}) => {\n return (\n <LegendTableRow\n key={contributorUri}\n className={styles.tableRow}\n canUnmerge={canUnmerge}\n contributorUri={contributorUri}\n accentContributor={accentContributors}\n crosswalksBySources={crosswalksBySources}\n disableAddCrosswalk={readOnly || !checkCanCreateCrosswalk(entityType)}\n disableEditCrosswalk={readOnly || !checkCanEditCrosswalk(entityType)}\n disableDeleteCrosswalk={readOnly || !checkCanDeleteCrosswalk(entityType)}\n disableUnmergeContributor={\n readOnly || !checkMetadataPermission(MetadataPermissions.UNMERGE, entityType)\n }\n onAdd={(params) => onAddCrosswalk({...params, entity})}\n onDelete={handleDelete}\n onEdit={handleEdit}\n onUnmerge={() => onUnmergeContributor(contributorUri)}\n onUnsubscribeContributor={onUnsubscribeContributor}\n expandedSources={expandedByContributor[contributorUri]}\n onToggleSourceExpanded={(sourceUri: string) => {\n setExpandedByContributor(\n pipe(\n unless(has(contributorUri), assoc(contributorUri, [])),\n evolve({\n [contributorUri]: ifElse(\n includes(sourceUri),\n without([sourceUri]),\n append(sourceUri)\n )\n })\n )\n );\n }}\n />\n );\n })}\n </div>\n );\n};\n\nexport default memo(LegendTable);\n","import {\n AttributeType,\n Contributor,\n Crosswalk,\n Entity,\n eqCrosswalks,\n getRelationCrosswalks,\n isEmptyValue,\n RelationCrosswalk\n} from '@reltio/mdm-sdk';\nimport {chain, filter, map, pipe} from 'ramda';\nimport {CrosswalksByTypes, CrosswalkType, groupCrosswalksByTypesAndSources} from '@reltio/components';\n\ntype TableRow = {\n contributorUri: string;\n crosswalksBySources: {\n source: string;\n crosswalksByTypes: CrosswalksByTypes;\n }[];\n};\n\nexport const buildTableRowsData = (\n entity: Entity,\n contributors: Contributor[],\n selectedAttributeTypes: AttributeType[] = []\n): TableRow[] => {\n const entityCrosswalks: Crosswalk[] = entity.crosswalks;\n const relationCrosswalks: RelationCrosswalk[] = getRelationCrosswalks(entity);\n return contributors\n .filter((contributor) => !isEmptyValue(contributor.crosswalks))\n .map(({uri, crosswalks}) => {\n const crosswalksBySources = pipe(\n map((crosswalk) => {\n if (crosswalk.ownerType === 'relation') {\n const relationCrosswalk = relationCrosswalks.find(eqCrosswalks(crosswalk));\n return relationCrosswalk && {ownerType: 'relation', ...relationCrosswalk};\n } else {\n const entityCrosswalk = entityCrosswalks.find(eqCrosswalks(crosswalk));\n return entityCrosswalk && {ownerType: 'entity', ...entityCrosswalk};\n }\n }),\n filter((crosswalk) => !!crosswalk),\n groupCrosswalksByTypesAndSources(entity.type, selectedAttributeTypes)\n )(crosswalks);\n\n return {contributorUri: uri, crosswalksBySources};\n })\n .filter(({crosswalksBySources}) => crosswalksBySources.length > 0);\n};\n\nexport const collectVisibleCrosswalks = (\n rowsData: TableRow[],\n expandedByContributor: {[contributorUri: string]: string[]}\n) => {\n return rowsData.reduce((acc, {contributorUri, crosswalksBySources}) => {\n const visibleCrosswalks = chain(({source, crosswalksByTypes}) => {\n const isExpandedSource = expandedByContributor[contributorUri]?.includes(source);\n return crosswalksByTypes[CrosswalkType.Simple]\n .concat(crosswalksByTypes[CrosswalkType.Empty])\n .concat(isExpandedSource ? crosswalksByTypes[CrosswalkType.Dependent] : []);\n }, crosswalksBySources);\n return acc.concat(visibleCrosswalks);\n }, []);\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n '& + &': {\n marginLeft: '16px'\n }\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n color: '#666666',\n marginBottom: '7px'\n },\n hintIcon: {\n width: '16px',\n height: '16px',\n verticalAlign: 'middle'\n },\n graph: {\n width: '400px',\n height: '300px',\n borderRadius: '8px',\n background: 'rgba(0, 0, 0, 0.03)',\n border: '1px solid rgba(0, 0, 0, 0.03)',\n position: 'relative'\n },\n checkedIcon: {\n position: 'absolute',\n height: '20px',\n width: '20px',\n right: '10px',\n top: '10px',\n color: theme.palette.primary.main\n },\n selectedTree: {\n border: `1px solid ${theme.palette.primary.main}`,\n background: 'rgba(0, 114, 206, 0.05)'\n }\n}));\n","import React, {useCallback} from 'react';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport InfoIcon from '@material-ui/icons/Info';\nimport {CrosswalksDisplayProvider, noop} from '@reltio/components';\nimport {\n CrosswalkBase,\n CrosswalkTree,\n getCrosswalkColor as getUniqueCrosswalkColor,\n getCrosswalkId\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport CrosswalkTreeView from '../CrosswalkTreeView/CrosswalkTreeView';\nimport {useStyles} from './styles';\n\ntype Props = {\n coloredCrosswalks: string[];\n crosswalkTree: CrosswalkTree;\n selected: boolean;\n title: string;\n onSelect?: () => void;\n};\n\nexport const SelectableTree = ({coloredCrosswalks, crosswalkTree, selected, title, onSelect = noop}: Props) => {\n const styles = useStyles();\n const getCrosswalkColor = useCallback(\n (crosswalk: CrosswalkBase) => {\n return coloredCrosswalks.includes(crosswalk.uri)\n ? getUniqueCrosswalkColor(getCrosswalkId(crosswalk))\n : '#CACCD1';\n },\n [coloredCrosswalks]\n );\n return (\n <CrosswalksDisplayProvider getCrosswalkColor={getCrosswalkColor}>\n <div className={styles.container} onClick={onSelect}>\n <span className={styles.title}>\n {title} <InfoIcon className={styles.hintIcon} />\n </span>\n <div className={classnames(styles.graph, {[`${styles.selectedTree}`]: selected})}>\n {selected && <CheckCircleIcon className={styles.checkedIcon} />}\n <CrosswalkTreeView crosswalkTree={crosswalkTree} />\n </div>\n </div>\n </CrosswalksDisplayProvider>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n dialogContainer: {\n maxWidth: 'unset'\n },\n dialogTitle: {\n padding: '13px 16px 0 16px',\n fontWeight: 500,\n fontSize: '20px',\n lineHeight: '23px',\n letterSpacing: '0.25px'\n },\n dialogContent: {\n display: 'flex',\n flexDirection: 'column',\n padding: '13px 16px 0 16px'\n },\n trees: {\n display: 'flex'\n },\n uri: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.primary,\n marginBottom: '15px'\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.secondary,\n paddingRight: '2px'\n }\n}));\n","import React, {useCallback, 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 {DialogTitle as DialogTitle} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SelectableTree} from '../SelectableTree/SelectableTree';\nimport {\n collectCrosswalksFromContributor,\n Contributor,\n CrosswalkTree,\n getLastUriPart,\n UnmergeOperation\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n contributor: Contributor;\n crosswalkTree: CrosswalkTree;\n canUnmerge?: boolean;\n onClose: () => void;\n onUnmergeContributor: (operationType: UnmergeOperation) => void;\n};\n\nexport const UnmergeDialog = ({canUnmerge, contributor, crosswalkTree, onClose, onUnmergeContributor}: Props) => {\n const styles = useStyles();\n\n const [unmergeOperation, setUnmergeOperation] = useState(UnmergeOperation.Unmerge);\n\n const getColoredCrosswalks = useCallback(\n (includeMerges: boolean) => collectCrosswalksFromContributor(contributor, includeMerges).map(({uri}) => uri),\n [contributor]\n );\n\n const unmergeContributor = () => {\n onUnmergeContributor(unmergeOperation);\n onClose();\n };\n\n return (\n <Dialog open={true} onClose={onClose} classes={{paper: styles.dialogContainer}}>\n <DialogTitle classes={{root: styles.dialogTitle}}>{i18n.text('Unmerge')}</DialogTitle>\n <DialogContent classes={{root: styles.dialogContent}}>\n <Typography variant={'body2'} className={styles.uri}>\n <span className={styles.title}>{i18n.text('Entity URI:')}</span>\n {getLastUriPart(contributor.uri).toUpperCase()}\n </Typography>\n <div className={styles.trees}>\n <SelectableTree\n onSelect={() => setUnmergeOperation(UnmergeOperation.Unmerge)}\n selected={unmergeOperation === UnmergeOperation.Unmerge}\n title={i18n.text('Unmerge')}\n crosswalkTree={crosswalkTree}\n coloredCrosswalks={getColoredCrosswalks(true)}\n />\n {contributor.merges && contributor.uri !== crosswalkTree.uri && (\n <SelectableTree\n onSelect={() => setUnmergeOperation(UnmergeOperation.TreeUnmerge)}\n selected={unmergeOperation === UnmergeOperation.TreeUnmerge}\n title={i18n.text('Tree unmerge')}\n crosswalkTree={crosswalkTree}\n coloredCrosswalks={getColoredCrosswalks(false)}\n />\n )}\n </div>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}>{i18n.text('Cancel')}</Button>\n <Button disabled={!canUnmerge} onClick={unmergeContributor} color=\"primary\">\n {i18n.text('Unmerge')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n dialogContainer: {\n maxWidth: 'unset'\n },\n dialogTitle: {\n padding: '13px 16px 0 16px',\n fontWeight: 500,\n fontSize: '20px',\n lineHeight: '23px',\n letterSpacing: '0.25px'\n },\n dialogContent: {\n display: 'flex',\n flexDirection: 'column',\n padding: '13px 16px 0 16px'\n },\n uri: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.primary,\n marginBottom: '15px'\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.secondary,\n paddingRight: '2px'\n }\n}));\n","import React, {useMemo} 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 {DialogTitle as DialogTitle} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SelectableTree} from '../SelectableTree/SelectableTree';\nimport {collectCrosswalksFromContributor, Contributor, CrosswalkTree, getLastUriPart} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n contributor: Contributor;\n crosswalkTree: CrosswalkTree;\n canUnsubscribe?: boolean;\n onClose: () => void;\n onUnsubscribeContributor: () => void;\n};\n\nexport const UnsubscribeDialog = ({\n canUnsubscribe,\n contributor,\n crosswalkTree,\n onClose,\n onUnsubscribeContributor\n}: Props) => {\n const styles = useStyles();\n\n const coloredCrosswalks = useMemo(() => collectCrosswalksFromContributor(contributor, true).map(({uri}) => uri), [\n contributor\n ]);\n\n const unsubscribeContributor = () => {\n onUnsubscribeContributor();\n onClose();\n };\n\n return (\n <Dialog open={true} onClose={onClose} classes={{paper: styles.dialogContainer}}>\n <DialogTitle classes={{root: styles.dialogTitle}}>{i18n.text('Unsubscribe')}</DialogTitle>\n <DialogContent classes={{root: styles.dialogContent}}>\n <Typography variant={'body2'} className={styles.uri}>\n <span className={styles.title}>{i18n.text('Entity URI:')}</span>\n {getLastUriPart(contributor.uri).toUpperCase()}\n </Typography>\n <SelectableTree\n selected\n title={i18n.text('Unsubscribe')}\n crosswalkTree={crosswalkTree}\n coloredCrosswalks={coloredCrosswalks}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}>{i18n.text('Cancel')}</Button>\n <Button disabled={!canUnsubscribe} onClick={unsubscribeContributor} color=\"primary\">\n {i18n.text('Unsubscribe')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n height: '100%'\n },\n modeSwitcher: {\n backgroundColor: theme.palette.background.paper,\n marginTop: '8px'\n },\n infoIcon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n hint: {\n color: theme.palette.text.secondary,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n alignSelf: 'flex-start',\n margin: '5px 12px 10px 12px'\n },\n hintText: {\n fontSize: '12px',\n lineHeight: '16px'\n },\n crosswalksList: {\n height: '100%',\n width: 'calc(100% - 24px)',\n margin: '8px 12px',\n background: theme.palette.divider,\n opacity: 0.2\n },\n pane: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n resizablePanesWrapper: {\n flexGrow: 1,\n width: '100%'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport InfoIcon from '@material-ui/icons/Info';\nimport i18n from 'ui-i18n';\nimport {isEmpty} from 'ramda';\nimport {\n AttributeType,\n calculateCrosswalkTreeDeep,\n Contributor,\n Crosswalk,\n CrosswalkBase,\n CrosswalkTree,\n DataTenant,\n Entity,\n getLabel,\n UnmergeOperation\n} from '@reltio/mdm-sdk';\nimport {\n AddCrosswalkEvent,\n DeleteCrosswalkEvent,\n EditCrosswalkEvent,\n ModeSwitcher,\n noop,\n ResizablePanes\n} from '@reltio/components';\nimport {LegendMode, UnmergeContributorEvent, UnsubscribeContributorEvent} from '../../types';\nimport CrosswalkTreeView from '../CrosswalkTreeView/CrosswalkTreeView';\nimport LegendTable from '../LegendTable/LegendTable';\nimport {UnmergeDialog} from '../UnmergeDialog/UnmergeDialog';\nimport {UnsubscribeDialog} from '../UnsubscribeDialog/UnsubscribeDialog';\n\nimport {useStyles} from './styles';\n\nexport const DEFAULT_LINK_HEIGHT = 60;\nexport const MIN_PANE1_SIZE = 170;\nexport const MIN_PANE2_SIZE = 170;\n\ntype Props = {\n activeMode: LegendMode;\n onChangeMode: (mode: LegendMode) => void;\n crosswalkTree: CrosswalkTree;\n entity: Entity;\n contributors: Contributor[];\n selectedAttributeTypes?: AttributeType[];\n readOnly?: boolean;\n onAddCrosswalk?: (event: AddCrosswalkEvent) => void;\n onEditCrosswalk?: (event: EditCrosswalkEvent) => void;\n onDeleteCrosswalk?: (event: DeleteCrosswalkEvent) => void;\n onUnmergeContributor?: (event: UnmergeContributorEvent) => void;\n onUnsubscribeContributor?: (event: UnsubscribeContributorEvent) => void;\n};\n\nconst LegendView = ({\n activeMode,\n contributors,\n crosswalkTree,\n entity,\n onChangeMode,\n onUnmergeContributor = noop,\n onUnsubscribeContributor = noop,\n ...tableProps\n}: Props) => {\n const styles = useStyles();\n const viewRef = useRef<HTMLDivElement>();\n const [paneSize, setPaneSize] = useState(MIN_PANE1_SIZE);\n const handlePaneSizeChange = useCallback(({percentageSize}) => setPaneSize(percentageSize), []);\n\n const [contributorForUnmerge, setContributorForUnmerge] = useState<string>();\n const [unsubscribeInfo, setUnsubscribeInfo] = useState<{\n contributorUri: string;\n dataTenant: DataTenant;\n crosswalk: Crosswalk;\n }>();\n\n const crosswalkTreeDeep = useMemo(() => calculateCrosswalkTreeDeep(crosswalkTree), [crosswalkTree]);\n const canUnmerge = crosswalkTreeDeep > 1;\n\n useEffect(() => {\n const height = Math.max(MIN_PANE1_SIZE, crosswalkTreeDeep * DEFAULT_LINK_HEIGHT);\n const maxPaneHeight = viewRef.current?.clientHeight - MIN_PANE2_SIZE;\n setPaneSize(Math.min(maxPaneHeight, height));\n }, [crosswalkTreeDeep]);\n\n const modes = useMemo(\n () => [\n {\n id: LegendMode.Crosswalk,\n title: i18n.text('Crosswalk')\n },\n {\n id: LegendMode.Source,\n title: i18n.text('Source')\n },\n {\n id: LegendMode.Contributor,\n title: i18n.text('Contributor')\n }\n ],\n []\n );\n\n const [visibleCrosswalks, setVisibleCrosswalks] = useState<CrosswalkBase[]>();\n const accentContributors = activeMode === LegendMode.Contributor;\n\n return (\n <div className={styles.root} ref={viewRef}>\n {contributorForUnmerge && (\n <UnmergeDialog\n canUnmerge={canUnmerge}\n onClose={() => setContributorForUnmerge(null)}\n onUnmergeContributor={(operationType: UnmergeOperation) => {\n onUnmergeContributor({\n entityUri: entity.uri,\n contributorUri: contributorForUnmerge,\n operationType\n });\n }}\n crosswalkTree={crosswalkTree}\n contributor={contributors.find(({uri}) => uri === contributorForUnmerge)}\n />\n )}\n {unsubscribeInfo && (\n <UnsubscribeDialog\n canUnsubscribe={canUnmerge}\n onClose={() => setUnsubscribeInfo(null)}\n onUnsubscribeContributor={() =>\n onUnsubscribeContributor({\n dataTenant: unsubscribeInfo.dataTenant,\n crosswalk: unsubscribeInfo.crosswalk\n })\n }\n crosswalkTree={crosswalkTree}\n contributor={contributors.find(({uri}) => uri === unsubscribeInfo.contributorUri)}\n />\n )}\n <ModeSwitcher<LegendMode>\n modes={modes}\n modeId={activeMode}\n className={styles.modeSwitcher}\n onChange={onChangeMode}\n />\n <ResizablePanes\n className={styles.resizablePanesWrapper}\n orientation=\"horizontal\"\n size={paneSize}\n minSize={MIN_PANE1_SIZE}\n maxSize={-MIN_PANE2_SIZE}\n allowResize\n onChange={handlePaneSizeChange}\n >\n <div className={styles.pane}>\n {crosswalkTree && !isEmpty(visibleCrosswalks) && (\n <CrosswalkTreeView\n entityLabel={getLabel(entity?.label)}\n crosswalkTree={crosswalkTree}\n visibleCrosswalks={visibleCrosswalks}\n accentContributors={accentContributors}\n />\n )}\n </div>\n <div className={styles.pane}>\n <div className={styles.hint}>\n <InfoIcon className={styles.infoIcon} />\n <span className={styles.hintText}>\n {i18n.text('You can drag a crosswalk to add values to attributes swimlanes')}\n </span>\n </div>\n {entity && (\n <LegendTable\n onUnmergeContributor={setContributorForUnmerge}\n onUnsubscribeContributor={setUnsubscribeInfo}\n accentContributors={accentContributors}\n contributors={contributors}\n entity={entity}\n onChangeVisibleCrosswalks={setVisibleCrosswalks}\n canUnmerge={canUnmerge}\n {...tableProps}\n />\n )}\n </div>\n </ResizablePanes>\n </div>\n );\n};\n\nexport default memo(LegendView);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg4041339336a\",\n masktype: \"alpha\",\n maskUnits: \"userSpaceOnUse\",\n x: \"2\",\n y: \"3\",\n width: \"19\",\n height: \"17\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.5 5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S4.83 6.5 4 6.5 2.5 5.83 2.5 5zM21 20H8v-2h13v2zM8 10h13V8H8v2zm0-4V4h13v2H8zm0 10h13v-2H8v2zm-2.5.5v-3h-3v3h3z\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg4041339336a)\"\n}, React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n d: \"M0 0h24v24H0z\"\n}))));","import {ErrorPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {getRequestErrorMessage} from '@reltio/mdm-sdk';\n\nexport const showErrorMessage = (error: unknown) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: getRequestErrorMessage(error, i18n.text('Something went wrong'))\n });\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"90\",\n height: \"90\",\n viewBox: \"0 0 90 90\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"45\",\n cy: \"45\",\n r: \"45\",\n fill: \"#0072CE\",\n fillOpacity: \".1\"\n}), React.createElement(\"mask\", {\n id: \"svg985456408a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"90\",\n height: \"90\"\n}, React.createElement(\"circle\", {\n cx: \"45\",\n cy: \"45\",\n r: \"45\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg985456408a)\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M-5.625 3.164h90V90h-90V3.164z\",\n fill: \"url(#paint0_linear)\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M66.01 19.992l20.615 20.615v52.337H32.83L18.281 79.131V19.99H66.01z\",\n fill: \"url(#paint1_linear)\"\n}), React.createElement(\"path\", {\n opacity: \".06\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.523 20.39H87.54A2.46 2.46 0 0190 22.853v55.195a2.46 2.46 0 01-2.46 2.46H16.522a2.46 2.46 0 01-2.46-2.46V22.852a2.46 2.46 0 012.46-2.461z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.578 19.688h70.664c.971 0 1.758.787 1.758 1.757v55.196c0 .97-.787 1.757-1.758 1.757H17.578c-.97 0-1.758-.787-1.758-1.757V21.445c0-.97.787-1.758 1.758-1.758z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.046 25.536c0-.583.472-1.055 1.055-1.055h14.633a1.055 1.055 0 110 2.11H38.101a1.055 1.055 0 01-1.055-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.914 29.754c0-.582.472-1.054 1.055-1.054H60.54a1.055 1.055 0 110 2.11H37.969a1.055 1.055 0 01-1.055-1.056z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.046 57.305c0-.583.472-1.055 1.055-1.055h14.633a1.055 1.055 0 110 2.11H38.101a1.055 1.055 0 01-1.055-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.914 61.523c0-.582.472-1.054 1.055-1.054H60.54a1.055 1.055 0 110 2.11H37.969a1.055 1.055 0 01-1.055-1.056z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.046 67.852c0-.583.472-1.055 1.055-1.055h28.696a1.055 1.055 0 110 2.11H38.1a1.055 1.055 0 01-1.055-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.914 72.07c0-.582.472-1.054 1.055-1.054h26.087a1.055 1.055 0 110 2.109H37.97a1.055 1.055 0 01-1.055-1.055z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.648 36.21c0-.582.472-1.054 1.054-1.054h28.696a1.055 1.055 0 110 2.11H49.702a1.055 1.055 0 01-1.054-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.516 40.43c0-.583.472-1.055 1.054-1.055h22.572a1.055 1.055 0 110 2.11H49.57a1.055 1.055 0 01-1.054-1.055z\",\n fill: \"#979797\"\n}), React.createElement(\"circle\", {\n cx: \"23.555\",\n cy: \"27.773\",\n r: \"3.164\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.555\",\n cy: \"27.773\",\n r: \"3.164\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"42.188\",\n cy: \"37.266\",\n r: \"2.109\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"42.188\",\n cy: \"47.813\",\n r: \"2.109\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.555\",\n cy: \"59.414\",\n r: \"3.164\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.555\",\n cy: \"69.961\",\n r: \"3.164\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.648 46.758c0-.583.472-1.055 1.054-1.055h28.696a1.055 1.055 0 110 2.11H49.702a1.055 1.055 0 01-1.054-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.516 50.977c0-.583.472-1.055 1.054-1.055h26.088a1.055 1.055 0 110 2.11H49.57a1.055 1.055 0 01-1.054-1.055z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.524 37.969v-2.813h-.703v14.191h3.93v-.703h-3.227v-9.972h3.227v-.703h-3.227z\",\n fill: \"#2B98F0\"\n}), React.createElement(\"path\", {\n opacity: \".54\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M33.423 27.07l-1.242 1.243-1.243-1.243h2.485z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n opacity: \".6\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.578 7.734h65.39a2.11 2.11 0 012.11 2.11v6.328a2.11 2.11 0 01-2.11 2.11h-65.39a2.11 2.11 0 01-2.11-2.11V9.844a2.11 2.11 0 012.11-2.11z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20.39 13.008a2.11 2.11 0 012.11-2.11h24.61a2.11 2.11 0 110 4.22H22.5a2.11 2.11 0 01-2.11-2.11zM52.031 13.008a2.11 2.11 0 012.11-2.11h3.515a2.11 2.11 0 110 4.22h-3.515a2.11 2.11 0 01-2.11-2.11z\",\n fill: \"#979797\"\n})), React.createElement(\"defs\", null, React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: \"-5.625\",\n y1: \"3.164\",\n x2: \"-5.625\",\n y2: \"90\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#FAFAFA\",\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#F4F4F4\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint1_linear\",\n x1: \"93.557\",\n y1: \"63.672\",\n x2: \"54.451\",\n y2: \"27.31\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n height: '100%',\n overflow: 'hidden',\n background: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: '115px'\n },\n info: {\n color: theme.palette.text.secondary,\n fontSize: '16px',\n lineHeight: '24px',\n marginTop: '16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport EmptyIcon from './icons/EmptySources.svg';\n\nimport {useStyles} from './styles';\n\nconst EmptyState = () => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n <EmptyIcon />\n <span className={styles.info}>\n {i18n.text('Please persist your profile to be able to edit crosswalks')}\n </span>\n </div>\n );\n};\n\nexport default EmptyState;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n snackbarMessage: {\n display: 'flex',\n alignItems: 'center'\n },\n snackbarIcon: {\n paddingRight: 16\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getEntityLink, getLabel} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport InfoIcon from '@material-ui/icons/Info';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n message: string;\n};\n\nconst TreeActionSnackbar = ({entity, message}: Props) => {\n const styles = useStyles();\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n const entityLink = getEntityLink({uiPath, uri: entity.uri});\n\n return (\n <div className={styles.snackbarMessage}>\n <InfoIcon className={styles.snackbarIcon} />\n <Typography>\n {getLabel(entity.label)}{' '}\n <Link href={entityLink} target=\"_blank\">\n {i18n.text('lookup profile')}\n </Link>{' '}\n {message}\n </Typography>\n </div>\n );\n};\n\nexport default TreeActionSnackbar;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n sourcesView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflowX: 'hidden',\n overflowY: 'auto',\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n display: 'flex'\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n resizablePanesWrapper: {\n flexGrow: 1,\n height: '100%'\n },\n pane: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n tabs: {\n marginLeft: '1px'\n }\n});\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport {Dispatch} from 'redux';\nimport {connect} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport mdmModule, {HistoryEvent, profile} from '@reltio/mdm-module';\nimport {\n ApiError,\n ApiErrorCode,\n AttributeType,\n collectContributorsFromTree,\n Entity,\n getEntityType,\n Metadata,\n SourcesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {\n AttributesTable,\n CrosswalkDragLayer,\n CrosswalksDisplayProvider,\n ExpandedAttributesProvider,\n HistoryHeader,\n HistoryPanelEmptyState,\n HistoryView,\n ProfileBand,\n ProfileBandHistory,\n ProfileBandNavigation,\n ResizablePanes,\n SideButtonsPanel,\n useDidUpdateEffect,\n useHistory,\n useHistoryEnabled,\n useHistorySlice,\n useModifiedEntity,\n useSavedState,\n useSnackbar\n} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport HistoryIcon from '@material-ui/icons/History';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\nimport LegendView from '../LegendView/LegendView';\nimport {LegendMode, SourcesSavedState} from '../../types';\nimport {useCrosswalkTree} from '../../hooks/useCrosswalkTree';\nimport LegendIcon from './icons/LegendIcon.svg';\nimport {showErrorMessage} from '../../services/errors';\nimport {equals, pipe, pluck, propEq, reject} from 'ramda';\nimport {useCrosswalkTreeActions} from '../../hooks/useCrosswalkTreeActions';\nimport {useCrosswalksDisplay} from '../../hooks/useCrosswalksDisplay';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport {DndProvider} from 'react-dnd';\nimport EmptyState from '../EmptyState/EmptyState';\nimport TreeActionSnackbar from '../TreeActionSnackbar/TreeActionSnackbar';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: SourcesPerspectiveConfig;\n entity: Entity;\n metadata: Metadata;\n saveState: (state: SourcesSavedState) => void;\n getSavedState: () => Promise<SourcesSavedState>;\n dispatch: Dispatch;\n historyEvent: HistoryEvent;\n};\n\nconst MIN_PANE1_SIZE = 480;\nconst MIN_PANE2_SIZE = 480;\nconst MAX_PANE1_SIZE = -MIN_PANE2_SIZE;\nenum ActivePanel {\n Legend,\n History\n}\n\nconst SourcesView = ({config, entity, metadata, getSavedState, saveState, dispatch, historyEvent}: Props) => {\n const styles = useStyles();\n const [activeMode, setActiveMode] = useState(LegendMode.Crosswalk);\n\n const [activeTab, setActiveTab] = useState(0);\n const toggleActive = (newIndex: number) => setActiveTab((active) => (active === newIndex ? null : newIndex));\n const isSidePanelOpen = activeTab !== null;\n\n const isHistoryTabActive = activeTab === ActivePanel.History;\n const {isHistoryEnabled, isProfilePersisted} = useHistoryEnabled({isHistoryTabActive, entity});\n\n const persistedEntity = isProfilePersisted ? entity : null;\n\n const entityUri = persistedEntity?.uri;\n const entityType = getEntityType(metadata, entity?.type);\n\n const {historySlice} = useHistorySlice({entity: persistedEntity, historyEvent});\n\n const [selectedAttrTypes, setSelectedAttrTypes] = useState<AttributeType[]>();\n useDidUpdateEffect(() => {\n setSelectedAttrTypes(undefined);\n }, [historySlice]);\n useDidUpdateEffect(() => {\n setSelectedAttrTypes(undefined);\n }, [entityUri]);\n\n const [paneSize, setPaneSize] = useState(MAX_PANE1_SIZE);\n const handlePaneSizeChange = useCallback(({percentageSize}) => setPaneSize(percentageSize), []);\n\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar({\n anchorOrigin: {vertical: 'top', horizontal: 'center'},\n showDismiss: true\n });\n const {isLoaded, savedState} = useSavedState<SourcesSavedState>(getSavedState);\n const [visibleColumns, setVisibleColumns] = useState<string[]>();\n useEffect(() => {\n if (isLoaded) {\n setVisibleColumns(savedState.visibleColumns);\n }\n }, [isLoaded]); // eslint-disable-line\n useEffect(() => {\n const hasVisibleColumnsChanged = !equals(visibleColumns, savedState.visibleColumns);\n if (isLoaded && hasVisibleColumnsChanged) {\n saveState({visibleColumns});\n }\n }, [visibleColumns]); // eslint-disable-line\n\n const {crosswalkTree, reload: reloadCrosswalkTree} = useCrosswalkTree(historySlice?.aEntity.uri || entityUri);\n const contributors = useMemo(() => collectContributorsFromTree(crosswalkTree), [crosswalkTree]);\n\n const refreshEntity = useCallback(() => {\n entityUri &&\n dispatch(\n profile.entity.actions.loadEntity({\n viewId: config.id,\n uri: entityUri\n })\n );\n }, [entityUri, config, dispatch]);\n\n const refreshData = useCallback(pipe(refreshEntity, reloadCrosswalkTree), [refreshEntity, reloadCrosswalkTree]);\n\n const onShowMessage = useCallback((message: string, entity?: Entity) => {\n showSnackbarMessage(entity ? <TreeActionSnackbar entity={entity} message={message} /> : message);\n }, []);\n\n const {\n modifiedEntity,\n crosswalksMap,\n newlyCreatedAttributes,\n onDeleteAttribute,\n onPinAttribute,\n onIgnoreAttribute,\n onEditAttribute,\n onAddAttribute\n } = useModifiedEntity({\n entity: historySlice?.aEntity || persistedEntity,\n onModify: refreshData,\n onError: showErrorMessage\n });\n\n const {\n addCrosswalk,\n deleteCrosswalk,\n editCrosswalk,\n unmergeContributor,\n unsubscribeContributor\n } = useCrosswalkTreeActions({\n onShowMessage,\n onSuccess: refreshData,\n onError: useCallback(\n (error: ApiError) => {\n showErrorMessage(error);\n if (error.errorCode === ApiErrorCode.CROSSWALK_NOT_FOUND) {\n refreshData();\n }\n },\n [refreshData]\n )\n });\n\n const {\n historyFilter,\n onApplyFilter,\n isLoading,\n historicUris,\n historyWithTotal,\n canLoadMore,\n onLoadMore\n } = useHistory({entity: persistedEntity, enabled: isHistoryEnabled});\n\n const displayProps = useCrosswalksDisplay({activeMode, contributors});\n const tabs = [\n {\n buttonProps: {\n id: ActivePanel.Legend,\n icon: LegendIcon,\n tooltipTitle: i18n.text('Legend')\n },\n title: <Typography variant=\"h6\">{i18n.text('Legend')}</Typography>,\n content: (\n <LegendView\n activeMode={activeMode}\n onChangeMode={setActiveMode}\n entity={historySlice?.aEntity || persistedEntity}\n crosswalkTree={crosswalkTree}\n contributors={contributors}\n selectedAttributeTypes={selectedAttrTypes}\n readOnly={!!historySlice}\n onAddCrosswalk={addCrosswalk}\n onUnmergeContributor={unmergeContributor}\n onUnsubscribeContributor={unsubscribeContributor}\n onEditCrosswalk={editCrosswalk}\n onDeleteCrosswalk={deleteCrosswalk}\n />\n )\n },\n {\n buttonProps: {\n id: ActivePanel.History,\n icon: HistoryIcon,\n tooltipTitle: i18n.text('History')\n },\n title: (\n <HistoryHeader\n total={(historicUris?.length || 0) + 1}\n entityType={entityType}\n filter={historyFilter}\n onApplyFilter={onApplyFilter}\n />\n ),\n content: isProfilePersisted ? (\n <HistoryView\n isLoading={isLoading}\n historyWithTotal={historyWithTotal}\n contributorsUris={historicUris}\n entityUri={entityUri}\n historyEvent={historyEvent}\n onLoadMore={onLoadMore}\n canLoadMore={canLoadMore}\n />\n ) : (\n <HistoryPanelEmptyState />\n )\n }\n ];\n\n return (\n <div className={styles.sourcesView}>\n <CrosswalksDisplayProvider {...displayProps}>\n <DndProvider backend={HTML5Backend}>\n <CrosswalkDragLayer />\n <ResizablePanes\n className={styles.resizablePanesWrapper}\n orientation=\"vertical\"\n size={isSidePanelOpen ? paneSize : '100%'}\n minSize={MIN_PANE1_SIZE}\n maxSize={MAX_PANE1_SIZE}\n allowResize={isSidePanelOpen}\n onChange={handlePaneSizeChange}\n >\n <div className={styles.pane}>\n <ProfileBand entity={historySlice?.aEntity || entity}>\n {historySlice ? <ProfileBandHistory /> : <ProfileBandNavigation />}\n </ProfileBand>\n {isProfilePersisted ? (\n <ExpandedAttributesProvider attributeUris={newlyCreatedAttributes}>\n <AttributesTable\n visibleColumns={visibleColumns}\n onChangeVisibleColumns={setVisibleColumns}\n entity={modifiedEntity}\n crosswalksMap={crosswalksMap}\n selectedAttributeTypes={selectedAttrTypes}\n onSelectAttributeTypes={setSelectedAttrTypes}\n readOnly={!!historySlice}\n onDelete={onDeleteAttribute}\n onPin={onPinAttribute}\n onIgnore={onIgnoreAttribute}\n onEdit={onEditAttribute}\n onAdd={onAddAttribute}\n />\n </ExpandedAttributesProvider>\n ) : (\n <EmptyState />\n )}\n </div>\n <RightSidePanel\n className={styles.pane}\n title={tabs[activeTab]?.title}\n onClose={() => toggleActive(activeTab)}\n >\n {tabs[activeTab]?.content}\n </RightSidePanel>\n </ResizablePanes>\n </DndProvider>\n </CrosswalksDisplayProvider>\n <SideButtonsPanel\n className={styles.tabs}\n buttonsProps={pipe(reject(propEq('hidden', true)), pluck('buttonProps'))(tabs)}\n onButtonClick={toggleActive}\n activeIndexId={activeTab}\n />\n <SnackbarRenderer />\n </div>\n );\n};\n\nconst mapStateToProps = (state) => {\n return {\n entity: mdmModule.selectors.getEntity(state),\n metadata: mdmModule.selectors.getMetadata(state),\n historyEvent: mdmModule.selectors.getHistoryEvent(state)\n };\n};\n\nexport default connect(mapStateToProps)(SourcesView);\n","import {useCallback, useEffect, useState} from 'react';\nimport {getCrosswalkTree, CrosswalkTree} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nexport const useCrosswalkTree = (entityUri: string) => {\n const [crosswalkTree, setCrosswalkTree] = useState<CrosswalkTree>(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n\n const onError = (e) => {\n console.warn('Failed to load crosswalk tree', e);\n setCrosswalkTree(null);\n };\n\n const loadData = useCallback(() => {\n if (entityUri) {\n setIsLoading(true);\n safePromise(getCrosswalkTree({entityUri}))\n .then((results) => {\n setCrosswalkTree(results);\n })\n .catch(onError)\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n setCrosswalkTree(null);\n }\n }, [entityUri]);\n\n useEffect(() => {\n loadData();\n }, [loadData]);\n\n return {isLoading, crosswalkTree, reload: loadData};\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {andThen, pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport {\n Entity,\n unmergeContributor as unmergeContributorRequest,\n unsubscribeEntityFromDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport {useCrosswalkActions, noop} from '@reltio/components';\nimport {UnmergeContributorEvent, UnsubscribeContributorEvent} from '../types';\n\ntype Props = {\n onLoad?: () => void;\n onSuccess?: () => void;\n onError?: (error: unknown) => void;\n onShowMessage?: (message: string, entity?: Entity) => void;\n};\n\nexport const useCrosswalkTreeActions = ({\n onLoad = noop,\n onSuccess = noop,\n onError = noop,\n onShowMessage = noop\n}: Props) => {\n const {addCrosswalk, editCrosswalk, deleteCrosswalk} = useCrosswalkActions({onLoad, onSuccess, onError});\n const dtssPath = useSelector(mdm.selectors.getDtssPath);\n const tenant = useSelector(mdm.selectors.getTenant);\n\n const handleAction = useCallback(\n (request: Promise<unknown>) => {\n onLoad();\n request\n .then(() => {\n onSuccess();\n })\n .catch(onError);\n },\n [onLoad, onError, onSuccess]\n );\n\n const unmergeContributor = useCallback(\n (event: UnmergeContributorEvent) =>\n pipe(\n unmergeContributorRequest,\n andThen((response) => {\n onShowMessage(i18n.text('has been unmerged'), response.b);\n return response;\n }),\n handleAction\n )(event),\n [handleAction, onShowMessage]\n );\n\n const unsubscribeContributor = useCallback(\n ({crosswalk, dataTenant}: UnsubscribeContributorEvent) =>\n pipe(\n unsubscribeEntityFromDataTenantEntity,\n andThen((response) => {\n if (!response.successful) throw new Error(i18n.text('Failed to unsubscribe contributor'));\n return response;\n }),\n handleAction\n )({\n dtssPath,\n value: crosswalk.value,\n type: crosswalk.type,\n sourceTable: crosswalk.sourceTable,\n dataTenant: dataTenant.id,\n customerTenant: tenant\n }),\n [handleAction, dtssPath, tenant]\n );\n\n return {\n addCrosswalk,\n editCrosswalk,\n deleteCrosswalk,\n unmergeContributor,\n unsubscribeContributor\n };\n};\n","import {useCallback, useEffect, useMemo, useState, useRef} from 'react';\nimport {any, concat} from 'ramda';\nimport {LegendMode} from '../types';\nimport {\n Contributor,\n CrosswalkBase,\n debounce,\n eqCrosswalks,\n findContributorForCrosswalk,\n getContributorColor,\n getCrosswalkColor,\n getCrosswalkId,\n getSourceColor\n} from '@reltio/mdm-sdk';\n\ntype Props = {\n activeMode: LegendMode;\n contributors: Contributor[];\n};\n\nexport const useCrosswalksDisplay = ({activeMode, contributors}: Props) => {\n const getCrosswalkColorForActiveMode = useCallback(\n (crosswalk: CrosswalkBase) => {\n switch (activeMode) {\n case LegendMode.Source:\n return getSourceColor(crosswalk.type);\n case LegendMode.Contributor:\n return getContributorColor(findContributorForCrosswalk(contributors, crosswalk)?.uri || '');\n case LegendMode.Crosswalk:\n return getCrosswalkColor(getCrosswalkId(crosswalk));\n }\n },\n [activeMode, contributors]\n );\n const [highlightedCrosswalks, setHighlightedCrosswalks] = useState<CrosswalkBase[]>([]);\n const highlightedCrosswalksCache = useRef([]);\n const applyHighlightedCrosswalks = useCallback(\n debounce(() => {\n setHighlightedCrosswalks([...highlightedCrosswalksCache.current]);\n }, 50),\n []\n );\n const cacheHighlightedCrosswalks = useCallback(\n (arr) => {\n highlightedCrosswalksCache.current = arr;\n applyHighlightedCrosswalks(arr);\n },\n [applyHighlightedCrosswalks]\n );\n\n const setCrosswalkHighlighted = useCallback(\n (crosswalk: CrosswalkBase, highlighted: boolean) => {\n if (!crosswalk) return;\n if (highlighted) {\n if (activeMode === LegendMode.Contributor) {\n const contributor = findContributorForCrosswalk(contributors, crosswalk);\n cacheHighlightedCrosswalks([crosswalk, ...(contributor?.crosswalks || [])]);\n } else {\n cacheHighlightedCrosswalks([crosswalk]);\n }\n } else {\n cacheHighlightedCrosswalks([]);\n }\n },\n [activeMode, cacheHighlightedCrosswalks, contributors]\n );\n\n const [focusedCrosswalks, setFocusedCrosswalks] = useState<CrosswalkBase[]>([]);\n const calculateFocusedCrosswalks = useCallback(\n (prev: CrosswalkBase[], next: CrosswalkBase[]) =>\n concat(\n prev.filter((prevCrosswalk) => !any(eqCrosswalks(prevCrosswalk), next)),\n next.filter((nextCrosswalk) => !any(eqCrosswalks(nextCrosswalk), prev))\n ),\n []\n );\n const toggleCrosswalkFocus = useCallback(\n (crosswalk: CrosswalkBase) => {\n if (!crosswalk) return;\n if (activeMode === LegendMode.Contributor) {\n const contributor = findContributorForCrosswalk(contributors, crosswalk);\n setFocusedCrosswalks((prevValue) =>\n calculateFocusedCrosswalks([crosswalk, ...(contributor?.crosswalks || [])], prevValue)\n );\n } else {\n setFocusedCrosswalks((prevValue) => calculateFocusedCrosswalks([crosswalk], prevValue));\n }\n },\n [activeMode, calculateFocusedCrosswalks, contributors]\n );\n\n useEffect(() => {\n setFocusedCrosswalks([]);\n }, [activeMode]);\n\n return {\n getCrosswalkColor: getCrosswalkColorForActiveMode,\n highlightedCrosswalks: useMemo(() => [...highlightedCrosswalks, ...focusedCrosswalks], [\n highlightedCrosswalks,\n focusedCrosswalks\n ]),\n focusedCrosswalks,\n toggleCrosswalkFocus,\n setCrosswalkHighlighted\n };\n};\n","import React, {useCallback} from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\n\nimport MomentUtils from '@date-io/moment';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {SourcesSavedState} from '../../types';\nimport SourcesView from './SourcesView';\nimport {promisifyCallback, SourcesPerspectiveConfig} from '@reltio/mdm-sdk';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'sourcesPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: SourcesPerspectiveConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n saveState: (state: SourcesSavedState) => void;\n getSavedState: (clb: (state: SourcesSavedState) => void) => void;\n};\n\nconst SourcesPerspective = ({config, store, onResize, saveState, getSavedState}: Props) => {\n const getSavedStatePromisified: () => Promise<SourcesSavedState> = useCallback(promisifyCallback(getSavedState), [\n getSavedState\n ]);\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize?.(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <SourcesView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n )}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default SourcesPerspective;\n","import {SourcesView} from '@reltio/sources';\n\nexport default SourcesView;\n"],"names":["customStyles","input","currentStyles","fontSize","menuPortal","zIndex","useStyles","makeStyles","root","flex","title","paddingBottom","paddingLeft","dropDownInput","width","justifyContent","backgroundColor","borderTop","option","height","noOptionsMessage","entityType","selectedAttributes","className","onChange","disableUnderline","menuPlacement","metadata","useSelector","mdmModule","styles","prepareItems","useCallback","data","level","prevLabel","reduce","acc","item","hidden","chipLabel","label","push","value","uri","attrType","subAttributes","getAttributeTypeSubAttributes","concat","options","useMemo","attributes","classnames","Typography","variant","i18n","MultiSelect","TextFieldProps","InputProps","classes","components","DropdownIndicator","DropdownIndicatorWithIconButton","MultiValue","props","Option","isFocused","isSelected","innerProps","AttributeListItem","checked","labelInText","pipe","defaultTo","menuPortalTarget","document","body","contextSelector","CellRenderer","withContext","TableContext","display","paddingRight","inputNumber","minWidth","marginRight","inputUnit","periods","interval","unit","onFocus","onNumberChange","getValue","parseInt","newValue","onUnitChange","newUnit","TextField","type","inputProps","min","SimpleDropDownSelector","placeholder","capitalize","map","textOverflow","overflow","whiteSpace","padding","lineHeight","borderRadius","fontWeight","entity","size","entityTypeUri","getEntityType","entityTypeColor","getPropWithInheritance","theme","entityTypeLabel","getEntityTypeLabel","ExpandedValueTooltip","placement","style","color","utils","component","profileBandWrapper","flexShrink","profileBand","alignItems","boxShadow","content","minHeight","inactive","background","inactiveBackground","profileIcon","imageProfileIcon","profileInfo","flexDirection","badge","letterSpacing","palette","text","primary","wordBreak","marginTop","secondaryLabel","marginLeft","businessCard","secondary","specialInfo","flexWrap","entityId","cursor","textDecoration","children","showEntityId","handleCopyEntityIdToClipboard","navigator","clipboard","writeText","getEntityId","isNil","getLabel","businessCardText","getBusinessCardAttributesText","isActive","isActiveObject","entityUri","EntityAvatar","key","avatarClassName","imageClassName","EntityTypeBadge","isTempUri","Tooltip","onClick","withMuiSkin","CreatableSelect","innerRef","selectProps","MenuItem","classNames","ref","selected","Checkbox","propTypes","PropTypes","id","onMouseMove","onMouseOver","tabIndex","isRequired","current","top","left","undefined","clearIndicator","spacing","margin","dropdownIndicator","creatable","getOptions","loadingIndicator","componentsProp","classesProp","stylesProp","onChangeProp","onInputChange","onInputChangeProp","reactSelectProps","SelectComponent","AsyncSelect","Select","inputValue","setInputValue","useState","multiSelectClasses","omit","inputId","multiSelectComponents","mergeClasses","indicatorSeparator","base","loadingMessage","fontFamily","labelProps","InputLabelProps","htmlFor","shrink","length","isMulti","actionMeta","action","closeMenuOnSelect","hideSelectedOptions","loadOptions","defaultProps","cacheOptions","defaultOptions","ClearIndicator","Control","DownChevron","CrossIcon","Group","GroupHeading","IndicatorsContainer","IndicatorSeparator","Input","LoadingIndicator","Menu","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","MultiValueContainer","MultiValueLabel","MultiValueRemove","Placeholder","SelectContainer","SingleValue","ValueContainer","control","valueContainer","multiValue","singleValue","menu","container","group","groupHeading","indicatorsContainer","menuList","multiValueLabel","multiValueRemove","getOptionValue","isSearchable","inputRef","paddingTop","paper","active","fade","main","position","buttonWrapper","SideButtonsPanel","buttonsProps","activeIndexId","onButtonClick","iconButtonClasses","buttonProps","SmallIconButton","selectedUsers","valueToOption","prepareValues","values","tenant","servicesPath","cachedRequest","useRef","pluck","getAllUsersForTenant","then","prop","users","filter","username","filterUsers","ActivityTypes","getItemDataType","path","getActivityType","activity","items","firstItem","isValidActivity","includes","splitActivityByType","propOr","groupBy","ifElse","itemsTotal","stringifyDeltaValue","delta","Array","isArray","join","is","Object","toString","getActivityLabel","transition","inputRoot","dateOptionLabel","localeFormat","moment","longDateFormat","open","setOpen","handleToggle","onCancel","fullWidth","formatDataTypeValue","dataTypeDefinition","DataTypes","formatValue","endAdornment","menuIsOpen","readOnly","autoFocus","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","DateRangePicker","onApply","useSavedState","getSavedState","isLoaded","setIsLoaded","savedState","setSavedState","useEffect","_","catch","FIVE_MINUTES","useSnackbar","showDismiss","isOpenSnackbar","setIsOpenSnackbar","snackbarMessage","setSnackbarMessage","closeSnackbar","showSnackbarMessage","message","SnackbarRenderer","Portal","autoHideDuration","Button","DateRangeTypes","RequestStates","header","borderBottom","closeButton","RightSidePanel","icon","CloseIcon","LegendMode","sumValues","links","sum","nodes","sankeyLayout","nodeWidth","smallestNodeMaxHeight","smallestNodeMinHeight","nodePadding","sankey","graph","forEach","node","sourceLinks","targetLinks","link","source","target","computeNodeLinks","Math","max","computeNodeValues","nextNodes","remainingNodes","x","dx","indexOf","w","computeNodeBreadths","nodesByBreadth","toPairs","sort","a","b","nth","ky","Infinity","i","y","dy","initializeNodeDepth","y0","n","y1","last","computeNodeDepths","computeLinkDepths","ty","correctNodesDepth","result","linksByUuid","l","crosswalk","uuid","sourceNodes","this","j","index","resultByUuid","newSources","sizeForNewSources","sy","setNodeWidth","setNodePadding","setSmallestNodeMaxHeight","setSmallestNodeMinHeight","setSize","newSize","update","curvature","d","lastLine","x0","x1","xi","t","x2","x3","appendix","arguments","safeData","safeNodes","getSafeNode","originalNode","safeLinks","shallowCopy","tooltipTitle","marginBottom","userSelect","tooltipRow","tooltipIcon","stroke","strokeWidth","strokeOpacity","rootNode","transform","user","time","CalendarToday","Person","LightArrowTooltip","highlightEnabled","isColored","labelX","setLabelX","textRef","name","crosswalks","merges","firstCrosswalk","isDimmed","highlightCrosswalk","removeHighlight","useCrosswalkHighlight","useCrosswalkColor","startNodeHeight","nodeHeight","textWidth","clientWidth","fill","opacity","onMouseEnter","onMouseLeave","timeMap","sources","start","end","head","fillOpacity","renderMergeNodes","accentContributors","isDragging","setDragging","previousPageX","setPreviousPageX","offsetX","setOffsetX","useSankey","sankeyNodes","sankeyLinks","extractPositionDelta","event","pageX","onUp","pointerEvents","onPointerDown","preventDefault","onPointerMove","onPointerUp","onPointerLeave","isCrosswalkDisplayed","curry","displayedCrosswalks","some","eqCrosswalks","filterDisplayedCrosswalks","tree","evolve","losers","addCrosswalkUniqueId","count","addIdToSubtree","loser","processTree","processSubTree","parentIndex","mergesCrosswalks","chain","Date","now","linkedNodes","uniq","boxSizing","memo","crosswalkTree","entityLabel","visibleCrosswalks","sankeyData","getSankeyData","refreshMode","refreshRate","handleWidth","handleHeight","_extends","assign","prototype","hasOwnProperty","call","apply","React","viewBox","version","xmlns","xmlnsXlink","fillRule","xlinkHref","mask","focusedIcon","contributorUri","focusable","contributorActions","onToggleFocus","VisibilityIcon","disabled","getLastUriPart","Spacer","show","showForDisabled","contributorColor","border","borderLeft","bottom","editor","accentContributor","crosswalksBySources","expandedSources","canUnmerge","disableAddCrosswalk","disableEditCrosswalk","disableDeleteCrosswalk","disableUnmergeContributor","onUnmerge","onEdit","onDelete","onAdd","onToggleSourceExpanded","onUnsubscribeContributor","getContributorColor","dataTenants","mdm","scrollToCrosswalk","useHighlightedCrosswalks","find","flatten","scrollIntoView","behavior","showEditor","setShowEditor","contributorCrosswalk","CrosswalkType","toggleCrosswalkFocus","useCrosswalkFocus","allContributorCrosswalks","dataTenantForExternalCrosswalk","getDataTenantFromCrosswalks","AddIcon","UnmergeIcon","UnsubscribeIcon","dataTenant","crosswalksByTypes","SourceCrosswalksRow","showCrosswalkColors","crosswalksFocusEnabled","expanded","onToggleExpanded","CrosswalkEditor","table","overflowY","overflowX","tableRow","maxWidth","contributors","selectedAttributeTypes","onChangeVisibleCrosswalks","onAddCrosswalk","noop","onEditCrosswalk","onDeleteCrosswalk","onUnmergeContributor","rowsData","entityCrosswalks","relationCrosswalks","getRelationCrosswalks","contributor","isEmptyValue","ownerType","relationCrosswalk","entityCrosswalk","groupCrosswalksByTypesAndSources","buildTableRowsData","expandedByContributor","setExpandedByContributor","isExpandedSource","collectVisibleCrosswalks","handleDelete","crosswalkId","handleEdit","params","checkCanCreateCrosswalk","checkCanEditCrosswalk","checkCanDeleteCrosswalk","checkMetadataPermission","MetadataPermissions","sourceUri","unless","has","assoc","without","append","hintIcon","verticalAlign","checkedIcon","right","selectedTree","SelectableTree","coloredCrosswalks","onSelect","getCrosswalkColor","getUniqueCrosswalkColor","getCrosswalkId","Info","CheckCircle","dialogContainer","dialogTitle","dialogContent","trees","UnmergeDialog","unmergeOperation","setUnmergeOperation","UnmergeOperation","getColoredCrosswalks","includeMerges","collectCrosswalksFromContributor","Dialog","DialogTitle","DialogContent","toUpperCase","DialogActions","UnsubscribeDialog","canUnsubscribe","modeSwitcher","infoIcon","hint","alignSelf","hintText","crosswalksList","divider","pane","resizablePanesWrapper","flexGrow","activeMode","onChangeMode","tableProps","viewRef","paneSize","setPaneSize","handlePaneSizeChange","percentageSize","contributorForUnmerge","setContributorForUnmerge","unsubscribeInfo","setUnsubscribeInfo","crosswalkTreeDeep","calculateCrosswalkTreeDeep","maxPaneHeight","clientHeight","modes","Crosswalk","Source","Contributor","setVisibleCrosswalks","operationType","ModeSwitcher","modeId","ResizablePanes","orientation","minSize","maxSize","allowResize","isEmpty","masktype","maskUnits","clipRule","showErrorMessage","error","console","ErrorPopup","getRequestErrorMessage","cx","cy","r","maskType","y2","gradientUnits","stopColor","stopOpacity","offset","default","info","snackbarIcon","uiPath","entityLink","getEntityLink","Link","href","sourcesView","tabs","ActivePanel","connect","state","historyEvent","config","saveState","dispatch","setActiveMode","activeTab","setActiveTab","toggleActive","newIndex","isSidePanelOpen","isHistoryTabActive","History","isHistoryEnabled","isProfilePersisted","useHistoryEnabled","persistedEntity","historySlice","useHistorySlice","selectedAttrTypes","setSelectedAttrTypes","useDidUpdateEffect","visibleColumns","setVisibleColumns","hasVisibleColumnsChanged","equals","reload","reloadCrosswalkTree","setCrosswalkTree","isLoading","setIsLoading","safePromise","useSafePromise","onError","e","warn","loadData","getCrosswalkTree","results","finally","useCrosswalkTree","aEntity","collectContributorsFromTree","refreshEntity","profile","viewId","refreshData","onShowMessage","modifiedEntity","crosswalksMap","newlyCreatedAttributes","onDeleteAttribute","onPinAttribute","onIgnoreAttribute","onEditAttribute","onAddAttribute","useModifiedEntity","onModify","addCrosswalk","deleteCrosswalk","editCrosswalk","unmergeContributor","unsubscribeContributor","onLoad","onSuccess","useCrosswalkActions","dtssPath","handleAction","request","unmergeContributorRequest","andThen","response","unsubscribeEntityFromDataTenantEntity","successful","Error","sourceTable","customerTenant","useCrosswalkTreeActions","errorCode","ApiErrorCode","historyFilter","onApplyFilter","historicUris","historyWithTotal","canLoadMore","onLoadMore","useHistory","enabled","displayProps","getCrosswalkColorForActiveMode","getSourceColor","findContributorForCrosswalk","highlightedCrosswalks","setHighlightedCrosswalks","highlightedCrosswalksCache","applyHighlightedCrosswalks","debounce","cacheHighlightedCrosswalks","arr","setCrosswalkHighlighted","highlighted","focusedCrosswalks","setFocusedCrosswalks","calculateFocusedCrosswalks","prev","next","prevCrosswalk","any","nextCrosswalk","prevValue","useCrosswalksDisplay","Legend","LegendIcon","HistoryIcon","HistoryHeader","total","HistoryView","contributorsUris","HistoryPanelEmptyState","DndProvider","backend","HTML5Backend","CrosswalkDragLayer","ProfileBand","ProfileBandHistory","ProfileBandNavigation","attributeUris","AttributesTable","onChangeVisibleColumns","onSelectAttributeTypes","onPin","onIgnore","reject","propEq","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","onResize","getSavedStatePromisified","promisifyCallback","Provider","ViewIdContext","StylesProvider","MuiPickersUtilsProvider","MomentUtils","floor"],"sourceRoot":""}