@reltio/remotes 1.4.1674 → 1.4.1676
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/1039.js +1 -1
- package/1088.js +1 -1
- package/1148.js +1 -1
- package/1215.js +1 -1
- package/1334.js +1 -1
- package/1425.js +1 -1
- package/1550.js +1 -1
- package/1550.js.map +1 -1
- package/1664.js +1 -1
- package/1707.js +1 -1
- package/1840.js +1 -1
- package/2066.js +1 -1
- package/2400.js +1 -1
- package/{4609.js → 2617.js} +2 -2
- package/2617.js.map +1 -0
- package/2966.js +1 -1
- package/3096.js +1 -1
- package/3144.js +1 -1
- package/3209.js +1 -1
- package/3348.js +1 -1
- package/3373.js +1 -1
- package/3381.js +1 -1
- package/3383.js +1 -1
- package/3463.js +1 -1
- package/3469.js +1 -1
- package/3538.js +1 -1
- package/3538.js.map +1 -1
- package/3639.js +1 -1
- package/3785.js +1 -1
- package/4038.js +1 -1
- package/4143.js +1 -1
- package/415.js +1 -1
- package/4197.js +1 -1
- package/4197.js.map +1 -1
- package/4212.js +1 -1
- package/4481.js +1 -1
- package/4610.js +1 -1
- package/4787.js +1 -1
- package/4806.js +1 -1
- package/4838.js +1 -1
- package/50.js +1 -1
- package/5039.js +1 -1
- package/5177.js +1 -1
- package/5177.js.map +1 -1
- package/5201.js +1 -1
- package/5258.js +1 -1
- package/5292.js +1 -1
- package/5383.js +1 -1
- package/5738.js +1 -1
- package/5769.js +1 -1
- package/6287.js +1 -1
- package/6337.js +1 -1
- package/636.js +1 -1
- package/6422.js +1 -1
- package/658.js +1 -1
- package/6799.js +1 -1
- package/6844.js +1 -1
- package/6903.js +1 -1
- package/7074.js +1 -1
- package/7119.js +1 -1
- package/7237.js +1 -1
- package/7340.js +1 -1
- package/735.js +1 -1
- package/7407.js +1 -1
- package/7422.js +1 -1
- package/7468.js +1 -1
- package/7605.js +1 -1
- package/7626.js +1 -1
- package/7744.js +1 -1
- package/7744.js.map +1 -1
- package/{6152.js → 7802.js} +2 -2
- package/7802.js.map +1 -0
- package/7896.js +1 -1
- package/820.js +1 -1
- package/8207.js +1 -1
- package/8216.js +1 -1
- package/829.js +1 -1
- package/8741.js +1 -1
- package/8786.js +1 -1
- package/9016.js +1 -1
- package/9032.js +1 -1
- package/9050.js +1 -1
- package/9109.js +1 -1
- package/9283.js +1 -1
- package/9328.js +1 -1
- package/9387.js +1 -1
- package/9719.js +1 -1
- package/9861.js +1 -1
- package/main.js +1 -1
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
- package/remoteEntry.js.map +1 -1
- package/4609.js.map +0 -1
- package/6152.js.map +0 -1
package/3538.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3538.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/icons/Filter.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/FilterButton/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/FilterButton/FilterButton.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/BasicTablePagination.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/viewState/basicTableViewState.js","webpack://@reltio/remotes/../components/src/components/BasicView/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicView/BasicView.tsx","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/ConfirmationDialog.tsx","webpack://@reltio/remotes/../components/src/components/SettingsMenu/SettingsMenuItemRender/styles.ts","webpack://@reltio/remotes/../components/src/components/SettingsMenu/SettingsMenuItemRender/SettingsMenuItemRender.tsx","webpack://@reltio/remotes/../components/src/components/SettingsMenu/SettingsMenu.tsx","webpack://@reltio/remotes/../components/src/components/VerticalDivider/VerticalDivider.js","webpack://@reltio/remotes/../components/src/hooks/useActions.ts","webpack://@reltio/remotes/../components/src/hooks/useRelationsLoader.ts","webpack://@reltio/remotes/../relationships/src/hooks/useSavedState.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/helpers/tableHelpers.ts","webpack://@reltio/remotes/../relationships/src/hooks/useRelationshipsTable.ts","webpack://@reltio/remotes/../relationships/src/components/RelationTypeSelector/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationTypeSelector/RelationTypeSelector.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTableHeader/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTableHeader/RelationshipsTableHeader.tsx","webpack://@reltio/remotes/../relationships/src/services/helpers.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/EntityProfileRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/AttributesRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/helpers.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipMenuButton/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipMenuButton/MenuItemRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipMenuButton/RelationshipMenuButton.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/RelationshipsTable.tsx","webpack://@reltio/remotes/../relationships/src/components/LegendTable/helpers.ts","webpack://@reltio/remotes/../relationships/src/components/LegendTable/styles.ts","webpack://@reltio/remotes/../relationships/src/components/LegendTable/LegendTable.tsx","webpack://@reltio/remotes/../relationships/src/components/LegendPanel/styles.ts","webpack://@reltio/remotes/../relationships/src/components/LegendPanel/LegendPanel.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/EntityInfo/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/EntityInfo/EntityInfo.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDirection/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDirection/RelationDirection.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDate/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDate/RelationDate.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationshipBand.tsx","webpack://@reltio/remotes/../relationships/src/services/errors.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipDetails/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipDetails/RelationshipDetails.tsx","webpack://@reltio/remotes/../relationships/src/hooks/useCrosswalksDisplay.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/RelationshipsView.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/helpers/filtersHelpers.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/index.tsx","webpack://@reltio/remotes/./src/relationships.ts"],"sourcesContent":["import React from 'react';\n\nconst SvgFilter: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={18} height={18} viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M18 2V0H0v2l7 8v8l4-2v-6z\" fill=\"currentColor\" fillRule=\"nonzero\" stroke=\"none\" strokeWidth={1} />\n </svg>\n );\n};\n\nexport default SvgFilter;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n 'filterIcon--enabled': {\n color: theme.palette.primary.main\n },\n closeIcon: {\n position: 'absolute',\n right: '3px',\n bottom: '3px',\n transform: 'scale(0.5)'\n },\n button: {\n padding: '11px'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport IconButton from '@mui/material/IconButton';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Tooltip from '@mui/material/Tooltip';\nimport FilterIcon from '../../../../icons/Filter';\nimport {useStyles} from './styles';\n\nconst FilterButton = ({enabled, onClick}) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={enabled ? i18n.text('Clear all filters') : i18n.text('Filter')}>\n <IconButton onClick={onClick} classes={{root: styles.button}} size=\"large\">\n {enabled ? (\n <>\n <FilterIcon className={styles['filterIcon--enabled']} />\n <CloseIcon color=\"primary\" className={styles.closeIcon} />\n </>\n ) : (\n <FilterIcon />\n )}\n </IconButton>\n </Tooltip>\n );\n};\n\nFilterButton.propTypes = {\n enabled: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nexport default FilterButton;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n pagination: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n height: '56px',\n flexShrink: 0,\n borderTop: '1px solid rgba(0,0,0,0.12)',\n boxShadow: 'none',\n boxSizing: 'border-box',\n overflowY: 'hidden',\n containerType: 'inline-size',\n '& .MuiInputBase-root': {\n display: 'none',\n '@container (min-width: 420px)': {\n display: 'inline-flex'\n }\n }\n },\n caption: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px',\n display: 'none',\n '@container (min-width: 420px)': {\n display: 'block'\n }\n },\n displayedRows: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px'\n },\n selectRoot: {\n marginLeft: '5px',\n marginRight: '36px'\n },\n select: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px',\n textAlign: 'right'\n },\n actions: {\n marginLeft: '32px!important' //we need it, because of the more specific rule in the mui\n }\n});\n","import React, {useCallback, memo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getValue} from '../../../core/utils';\nimport {nthArg, pipe, pathOr, identity} from 'ramda';\nimport TablePagination, {TablePaginationProps} from '@mui/material/TablePagination';\n\nimport {useStyles} from './styles';\n\ntype BasicTablePaginationProps = {\n classes?: TablePaginationProps['classes'];\n basicTableRef?: React.Ref<HTMLElement>;\n count?: number;\n page?: number;\n rowsPerPage?: number;\n labelRowsPerPage?: React.ReactNode;\n rowsPerPageOptions?: TablePaginationProps['rowsPerPageOptions'];\n onChangePage?: (value: number) => void;\n onChangeRowsPerPage?: (value: number) => void;\n};\n\nconst BasicTablePagination = ({\n classes = {},\n count,\n rowsPerPageOptions,\n page,\n onChangePage,\n rowsPerPage,\n onChangeRowsPerPage,\n basicTableRef,\n labelRowsPerPage\n}: BasicTablePaginationProps) => {\n const styles = useStyles();\n\n const labelDisplayedRows = ({from, to, count}) =>\n i18n.text('${fromRow}-${toRow} of ${countRows}', {\n fromRow: i18n.number(from, '0,0'),\n toRow: i18n.number(to, '0,0'),\n countRows: i18n.number(count, '0,0')\n });\n\n const resetScrollbarPosition = useCallback(() => {\n pathOr(identity, ['current', 'resetScrollbarPosition'], basicTableRef)();\n }, [basicTableRef]);\n\n const handleChangePage = useCallback(\n (value: number) => {\n onChangePage(value);\n resetScrollbarPosition();\n },\n [onChangePage, resetScrollbarPosition]\n );\n const handleChangeRowsPerPage = useCallback(\n (value: number) => {\n onChangePage(0);\n onChangeRowsPerPage(value);\n resetScrollbarPosition();\n },\n [onChangePage, onChangeRowsPerPage, resetScrollbarPosition]\n );\n\n return (\n <TablePagination\n classes={{\n ...classes,\n root: classnames(styles.pagination, classes.root),\n select: classnames(styles.select, classes.select),\n selectLabel: classnames(styles.caption, classes.selectLabel),\n displayedRows: classnames(styles.displayedRows, classes.displayedRows),\n input: classnames(styles.selectRoot, classes.selectRoot),\n actions: styles.actions\n }}\n backIconButtonProps={{size: 'large'}}\n nextIconButtonProps={{size: 'large'}}\n component=\"div\"\n labelRowsPerPage={labelRowsPerPage || i18n.text('Rows per page:')}\n labelDisplayedRows={labelDisplayedRows}\n count={count}\n rowsPerPageOptions={rowsPerPageOptions}\n page={page}\n onPageChange={pipe(nthArg(1), handleChangePage)}\n rowsPerPage={rowsPerPage}\n onRowsPerPageChange={pipe(getValue, handleChangeRowsPerPage)}\n />\n );\n};\n\nBasicTablePagination.displayName = 'BasicTablePagination';\n\nexport default memo(BasicTablePagination);\n","import {always, assoc, difference, dissoc, evolve, keys, path, when} from 'ramda';\nimport {createStandardAction, toggleSortOrder} from '../../../core';\n\nconst CHANGE_COLUMNS = 'CHANGE_COLUMNS';\nconst TOGGLE_FILTERS = 'TOGGLE_FILTERS';\nconst CHANGE_FILTER = 'CHANGE_FILTER';\nconst TOGGLE_SORT = 'TOGGLE_SORT';\nconst CHANGE_PAGE = 'CHANGE_PAGE';\nconst CHANGE_ROWS_PER_PAGE = 'CHANGE_ROWS_PER_PAGE';\n\nexport const actions = {\n changeColumns: createStandardAction(CHANGE_COLUMNS),\n toggleFilters: createStandardAction(TOGGLE_FILTERS),\n changeFilter: createStandardAction(CHANGE_FILTER),\n toggleSort: createStandardAction(TOGGLE_SORT),\n changePage: createStandardAction(CHANGE_PAGE),\n changeRowsPerPage: createStandardAction(CHANGE_ROWS_PER_PAGE)\n};\n\nexport const changeVisibleColumns = (state, nextVisibleColumns) => {\n const removedColumns = difference(state.visibleColumns, nextVisibleColumns);\n const isRemovedColumn = (columnId) => removedColumns.includes(columnId);\n return evolve(\n {\n visibleColumns: always(nextVisibleColumns),\n sorting: when(\n (sorting = {}) => isRemovedColumn(sorting.field),\n () => {\n const [nextSortField] = nextVisibleColumns;\n return {field: nextSortField, order: 'asc'};\n }\n ),\n filters: (filters) =>\n keys(filters).reduce(\n (acc, columnId) => (isRemovedColumn(columnId) ? dissoc(columnId, acc) : acc),\n filters\n )\n },\n state\n );\n};\n\nexport const reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_COLUMNS: {\n const columnIds = action.payload;\n return changeVisibleColumns(state, columnIds);\n }\n case TOGGLE_FILTERS: {\n const enableFilters = !state.filters;\n return {\n ...state,\n filters: enableFilters ? {} : null,\n page: enableFilters ? state.page : 0\n };\n }\n case CHANGE_FILTER: {\n const {columnId, filter} = action.payload;\n return evolve({filters: filter ? assoc(columnId, filter) : dissoc(columnId), page: always(0)}, state);\n }\n case TOGGLE_SORT: {\n const nextSortField = action.payload;\n const prevSortField = path(['sorting', 'field'], state);\n const prevSortOrder = path(['sorting', 'order'], state);\n return {\n ...state,\n sorting: {\n field: nextSortField,\n order: toggleSortOrder(nextSortField === prevSortField ? prevSortOrder : null)\n },\n page: 0\n };\n }\n case CHANGE_PAGE:\n return {...state, page: action.payload};\n case CHANGE_ROWS_PER_PAGE:\n return {...state, rowsPerPage: action.payload};\n default:\n return state;\n }\n};\n\nexport default {\n reducer,\n actions,\n changeVisibleColumns\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n basicViewPaper: {\n display: 'flex',\n flexDirection: 'column',\n ...theme.basicView\n }\n}));\n","import React, {forwardRef} from 'react';\nimport Paper, {PaperProps} from '@mui/material/Paper';\nimport {useStyles} from './styles';\n\nconst BasicView = forwardRef(\n ({children, className, ...otherProps}: PaperProps, ref: React.RefObject<HTMLDivElement>) => {\n const styles = useStyles();\n return (\n <Paper ref={ref} className={className} classes={{root: styles.basicViewPaper}} {...otherProps}>\n {children}\n </Paper>\n );\n }\n);\n\nBasicView.displayName = 'BasicView';\n\nexport default BasicView;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n paper: {\n minHeight: '180px'\n },\n title: {\n padding: '16px 16px 10px 16px',\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px'\n },\n content: {\n padding: '0 16px'\n },\n contentText: {\n marginBottom: 0,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '24px'\n },\n actionButtons: {\n display: 'flex',\n paddingTop: '4px',\n fontSize: '14px',\n fontWeight: 500,\n letterSpacing: 0,\n lineHeight: '16px',\n '& > div': {\n marginLeft: 'auto'\n }\n },\n discardButton: {\n marginRight: '8px'\n }\n});\n\nexport {useStyles};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\n\nimport {useStyles} from './styles';\n\nexport type Props = {\n open: boolean;\n title: React.ReactNode;\n content: React.ReactNode;\n cancelCaption?: string;\n discardCaption?: string;\n saveCaption?: string;\n disabledSave?: boolean;\n onCancel?: () => void;\n onDiscard?: () => void;\n onSave: () => void;\n};\n\nconst ConfirmationDialog = ({\n open,\n title,\n content,\n onCancel,\n cancelCaption = i18n.text('Cancel'),\n onDiscard,\n discardCaption = '',\n onSave,\n saveCaption = i18n.text('Save'),\n disabledSave = false\n}: Props) => {\n const styles = useStyles();\n\n return (\n <Dialog open={open} onClose={onCancel} classes={{paperScrollPaper: styles.paper}}>\n <DialogTitle classes={{root: styles.title}}>{title}</DialogTitle>\n <DialogContent classes={{root: styles.content}}>\n <DialogContentText classes={{root: styles.contentText}}>{content}</DialogContentText>\n </DialogContent>\n <DialogActions className={styles.actionButtons} disableSpacing>\n {onCancel && <Button onClick={onCancel}>{cancelCaption}</Button>}\n <div>\n {onDiscard && (\n <Button onClick={onDiscard} classes={{root: styles.discardButton}}>\n {discardCaption}\n </Button>\n )}\n <Button onClick={onSave} color=\"primary\" disabled={disabledSave} autoFocus>\n {saveCaption}\n </Button>\n </div>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default ConfirmationDialog;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n menuItem: {\n height: '32px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px'\n },\n checkbox: {\n padding: 0,\n marginRight: '15px'\n }\n}));\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport Checkbox from '@mui/material/Checkbox';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport {DropDownMenuItem} from '../../../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n item: DropDownMenuItem;\n onMenuClose?: (e) => void;\n};\n\nconst SettingsMenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {text, onClick, id, selected} = item;\n const handleClick = (e) => {\n onMenuClose(e);\n onClick(e);\n };\n\n return (\n <MenuItem\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n ref={ref}\n data-modal\n data-reltio-id={`reltio-settings-menu-item${id}`}\n >\n <Checkbox checked={selected} className={styles.checkbox} color=\"primary\" />\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItem>\n );\n});\n\nSettingsMenuItemRenderer.displayName = 'SettingsMenuItemRenderer';\n\nexport default SettingsMenuItemRenderer;\n","import React from 'react';\nimport SettingsIcon from '@mui/icons-material/Settings';\nimport i18n from 'ui-i18n';\nimport {DropDownMenuItem} from '../../types';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport DropDownMenuButton from '../DropDownMenuButton/DropDownMenuButton';\nimport SettingsMenuItemRenderer from './SettingsMenuItemRender/SettingsMenuItemRender';\n\ntype Props = {\n items: Array<DropDownMenuItem>;\n menuId: string;\n};\n\nconst SettingsMenu = ({items, menuId}: Props) => {\n return (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: SettingsIcon,\n tooltipTitle: i18n.text('Settings'),\n size: 'L'\n }}\n menuId={menuId}\n menuItems={items}\n MenuItemRenderer={SettingsMenuItemRenderer}\n />\n );\n};\n\nexport default SettingsMenu;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst VerticalDivider = ({height, margin}) => (\n <div\n style={{\n width: '1px',\n height: `${height}px`,\n borderLeft: '1px solid rgba(0,0,0,0.38)',\n margin: `0 ${margin}px`,\n flexShrink: '0'\n }}\n />\n);\n\nVerticalDivider.propTypes = {\n height: PropTypes.number,\n margin: PropTypes.number\n};\n\nexport default VerticalDivider;\n","import {useMemo} from 'react';\nimport {pipe} from 'ramda';\n\ntype UseActions = ({\n actions,\n dispatch\n}: {\n actions: {\n [key: string]: <T>(payload: T) => {type: string; payload: T};\n };\n dispatch: <T>({type, payload}: {type: string; payload: T}) => void;\n}) => {\n [key in keyof typeof actions]: <T>(payload: T) => void;\n};\n\nexport const useActions: UseActions = ({actions, dispatch}) =>\n useMemo(\n () =>\n Object.entries(actions).reduce((acc, [actionName, actionCreator]) => {\n return {...acc, [actionName]: pipe(actionCreator, dispatch)};\n }, {}),\n [dispatch, actions]\n );\n","import {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport {cond, pipe, prop, T, evolve, filter as filterFn, when, identity, times, length, ifElse, always} from 'ramda';\nimport {\n ActivityFilter,\n addGlobalFilterToQuery,\n Connection,\n Entity,\n getRelationsForDataTenantEntity,\n getRelationsForEntity,\n isAvailableEntityTypeUri,\n isAvailableRelationTypeUri,\n isDataTenantEntity,\n isObject,\n isTempUri,\n Mode,\n RelationsContent,\n RelationsRequestConfig,\n RelationsViewConfig,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from './useSafePromise';\nimport {usePrevious} from './usePrevious';\nimport {\n useMdmAction,\n useMdmDtssPath,\n useMdmGlobalSearchRequestOptions,\n useMdmMetadata,\n useMdmProfileLastLoadedTime,\n useMdmTenant\n} from '../contexts';\n\ntype Props = {\n sorting?: {\n field: string;\n order: string;\n };\n filter?: string;\n page: number;\n rowsPerPage: number;\n config: Pick<RelationsViewConfig, 'suggested' | 'content' | 'id'>;\n entity: Entity;\n relationActivityFilter?: ActivityFilter;\n mode: Mode;\n searchByOv?: boolean;\n};\n\nconst buildSuggestedIds = when(\n identity,\n pipe(\n wrapInArrayIfNeeded,\n length,\n times((n) => n + 1)\n )\n);\nconst isValidRequestConfig = (config: RelationsRequestConfig) => {\n let entry: RelationsRequestConfig | RelationsRequestConfig['nextEntry'] = config;\n while (entry) {\n if (entry.entityTypes?.length === 0) {\n return false;\n }\n entry = entry.nextEntry;\n }\n return true;\n};\n\ntype ConnectionResponse = Array<{connections?: Connection[]; total: number}>;\n\nexport const useRelationsLoader = ({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter,\n mode,\n searchByOv = false\n}: Props) => {\n const [isLoading, setIsLoading] = useState(false);\n\n const relationsLoaded = useMdmAction('relationsLoaded');\n const tenant = useMdmTenant();\n const metadata = useMdmMetadata();\n const dtssPath = useMdmDtssPath();\n const {activityFilter, globalFilter} = useMdmGlobalSearchRequestOptions() || {};\n const lastLoadedTime = useMdmProfileLastLoadedTime();\n\n const safePromise = useSafePromise();\n\n const processContent = (content: RelationsContent) => {\n const getUri = when(isObject, prop('uri'));\n const filterRelation = pipe(getUri, isAvailableRelationTypeUri(metadata));\n\n return evolve({\n entityTypes: filterFn(isAvailableEntityTypeUri(metadata)),\n inRelations: filterFn(filterRelation),\n outRelations: filterFn(filterRelation),\n nextEntry: processContent\n })(content);\n };\n\n const suggested = config.suggested;\n const options = useMemo(\n () => ({\n searchByOv\n }),\n [searchByOv]\n );\n const modeRef = useRef<Mode>(mode);\n modeRef.current = mode;\n const loadRelations = useCallback(() => {\n if (entity?.uri) {\n const processedConfig = processContent(config.content);\n const requestConfig = {\n ...processedConfig,\n sortBy: sorting?.field,\n order: sorting?.order,\n returnDates: true,\n returnObjects: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n },\n max: rowsPerPage,\n offset: page * rowsPerPage,\n filter: addGlobalFilterToQuery(globalFilter, filter) || undefined,\n suggested: buildSuggestedIds(suggested)\n };\n const configs = [requestConfig].concat(\n ifElse(\n identity,\n pipe(wrapInArrayIfNeeded, (suggested) =>\n suggested.map((config, i) => ({...config, id: requestConfig.suggested[i]}))\n ),\n always([])\n )(suggested)\n );\n\n const emptyResponsePromise = Promise.resolve([{total: 0}]);\n const request: (entity: Entity) => Promise<ConnectionResponse> = cond([\n [pipe(prop('uri'), isTempUri), () => emptyResponsePromise],\n [\n always(!isValidRequestConfig(requestConfig)),\n () => {\n console.warn('Connections request config has \"entityTypes\": []. Request is blocked.');\n return emptyResponsePromise;\n }\n ],\n [\n isDataTenantEntity,\n (entity) =>\n getRelationsForDataTenantEntity({\n entityUri: entity.uri,\n configs: configs,\n customerTenant: tenant,\n dataTenant: entity.dataTenant,\n dtssPath,\n options\n })\n ],\n [T, (entity) => getRelationsForEntity(entity.uri, configs, options)]\n ]);\n setIsLoading(true);\n safePromise(request(entity))\n .then((result) => {\n if (!Array.isArray(result)) {\n throw Error(JSON.stringify(result));\n }\n const [{connections, total}] = result;\n relationsLoaded({id: config.id, connections, total, mode: modeRef.current});\n })\n .catch((e) => {\n console.warn('Failed to load relations data', e);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n activityFilter,\n metadata,\n config,\n relationsLoaded,\n dtssPath,\n entity?.uri,\n entity?.dataTenant,\n filter,\n globalFilter,\n page,\n relationActivityFilter,\n rowsPerPage,\n safePromise,\n sorting,\n tenant,\n options,\n lastLoadedTime\n ]);\n const isRequestSentRef = useRef<boolean>(false);\n isRequestSentRef.current = false;\n useEffect(() => {\n isRequestSentRef.current = true;\n loadRelations();\n }, [loadRelations]);\n\n const prevMode = usePrevious(mode);\n useEffect(() => {\n if (mode === Mode.Viewing && !isRequestSentRef.current && prevMode !== mode) {\n isRequestSentRef.current = true;\n loadRelations();\n }\n }, [loadRelations, mode, prevMode]);\n return {isLoading, reload: loadRelations};\n};\n","import {useEffect, useState} from 'react';\nimport {useDidUpdateEffect} from '@reltio/components';\nimport {\n RelationshipsSavedState,\n RelationsTableSavedState,\n AttributesTableSavedState\n} from './../types/RelationshipsSavedState';\n\nconst DEFAULT_SAVED_STATE = {\n relationsTable: {},\n attributesTable: {}\n};\n\nconst useSavedState = ({getSavedState, saveState, entityTypeUri}) => {\n const [savedState, setSavedState] = useState<RelationshipsSavedState>(DEFAULT_SAVED_STATE);\n const [changedRelationsState, setRelationsChangedState] = useState<Record<string, RelationsTableSavedState>>(null);\n\n const saveChangesLocallyForPrevEntityType = () => {\n if (changedRelationsState) {\n setSavedState({...savedState, relationsTable: changedRelationsState});\n setRelationsChangedState(null);\n }\n };\n useDidUpdateEffect(saveChangesLocallyForPrevEntityType, [entityTypeUri]);\n\n const updateRelationsTableSavedState = (stateToSave: RelationsTableSavedState) => {\n const changedState: Record<string, RelationsTableSavedState> = {\n ...savedState.relationsTable,\n [entityTypeUri]: stateToSave\n };\n setRelationsChangedState(changedState);\n saveState({...savedState, relationsTable: changedState});\n };\n\n const updateAttributesTableSavedState = (stateToSave: AttributesTableSavedState) => {\n saveState({...savedState, attributesTable: stateToSave});\n };\n\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n getSavedState()\n .then((savedState) => {\n setSavedState(savedState || DEFAULT_SAVED_STATE);\n })\n .then((_) => setIsLoading(false))\n .catch((_) => setIsLoading(false));\n }, []); // eslint-disable-line\n return {\n isLoading,\n relationsTableSavedState: savedState.relationsTable?.[entityTypeUri],\n attributesTableSavedState: savedState.attributesTable,\n updateRelationsTableSavedState,\n updateAttributesTableSavedState\n };\n};\n\nexport default useSavedState;\n","import {\n attributeUriToSearchUri,\n DataTypes,\n getAttrDataTypeDefinition,\n getReadableAnalyticsAttributesList,\n getReadableAttributesList,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {adjust, assoc, concat, find, map, pipe, pluck, prop, propEq, reject, uniqBy, converge} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {RelationshipsTableColumnData} from '../../../types';\n\nconst RELATION_TYPE_COLUMN_ID = 'relation.type';\nconst ATTRIBUTES_COLUMN_ID = 'relation.attributes';\nconst ANALYTICS_ATTRIBUTES_COLUMN_ID = 'relation.analyticsAttributes';\n\nexport const DEFAULT_COLUMNS_DATA = [\n {\n id: 'entity.label',\n get label() {\n return i18n.text('Profile');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n filterable: false,\n initialWidth: 280,\n autoResize: false\n },\n {\n id: RELATION_TYPE_COLUMN_ID,\n get label() {\n return i18n.text('Type');\n }\n },\n {\n id: 'relation.label',\n get label() {\n return i18n.text('Directional Label');\n },\n filterable: false,\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n }\n },\n {\n id: 'relation.activeness.startDate',\n get label() {\n return i18n.text('Start Date');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ACTIVENESS_DATE\n }\n },\n {\n id: 'relation.activeness.endDate',\n get label() {\n return i18n.text('End Date');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ACTIVENESS_DATE\n }\n },\n {\n id: ATTRIBUTES_COLUMN_ID,\n get label() {\n return i18n.text('Attributes');\n },\n sortable: false,\n filterable: false,\n maxAttrsToShow: 7\n },\n {\n id: ANALYTICS_ATTRIBUTES_COLUMN_ID,\n get label() {\n return i18n.text('Analytics Attributes');\n },\n sortable: false,\n filterable: false,\n maxAttrsToShow: 7\n }\n];\n\nexport const DEFAULT_COLUMNS = pluck('id', DEFAULT_COLUMNS_DATA);\nexport const ALL_TYPES_COLUMNS = [RELATION_TYPE_COLUMN_ID, ATTRIBUTES_COLUMN_ID, ANALYTICS_ATTRIBUTES_COLUMN_ID];\n\nexport const ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\n\nconst getColumnIdFromAttrUri = pipe(attributeUriToSearchUri, concat('relation.'));\n\nconst getColumnsDataFromRelationAttributes = pipe(\n map((attr) => ({\n id: getColumnIdFromAttrUri(attr.uri),\n label: attr.label,\n description: attr?.description,\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n })),\n uniqBy(prop('id'))\n);\n\nconst getRelationColumnDataType = (relationTypes: TRelationType[]) => ({\n type: DataTypes.TYPE_SELECT,\n options: relationTypes.map(({uri, label}) => ({value: uri, label}))\n});\n\nconst updateColumnData = (columnId: string, updateFn) => (columnsData: RelationshipsTableColumnData[]) =>\n adjust(columnsData.findIndex(propEq('id', columnId)), updateFn, columnsData);\n\nconst updateRelationTypeColumn = (relationTypes: TRelationType[]) =>\n updateColumnData(RELATION_TYPE_COLUMN_ID, assoc('dataTypeDefinition', getRelationColumnDataType(relationTypes)));\n\nexport const getColumnsData = (relationTypes: TRelationType[], currentRelationType: string) => {\n const hasAnalyticsAttribute = relationTypes.some((relationType) => !!relationType.analyticsAttributes);\n const filteredColumnsData = hasAnalyticsAttribute\n ? DEFAULT_COLUMNS_DATA\n : DEFAULT_COLUMNS_DATA.filter(({id}) => id !== ANALYTICS_ATTRIBUTES_COLUMN_ID);\n return currentRelationType\n ? pipe(\n find((relationType: TRelationType) => relationType.uri === currentRelationType),\n converge(concat, [getReadableAttributesList, getReadableAnalyticsAttributesList]),\n getColumnsDataFromRelationAttributes,\n concat(DEFAULT_COLUMNS_DATA),\n reject(({id}) => ALL_TYPES_COLUMNS.includes(id))\n )(relationTypes)\n : updateRelationTypeColumn(relationTypes)(filteredColumnsData);\n};\n","import {\n assoc,\n pipe,\n evolve,\n either,\n path,\n prop,\n propOr,\n ifElse,\n always,\n without,\n concat,\n intersection,\n pick,\n unless,\n isNil,\n filter\n} from 'ramda';\nimport {useReducer} from 'react';\nimport {basicTableViewState, createStandardAction, Sorting, useActions} from '@reltio/components';\nimport {ALL_TYPES_COLUMNS, DEFAULT_COLUMNS} from '../components/RelationshipsView/helpers/tableHelpers';\nimport {validateFilterValue} from '@reltio/mdm-sdk';\n\ntype Props = {\n defaultColumns: string[];\n defaultSorting: Sorting;\n defaultRowsPerPage: number;\n};\n\nconst CHANGE_RELATION_TYPE = 'CHANGE_RELATION_TYPE';\nconst APPLY_SAVED_STATE = 'APPLY_SAVED_STATE';\nconst SAVE_CURRENT_STATE = 'SAVE_CURRENT_STATE';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeRelationType: createStandardAction(CHANGE_RELATION_TYPE),\n applySavedState: createStandardAction(APPLY_SAVED_STATE),\n saveCurrentState: createStandardAction(SAVE_CURRENT_STATE)\n};\n\nconst resetPageNumber = assoc('page', 0);\n\nconst getDefaultVisibleColumnsForCurrentRelationType = (state) => {\n return pipe(\n prop('visibleColumns'),\n ifElse(always(state.currentRelationType), without(ALL_TYPES_COLUMNS), concat(ALL_TYPES_COLUMNS)),\n intersection(DEFAULT_COLUMNS)\n )(state);\n};\n\nconst getSavedVisibleColumnsForCurrentRelationType = (state) =>\n path(['visibleColumnsForRelationTypes', `${state.currentRelationType}`], state);\n\nconst changeVisibleColumnsForCurrentRelationType = (state) => {\n const nextVisibleColumns = either(\n getSavedVisibleColumnsForCurrentRelationType,\n getDefaultVisibleColumnsForCurrentRelationType\n )(state);\n return basicTableViewState.changeVisibleColumns(state, nextVisibleColumns);\n};\n\nconst getFiltersFromSavedState = pipe(\n propOr(null, 'filters'),\n unless(\n isNil,\n filter(({filter, value}) => validateFilterValue(filter, value))\n )\n);\n\nconst saveVisibleColumnsForCurrentRelationType = (state) => {\n const {currentRelationType, visibleColumns} = state;\n return evolve(\n {\n visibleColumnsForRelationTypes: assoc(`${currentRelationType}`, visibleColumns)\n },\n state\n );\n};\n\nconst getStateToSave = pipe(\n saveVisibleColumnsForCurrentRelationType,\n pick(['currentRelationType', 'visibleColumnsForRelationTypes', 'filters', 'sorting'])\n);\n\nexport const useRelationshipsTable = ({defaultColumns, defaultSorting, defaultRowsPerPage}: Props) => {\n const initState = {\n visibleColumns: defaultColumns,\n filters: null,\n sorting: defaultSorting,\n page: 0,\n rowsPerPage: defaultRowsPerPage,\n currentRelationType: null,\n stateToSave: null,\n visibleColumnsForRelationTypes: {},\n entityTypeOfAppliedSavedState: null\n };\n const [state, dispatch] = useReducer((state, action) => {\n switch (action.type) {\n case CHANGE_RELATION_TYPE: {\n const nextRelationType = action.payload;\n return pipe(\n saveVisibleColumnsForCurrentRelationType,\n assoc('currentRelationType', nextRelationType),\n changeVisibleColumnsForCurrentRelationType,\n resetPageNumber\n )(state);\n }\n case APPLY_SAVED_STATE: {\n const {savedState, entityTypeUri} = action.payload;\n const visibleColumns = savedState\n ? getSavedVisibleColumnsForCurrentRelationType(savedState)\n : state.visibleColumns;\n const filters = savedState ? getFiltersFromSavedState(savedState) : state.filters;\n return {\n ...state,\n ...savedState,\n filters,\n visibleColumns,\n entityTypeOfAppliedSavedState: entityTypeUri\n };\n }\n case SAVE_CURRENT_STATE: {\n return {\n ...state,\n stateToSave: getStateToSave(state)\n };\n }\n default:\n return basicTableViewState.reducer(state, action);\n }\n }, initState);\n const tableActions = useActions({actions, dispatch});\n return [state, tableActions];\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n select: {\n fontSize: '13px',\n color: 'rgba(0,0,0,.6)',\n paddingLeft: '15px'\n },\n selectMenu: {\n '& li': {\n fontSize: '13px',\n height: '32px'\n }\n },\n textField: {\n maxWidth: '100%'\n }\n});\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {map, concat, pipe} from 'ramda';\nimport {TRelationType} from '@reltio/mdm-sdk';\nimport {DropDownEditor} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: string;\n onChange: (value: string) => void;\n relationTypes: TRelationType[];\n className?: string;\n};\n\nconst RelationTypeSelector = ({value, onChange, relationTypes, className}: Props) => {\n const styles = useStyles();\n const entries = useMemo(\n () =>\n pipe(\n map(({label, uri}) => ({label, value: uri})),\n concat([{value: '', label: i18n.text('All types')}])\n )(relationTypes),\n [relationTypes]\n );\n\n return (\n <div className={className}>\n <DropDownEditor\n displayEmpty\n disableUnderline\n classes={{\n select: styles.select\n }}\n TextFieldProps={{\n classes: {\n root: styles.textField\n }\n }}\n MenuProps={{\n classes: {\n list: styles.selectMenu\n }\n }}\n value={value || ''}\n entries={entries}\n onChange={(value: string) => onChange(value || null)}\n />\n </div>\n );\n};\n\nexport default RelationTypeSelector;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n background: '#FFF',\n paddingRight: '10px'\n },\n total: {\n fontSize: '14px',\n color: theme.palette.text.secondary,\n flexShrink: 0,\n marginRight: '5px'\n },\n relationTypeSelector: {\n margin: '0px 10px 0 30px',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {TRelationType} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport {\n BasicViewHeader,\n ColumnsSettings,\n DropDownMenuItem,\n FilterButton,\n SettingsMenu,\n Spacer,\n VerticalDivider\n} from '@reltio/components';\nimport RelationTypeSelector from '../RelationTypeSelector/RelationTypeSelector';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total: number;\n filteringEnabled: boolean;\n onToggleFilters: () => void;\n columnsData: Record<string, unknown>[];\n selectedColumns: string[];\n currentRelationType: string;\n onRelationTypeChange: (value: string) => void;\n relationTypes: TRelationType[];\n onChangeColumns: (columns: string[]) => void;\n searchByOv: boolean;\n onToggleSearchByOv: () => void;\n showInactive: boolean;\n onToggleShowInactive: () => void;\n};\n\nconst RelationshipsTableHeader = ({\n total,\n filteringEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n currentRelationType,\n onRelationTypeChange,\n relationTypes,\n onChangeColumns,\n searchByOv,\n onToggleSearchByOv,\n showInactive,\n onToggleShowInactive\n}: Props) => {\n const styles = useStyles();\n\n const settingItems = useMemo<Array<DropDownMenuItem>>(() => {\n return [\n {\n selected: searchByOv,\n text: i18n.text('Search by OV only'),\n onClick: onToggleSearchByOv,\n id: 'showNonOv'\n },\n {\n selected: showInactive,\n text: i18n.text('Show inactive relationships'),\n onClick: onToggleShowInactive,\n id: 'showInactive'\n }\n ];\n }, [onToggleSearchByOv, searchByOv, onToggleShowInactive, showInactive]);\n\n return (\n <BasicViewHeader title={i18n.text('Relationships')} classes={{root: styles.header}}>\n {relationTypes.length > 0 && (\n <RelationTypeSelector\n className={styles.relationTypeSelector}\n value={currentRelationType}\n onChange={onRelationTypeChange}\n relationTypes={relationTypes}\n />\n )}\n <VerticalDivider height={28} margin={20} />\n <Typography variant=\"caption\" className={styles.total}>\n {total === 1\n ? i18n.text('${count} record', {count: total})\n : i18n.text('${count} records', {count: total})}\n </Typography>\n <Spacer />\n <SettingsMenu items={settingItems} menuId=\"relationships-view-settings\" />\n <FilterButton enabled={filteringEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={28} margin={8} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </BasicViewHeader>\n );\n};\n\nexport default memo(RelationshipsTableHeader);\n","import {Connection, isActiveObject} from '@reltio/mdm-sdk';\n\nexport const getIsInactiveRelation = (connection: Connection) =>\n !isActiveObject(connection?.relation) || !isActiveObject(connection?.entity);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n width: '100%',\n fontSize: '12px',\n color: theme.palette.text.secondary\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden',\n overflowWrap: 'break-word'\n },\n inactiveRowCell: {\n opacity: 0.6\n },\n defaultWrapper: {\n padding: '15px 25px 0 25px',\n '&:last-child': {\n paddingBottom: '15px'\n }\n },\n entityCell: {\n display: 'flex',\n alignItems: 'flex-start',\n padding: '15px'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n margin: '-10px 0 -10px -10px'\n },\n inactiveEntityAvatar: {\n overflow: 'initial',\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n backgroundColor: 'rgb(209, 206, 206)',\n border: '1px solid rgba(0, 0, 0, 1)',\n borderRadius: '2px',\n width: '12px',\n right: 0,\n bottom: 0,\n height: '12px'\n },\n '& > img': {\n borderRadius: '50%',\n overflow: 'hidden'\n }\n },\n entityLabel: {\n color: theme.palette.primary.main,\n textDecoration: 'none',\n fontWeight: 500\n },\n attributesWrapper: {\n padding: '15px 25px 10px 25px',\n color: 'rgba(0,0,0,0.87)'\n },\n commentsContainer: {\n marginLeft: 'auto'\n },\n headLabelWrapper: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React from 'react';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {DescriptionIcon, withFilterAtBottom} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n const {description, label} = props?.headCellData || {};\n const cellLabel = (\n <div className={styles.headLabelWrapper}>\n {label}\n <DescriptionIcon description={description} />\n </div>\n );\n\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} headCellData={{...props?.headCellData, label: cellLabel}} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {CommentsContainer, COMMENTS_CONTAINER_VISIBILITY_AREA, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n ConnectionEntity,\n ConnectionRelation,\n createRelatedObjectUris,\n getEntityUriForLink,\n getLabel,\n TEntityType\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n entity: ConnectionEntity;\n relation: ConnectionRelation;\n entityType: TEntityType;\n };\n isInactiveRelation?: boolean;\n};\n\nconst EntityProfileRenderer = ({value: {entity, entityType, relation}, isInactiveRelation}: Props) => {\n const styles = useStyles();\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUri);\n return (\n <div className={classnames(styles.entityCell, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <EntityTypeIcon\n className={classnames(styles.entityAvatar, {[styles.inactiveEntityAvatar]: isInactiveRelation})}\n entityType={entityType}\n />\n <EntityUriLink\n value={getEntityUriForLink({uri: entity.entityUri, dataTenant: entity.dataTenant})}\n className={styles.entityLabel}\n >\n {getLabel(entity.entityLabel)}\n </EntityUriLink>\n <div className={styles.commentsContainer} onClick={(e) => e.stopPropagation()}>\n <CommentsContainer\n uri={relation.relationUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection: {relation, entity}\n })}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n </div>\n </div>\n );\n};\n\nexport default EntityProfileRenderer;\n","import React from 'react';\nimport {ReadOnlyAttributesList} from '@reltio/components';\nimport {AttributeType, RecordAttributesType} from '@reltio/mdm-sdk';\nimport {RelationshipsTableColumnData} from '../../../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n columnData: RelationshipsTableColumnData;\n value: {\n attributeTypes: AttributeType[];\n attributes: RecordAttributesType;\n analyticsAttributes?: RecordAttributesType;\n };\n};\n\nconst AttributesRenderer = ({columnData, value: {attributes, analyticsAttributes, attributeTypes}}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.attributesWrapper} onClick={(e) => e.stopPropagation()}>\n <ReadOnlyAttributesList\n max={columnData.maxAttrsToShow}\n entity={{attributes, analyticsAttributes}}\n attrTypes={attributeTypes}\n drawLines={false}\n />\n </div>\n );\n};\n\nexport default AttributesRenderer;\n","import React from 'react';\nimport {DataTypeValue} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {RelationshipsTableColumnData} from '../../../types';\n\ntype Props = {\n columnData: RelationshipsTableColumnData;\n value: unknown;\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.defaultWrapper}>\n <DataTypeValue value={value} dataTypeDefinition={dataTypeDefinition} />\n </div>\n );\n};\n\nexport default DefaultCellValueRenderer;\n","import {assoc, split, slice, values, length, path, cond, map, pathEq, pipe, reduce, T, either} from 'ramda';\nimport {defaultGetRowCellHeight} from '@reltio/components';\nimport {Connection, getEntityType, getRelationType, getOvAttributeValuesByPath, Metadata} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport EntityProfileRenderer from './cell-renderers/EntityProfileRenderer';\nimport AttributesRenderer from './cell-renderers/AttributesRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport {RelationshipsTableColumnData} from '../../types';\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(1, Infinity));\n\nconst getRelationAttributeValues = (attrPath, relation) =>\n pipe(path(['object', attrPath[0]]), getOvAttributeValuesByPath(attrPath.slice(1)))(relation);\n\nconst getRowValueByColumnId = (metadata: Metadata, {entity, relation}: Connection, columnId: string) => {\n switch (columnId) {\n case 'entity.label':\n return {entity, entityType: getEntityType(metadata, entity.entityType), relation};\n case 'relation.type':\n return relation.relationType;\n case 'relation.label':\n return relation.relationLabel;\n case 'relation.activeness.startDate':\n return relation.startDate;\n case 'relation.activeness.endDate':\n return relation.endDate;\n case 'relation.attributes':\n return {\n attributes: relation.object.attributes,\n attributeTypes: getRelationType(metadata, relation.relationType).attributes\n };\n case 'relation.analyticsAttributes':\n return {\n analyticsAttributes: relation.object.analyticsAttributes,\n attributeTypes: getRelationType(metadata, relation.relationType).analyticsAttributes\n };\n default: {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getRelationAttributeValues(attrPath, relation);\n }\n }\n};\n\nconst getBasicTableRowsData = (\n metadata: Metadata,\n columnsData: RelationshipsTableColumnData[],\n connections: Connection[]\n) => {\n return (connections || []).map((connection) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(metadata, connection, id), acc), {}),\n assoc('rawValue', connection)\n )(columnsData)\n );\n};\n\nconst getNestedPathByColumnId = (columnId: string) => {\n if (columnId.startsWith('relation.attributes') || columnId.startsWith('relation.analyticsAttributes')) {\n const attrPath = getAttrPathFromColumnId(columnId).slice(1);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRenderer = (columnId: string) => {\n switch (columnId) {\n case 'entity.label':\n return EntityProfileRenderer;\n case 'relation.attributes':\n case 'relation.analyticsAttributes':\n return AttributesRenderer;\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getColumnDataByColumnId = (columnData: RelationshipsTableColumnData) => ({\n sortable: true,\n resizable: true,\n ...columnData,\n headCellRenderer: HeadCellRenderer,\n nestedPath: getNestedPathByColumnId(columnData.id),\n rowCellValueRenderer: getCellValueRenderer(columnData.id)\n});\n\nconst getBasicTableColumnsData = map(getColumnDataByColumnId);\n\nconst calculateAttributesCellHeight = ({columnData, cell}) => {\n const attributesCount = pipe(\n either(path(['values', 0, 'attributes']), path(['values', 0, 'analyticsAttributes'])),\n values,\n length\n )(cell);\n return attributesCount > columnData.maxAttrsToShow\n ? columnData.maxAttrsToShow * 26 + 49\n : attributesCount * 26 + 25;\n};\n\nconst getStaticRowCellHeight = cond([\n [pathEq(['columnData', 'id'], 'relation.attributes'), calculateAttributesCellHeight],\n [pathEq(['columnData', 'id'], 'relation.analyticsAttributes'), calculateAttributesCellHeight],\n [T, defaultGetRowCellHeight]\n]);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData, getStaticRowCellHeight};\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n cell: {\n values: unknown[];\n };\n CellValueRenderer: React.ElementType;\n isInactiveRelation?: boolean;\n};\n\nconst RowCellRenderer = ({cell, CellValueRenderer, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.rowCell, {[styles.inactiveRowCell]: otherProps.isInactiveRelation})}>\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default RowCellRenderer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n menuItem: {\n minHeight: '32px',\n color: theme.palette.text.secondary\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0,\n marginLeft: '16px'\n },\n buttons: {\n display: 'flex',\n alignItems: 'center',\n paddingRight: '5px'\n }\n}));\n","import React, {forwardRef, ReactNode} from 'react';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport {noop, withTooltip} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst MenuItemWithTooltip = withTooltip(MenuItem);\n\ntype Item = {\n text?: string;\n disabled?: boolean;\n icon: ReactNode;\n tooltip?: string;\n onClick?: (e) => void;\n};\n\ntype Props = {\n item: Item;\n onMenuClose?: () => void;\n};\n\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = noop}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {icon, disabled, text, tooltip, onClick} = item;\n const handleClick = (e) => {\n onMenuClose();\n onClick(e);\n };\n\n return (\n <MenuItemWithTooltip\n tooltipTitle={tooltip}\n showForDisabled={true}\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n >\n {icon}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItemWithTooltip>\n );\n});\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React, {useCallback, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport {ConfirmationDialog, DropDownMenuButton, noop, SmallIconButton} from '@reltio/components';\nimport MenuItemRenderer from './MenuItemRenderer';\nimport {checkMetadataPermission, Connection, getLabel, getRelationType, MetadataPermissions} from '@reltio/mdm-sdk';\nimport {pipe, prop} from 'ramda';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n disableDelete?: boolean;\n connection: Connection;\n onMenuOpen?: () => void;\n onMenuClose?: () => void;\n onDelete: () => void;\n};\n\nexport const RelationshipMenuButton = ({\n disableDelete,\n connection: {entity, relation},\n onMenuOpen = noop,\n onMenuClose = noop,\n onDelete\n}: Props) => {\n const styles = useStyles();\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const hasDeletePermission = pipe(\n prop('relationType'),\n getRelationType(metadata),\n checkMetadataPermission(MetadataPermissions.DELETE)\n )(relation);\n\n const canDelete = !disableDelete && hasDeletePermission;\n\n const [pendingDeletion, setPendingDeletion] = useState(false);\n const showDeleteConfirmation = () => setPendingDeletion(true);\n const hideDeleteConfirmation = () => setPendingDeletion(false);\n\n const actions = [\n {\n disabled: !canDelete,\n text: i18n.text('Delete'),\n icon: <DeleteIcon />,\n tooltip: canDelete ? null : i18n.text(\"You don't have permissions to delete\"),\n onClick: showDeleteConfirmation\n }\n ];\n\n const handleMenuClose = useCallback(() => {\n if (!pendingDeletion) {\n onMenuClose();\n }\n }, [pendingDeletion, onMenuClose]);\n const truncateWithEllipsis = (text: string) => (text.length > 17 ? `${text.substring(0, 17)}...` : text);\n\n return (\n <div className={styles.buttons}>\n <DropDownMenuButton\n MenuItemRenderer={MenuItemRenderer}\n menuId={'relationships-table-actions'}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'S'\n }}\n menuItems={actions}\n onMenuOpen={onMenuOpen}\n onMenuClose={handleMenuClose}\n />\n <ConfirmationDialog\n open={pendingDeletion}\n title={i18n.text('Do you want to delete relationship \"${label}\"?', {\n label: truncateWithEllipsis(getLabel(entity.entityLabel))\n })}\n content={i18n.text(\n 'This relationship will be removed and all the values in the relationship will be permanently deleted. \\\nAre you sure you want to delete this relationship?'\n )}\n onSave={pipe(hideDeleteConfirmation, onMenuClose, onDelete)}\n onDiscard={pipe(hideDeleteConfirmation, onMenuClose)}\n saveCaption={i18n.text('Delete')}\n discardCaption={i18n.text('Cancel')}\n />\n </div>\n );\n};\n\nexport default RelationshipMenuButton;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n tableContainer: {\n flex: 1,\n overflow: 'hidden',\n display: 'flex',\n zIndex: 0,\n background: '#FFF'\n },\n hoveredRowRightContentWrapper: {\n width: '100%',\n pointerEvents: 'none!important' as any\n },\n menuButtonContainer: {\n position: 'absolute',\n top: 'calc(50% - 12px)',\n right: 0,\n pointerEvents: 'all'\n },\n tooltipAnchor: {\n width: '100%',\n height: '1px'\n }\n});\n","import React, {ForwardedRef, memo, useCallback, useMemo, useState} from 'react';\nimport {Connection, Metadata} from '@reltio/mdm-sdk';\nimport {\n BasicTable,\n ColumnData,\n ColumnFilter,\n RowCellAutoSizer,\n Sorting,\n useDynamicRowCellHeight\n} from '@reltio/components';\nimport Tooltip from '@mui/material/Tooltip';\nimport i18n from 'ui-i18n';\nimport {either} from 'ramda';\nimport {getIsInactiveRelation} from '../../services/helpers';\nimport {getBasicTableColumnsData, getBasicTableRowsData, getStaticRowCellHeight} from './helpers';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport RelationshipMenuButton from '../RelationshipMenuButton/RelationshipMenuButton';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n metadata: Metadata;\n connections: Connection[];\n columnsData: ColumnData[];\n sorting: Sorting;\n onSort: (field: string) => void;\n filters?: Record<string, ColumnFilter>;\n onFilter: (event: {columnId: string; filter: ColumnFilter}) => void;\n onRowClick: (rowIndex: number) => void;\n onDelete: (relationUri: string) => void;\n tableRef: ForwardedRef<unknown>;\n readOnly?: boolean;\n};\n\nconst RelationshipsTable = ({\n metadata,\n connections,\n columnsData,\n sorting,\n onSort,\n filters,\n onFilter,\n onRowClick,\n tableRef,\n onDelete,\n readOnly\n}: Props) => {\n const styles = useStyles();\n\n const tableRowsData = useMemo(\n () => getBasicTableRowsData(metadata, columnsData, connections),\n [metadata, connections, columnsData]\n );\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const {getDynamicRowCellHeight, changeRowCellHeight} = useDynamicRowCellHeight();\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, getStaticRowCellHeight), [\n getDynamicRowCellHeight,\n getStaticRowCellHeight\n ]);\n const [hoverRowIndex, setHoverRowIndex] = useState<number>(null);\n\n const renderRowCell = useCallback(\n (props) => {\n const isInactiveRelation = getIsInactiveRelation(props.rowValue.rawValue);\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} isInactiveRelation={isInactiveRelation} />\n </RowCellAutoSizer>\n );\n },\n [changeRowCellHeight]\n );\n\n const [isActionsMenuOpen, setIsActionsMenuOpen] = useState(false);\n\n const handleActionsMenuOpen = useCallback(() => setIsActionsMenuOpen(true), []);\n const handleActionsMenuClose = useCallback(() => {\n setHoverRowIndex(null);\n setIsActionsMenuOpen(false);\n }, []);\n\n const onRowHover = useCallback(\n (rowIndex) => setHoverRowIndex((prevHoverRowIndex) => (isActionsMenuOpen ? prevHoverRowIndex : rowIndex)),\n [isActionsMenuOpen]\n );\n\n const hoveredRowRightContent = useMemo(() => {\n const connection: Connection = hoverRowIndex != null ? tableRowsData[hoverRowIndex].rawValue : null;\n const isInactiveRelation = getIsInactiveRelation(connection);\n\n return (\n connection && (\n <>\n <Tooltip\n key={connection.relation.relationUri}\n open={!isActionsMenuOpen && isInactiveRelation}\n title={i18n.text('Inactive')}\n >\n <div className={styles.tooltipAnchor} />\n </Tooltip>\n <div className={styles.menuButtonContainer}>\n <RelationshipMenuButton\n disableDelete={readOnly}\n connection={connection}\n onMenuOpen={handleActionsMenuOpen}\n onMenuClose={handleActionsMenuClose}\n onDelete={() => onDelete(connection.relation.relationUri)}\n />\n </div>\n </>\n )\n );\n }, [isActionsMenuOpen, onDelete, tableRowsData, hoverRowIndex]);\n\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n fixFirstColumn={true}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={48}\n getRowCellHeight={getRowCellHeight}\n renderRowCell={renderRowCell}\n onRowClick={onRowClick}\n ref={tableRef}\n hoverStateEnabled={true}\n hoverRowIndex={hoverRowIndex}\n onRowHover={onRowHover}\n hoveredRowRightContent={hoveredRowRightContent}\n classes={{\n hoveredRowRightContentWrapper: styles.hoveredRowRightContentWrapper\n }}\n />\n </div>\n );\n};\n\nexport default memo(RelationshipsTable);\n","import {AttributeType, Relation} from '@reltio/mdm-sdk';\nimport {CrosswalksByTypes, groupCrosswalksByTypesAndSources} from '@reltio/components';\nimport {assoc, map, pipe, propOr} from 'ramda';\n\ntype TableRow = {\n source: string;\n crosswalksByTypes: CrosswalksByTypes;\n};\n\nexport const buildTableRowsData = (relation: Relation, selectedAttributeTypes: AttributeType[] = []): TableRow[] => {\n return pipe(\n propOr([], 'crosswalks'),\n map(assoc('ownerType', 'entity')),\n groupCrosswalksByTypesAndSources(relation.type, selectedAttributeTypes)\n )(relation);\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n tableRow: {\n '& + &': {\n marginTop: '4px'\n },\n margin: 'auto',\n maxWidth: '448px'\n }\n}));\n","import React, {memo, useCallback, useMemo, useState} from 'react';\nimport {\n AttributeType,\n checkCanDeleteCrosswalk,\n checkCanEditCrosswalk,\n getRelationType,\n Metadata,\n Relation,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {DeleteCrosswalkEvent, EditCrosswalkEvent, SourceCrosswalksRow} from '@reltio/components';\nimport {append, ifElse, includes, without} from 'ramda';\nimport {buildTableRowsData} from './helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n readOnly?: boolean;\n relation: Relation;\n metadata: Metadata;\n selectedAttributeTypes?: AttributeType[];\n onDeleteCrosswalk: (event: DeleteCrosswalkEvent) => void;\n onEditCrosswalk: (event: EditCrosswalkEvent) => void;\n};\n\nconst LegendTable = ({\n readOnly,\n relation,\n metadata,\n selectedAttributeTypes,\n onDeleteCrosswalk,\n onEditCrosswalk\n}: Props) => {\n const styles = useStyles();\n\n const relationType: TRelationType = getRelationType(metadata, relation.type);\n\n const rowsData = useMemo(\n () => buildTableRowsData(relation, selectedAttributeTypes),\n [relation, selectedAttributeTypes]\n );\n const [expandedSources, setExpandedSources] = useState<string[]>([]);\n\n const handleDelete = useCallback(\n (crosswalkId: string) => {\n onDeleteCrosswalk({entityUri: relation.uri, crosswalkId});\n },\n [onDeleteCrosswalk, relation.uri]\n );\n\n const handleEdit = useCallback(\n (event: Omit<EditCrosswalkEvent, 'entityUri'>) => {\n onEditCrosswalk({entityUri: relation.uri, ...event});\n },\n [onEditCrosswalk, relation.uri]\n );\n\n return (\n <div>\n {rowsData.map(({source, crosswalksByTypes}) => {\n return (\n <div key={source} className={styles.tableRow}>\n <SourceCrosswalksRow\n source={source}\n crosswalksByTypes={crosswalksByTypes}\n expanded={expandedSources.includes(source)}\n disableEditCrosswalk={!checkCanEditCrosswalk(relationType) || readOnly}\n disableDeleteCrosswalk={!checkCanDeleteCrosswalk(relationType) || readOnly}\n onEdit={handleEdit}\n onDelete={handleDelete}\n onToggleExpanded={() => {\n setExpandedSources(ifElse(includes(source), without([source]), append(source)));\n }}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default memo(LegendTable);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n padding: '20px 12px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n title: {\n fontWeight: 500,\n fontSize: '20px',\n lineHeight: '23px',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary,\n marginLeft: '12px'\n },\n hint: {\n color: theme.palette.text.secondary,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n alignSelf: 'flex-start',\n margin: '4px 14px 10px'\n },\n hintText: {\n marginLeft: '8px',\n fontSize: '12px',\n lineHeight: '16px'\n },\n buttons: {\n display: 'flex',\n padding: '8px 6px 4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n paddingLeft: 25,\n margin: 'auto',\n maxWidth: '448px',\n boxSizing: 'border-box',\n marginBottom: '4px'\n },\n tableContainer: {\n overflowY: 'auto',\n overflowX: 'hidden',\n paddingLeft: '16px',\n paddingRight: '6px'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport InfoIcon from '@mui/icons-material/Info';\nimport AddIcon from '@mui/icons-material/Add';\nimport Button from '@mui/material/Button';\nimport LegendTable from '../LegendTable/LegendTable';\nimport {\n AttributeType,\n checkCanCreateCrosswalk,\n getRelationType,\n Metadata,\n Relation,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {\n AddCrosswalkEvent,\n CrosswalkEditor,\n DeleteCrosswalkEvent,\n EditCrosswalkEvent,\n withTooltip\n} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst ButtonWithTooltip = withTooltip(Button);\n\ntype Props = {\n className?: string;\n readOnly?: boolean;\n relation: Relation;\n selectedAttributeTypes?: AttributeType[];\n onAddCrosswalk: (event: AddCrosswalkEvent) => void;\n onDeleteCrosswalk: (event: DeleteCrosswalkEvent) => void;\n onEditCrosswalk: (event: EditCrosswalkEvent) => void;\n};\n\nconst LegendPanel = ({\n className,\n readOnly,\n relation,\n selectedAttributeTypes,\n onAddCrosswalk,\n onDeleteCrosswalk,\n onEditCrosswalk\n}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationType: TRelationType = getRelationType(metadata, relation.type);\n\n const [openEditor, setOpenEditor] = useState(false);\n const canAdd = checkCanCreateCrosswalk(relationType) && !readOnly;\n\n return (\n <div className={className}>\n <div className={styles.header}>\n <span className={styles.title}>{i18n.text('Legend')}</span>\n </div>\n <div className={styles.buttons}>\n <ButtonWithTooltip\n color=\"primary\"\n showForDisabled={true}\n disabled={!canAdd}\n tooltipTitle={canAdd ? null : i18n.text(\"You don't have permissions to add crosswalk\")}\n onClick={() => setOpenEditor(true)}\n >\n <AddIcon className={styles.icon} />\n <div className={styles.buttonLabel}>{i18n.text('Crosswalk')}</div>\n </ButtonWithTooltip>\n </div>\n <div className={styles.hint}>\n <InfoIcon className={styles.icon} />\n <span className={styles.hintText}>\n {i18n.text('You can drag a crosswalk to add values to attributes swimlanes')}\n </span>\n </div>\n <div className={styles.tableContainer}>\n {openEditor && (\n <CrosswalkEditor\n className={styles.editor}\n onAdd={(crosswalk) => onAddCrosswalk({entity: relation, crosswalk})}\n onClose={() => setOpenEditor(false)}\n />\n )}\n <LegendTable\n readOnly={readOnly}\n metadata={metadata}\n relation={relation}\n selectedAttributeTypes={selectedAttributeTypes}\n onDeleteCrosswalk={onDeleteCrosswalk}\n onEditCrosswalk={onEditCrosswalk}\n />\n </div>\n </div>\n );\n};\n\nexport default memo(LegendPanel);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n entityInfo: {\n flex: '0 1 auto',\n overflow: 'hidden',\n minWidth: '100px'\n },\n entityLabelContainer: {\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden'\n },\n entityLabel: {\n lineHeight: '1.2',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary\n },\n infoIcon: {\n fontSize: '16px',\n color: theme.palette.text.secondary,\n marginLeft: '5px'\n },\n profileBand: {\n margin: '-10px',\n maxWidth: '500px'\n },\n entityTypeBadge: {\n marginTop: '7px'\n }\n}));\n","import React from 'react';\nimport {Entity, getLabel} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport {ExpandedValueTooltip, LightArrowTooltip, ProfileBand, EntityTypeBadge} from '@reltio/components';\nimport InfoIcon from '@mui/icons-material/Info';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n};\n\nconst EntityInfo = ({entity}: Props) => {\n const styles = useStyles();\n const label = getLabel(entity.label);\n return (\n <div className={styles.entityInfo}>\n <div className={styles.entityLabelContainer}>\n <ExpandedValueTooltip value={label}>\n <Typography variant=\"h6\" className={styles.entityLabel} noWrap>\n {label}\n </Typography>\n </ExpandedValueTooltip>\n <LightArrowTooltip\n title={<ProfileBand className={styles.profileBand} entity={entity} />}\n placement={'right'}\n >\n <InfoIcon className={styles.infoIcon} />\n </LightArrowTooltip>\n </div>\n <EntityTypeBadge className={styles.entityTypeBadge} entity={entity} size={'medium'} />\n </div>\n );\n};\n\nexport default EntityInfo;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n flexShrink: 0,\n overflow: 'hidden',\n width: '110px'\n },\n label: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n","import React from 'react';\nimport {ConnectionRelation} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport {ExpandedValueTooltip} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n relation: ConnectionRelation;\n};\n\nconst RelationDirection = ({relation}: Props) => {\n const styles = useStyles();\n const {direction, relationLabel} = relation;\n return (\n <div className={styles.root}>\n <ExpandedValueTooltip value={relationLabel}>\n <Typography variant={'subtitle2'} className={styles.label} align={'center'} noWrap>\n {relationLabel}\n </Typography>\n </ExpandedValueTooltip>\n <svg width=\"110\" height=\"12\" fill=\"black\" fillOpacity=\"0.3\">\n {direction === 'out' && <polygon points=\"94 0, 110 6, 94 12, 94 9, 0 9, 0 3, 94 3\" />}\n {direction === 'bidirectional' && (\n <polygon points=\"94 0, 110 6, 94 12, 94 9, 16 9, 16 12, 0 6, 16 0, 16 3, 94 3\" />\n )}\n {direction === 'in' && <polygon points=\"16 12, 0 6, 16 0, 16 3, 110 3, 110 9, 16 9\" />}\n </svg>\n </div>\n );\n};\n\nexport default RelationDirection;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n '&:hover $editButton': {\n visibility: 'visible'\n }\n },\n editButton: {\n visibility: 'hidden',\n marginLeft: '4px',\n marginBottom: '4px'\n },\n paper: {\n width: '150px',\n border: '3px solid rgba(0, 0, 0, 0.3)',\n borderRadius: '4px',\n boxSizing: 'border-box',\n overflow: 'hidden'\n }\n}));\n","import React, {KeyboardEvent, useRef, useState} from 'react';\nimport {formatDate} from '@reltio/mdm-sdk';\nimport {DateEditor, SmallIconButton} from '@reltio/components';\nimport EditIcon from '@mui/icons-material/Edit';\nimport Popover from '@mui/material/Popover';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: number;\n onChange: (value: number) => void;\n readOnly?: boolean;\n};\n\nconst RelationDate = ({value = null, onChange, readOnly}: Props) => {\n const styles = useStyles();\n const ref = useRef<HTMLSpanElement>();\n\n const [showEditor, setShowEditor] = useState(false);\n const openEditor = () => setShowEditor(true);\n const closeEditor = () => setShowEditor(false);\n\n const [editedValue, setEditedValue] = useState(value);\n\n const applyChangesAndClose = () => {\n if (editedValue !== value) {\n onChange(editedValue);\n }\n closeEditor();\n };\n\n const onKeyUp = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter') applyChangesAndClose();\n else if (event.key === 'Escape') closeEditor();\n };\n\n return (\n <span ref={ref} className={styles.root}>\n {value && formatDate(value)}\n <SmallIconButton\n disabled={readOnly}\n icon={EditIcon}\n size={'XXS'}\n className={styles.editButton}\n onClick={openEditor}\n />\n <Popover\n classes={{paper: styles.paper}}\n open={showEditor}\n anchorEl={ref.current}\n anchorOrigin={{vertical: 'top', horizontal: 'left'}}\n transformOrigin={{vertical: 14, horizontal: 20}}\n onKeyUp={onKeyUp}\n onBackdropClick={applyChangesAndClose}\n >\n <DateEditor\n label={undefined}\n value={editedValue && new Date(editedValue)}\n onChange={(value) => setEditedValue(value && value.valueOf())}\n slotProps={{\n textField: {\n size: 'small',\n hiddenLabel: true,\n InputProps: {\n autoFocus: true,\n disableUnderline: true,\n fullWidth: true\n }\n }\n }}\n />\n </Popover>\n </span>\n );\n};\n\nexport default RelationDate;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n relationBand: {\n flexShrink: 0,\n boxShadow: 'inset 0px -1px 0px rgba(0,0,0,0.06)',\n padding: '16px 19px'\n },\n inactiveRelationBand: {\n opacity: 0.6,\n background: 'rgba(185, 188, 197, 0.18)'\n },\n toolbar: {\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n marginBottom: '10px'\n },\n mainInfo: {\n display: 'flex',\n gap: '16px',\n marginLeft: '40px'\n },\n detailsInfo: {\n display: 'flex',\n gap: '34px',\n marginLeft: '40px',\n marginTop: '17px',\n color: theme.palette.text.secondary,\n fontSize: '13px'\n },\n detailTitle: {\n color: theme.palette.text.primary,\n flexShrink: 0,\n marginRight: '4px'\n },\n directionalLabel: {\n display: 'flex',\n overflow: 'hidden',\n '& span': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n }\n },\n relationDate: {\n flexShrink: 0\n },\n commentsContainer: {\n marginRight: '18px'\n }\n}));\n","import React, {memo} from 'react';\nimport {CollaborationObjectTypes, Connection, createRelatedObjectUris, Entity} from '@reltio/mdm-sdk';\nimport {\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ExpandedValueTooltip,\n SmallIconButton,\n Spacer\n} from '@reltio/components';\nimport classnames from 'classnames';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport Typography from '@mui/material/Typography';\nimport i18n from 'ui-i18n';\nimport EntityInfo from './EntityInfo/EntityInfo';\nimport RelationDirection from './RelationDirection/RelationDirection';\nimport RelationDate from './RelationDate/RelationDate';\nimport {getIsInactiveRelation} from '../../services/helpers';\nimport RelationshipMenuButton from '../RelationshipMenuButton/RelationshipMenuButton';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n readOnly?: boolean;\n entity: Entity;\n connection: Connection;\n onNavigateBack: () => void;\n onDelete: () => void;\n onChangeActivenessDate: (attributeName: string, value: number) => void;\n};\n\nconst RelationshipBand = ({readOnly, entity, connection, onNavigateBack, onDelete, onChangeActivenessDate}: Props) => {\n const isInactiveRelation = getIsInactiveRelation(connection);\n const styles = useStyles();\n return (\n <div\n className={classnames(styles.relationBand, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [styles.inactiveRelationBand]: isInactiveRelation\n })}\n data-reltio-id=\"relationship-band-wrapper\"\n >\n <div className={styles.toolbar}>\n <SmallIconButton icon={ArrowBackIcon} size={'S'} onClick={() => onNavigateBack()} />\n <Typography variant={'subtitle2'} display={'inline'}>\n {i18n.text('Back to relationships')}\n </Typography>\n <Spacer />\n <div className={styles.commentsContainer}>\n <CommentsContainer\n uri={connection.relation.relationUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: entity?.uri,\n connection\n })}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n </div>\n <RelationshipMenuButton connection={connection} onDelete={onDelete} disableDelete={readOnly} />\n </div>\n <div className={styles.mainInfo}>\n <EntityInfo entity={entity} />\n <RelationDirection relation={connection.relation} />\n <EntityInfo entity={{...connection.entity.object, dataTenant: connection.entity.dataTenant}} />\n </div>\n <div className={styles.detailsInfo}>\n <div className={styles.directionalLabel}>\n <span className={styles.detailTitle}>{i18n.text('Directional label:')}</span>\n <ExpandedValueTooltip value={connection.relation.relationLabel}>\n <span>{connection.relation.relationLabel}</span>\n </ExpandedValueTooltip>\n </div>\n <div className={styles.relationDate}>\n <span className={styles.detailTitle}>{i18n.text('Start date:')}</span>\n <RelationDate\n value={connection.relation.startDate}\n onChange={(value) => onChangeActivenessDate('startDate', value)}\n readOnly={readOnly}\n />\n </div>\n <div className={styles.relationDate}>\n <span className={styles.detailTitle}>{i18n.text('End date:')}</span>\n <RelationDate\n value={connection.relation.endDate}\n onChange={(value) => onChangeActivenessDate('endDate', value)}\n readOnly={readOnly}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default memo(RelationshipBand);\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","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n detailsView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: 'hidden'\n },\n locked: {\n pointerEvents: 'none'\n },\n resizablePanesWrapper: {\n flexGrow: 1\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});\n","import React, {memo, useCallback, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {\n ApiError,\n ApiErrorCode,\n AttributeType,\n Connection,\n deleteActivenessAttribute,\n Entity,\n getRelation,\n Relation,\n updateActivenessAttribute\n} from '@reltio/mdm-sdk';\nimport {\n AttributesTable,\n BasicView,\n CrosswalkDragLayer,\n CrosswalksDisplayProvider,\n ExpandedAttributesProvider,\n ResizablePanes,\n useCrosswalkActions,\n useModifiedEntity,\n useSafePromise\n} from '@reltio/components';\nimport LegendPanel from '../LegendPanel/LegendPanel';\nimport RelationshipBand from '../RelationshipBand/RelationshipBand';\nimport {assocPath, dissocPath, pipe} from 'ramda';\nimport {showErrorMessage} from '../../services/errors';\nimport {useCrosswalksDisplay} from '../../hooks/useCrosswalksDisplay';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport {DndProvider} from 'react-dnd';\n\nimport {useStyles} from './styles';\n\nconst MIN_PANE1_SIZE = 600;\nconst MIN_PANE2_SIZE = 480;\nconst MAX_PANE1_SIZE = -MIN_PANE2_SIZE;\n\ntype Props = {\n entity: Entity;\n connection: Connection;\n visibleColumns?: string[];\n onClose: (error?: ApiError) => void;\n onDeleteConnection: () => void;\n onChangeConnection: (connection: Connection) => void;\n onChangeVisibleColumns: (visibleColumns: string[]) => void;\n readOnly?: boolean;\n};\n\nconst RelationshipDetails = ({\n entity,\n connection,\n visibleColumns,\n onClose,\n onDeleteConnection,\n onChangeConnection,\n onChangeVisibleColumns,\n readOnly\n}: Props) => {\n const styles = useStyles();\n const displayProps = useCrosswalksDisplay();\n const [paneSize, setPaneSize] = useState(MAX_PANE1_SIZE);\n const handlePaneSizeChange = useCallback(({percentageSize}) => setPaneSize(percentageSize), []);\n\n const [selectedAttrTypes, setSelectedAttrTypes] = useState<AttributeType[]>();\n const [isLoading, setIsLoading] = useState(false);\n const relationUri = connection.relation.relationUri;\n\n const safePromise = useSafePromise();\n const onLoad = useCallback(() => setIsLoading(true), []);\n const onLoaded = useCallback(() => setIsLoading(false), []);\n const onDeleteRelation = useCallback(pipe(onDeleteConnection, onLoad), []);\n const [onError, reloadRelation] = useMemo(() => {\n const onError = (error: ApiError) => {\n if (error.errorCode === ApiErrorCode.CROSSWALK_NOT_FOUND) {\n showErrorMessage(error);\n reloadRelation();\n } else if (error.errorCode === ApiErrorCode.OBJECT_NOT_FOUND) {\n onClose(error);\n } else {\n showErrorMessage(error);\n onLoaded();\n }\n };\n const reloadRelation = () => {\n safePromise(getRelation(relationUri))\n .then((newRelation: Relation) => {\n onChangeConnection(assocPath(['relation', 'object'], newRelation, connection));\n onLoaded();\n })\n .catch(onError);\n };\n return [onError, reloadRelation];\n }, [connection, onLoaded, onChangeConnection, onClose]);\n\n const {\n modifiedEntity,\n crosswalksMap,\n newlyCreatedAttributes,\n onPinAttribute,\n onIgnoreAttribute,\n onAddAttribute,\n onEditAttribute,\n onDeleteAttribute,\n emptyTempAttributeUris\n } = useModifiedEntity({\n entity: connection.relation.object,\n onModify: reloadRelation,\n onError,\n onLoad\n });\n\n const {addCrosswalk, deleteCrosswalk, editCrosswalk} = useCrosswalkActions({\n onSuccess: reloadRelation,\n onError,\n onLoad\n });\n\n const onChangeActivenessDate = useCallback(\n (attributeName: string, value: number) => {\n onLoad();\n const request = value\n ? updateActivenessAttribute({entityUri: relationUri, attributeName, value}).then(() =>\n onChangeConnection(assocPath(['relation', attributeName], value, connection))\n )\n : deleteActivenessAttribute({entityUri: relationUri, attributeName}).then(() =>\n onChangeConnection(dissocPath(['relation', attributeName], connection))\n );\n request.then(onLoaded).catch(onError);\n },\n [connection, onLoad, onLoaded, onError]\n );\n\n return (\n <BasicView className={styles.detailsView}>\n <CrosswalksDisplayProvider {...displayProps}>\n <DndProvider backend={HTML5Backend}>\n <CrosswalkDragLayer />\n <ResizablePanes\n className={classnames(styles.resizablePanesWrapper, {[styles.locked]: isLoading})}\n orientation={'vertical'}\n size={paneSize}\n minSize={MIN_PANE1_SIZE}\n maxSize={MAX_PANE1_SIZE}\n allowResize={true}\n onChange={handlePaneSizeChange}\n >\n <div className={styles.pane}>\n <RelationshipBand\n readOnly={readOnly}\n entity={entity}\n connection={connection}\n onNavigateBack={onClose}\n onDelete={onDeleteRelation}\n onChangeActivenessDate={onChangeActivenessDate}\n />\n <ExpandedAttributesProvider attributeUris={newlyCreatedAttributes}>\n <AttributesTable\n readOnly={readOnly}\n entity={modifiedEntity}\n crosswalksMap={crosswalksMap}\n isLoading={isLoading}\n onPin={onPinAttribute}\n onIgnore={onIgnoreAttribute}\n onEdit={onEditAttribute}\n onAdd={onAddAttribute}\n onDelete={onDeleteAttribute}\n emptyTempAttributeUris={emptyTempAttributeUris}\n selectedAttributeTypes={selectedAttrTypes}\n onSelectAttributeTypes={setSelectedAttrTypes}\n visibleColumns={visibleColumns}\n onChangeVisibleColumns={onChangeVisibleColumns}\n />\n </ExpandedAttributesProvider>\n </div>\n <LegendPanel\n readOnly={readOnly}\n className={styles.pane}\n relation={connection.relation.object}\n selectedAttributeTypes={selectedAttrTypes}\n onAddCrosswalk={addCrosswalk}\n onDeleteCrosswalk={deleteCrosswalk}\n onEditCrosswalk={editCrosswalk}\n />\n </ResizablePanes>\n </DndProvider>\n </CrosswalksDisplayProvider>\n </BasicView>\n );\n};\n\nexport default memo(RelationshipDetails);\n","import {useCallback, useMemo, useState, useRef} from 'react';\nimport {CrosswalkBase, debounce, eqCrosswalks} from '@reltio/mdm-sdk';\nimport {any, concat} from 'ramda';\n\nexport const useCrosswalksDisplay = () => {\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 cacheHighlightedCrosswalks([crosswalk]);\n } else {\n cacheHighlightedCrosswalks([]);\n }\n },\n [cacheHighlightedCrosswalks]\n );\n\n const [focusedCrosswalks, setFocusedCrosswalks] = useState<CrosswalkBase[]>([]);\n const calculateFocusedCrosswalks = (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 const toggleCrosswalkFocus = useCallback((crosswalk: CrosswalkBase) => {\n if (!crosswalk) return;\n setFocusedCrosswalks((prevValue) => calculateFocusedCrosswalks([crosswalk], prevValue));\n }, []);\n\n return {\n highlightedCrosswalks: useMemo(\n () => [...highlightedCrosswalks, ...focusedCrosswalks],\n [highlightedCrosswalks, focusedCrosswalks]\n ),\n focusedCrosswalks,\n toggleCrosswalkFocus,\n setCrosswalkHighlighted\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n relationshipsView: {\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 flexDirection: 'column'\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 pane: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflow: 'hidden',\n position: 'relative'\n }\n});\n","import React, {useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react';\nimport {Dispatch} from 'redux';\nimport {connect, useSelector} from 'react-redux';\nimport {\n always,\n andThen,\n both,\n either,\n equals,\n filter,\n identity,\n map,\n otherwise,\n pipe,\n prop,\n propEq,\n update,\n when,\n not\n} from 'ramda';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n ApiError,\n ApiErrorCode,\n checkMetadataPermission,\n CollaborationObjectTypes,\n Connection,\n Entity,\n getEntitiesMapForConnections,\n getInheritancePath,\n getRelationshipsObjectIdsForCollaboration,\n isDataTenantEntity,\n Metadata,\n MetadataPermissions,\n Mode,\n RelationshipsPerspectiveConfig,\n removeRelation,\n TRelationType,\n ActivityFilter\n} from '@reltio/mdm-sdk';\nimport {\n BasicTablePagination,\n BasicView,\n CollaborationContextProvider,\n EntitiesMapContext,\n FeaturesContext,\n LinearLoadIndicator,\n ScreenProfileBand,\n useCollaboration,\n useDidUpdateEffect,\n useRelationsLoader\n} from '@reltio/components';\nimport useSavedState from '../../hooks/useSavedState';\nimport {useRelationshipsTable} from '../../hooks/useRelationshipsTable';\nimport {RelationshipsSavedState} from '../../types';\nimport {DEFAULT_COLUMNS, getColumnsData, ROWS_PER_PAGE_OPTIONS} from './helpers/tableHelpers';\nimport {buildRelationshipsFilter} from './helpers/filtersHelpers';\nimport RelationshipsTableHeader from '../RelationshipsTableHeader/RelationshipsTableHeader';\nimport RelationshipsTable from '../RelationshipsTable/RelationshipsTable';\nimport RelationshipDetails from '../RelationshipDetails/RelationshipDetails';\nimport {showErrorMessage} from '../../services/errors';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationshipsPerspectiveConfig;\n entity: Entity;\n metadata: Metadata;\n connections: Connection[];\n total: number;\n saveState: (state: RelationshipsSavedState) => void;\n getSavedState: () => Promise<RelationshipsSavedState>;\n dispatch: Dispatch;\n};\n\nconst RelationshipsView = ({\n config,\n entity,\n metadata,\n connections,\n total,\n saveState,\n getSavedState,\n dispatch\n}: Props) => {\n const styles = useStyles();\n const tableRef = useRef();\n\n const isDTEntity = isDataTenantEntity(entity);\n\n const [searchByOv, setSearchByOv] = useState(false);\n const [showInactive, setShowInactive] = useState(false);\n\n const {type: entityTypeUri} = entity || {};\n const [\n {\n visibleColumns,\n filters,\n page,\n rowsPerPage,\n sorting,\n currentRelationType,\n stateToSave,\n entityTypeOfAppliedSavedState\n },\n {\n changeColumns,\n toggleFilters,\n changeFilter,\n changePage,\n changeRowsPerPage,\n toggleSort,\n changeRelationType,\n saveCurrentState,\n applySavedState\n }\n ] = useRelationshipsTable({\n defaultColumns: DEFAULT_COLUMNS,\n defaultRowsPerPage: ROWS_PER_PAGE_OPTIONS[0],\n defaultSorting: {\n field: DEFAULT_COLUMNS[0],\n order: 'asc'\n }\n });\n\n const isSavedStateApplied = entityTypeOfAppliedSavedState === entityTypeUri;\n\n const {\n isLoading: isSavedStateLoading,\n relationsTableSavedState,\n attributesTableSavedState,\n updateRelationsTableSavedState,\n updateAttributesTableSavedState\n } = useSavedState({\n getSavedState,\n saveState,\n entityTypeUri\n });\n\n const [attributesTableVisibleColumns, setAttributesTableVisibleColumns] = useState<string[]>();\n\n const featuresContext = useContext(FeaturesContext);\n const showDescription = useSelector(mdmModule.selectors.getShowAttributeDescription);\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\n\n useEffect(() => {\n if (!isSavedStateLoading) {\n applySavedState({savedState: relationsTableSavedState, entityTypeUri});\n }\n }, [isSavedStateLoading, entityTypeUri]); // eslint-disable-line\n\n useEffect(() => {\n if (!isSavedStateLoading) {\n setAttributesTableVisibleColumns(attributesTableSavedState?.visibleColumns);\n }\n }, [isSavedStateLoading]); // eslint-disable-line\n\n useDidUpdateEffect(() => {\n if (isSavedStateApplied) {\n updateRelationsTableSavedState(stateToSave);\n }\n }, [stateToSave]);\n\n const resetPage = () => {\n changePage(0);\n };\n useDidUpdateEffect(resetPage, [entity]);\n\n const [detailedConnectionIndex, setDetailedConnectionIndex] = useState<number>();\n const hideConnectionDetails = useCallback(() => {\n setDetailedConnectionIndex(null);\n }, []);\n\n const relationTypes: TRelationType[] = useMemo(() => {\n const inheritancePath = getInheritancePath(metadata, entityTypeUri);\n const isRelatedToEntityType = ({startObject, endObject}) =>\n inheritancePath.some(either(equals(startObject.objectTypeURI), equals(endObject.objectTypeURI)));\n return metadata.relationTypes.filter(\n both(checkMetadataPermission(MetadataPermissions.READ), isRelatedToEntityType)\n );\n }, [metadata, entityTypeUri]);\n\n const columnsData = useMemo(\n () => getColumnsData(relationTypes, currentRelationType),\n [relationTypes, currentRelationType]\n );\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => columnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, columnsData]\n );\n\n const relationsConfig = useMemo(() => {\n const relations = pipe(\n when(always(currentRelationType), filter(propEq('uri', currentRelationType))),\n map(prop('uri'))\n )(relationTypes);\n return {\n id: config.id,\n content: {\n inRelations: relations,\n outRelations: relations\n }\n };\n }, [config.id, currentRelationType, relationTypes]);\n\n const relationFilter = useMemo(\n () => buildRelationshipsFilter(filters, visibleColumnsData),\n [filters, visibleColumnsData]\n );\n\n const {isLoading: isRelationsLoading, reload: reloadRelations} = useRelationsLoader({\n page,\n rowsPerPage,\n config: relationsConfig,\n entity: isSavedStateApplied ? entity : null,\n filter: relationFilter,\n mode: Mode.Viewing,\n sorting,\n searchByOv,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY\n });\n\n const isLoading = !isSavedStateApplied || isRelationsLoading;\n\n const onSort = useCallback(pipe(toggleSort, saveCurrentState), [toggleSort, saveCurrentState]);\n const onFilter = useCallback(pipe(changeFilter, saveCurrentState), [changeFilter, saveCurrentState]);\n const onToggleFilters = useCallback(pipe(toggleFilters, saveCurrentState), [toggleFilters, saveCurrentState]);\n const onChangeColumns = useCallback(pipe(changeColumns, saveCurrentState), [changeColumns, saveCurrentState]);\n const onRelationTypeChange = useCallback(pipe(changeRelationType, saveCurrentState), [\n changeRelationType,\n saveCurrentState\n ]);\n const onChangeDetailedColumns = useCallback(\n (visibleColumns: string[]) => {\n setAttributesTableVisibleColumns(visibleColumns);\n updateAttributesTableSavedState({visibleColumns});\n },\n [updateAttributesTableSavedState]\n );\n\n const detailedConnection = connections?.[detailedConnectionIndex];\n const onChangeDetailedConnection = useCallback(\n (newConnection: Connection) => {\n dispatch(\n profile.relations.actions.relationsLoaded({\n id: config.id,\n connections: update(detailedConnectionIndex, newConnection, connections),\n total\n })\n );\n },\n [detailedConnection]\n );\n const [objectIds, objectTypes] = useMemo(() => {\n return [getRelationshipsObjectIdsForCollaboration(connections), [CollaborationObjectTypes.RELATION]];\n }, [connections]);\n\n const collaboration = useCollaboration({objectIds, objectTypes, enabled: !isDTEntity});\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const handleError = useCallback(\n (error: ApiError) => {\n showErrorMessage(error);\n if (error.errorCode === ApiErrorCode.OBJECT_NOT_FOUND) {\n reloadRelations();\n }\n },\n [reloadRelations]\n );\n\n const deleteRelation = useCallback(\n (relationUri: string) => {\n pipe(removeRelation, andThen(reloadRelations), otherwise(handleError))(relationUri);\n },\n [reloadRelations, handleError]\n );\n\n const deleteRelationAndCloseDetails = useCallback(() => {\n pipe(\n removeRelation,\n andThen(pipe(hideConnectionDetails, reloadRelations)),\n otherwise((error: ApiError) => {\n if (error.errorCode === ApiErrorCode.OBJECT_NOT_FOUND) {\n hideConnectionDetails();\n }\n handleError(error);\n })\n )(detailedConnection.relation.relationUri);\n }, [detailedConnection, reloadRelations, hideConnectionDetails, handleError]);\n\n const onCloseConnectionDetails = useCallback(\n (error?: ApiError) => {\n if (error) handleError(error);\n hideConnectionDetails();\n },\n [handleError, hideConnectionDetails]\n );\n\n const onToggleSearchByOv = useCallback(() => {\n setSearchByOv(not);\n }, []);\n\n const onToggleShowInactive = useCallback(() => {\n setShowInactive(not);\n }, []);\n\n return (\n <FeaturesContext.Provider value={features}>\n <CollaborationContextProvider collaboration={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={styles.relationshipsView}>\n <ScreenProfileBand entity={entity} />\n <RelationshipsTableHeader\n total={total}\n filteringEnabled={!!filters}\n onToggleFilters={onToggleFilters}\n columnsData={columnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n relationTypes={relationTypes}\n currentRelationType={currentRelationType}\n onRelationTypeChange={onRelationTypeChange}\n searchByOv={searchByOv}\n onToggleSearchByOv={onToggleSearchByOv}\n showInactive={showInactive}\n onToggleShowInactive={onToggleShowInactive}\n />\n <div className={styles.pane}>\n {isLoading && <LinearLoadIndicator />}\n <RelationshipsTable\n readOnly={isDTEntity}\n metadata={metadata}\n connections={connections}\n columnsData={visibleColumnsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n onRowClick={setDetailedConnectionIndex}\n tableRef={tableRef}\n onDelete={deleteRelation}\n />\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n basicTableRef={tableRef}\n />\n </div>\n {detailedConnection && (\n <RelationshipDetails\n readOnly={isDTEntity}\n entity={entity}\n visibleColumns={attributesTableVisibleColumns}\n onChangeVisibleColumns={onChangeDetailedColumns}\n connection={detailedConnection}\n onClose={onCloseConnectionDetails}\n onDeleteConnection={deleteRelationAndCloseDetails}\n onChangeConnection={onChangeDetailedConnection}\n />\n )}\n </BasicView>\n </EntitiesMapContext.Provider>\n </CollaborationContextProvider>\n </FeaturesContext.Provider>\n );\n};\n\nconst mapStateToProps = (state, {config: {id}}) => {\n return {\n entity: mdmModule.selectors.getEntity(state),\n metadata: mdmModule.selectors.getMetadata(state),\n connections: mdmModule.selectors.getConnectionsByViewId(state, id),\n total: mdmModule.selectors.getTotalByViewId(state, id)\n };\n};\n\nexport default connect(mapStateToProps)(RelationshipsView);\n","import {buildColumnsFilter, ColumnFilter} from '@reltio/components';\nimport {FilterBuilder} from '@reltio/mdm-sdk';\nimport {RelationshipsTableColumnData} from '../../../types';\n\nexport const buildRelationshipsFilter = (\n filters: Record<string, ColumnFilter>,\n columnsData: RelationshipsTableColumnData[]\n) => {\n const filtersClause = buildColumnsFilter(columnsData, filters);\n\n return new FilterBuilder().addClause(filtersClause).build();\n};\n","import React, {useCallback} from 'react';\n\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {RelationshipsSavedState} from '../../types';\nimport RelationshipsView from './RelationshipsView';\nimport {promisifyCallback, RelationshipsPerspectiveConfig} from '@reltio/mdm-sdk';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'relationshipsPerspective',\n disableGlobal: true,\n seed: 'relP'\n});\n\ntype Props = {\n config: RelationshipsPerspectiveConfig;\n onResize?: (width: number, height: number) => void;\n saveState: (state: RelationshipsSavedState) => void;\n getSavedState: (clb: (state: RelationshipsSavedState) => void) => void;\n};\n\nconst RelationshipsPerspective = ({config, onResize, saveState, getSavedState}: Props) => {\n const getSavedStatePromisified: () => Promise<RelationshipsSavedState> = useCallback(\n promisifyCallback(getSavedState),\n [getSavedState]\n );\n\n return (\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize?.(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <RelationshipsView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n )}\n <ErrorPopup />\n </LocalizationProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n );\n};\n\nexport default RelationshipsPerspective;\n","import {RelationshipsView} from '@reltio/relationships';\n\nexport default RelationshipsView;\n"],"names":["props","width","height","viewBox","xmlns","d","fill","fillRule","stroke","strokeWidth","useStyles","makeStyles","theme","color","palette","primary","main","closeIcon","position","right","bottom","transform","button","padding","FilterButton","enabled","onClick","styles","Tooltip","title","i18n","IconButton","classes","root","size","Filter","className","Close","propTypes","PropTypes","pagination","display","alignItems","justifyContent","flexShrink","borderTop","boxShadow","boxSizing","overflowY","containerType","caption","fontSize","lineHeight","displayedRows","selectRoot","marginLeft","marginRight","select","textAlign","actions","BasicTablePagination","count","rowsPerPageOptions","page","onChangePage","rowsPerPage","onChangeRowsPerPage","basicTableRef","labelRowsPerPage","resetScrollbarPosition","useCallback","pathOr","identity","handleChangePage","value","handleChangeRowsPerPage","TablePagination","classnames","selectLabel","input","backIconButtonProps","nextIconButtonProps","component","labelDisplayedRows","from","to","fromRow","toRow","countRows","onPageChange","pipe","nthArg","onRowsPerPageChange","getValue","displayName","memo","CHANGE_COLUMNS","TOGGLE_FILTERS","CHANGE_FILTER","TOGGLE_SORT","CHANGE_PAGE","CHANGE_ROWS_PER_PAGE","changeColumns","createStandardAction","toggleFilters","changeFilter","toggleSort","changePage","changeRowsPerPage","changeVisibleColumns","state","nextVisibleColumns","removedColumns","difference","visibleColumns","isRemovedColumn","columnId","includes","evolve","always","sorting","when","field","nextSortField","order","filters","keys","reduce","acc","dissoc","reducer","action","type","columnIds","payload","enableFilters","filter","assoc","prevSortField","path","prevSortOrder","toggleSortOrder","basicViewPaper","flexDirection","basicView","BasicView","forwardRef","ref","children","otherProps","Paper","paper","minHeight","fontWeight","letterSpacing","content","contentText","marginBottom","actionButtons","paddingTop","discardButton","open","onCancel","cancelCaption","onDiscard","discardCaption","onSave","saveCaption","disabledSave","Dialog","onClose","paperScrollPaper","DialogTitle","DialogContent","DialogContentText","DialogActions","disableSpacing","Button","disabled","autoFocus","menuItem","menuText","text","checkbox","SettingsMenuItemRenderer","item","onMenuClose","id","selected","MenuItem","e","Checkbox","checked","Typography","items","menuId","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","icon","SettingsIcon","tooltipTitle","menuItems","MenuItemRenderer","VerticalDivider","margin","style","borderLeft","useActions","dispatch","useMemo","Object","entries","actionName","actionCreator","buildSuggestedIds","wrapInArrayIfNeeded","length","times","n","isValidRequestConfig","config","entry","entityTypes","nextEntry","useRelationsLoader","entity","relationActivityFilter","mode","searchByOv","isLoading","setIsLoading","useState","relationsLoaded","useMdmAction","tenant","useMdmTenant","metadata","useMdmMetadata","dtssPath","useMdmDtssPath","activityFilter","globalFilter","useMdmGlobalSearchRequestOptions","lastLoadedTime","useMdmProfileLastLoadedTime","safePromise","useSafePromise","processContent","getUri","isObject","prop","filterRelation","isAvailableRelationTypeUri","filterFn","isAvailableEntityTypeUri","inRelations","outRelations","suggested","options","modeRef","useRef","current","loadRelations","uri","requestConfig","sortBy","returnDates","returnObjects","activeness","relation","ActivityFilter","max","offset","addGlobalFilterToQuery","undefined","configs","concat","ifElse","map","i","emptyResponsePromise","Promise","resolve","total","request","cond","isTempUri","console","warn","isDataTenantEntity","getRelationsForDataTenantEntity","entityUri","customerTenant","dataTenant","T","getRelationsForEntity","then","result","Array","isArray","Error","JSON","stringify","connections","catch","finally","isRequestSentRef","useEffect","prevMode","usePrevious","Mode","reload","DEFAULT_SAVED_STATE","relationsTable","attributesTable","RELATION_TYPE_COLUMN_ID","ATTRIBUTES_COLUMN_ID","ANALYTICS_ATTRIBUTES_COLUMN_ID","DEFAULT_COLUMNS_DATA","label","dataTypeDefinition","DataTypes","hideable","filterable","initialWidth","autoResize","sortable","maxAttrsToShow","DEFAULT_COLUMNS","pluck","ALL_TYPES_COLUMNS","ROWS_PER_PAGE_OPTIONS","getColumnIdFromAttrUri","attributeUriToSearchUri","getColumnsDataFromRelationAttributes","attr","description","getAttrDataTypeDefinition","uniqBy","CHANGE_RELATION_TYPE","APPLY_SAVED_STATE","SAVE_CURRENT_STATE","basicTableViewState","changeRelationType","applySavedState","saveCurrentState","resetPageNumber","getDefaultVisibleColumnsForCurrentRelationType","currentRelationType","without","intersection","getSavedVisibleColumnsForCurrentRelationType","changeVisibleColumnsForCurrentRelationType","either","getFiltersFromSavedState","propOr","unless","isNil","validateFilterValue","saveVisibleColumnsForCurrentRelationType","visibleColumnsForRelationTypes","getStateToSave","pick","paddingLeft","selectMenu","textField","maxWidth","onChange","relationTypes","DropDownEditor","displayEmpty","disableUnderline","TextFieldProps","MenuProps","list","header","background","paddingRight","secondary","relationTypeSelector","overflow","filteringEnabled","onToggleFilters","columnsData","selectedColumns","onRelationTypeChange","onChangeColumns","onToggleSearchByOv","showInactive","onToggleShowInactive","settingItems","BasicViewHeader","variant","Spacer","SettingsMenu","ColumnsSettings","getIsInactiveRelation","connection","isActiveObject","headCell","rowCell","overflowWrap","inactiveRowCell","opacity","defaultWrapper","paddingBottom","entityCell","entityAvatar","inactiveEntityAvatar","backgroundColor","border","borderRadius","entityLabel","textDecoration","attributesWrapper","commentsContainer","headLabelWrapper","withFilterAtBottom","headCellData","cellLabel","DescriptionIcon","DefaultHeadCellRenderer","entityType","isInactiveRelation","currentEntityUri","useSelector","mdmModule","COMMENTS_CONTAINER_VISIBILITY_AREA","EntityTypeIcon","EntityUriLink","getEntityUriForLink","getLabel","stopPropagation","CommentsContainer","relationUri","relatedObjectUris","createRelatedObjectUris","CollaborationObjectTypes","objectType","allowOnlyOneComment","columnData","attributes","analyticsAttributes","attributeTypes","attrTypes","drawLines","DataTypeValue","getAttrPathFromColumnId","split","slice","Infinity","getNestedPathByColumnId","startsWith","attrPath","getCellValueRenderer","EntityProfileRenderer","AttributesRenderer","DefaultCellValueRenderer","getBasicTableColumnsData","resizable","headCellRenderer","HeadCellRenderer","nestedPath","rowCellValueRenderer","calculateAttributesCellHeight","cell","attributesCount","values","getStaticRowCellHeight","pathEq","defaultGetRowCellHeight","CellValueRenderer","index","key","buttons","MenuItemWithTooltip","withTooltip","noop","tooltip","showForDisabled","disableDelete","onMenuOpen","onDelete","hasDeletePermission","getRelationType","checkMetadataPermission","MetadataPermissions","canDelete","pendingDeletion","setPendingDeletion","hideDeleteConfirmation","Delete","handleMenuClose","SmallIconButton","MoreVertIcon","ConfirmationDialog","substring","tableContainer","flex","zIndex","hoveredRowRightContentWrapper","pointerEvents","menuButtonContainer","top","tooltipAnchor","onSort","onFilter","onRowClick","tableRef","readOnly","tableRowsData","getEntityType","relationType","relationLabel","startDate","endDate","object","getOvAttributeValuesByPath","getRelationAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","getDynamicRowCellHeight","changeRowCellHeight","useDynamicRowCellHeight","getRowCellHeight","hoverRowIndex","setHoverRowIndex","renderRowCell","rowValue","rawValue","RowCellAutoSizer","onChangeHeight","isActionsMenuOpen","setIsActionsMenuOpen","handleActionsMenuOpen","handleActionsMenuClose","onRowHover","rowIndex","prevHoverRowIndex","hoveredRowRightContent","BasicTable","fixFirstColumn","rowsData","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","hoverStateEnabled","tableRow","marginTop","selectedAttributeTypes","onDeleteCrosswalk","onEditCrosswalk","groupCrosswalksByTypesAndSources","buildTableRowsData","expandedSources","setExpandedSources","handleDelete","crosswalkId","handleEdit","event","source","crosswalksByTypes","SourceCrosswalksRow","expanded","disableEditCrosswalk","checkCanEditCrosswalk","disableDeleteCrosswalk","checkCanDeleteCrosswalk","onEdit","onToggleExpanded","append","borderBottom","hint","alignSelf","hintText","buttonLabel","editor","overflowX","ButtonWithTooltip","onAddCrosswalk","openEditor","setOpenEditor","canAdd","checkCanCreateCrosswalk","Add","Info","CrosswalkEditor","onAdd","crosswalk","entityInfo","minWidth","entityLabelContainer","infoIcon","profileBand","entityTypeBadge","ExpandedValueTooltip","noWrap","LightArrowTooltip","ProfileBand","placement","EntityTypeBadge","direction","align","fillOpacity","points","visibility","editButton","showEditor","setShowEditor","closeEditor","editedValue","setEditedValue","applyChangesAndClose","formatDate","EditIcon","Popover","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","onKeyUp","onBackdropClick","DateEditor","Date","valueOf","slotProps","hiddenLabel","InputProps","fullWidth","relationBand","inactiveRelationBand","toolbar","gap","mainInfo","detailsInfo","detailTitle","directionalLabel","textOverflow","whiteSpace","relationDate","onNavigateBack","onChangeActivenessDate","ArrowBackIcon","showErrorMessage","error","ErrorPopup","message","getRequestErrorMessage","detailsView","left","locked","resizablePanesWrapper","flexGrow","pane","onDeleteConnection","onChangeConnection","onChangeVisibleColumns","displayProps","highlightedCrosswalks","setHighlightedCrosswalks","highlightedCrosswalksCache","applyHighlightedCrosswalks","debounce","cacheHighlightedCrosswalks","arr","setCrosswalkHighlighted","highlighted","focusedCrosswalks","setFocusedCrosswalks","toggleCrosswalkFocus","prevValue","calculateFocusedCrosswalks","prev","next","prevCrosswalk","any","eqCrosswalks","nextCrosswalk","useCrosswalksDisplay","paneSize","setPaneSize","handlePaneSizeChange","percentageSize","selectedAttrTypes","setSelectedAttrTypes","onLoad","onLoaded","onDeleteRelation","onError","reloadRelation","errorCode","ApiErrorCode","getRelation","newRelation","assocPath","modifiedEntity","crosswalksMap","newlyCreatedAttributes","onPinAttribute","onIgnoreAttribute","onAddAttribute","onEditAttribute","onDeleteAttribute","emptyTempAttributeUris","useModifiedEntity","onModify","addCrosswalk","deleteCrosswalk","editCrosswalk","useCrosswalkActions","onSuccess","attributeName","updateActivenessAttribute","deleteActivenessAttribute","dissocPath","DndProvider","backend","HTML5Backend","CrosswalkDragLayer","ResizablePanes","orientation","minSize","maxSize","allowResize","attributeUris","AttributesTable","onPin","onIgnore","onSelectAttributeTypes","relationshipsView","fontFamily","connect","saveState","getSavedState","isDTEntity","setSearchByOv","setShowInactive","entityTypeUri","stateToSave","entityTypeOfAppliedSavedState","defaultColumns","defaultSorting","defaultRowsPerPage","initState","useReducer","nextRelationType","savedState","useRelationshipsTable","isSavedStateApplied","isSavedStateLoading","relationsTableSavedState","attributesTableSavedState","updateRelationsTableSavedState","updateAttributesTableSavedState","setSavedState","changedRelationsState","setRelationsChangedState","useDidUpdateEffect","_","changedState","useSavedState","attributesTableVisibleColumns","setAttributesTableVisibleColumns","featuresContext","useContext","FeaturesContext","showDescription","features","detailedConnectionIndex","setDetailedConnectionIndex","hideConnectionDetails","inheritancePath","getInheritancePath","both","startObject","endObject","some","equals","objectTypeURI","filteredColumnsData","find","converge","getReadableAttributesList","getReadableAnalyticsAttributesList","reject","updateColumnData","updateFn","getRelationColumnDataType","adjust","findIndex","propEq","updateRelationTypeColumn","getColumnsData","visibleColumnsData","relationsConfig","relations","relationFilter","filtersClause","buildColumnsFilter","FilterBuilder","addClause","build","buildRelationshipsFilter","isRelationsLoading","reloadRelations","onChangeDetailedColumns","detailedConnection","onChangeDetailedConnection","newConnection","profile","update","objectIds","objectTypes","getRelationshipsObjectIdsForCollaboration","collaboration","useCollaboration","entitiesMap","getEntitiesMapForConnections","handleError","deleteRelation","removeRelation","andThen","otherwise","deleteRelationAndCloseDetails","onCloseConnectionDetails","not","CollaborationContext","EntitiesMapContext","ScreenProfileBand","LinearLoadIndicator","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","seed","onResize","getSavedStatePromisified","promisifyCallback","ViewIdContext","StylesProvider","LocalizationProvider","dateAdapter","AdapterMoment","handleHeight","Math","floor"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"3538.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/icons/Filter.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/FilterButton/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/FilterButton/FilterButton.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/BasicTablePagination.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/viewState/basicTableViewState.js","webpack://@reltio/remotes/../components/src/components/BasicView/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicView/BasicView.tsx","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/ConfirmationDialog.tsx","webpack://@reltio/remotes/../components/src/components/SettingsMenu/SettingsMenuItemRender/styles.ts","webpack://@reltio/remotes/../components/src/components/SettingsMenu/SettingsMenuItemRender/SettingsMenuItemRender.tsx","webpack://@reltio/remotes/../components/src/components/SettingsMenu/SettingsMenu.tsx","webpack://@reltio/remotes/../components/src/components/VerticalDivider/VerticalDivider.js","webpack://@reltio/remotes/../components/src/hooks/useActions.ts","webpack://@reltio/remotes/../components/src/hooks/useRelationsLoader.ts","webpack://@reltio/remotes/../relationships/src/hooks/useSavedState.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/helpers/tableHelpers.ts","webpack://@reltio/remotes/../relationships/src/hooks/useRelationshipsTable.ts","webpack://@reltio/remotes/../relationships/src/components/RelationTypeSelector/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationTypeSelector/RelationTypeSelector.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTableHeader/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTableHeader/RelationshipsTableHeader.tsx","webpack://@reltio/remotes/../relationships/src/services/helpers.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/EntityProfileRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/AttributesRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/helpers.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipMenuButton/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipMenuButton/MenuItemRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipMenuButton/RelationshipMenuButton.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/RelationshipsTable.tsx","webpack://@reltio/remotes/../relationships/src/components/LegendTable/helpers.ts","webpack://@reltio/remotes/../relationships/src/components/LegendTable/styles.ts","webpack://@reltio/remotes/../relationships/src/components/LegendTable/LegendTable.tsx","webpack://@reltio/remotes/../relationships/src/components/LegendPanel/styles.ts","webpack://@reltio/remotes/../relationships/src/components/LegendPanel/LegendPanel.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/EntityInfo/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/EntityInfo/EntityInfo.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDirection/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDirection/RelationDirection.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDate/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDate/RelationDate.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationshipBand.tsx","webpack://@reltio/remotes/../relationships/src/services/errors.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipDetails/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipDetails/RelationshipDetails.tsx","webpack://@reltio/remotes/../relationships/src/hooks/useCrosswalksDisplay.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/RelationshipsView.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/helpers/filtersHelpers.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/index.tsx","webpack://@reltio/remotes/./src/relationships.ts"],"sourcesContent":["import React from 'react';\n\nconst SvgFilter: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={18} height={18} viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M18 2V0H0v2l7 8v8l4-2v-6z\" fill=\"currentColor\" fillRule=\"nonzero\" stroke=\"none\" strokeWidth={1} />\n </svg>\n );\n};\n\nexport default SvgFilter;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n 'filterIcon--enabled': {\n color: theme.palette.primary.main\n },\n closeIcon: {\n position: 'absolute',\n right: '3px',\n bottom: '3px',\n transform: 'scale(0.5)'\n },\n button: {\n padding: '11px'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport IconButton from '@mui/material/IconButton';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Tooltip from '@mui/material/Tooltip';\nimport FilterIcon from '../../../../icons/Filter';\nimport {useStyles} from './styles';\n\nconst FilterButton = ({enabled, onClick}) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={enabled ? i18n.text('Clear all filters') : i18n.text('Filter')}>\n <IconButton onClick={onClick} classes={{root: styles.button}} size=\"large\">\n {enabled ? (\n <>\n <FilterIcon className={styles['filterIcon--enabled']} />\n <CloseIcon color=\"primary\" className={styles.closeIcon} />\n </>\n ) : (\n <FilterIcon />\n )}\n </IconButton>\n </Tooltip>\n );\n};\n\nFilterButton.propTypes = {\n enabled: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nexport default FilterButton;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n pagination: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n height: '56px',\n flexShrink: 0,\n borderTop: '1px solid rgba(0,0,0,0.12)',\n boxShadow: 'none',\n boxSizing: 'border-box',\n overflowY: 'hidden',\n containerType: 'inline-size',\n '& .MuiInputBase-root': {\n display: 'none',\n '@container (min-width: 420px)': {\n display: 'inline-flex'\n }\n }\n },\n caption: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px',\n display: 'none',\n '@container (min-width: 420px)': {\n display: 'block'\n }\n },\n displayedRows: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px'\n },\n selectRoot: {\n marginLeft: '5px',\n marginRight: '36px'\n },\n select: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px',\n textAlign: 'right'\n },\n actions: {\n marginLeft: '32px!important' //we need it, because of the more specific rule in the mui\n }\n});\n","import React, {useCallback, memo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getValue} from '../../../core/utils';\nimport {nthArg, pipe, pathOr, identity} from 'ramda';\nimport TablePagination, {TablePaginationProps} from '@mui/material/TablePagination';\n\nimport {useStyles} from './styles';\n\ntype BasicTablePaginationProps = {\n classes?: TablePaginationProps['classes'];\n basicTableRef?: React.Ref<HTMLElement>;\n count?: number;\n page?: number;\n rowsPerPage?: number;\n labelRowsPerPage?: React.ReactNode;\n rowsPerPageOptions?: TablePaginationProps['rowsPerPageOptions'];\n onChangePage?: (value: number) => void;\n onChangeRowsPerPage?: (value: number) => void;\n};\n\nconst BasicTablePagination = ({\n classes = {},\n count,\n rowsPerPageOptions,\n page,\n onChangePage,\n rowsPerPage,\n onChangeRowsPerPage,\n basicTableRef,\n labelRowsPerPage\n}: BasicTablePaginationProps) => {\n const styles = useStyles();\n\n const labelDisplayedRows = ({from, to, count}) =>\n i18n.text('${fromRow}-${toRow} of ${countRows}', {\n fromRow: i18n.number(from, '0,0'),\n toRow: i18n.number(to, '0,0'),\n countRows: i18n.number(count, '0,0')\n });\n\n const resetScrollbarPosition = useCallback(() => {\n pathOr(identity, ['current', 'resetScrollbarPosition'], basicTableRef)();\n }, [basicTableRef]);\n\n const handleChangePage = useCallback(\n (value: number) => {\n onChangePage(value);\n resetScrollbarPosition();\n },\n [onChangePage, resetScrollbarPosition]\n );\n const handleChangeRowsPerPage = useCallback(\n (value: number) => {\n onChangePage(0);\n onChangeRowsPerPage(value);\n resetScrollbarPosition();\n },\n [onChangePage, onChangeRowsPerPage, resetScrollbarPosition]\n );\n\n return (\n <TablePagination\n classes={{\n ...classes,\n root: classnames(styles.pagination, classes.root),\n select: classnames(styles.select, classes.select),\n selectLabel: classnames(styles.caption, classes.selectLabel),\n displayedRows: classnames(styles.displayedRows, classes.displayedRows),\n input: classnames(styles.selectRoot, classes.selectRoot),\n actions: styles.actions\n }}\n backIconButtonProps={{size: 'large'}}\n nextIconButtonProps={{size: 'large'}}\n component=\"div\"\n labelRowsPerPage={labelRowsPerPage || i18n.text('Rows per page:')}\n labelDisplayedRows={labelDisplayedRows}\n count={count}\n rowsPerPageOptions={rowsPerPageOptions}\n page={page}\n onPageChange={pipe(nthArg(1), handleChangePage)}\n rowsPerPage={rowsPerPage}\n onRowsPerPageChange={pipe(getValue, handleChangeRowsPerPage)}\n />\n );\n};\n\nBasicTablePagination.displayName = 'BasicTablePagination';\n\nexport default memo(BasicTablePagination);\n","import {always, assoc, difference, dissoc, evolve, keys, path, when} from 'ramda';\nimport {createStandardAction, toggleSortOrder} from '../../../core';\n\nconst CHANGE_COLUMNS = 'CHANGE_COLUMNS';\nconst TOGGLE_FILTERS = 'TOGGLE_FILTERS';\nconst CHANGE_FILTER = 'CHANGE_FILTER';\nconst TOGGLE_SORT = 'TOGGLE_SORT';\nconst CHANGE_PAGE = 'CHANGE_PAGE';\nconst CHANGE_ROWS_PER_PAGE = 'CHANGE_ROWS_PER_PAGE';\n\nexport const actions = {\n changeColumns: createStandardAction(CHANGE_COLUMNS),\n toggleFilters: createStandardAction(TOGGLE_FILTERS),\n changeFilter: createStandardAction(CHANGE_FILTER),\n toggleSort: createStandardAction(TOGGLE_SORT),\n changePage: createStandardAction(CHANGE_PAGE),\n changeRowsPerPage: createStandardAction(CHANGE_ROWS_PER_PAGE)\n};\n\nexport const changeVisibleColumns = (state, nextVisibleColumns) => {\n const removedColumns = difference(state.visibleColumns, nextVisibleColumns);\n const isRemovedColumn = (columnId) => removedColumns.includes(columnId);\n return evolve(\n {\n visibleColumns: always(nextVisibleColumns),\n sorting: when(\n (sorting = {}) => isRemovedColumn(sorting.field),\n () => {\n const [nextSortField] = nextVisibleColumns;\n return {field: nextSortField, order: 'asc'};\n }\n ),\n filters: (filters) =>\n keys(filters).reduce(\n (acc, columnId) => (isRemovedColumn(columnId) ? dissoc(columnId, acc) : acc),\n filters\n )\n },\n state\n );\n};\n\nexport const reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_COLUMNS: {\n const columnIds = action.payload;\n return changeVisibleColumns(state, columnIds);\n }\n case TOGGLE_FILTERS: {\n const enableFilters = !state.filters;\n return {\n ...state,\n filters: enableFilters ? {} : null,\n page: enableFilters ? state.page : 0\n };\n }\n case CHANGE_FILTER: {\n const {columnId, filter} = action.payload;\n return evolve({filters: filter ? assoc(columnId, filter) : dissoc(columnId), page: always(0)}, state);\n }\n case TOGGLE_SORT: {\n const nextSortField = action.payload;\n const prevSortField = path(['sorting', 'field'], state);\n const prevSortOrder = path(['sorting', 'order'], state);\n return {\n ...state,\n sorting: {\n field: nextSortField,\n order: toggleSortOrder(nextSortField === prevSortField ? prevSortOrder : null)\n },\n page: 0\n };\n }\n case CHANGE_PAGE:\n return {...state, page: action.payload};\n case CHANGE_ROWS_PER_PAGE:\n return {...state, rowsPerPage: action.payload};\n default:\n return state;\n }\n};\n\nexport default {\n reducer,\n actions,\n changeVisibleColumns\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n basicViewPaper: {\n display: 'flex',\n flexDirection: 'column',\n ...theme.basicView\n }\n}));\n","import React, {forwardRef} from 'react';\nimport Paper, {PaperProps} from '@mui/material/Paper';\nimport {useStyles} from './styles';\n\nconst BasicView = forwardRef(\n ({children, className, ...otherProps}: PaperProps, ref: React.RefObject<HTMLDivElement>) => {\n const styles = useStyles();\n return (\n <Paper ref={ref} className={className} classes={{root: styles.basicViewPaper}} {...otherProps}>\n {children}\n </Paper>\n );\n }\n);\n\nBasicView.displayName = 'BasicView';\n\nexport default BasicView;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n paper: {\n minHeight: '180px'\n },\n title: {\n padding: '16px 16px 10px 16px',\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px'\n },\n content: {\n padding: '0 16px'\n },\n contentText: {\n marginBottom: 0,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '24px'\n },\n actionButtons: {\n display: 'flex',\n paddingTop: '4px',\n fontSize: '14px',\n fontWeight: 500,\n letterSpacing: 0,\n lineHeight: '16px',\n '& > div': {\n marginLeft: 'auto'\n }\n },\n discardButton: {\n marginRight: '8px'\n }\n});\n\nexport {useStyles};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\n\nimport {useStyles} from './styles';\n\nexport type Props = {\n open: boolean;\n title: React.ReactNode;\n content: React.ReactNode;\n cancelCaption?: string;\n discardCaption?: string;\n saveCaption?: string;\n disabledSave?: boolean;\n onCancel?: () => void;\n onDiscard?: () => void;\n onSave: () => void;\n};\n\nconst ConfirmationDialog = ({\n open,\n title,\n content,\n onCancel,\n cancelCaption = i18n.text('Cancel'),\n onDiscard,\n discardCaption = '',\n onSave,\n saveCaption = i18n.text('Save'),\n disabledSave = false\n}: Props) => {\n const styles = useStyles();\n\n return (\n <Dialog open={open} onClose={onCancel} classes={{paperScrollPaper: styles.paper}}>\n <DialogTitle classes={{root: styles.title}}>{title}</DialogTitle>\n <DialogContent classes={{root: styles.content}}>\n <DialogContentText classes={{root: styles.contentText}}>{content}</DialogContentText>\n </DialogContent>\n <DialogActions className={styles.actionButtons} disableSpacing>\n {onCancel && <Button onClick={onCancel}>{cancelCaption}</Button>}\n <div>\n {onDiscard && (\n <Button onClick={onDiscard} classes={{root: styles.discardButton}}>\n {discardCaption}\n </Button>\n )}\n <Button onClick={onSave} color=\"primary\" disabled={disabledSave} autoFocus>\n {saveCaption}\n </Button>\n </div>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default ConfirmationDialog;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n menuItem: {\n height: '32px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px'\n },\n checkbox: {\n padding: 0,\n marginRight: '15px'\n }\n}));\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport Checkbox from '@mui/material/Checkbox';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport {DropDownMenuItem} from '../../../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n item: DropDownMenuItem;\n onMenuClose?: (e) => void;\n};\n\nconst SettingsMenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {text, onClick, id, selected} = item;\n const handleClick = (e) => {\n onMenuClose(e);\n onClick(e);\n };\n\n return (\n <MenuItem\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n ref={ref}\n data-modal\n data-reltio-id={`reltio-settings-menu-item${id}`}\n >\n <Checkbox checked={selected} className={styles.checkbox} color=\"primary\" />\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItem>\n );\n});\n\nSettingsMenuItemRenderer.displayName = 'SettingsMenuItemRenderer';\n\nexport default SettingsMenuItemRenderer;\n","import React from 'react';\nimport SettingsIcon from '@mui/icons-material/Settings';\nimport i18n from 'ui-i18n';\nimport {DropDownMenuItem} from '../../types';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport DropDownMenuButton from '../DropDownMenuButton/DropDownMenuButton';\nimport SettingsMenuItemRenderer from './SettingsMenuItemRender/SettingsMenuItemRender';\n\ntype Props = {\n items: Array<DropDownMenuItem>;\n menuId: string;\n};\n\nconst SettingsMenu = ({items, menuId}: Props) => {\n return (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: SettingsIcon,\n tooltipTitle: i18n.text('Settings'),\n size: 'L'\n }}\n menuId={menuId}\n menuItems={items}\n MenuItemRenderer={SettingsMenuItemRenderer}\n />\n );\n};\n\nexport default SettingsMenu;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst VerticalDivider = ({height, margin}) => (\n <div\n style={{\n width: '1px',\n height: `${height}px`,\n borderLeft: '1px solid rgba(0,0,0,0.38)',\n margin: `0 ${margin}px`,\n flexShrink: '0'\n }}\n />\n);\n\nVerticalDivider.propTypes = {\n height: PropTypes.number,\n margin: PropTypes.number\n};\n\nexport default VerticalDivider;\n","import {useMemo} from 'react';\nimport {pipe} from 'ramda';\n\ntype UseActions = ({\n actions,\n dispatch\n}: {\n actions: {\n [key: string]: <T>(payload: T) => {type: string; payload: T};\n };\n dispatch: <T>({type, payload}: {type: string; payload: T}) => void;\n}) => {\n [key in keyof typeof actions]: <T>(payload: T) => void;\n};\n\nexport const useActions: UseActions = ({actions, dispatch}) =>\n useMemo(\n () =>\n Object.entries(actions).reduce((acc, [actionName, actionCreator]) => {\n return {...acc, [actionName]: pipe(actionCreator, dispatch)};\n }, {}),\n [dispatch, actions]\n );\n","import {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport {cond, pipe, prop, T, evolve, filter as filterFn, when, identity, times, length, ifElse, always} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport {\n ActivityFilter,\n addGlobalFilterToQuery,\n Connection,\n Entity,\n getRelationsForDataTenantEntity,\n getRelationsForEntity,\n isAvailableEntityTypeUri,\n isAvailableRelationTypeUri,\n isDataTenantEntity,\n isObject,\n isTempUri,\n Mode,\n RelationsContent,\n RelationsRequestConfig,\n RelationsViewConfig,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from './useSafePromise';\nimport {usePrevious} from './usePrevious';\nimport {\n useMdmAction,\n useMdmDtssPath,\n useMdmGlobalSearchRequestOptions,\n useMdmMetadata,\n useMdmProfileLastLoadedTime,\n useMdmTenant\n} from '../contexts';\n\ntype Props = {\n sorting?: {\n field: string;\n order: string;\n };\n filter?: string;\n page: number;\n rowsPerPage: number;\n config: Pick<RelationsViewConfig, 'suggested' | 'content' | 'id'>;\n entity: Entity;\n relationActivityFilter?: ActivityFilter;\n mode: Mode;\n searchByOv?: boolean;\n showSnackbarMessage?: (message: string) => void;\n};\n\nconst buildSuggestedIds = when(\n identity,\n pipe(\n wrapInArrayIfNeeded,\n length,\n times((n) => n + 1)\n )\n);\nconst isValidRequestConfig = (config: RelationsRequestConfig) => {\n let entry: RelationsRequestConfig | RelationsRequestConfig['nextEntry'] = config;\n while (entry) {\n if (entry.entityTypes?.length === 0) {\n return false;\n }\n entry = entry.nextEntry;\n }\n return true;\n};\n\ntype ConnectionResponse = Array<{connections?: Connection[]; total: number; notAllDataFetched?: boolean}>;\n\nexport const useRelationsLoader = ({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter,\n mode,\n searchByOv = false,\n showSnackbarMessage\n}: Props) => {\n const [isLoading, setIsLoading] = useState(false);\n\n const relationsLoaded = useMdmAction('relationsLoaded');\n const tenant = useMdmTenant();\n const metadata = useMdmMetadata();\n const dtssPath = useMdmDtssPath();\n const {activityFilter, globalFilter} = useMdmGlobalSearchRequestOptions() || {};\n const lastLoadedTime = useMdmProfileLastLoadedTime();\n\n const safePromise = useSafePromise();\n\n const processContent = (content: RelationsContent) => {\n const getUri = when(isObject, prop('uri'));\n const filterRelation = pipe(getUri, isAvailableRelationTypeUri(metadata));\n\n return evolve({\n entityTypes: filterFn(isAvailableEntityTypeUri(metadata)),\n inRelations: filterFn(filterRelation),\n outRelations: filterFn(filterRelation),\n nextEntry: processContent\n })(content);\n };\n\n const suggested = config.suggested;\n const options = useMemo(\n () => ({\n searchByOv\n }),\n [searchByOv]\n );\n const modeRef = useRef<Mode>(mode);\n modeRef.current = mode;\n const loadRelations = useCallback(() => {\n if (entity?.uri) {\n const processedConfig = processContent(config.content);\n const requestConfig = {\n ...processedConfig,\n sortBy: sorting?.field,\n order: sorting?.order,\n returnDates: true,\n returnObjects: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n },\n max: rowsPerPage,\n offset: page * rowsPerPage,\n filter: addGlobalFilterToQuery(globalFilter, filter) || undefined,\n suggested: buildSuggestedIds(suggested)\n };\n const configs = [requestConfig].concat(\n ifElse(\n identity,\n pipe(wrapInArrayIfNeeded, (suggested) =>\n suggested.map((config, i) => ({...config, id: requestConfig.suggested[i]}))\n ),\n always([])\n )(suggested)\n );\n\n const emptyResponsePromise = Promise.resolve([{total: 0}]);\n const request: (entity: Entity) => Promise<ConnectionResponse> = cond([\n [pipe(prop('uri'), isTempUri), () => emptyResponsePromise],\n [\n always(!isValidRequestConfig(requestConfig)),\n () => {\n console.warn('Connections request config has \"entityTypes\": []. Request is blocked.');\n return emptyResponsePromise;\n }\n ],\n [\n isDataTenantEntity,\n (entity) =>\n getRelationsForDataTenantEntity({\n entityUri: entity.uri,\n configs: configs,\n customerTenant: tenant,\n dataTenant: entity.dataTenant,\n dtssPath,\n options\n })\n ],\n [T, (entity) => getRelationsForEntity(entity.uri, configs, options)]\n ]);\n setIsLoading(true);\n safePromise(request(entity))\n .then((result) => {\n if (!Array.isArray(result)) {\n throw Error(JSON.stringify(result));\n }\n const [{connections, total, notAllDataFetched}] = result;\n if (notAllDataFetched && showSnackbarMessage) {\n showSnackbarMessage(\n i18n.text(\n 'This profile contains a large number of relationships. We have disabled filtering and sorting to help optimize performance.'\n )\n );\n }\n relationsLoaded({id: config.id, connections, total, mode: modeRef.current});\n })\n .catch((e) => {\n console.warn('Failed to load relations data', e);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n activityFilter,\n metadata,\n config,\n relationsLoaded,\n dtssPath,\n entity?.uri,\n entity?.dataTenant,\n filter,\n globalFilter,\n page,\n relationActivityFilter,\n rowsPerPage,\n safePromise,\n sorting,\n tenant,\n options,\n lastLoadedTime\n ]);\n const isRequestSentRef = useRef<boolean>(false);\n isRequestSentRef.current = false;\n useEffect(() => {\n isRequestSentRef.current = true;\n loadRelations();\n }, [loadRelations]);\n\n const prevMode = usePrevious(mode);\n useEffect(() => {\n if (mode === Mode.Viewing && !isRequestSentRef.current && prevMode !== mode) {\n isRequestSentRef.current = true;\n loadRelations();\n }\n }, [loadRelations, mode, prevMode]);\n return {isLoading, reload: loadRelations};\n};\n","import {useEffect, useState} from 'react';\nimport {useDidUpdateEffect} from '@reltio/components';\nimport {\n RelationshipsSavedState,\n RelationsTableSavedState,\n AttributesTableSavedState\n} from './../types/RelationshipsSavedState';\n\nconst DEFAULT_SAVED_STATE = {\n relationsTable: {},\n attributesTable: {}\n};\n\nconst useSavedState = ({getSavedState, saveState, entityTypeUri}) => {\n const [savedState, setSavedState] = useState<RelationshipsSavedState>(DEFAULT_SAVED_STATE);\n const [changedRelationsState, setRelationsChangedState] = useState<Record<string, RelationsTableSavedState>>(null);\n\n const saveChangesLocallyForPrevEntityType = () => {\n if (changedRelationsState) {\n setSavedState({...savedState, relationsTable: changedRelationsState});\n setRelationsChangedState(null);\n }\n };\n useDidUpdateEffect(saveChangesLocallyForPrevEntityType, [entityTypeUri]);\n\n const updateRelationsTableSavedState = (stateToSave: RelationsTableSavedState) => {\n const changedState: Record<string, RelationsTableSavedState> = {\n ...savedState.relationsTable,\n [entityTypeUri]: stateToSave\n };\n setRelationsChangedState(changedState);\n saveState({...savedState, relationsTable: changedState});\n };\n\n const updateAttributesTableSavedState = (stateToSave: AttributesTableSavedState) => {\n saveState({...savedState, attributesTable: stateToSave});\n };\n\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n getSavedState()\n .then((savedState) => {\n setSavedState(savedState || DEFAULT_SAVED_STATE);\n })\n .then((_) => setIsLoading(false))\n .catch((_) => setIsLoading(false));\n }, []); // eslint-disable-line\n return {\n isLoading,\n relationsTableSavedState: savedState.relationsTable?.[entityTypeUri],\n attributesTableSavedState: savedState.attributesTable,\n updateRelationsTableSavedState,\n updateAttributesTableSavedState\n };\n};\n\nexport default useSavedState;\n","import {\n attributeUriToSearchUri,\n DataTypes,\n getAttrDataTypeDefinition,\n getReadableAnalyticsAttributesList,\n getReadableAttributesList,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {adjust, assoc, concat, find, map, pipe, pluck, prop, propEq, reject, uniqBy, converge} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {RelationshipsTableColumnData} from '../../../types';\n\nconst RELATION_TYPE_COLUMN_ID = 'relation.type';\nconst ATTRIBUTES_COLUMN_ID = 'relation.attributes';\nconst ANALYTICS_ATTRIBUTES_COLUMN_ID = 'relation.analyticsAttributes';\n\nexport const DEFAULT_COLUMNS_DATA = [\n {\n id: 'entity.label',\n get label() {\n return i18n.text('Profile');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n filterable: false,\n initialWidth: 280,\n autoResize: false\n },\n {\n id: RELATION_TYPE_COLUMN_ID,\n get label() {\n return i18n.text('Type');\n }\n },\n {\n id: 'relation.label',\n get label() {\n return i18n.text('Directional Label');\n },\n filterable: false,\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n }\n },\n {\n id: 'relation.activeness.startDate',\n get label() {\n return i18n.text('Start Date');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ACTIVENESS_DATE\n }\n },\n {\n id: 'relation.activeness.endDate',\n get label() {\n return i18n.text('End Date');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ACTIVENESS_DATE\n }\n },\n {\n id: ATTRIBUTES_COLUMN_ID,\n get label() {\n return i18n.text('Attributes');\n },\n sortable: false,\n filterable: false,\n maxAttrsToShow: 7\n },\n {\n id: ANALYTICS_ATTRIBUTES_COLUMN_ID,\n get label() {\n return i18n.text('Analytics Attributes');\n },\n sortable: false,\n filterable: false,\n maxAttrsToShow: 7\n }\n];\n\nexport const DEFAULT_COLUMNS = pluck('id', DEFAULT_COLUMNS_DATA);\nexport const ALL_TYPES_COLUMNS = [RELATION_TYPE_COLUMN_ID, ATTRIBUTES_COLUMN_ID, ANALYTICS_ATTRIBUTES_COLUMN_ID];\n\nexport const ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\n\nconst getColumnIdFromAttrUri = pipe(attributeUriToSearchUri, concat('relation.'));\n\nconst getColumnsDataFromRelationAttributes = pipe(\n map((attr) => ({\n id: getColumnIdFromAttrUri(attr.uri),\n label: attr.label,\n description: attr?.description,\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n })),\n uniqBy(prop('id'))\n);\n\nconst getRelationColumnDataType = (relationTypes: TRelationType[]) => ({\n type: DataTypes.TYPE_SELECT,\n options: relationTypes.map(({uri, label}) => ({value: uri, label}))\n});\n\nconst updateColumnData = (columnId: string, updateFn) => (columnsData: RelationshipsTableColumnData[]) =>\n adjust(columnsData.findIndex(propEq('id', columnId)), updateFn, columnsData);\n\nconst updateRelationTypeColumn = (relationTypes: TRelationType[]) =>\n updateColumnData(RELATION_TYPE_COLUMN_ID, assoc('dataTypeDefinition', getRelationColumnDataType(relationTypes)));\n\nexport const getColumnsData = (relationTypes: TRelationType[], currentRelationType: string) => {\n const hasAnalyticsAttribute = relationTypes.some((relationType) => !!relationType.analyticsAttributes);\n const filteredColumnsData = hasAnalyticsAttribute\n ? DEFAULT_COLUMNS_DATA\n : DEFAULT_COLUMNS_DATA.filter(({id}) => id !== ANALYTICS_ATTRIBUTES_COLUMN_ID);\n return currentRelationType\n ? pipe(\n find((relationType: TRelationType) => relationType.uri === currentRelationType),\n converge(concat, [getReadableAttributesList, getReadableAnalyticsAttributesList]),\n getColumnsDataFromRelationAttributes,\n concat(DEFAULT_COLUMNS_DATA),\n reject(({id}) => ALL_TYPES_COLUMNS.includes(id))\n )(relationTypes)\n : updateRelationTypeColumn(relationTypes)(filteredColumnsData);\n};\n","import {\n assoc,\n pipe,\n evolve,\n either,\n path,\n prop,\n propOr,\n ifElse,\n always,\n without,\n concat,\n intersection,\n pick,\n unless,\n isNil,\n filter\n} from 'ramda';\nimport {useReducer} from 'react';\nimport {basicTableViewState, createStandardAction, Sorting, useActions} from '@reltio/components';\nimport {ALL_TYPES_COLUMNS, DEFAULT_COLUMNS} from '../components/RelationshipsView/helpers/tableHelpers';\nimport {validateFilterValue} from '@reltio/mdm-sdk';\n\ntype Props = {\n defaultColumns: string[];\n defaultSorting: Sorting;\n defaultRowsPerPage: number;\n};\n\nconst CHANGE_RELATION_TYPE = 'CHANGE_RELATION_TYPE';\nconst APPLY_SAVED_STATE = 'APPLY_SAVED_STATE';\nconst SAVE_CURRENT_STATE = 'SAVE_CURRENT_STATE';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeRelationType: createStandardAction(CHANGE_RELATION_TYPE),\n applySavedState: createStandardAction(APPLY_SAVED_STATE),\n saveCurrentState: createStandardAction(SAVE_CURRENT_STATE)\n};\n\nconst resetPageNumber = assoc('page', 0);\n\nconst getDefaultVisibleColumnsForCurrentRelationType = (state) => {\n return pipe(\n prop('visibleColumns'),\n ifElse(always(state.currentRelationType), without(ALL_TYPES_COLUMNS), concat(ALL_TYPES_COLUMNS)),\n intersection(DEFAULT_COLUMNS)\n )(state);\n};\n\nconst getSavedVisibleColumnsForCurrentRelationType = (state) =>\n path(['visibleColumnsForRelationTypes', `${state.currentRelationType}`], state);\n\nconst changeVisibleColumnsForCurrentRelationType = (state) => {\n const nextVisibleColumns = either(\n getSavedVisibleColumnsForCurrentRelationType,\n getDefaultVisibleColumnsForCurrentRelationType\n )(state);\n return basicTableViewState.changeVisibleColumns(state, nextVisibleColumns);\n};\n\nconst getFiltersFromSavedState = pipe(\n propOr(null, 'filters'),\n unless(\n isNil,\n filter(({filter, value}) => validateFilterValue(filter, value))\n )\n);\n\nconst saveVisibleColumnsForCurrentRelationType = (state) => {\n const {currentRelationType, visibleColumns} = state;\n return evolve(\n {\n visibleColumnsForRelationTypes: assoc(`${currentRelationType}`, visibleColumns)\n },\n state\n );\n};\n\nconst getStateToSave = pipe(\n saveVisibleColumnsForCurrentRelationType,\n pick(['currentRelationType', 'visibleColumnsForRelationTypes', 'filters', 'sorting'])\n);\n\nexport const useRelationshipsTable = ({defaultColumns, defaultSorting, defaultRowsPerPage}: Props) => {\n const initState = {\n visibleColumns: defaultColumns,\n filters: null,\n sorting: defaultSorting,\n page: 0,\n rowsPerPage: defaultRowsPerPage,\n currentRelationType: null,\n stateToSave: null,\n visibleColumnsForRelationTypes: {},\n entityTypeOfAppliedSavedState: null\n };\n const [state, dispatch] = useReducer((state, action) => {\n switch (action.type) {\n case CHANGE_RELATION_TYPE: {\n const nextRelationType = action.payload;\n return pipe(\n saveVisibleColumnsForCurrentRelationType,\n assoc('currentRelationType', nextRelationType),\n changeVisibleColumnsForCurrentRelationType,\n resetPageNumber\n )(state);\n }\n case APPLY_SAVED_STATE: {\n const {savedState, entityTypeUri} = action.payload;\n const visibleColumns = savedState\n ? getSavedVisibleColumnsForCurrentRelationType(savedState)\n : state.visibleColumns;\n const filters = savedState ? getFiltersFromSavedState(savedState) : state.filters;\n return {\n ...state,\n ...savedState,\n filters,\n visibleColumns,\n entityTypeOfAppliedSavedState: entityTypeUri\n };\n }\n case SAVE_CURRENT_STATE: {\n return {\n ...state,\n stateToSave: getStateToSave(state)\n };\n }\n default:\n return basicTableViewState.reducer(state, action);\n }\n }, initState);\n const tableActions = useActions({actions, dispatch});\n return [state, tableActions];\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n select: {\n fontSize: '13px',\n color: 'rgba(0,0,0,.6)',\n paddingLeft: '15px'\n },\n selectMenu: {\n '& li': {\n fontSize: '13px',\n height: '32px'\n }\n },\n textField: {\n maxWidth: '100%'\n }\n});\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {map, concat, pipe} from 'ramda';\nimport {TRelationType} from '@reltio/mdm-sdk';\nimport {DropDownEditor} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: string;\n onChange: (value: string) => void;\n relationTypes: TRelationType[];\n className?: string;\n};\n\nconst RelationTypeSelector = ({value, onChange, relationTypes, className}: Props) => {\n const styles = useStyles();\n const entries = useMemo(\n () =>\n pipe(\n map(({label, uri}) => ({label, value: uri})),\n concat([{value: '', label: i18n.text('All types')}])\n )(relationTypes),\n [relationTypes]\n );\n\n return (\n <div className={className}>\n <DropDownEditor\n displayEmpty\n disableUnderline\n classes={{\n select: styles.select\n }}\n TextFieldProps={{\n classes: {\n root: styles.textField\n }\n }}\n MenuProps={{\n classes: {\n list: styles.selectMenu\n }\n }}\n value={value || ''}\n entries={entries}\n onChange={(value: string) => onChange(value || null)}\n />\n </div>\n );\n};\n\nexport default RelationTypeSelector;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n background: '#FFF',\n paddingRight: '10px'\n },\n total: {\n fontSize: '14px',\n color: theme.palette.text.secondary,\n flexShrink: 0,\n marginRight: '5px'\n },\n relationTypeSelector: {\n margin: '0px 10px 0 30px',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {TRelationType} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport {\n BasicViewHeader,\n ColumnsSettings,\n DropDownMenuItem,\n FilterButton,\n SettingsMenu,\n Spacer,\n VerticalDivider\n} from '@reltio/components';\nimport RelationTypeSelector from '../RelationTypeSelector/RelationTypeSelector';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total: number;\n filteringEnabled: boolean;\n onToggleFilters: () => void;\n columnsData: Record<string, unknown>[];\n selectedColumns: string[];\n currentRelationType: string;\n onRelationTypeChange: (value: string) => void;\n relationTypes: TRelationType[];\n onChangeColumns: (columns: string[]) => void;\n searchByOv: boolean;\n onToggleSearchByOv: () => void;\n showInactive: boolean;\n onToggleShowInactive: () => void;\n};\n\nconst RelationshipsTableHeader = ({\n total,\n filteringEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n currentRelationType,\n onRelationTypeChange,\n relationTypes,\n onChangeColumns,\n searchByOv,\n onToggleSearchByOv,\n showInactive,\n onToggleShowInactive\n}: Props) => {\n const styles = useStyles();\n\n const settingItems = useMemo<Array<DropDownMenuItem>>(() => {\n return [\n {\n selected: searchByOv,\n text: i18n.text('Search by OV only'),\n onClick: onToggleSearchByOv,\n id: 'showNonOv'\n },\n {\n selected: showInactive,\n text: i18n.text('Show inactive relationships'),\n onClick: onToggleShowInactive,\n id: 'showInactive'\n }\n ];\n }, [onToggleSearchByOv, searchByOv, onToggleShowInactive, showInactive]);\n\n return (\n <BasicViewHeader title={i18n.text('Relationships')} classes={{root: styles.header}}>\n {relationTypes.length > 0 && (\n <RelationTypeSelector\n className={styles.relationTypeSelector}\n value={currentRelationType}\n onChange={onRelationTypeChange}\n relationTypes={relationTypes}\n />\n )}\n <VerticalDivider height={28} margin={20} />\n <Typography variant=\"caption\" className={styles.total}>\n {total === 1\n ? i18n.text('${count} record', {count: total})\n : i18n.text('${count} records', {count: total})}\n </Typography>\n <Spacer />\n <SettingsMenu items={settingItems} menuId=\"relationships-view-settings\" />\n <FilterButton enabled={filteringEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={28} margin={8} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </BasicViewHeader>\n );\n};\n\nexport default memo(RelationshipsTableHeader);\n","import {Connection, isActiveObject} from '@reltio/mdm-sdk';\n\nexport const getIsInactiveRelation = (connection: Connection) =>\n !isActiveObject(connection?.relation) || !isActiveObject(connection?.entity);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n width: '100%',\n fontSize: '12px',\n color: theme.palette.text.secondary\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden',\n overflowWrap: 'break-word'\n },\n inactiveRowCell: {\n opacity: 0.6\n },\n defaultWrapper: {\n padding: '15px 25px 0 25px',\n '&:last-child': {\n paddingBottom: '15px'\n }\n },\n entityCell: {\n display: 'flex',\n alignItems: 'flex-start',\n padding: '15px'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n margin: '-10px 0 -10px -10px'\n },\n inactiveEntityAvatar: {\n overflow: 'initial',\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n backgroundColor: 'rgb(209, 206, 206)',\n border: '1px solid rgba(0, 0, 0, 1)',\n borderRadius: '2px',\n width: '12px',\n right: 0,\n bottom: 0,\n height: '12px'\n },\n '& > img': {\n borderRadius: '50%',\n overflow: 'hidden'\n }\n },\n entityLabel: {\n color: theme.palette.primary.main,\n textDecoration: 'none',\n fontWeight: 500\n },\n attributesWrapper: {\n padding: '15px 25px 10px 25px',\n color: 'rgba(0,0,0,0.87)'\n },\n commentsContainer: {\n marginLeft: 'auto'\n },\n headLabelWrapper: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React from 'react';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {DescriptionIcon, withFilterAtBottom} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n const {description, label} = props?.headCellData || {};\n const cellLabel = (\n <div className={styles.headLabelWrapper}>\n {label}\n <DescriptionIcon description={description} />\n </div>\n );\n\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} headCellData={{...props?.headCellData, label: cellLabel}} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {CommentsContainer, COMMENTS_CONTAINER_VISIBILITY_AREA, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n ConnectionEntity,\n ConnectionRelation,\n createRelatedObjectUris,\n getEntityUriForLink,\n getLabel,\n TEntityType\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n entity: ConnectionEntity;\n relation: ConnectionRelation;\n entityType: TEntityType;\n };\n isInactiveRelation?: boolean;\n};\n\nconst EntityProfileRenderer = ({value: {entity, entityType, relation}, isInactiveRelation}: Props) => {\n const styles = useStyles();\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUri);\n return (\n <div className={classnames(styles.entityCell, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <EntityTypeIcon\n className={classnames(styles.entityAvatar, {[styles.inactiveEntityAvatar]: isInactiveRelation})}\n entityType={entityType}\n />\n <EntityUriLink\n value={getEntityUriForLink({uri: entity.entityUri, dataTenant: entity.dataTenant})}\n className={styles.entityLabel}\n >\n {getLabel(entity.entityLabel)}\n </EntityUriLink>\n <div className={styles.commentsContainer} onClick={(e) => e.stopPropagation()}>\n <CommentsContainer\n uri={relation.relationUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection: {relation, entity}\n })}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n </div>\n </div>\n );\n};\n\nexport default EntityProfileRenderer;\n","import React from 'react';\nimport {ReadOnlyAttributesList} from '@reltio/components';\nimport {AttributeType, RecordAttributesType} from '@reltio/mdm-sdk';\nimport {RelationshipsTableColumnData} from '../../../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n columnData: RelationshipsTableColumnData;\n value: {\n attributeTypes: AttributeType[];\n attributes: RecordAttributesType;\n analyticsAttributes?: RecordAttributesType;\n };\n};\n\nconst AttributesRenderer = ({columnData, value: {attributes, analyticsAttributes, attributeTypes}}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.attributesWrapper} onClick={(e) => e.stopPropagation()}>\n <ReadOnlyAttributesList\n max={columnData.maxAttrsToShow}\n entity={{attributes, analyticsAttributes}}\n attrTypes={attributeTypes}\n drawLines={false}\n />\n </div>\n );\n};\n\nexport default AttributesRenderer;\n","import React from 'react';\nimport {DataTypeValue} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {RelationshipsTableColumnData} from '../../../types';\n\ntype Props = {\n columnData: RelationshipsTableColumnData;\n value: unknown;\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.defaultWrapper}>\n <DataTypeValue value={value} dataTypeDefinition={dataTypeDefinition} />\n </div>\n );\n};\n\nexport default DefaultCellValueRenderer;\n","import {assoc, split, slice, values, length, path, cond, map, pathEq, pipe, reduce, T, either} from 'ramda';\nimport {defaultGetRowCellHeight} from '@reltio/components';\nimport {Connection, getEntityType, getRelationType, getOvAttributeValuesByPath, Metadata} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport EntityProfileRenderer from './cell-renderers/EntityProfileRenderer';\nimport AttributesRenderer from './cell-renderers/AttributesRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport {RelationshipsTableColumnData} from '../../types';\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(1, Infinity));\n\nconst getRelationAttributeValues = (attrPath, relation) =>\n pipe(path(['object', attrPath[0]]), getOvAttributeValuesByPath(attrPath.slice(1)))(relation);\n\nconst getRowValueByColumnId = (metadata: Metadata, {entity, relation}: Connection, columnId: string) => {\n switch (columnId) {\n case 'entity.label':\n return {entity, entityType: getEntityType(metadata, entity.entityType), relation};\n case 'relation.type':\n return relation.relationType;\n case 'relation.label':\n return relation.relationLabel;\n case 'relation.activeness.startDate':\n return relation.startDate;\n case 'relation.activeness.endDate':\n return relation.endDate;\n case 'relation.attributes':\n return {\n attributes: relation.object.attributes,\n attributeTypes: getRelationType(metadata, relation.relationType).attributes\n };\n case 'relation.analyticsAttributes':\n return {\n analyticsAttributes: relation.object.analyticsAttributes,\n attributeTypes: getRelationType(metadata, relation.relationType).analyticsAttributes\n };\n default: {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getRelationAttributeValues(attrPath, relation);\n }\n }\n};\n\nconst getBasicTableRowsData = (\n metadata: Metadata,\n columnsData: RelationshipsTableColumnData[],\n connections: Connection[]\n) => {\n return (connections || []).map((connection) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(metadata, connection, id), acc), {}),\n assoc('rawValue', connection)\n )(columnsData)\n );\n};\n\nconst getNestedPathByColumnId = (columnId: string) => {\n if (columnId.startsWith('relation.attributes') || columnId.startsWith('relation.analyticsAttributes')) {\n const attrPath = getAttrPathFromColumnId(columnId).slice(1);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRenderer = (columnId: string) => {\n switch (columnId) {\n case 'entity.label':\n return EntityProfileRenderer;\n case 'relation.attributes':\n case 'relation.analyticsAttributes':\n return AttributesRenderer;\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getColumnDataByColumnId = (columnData: RelationshipsTableColumnData) => ({\n sortable: true,\n resizable: true,\n ...columnData,\n headCellRenderer: HeadCellRenderer,\n nestedPath: getNestedPathByColumnId(columnData.id),\n rowCellValueRenderer: getCellValueRenderer(columnData.id)\n});\n\nconst getBasicTableColumnsData = map(getColumnDataByColumnId);\n\nconst calculateAttributesCellHeight = ({columnData, cell}) => {\n const attributesCount = pipe(\n either(path(['values', 0, 'attributes']), path(['values', 0, 'analyticsAttributes'])),\n values,\n length\n )(cell);\n return attributesCount > columnData.maxAttrsToShow\n ? columnData.maxAttrsToShow * 26 + 49\n : attributesCount * 26 + 25;\n};\n\nconst getStaticRowCellHeight = cond([\n [pathEq(['columnData', 'id'], 'relation.attributes'), calculateAttributesCellHeight],\n [pathEq(['columnData', 'id'], 'relation.analyticsAttributes'), calculateAttributesCellHeight],\n [T, defaultGetRowCellHeight]\n]);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData, getStaticRowCellHeight};\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n cell: {\n values: unknown[];\n };\n CellValueRenderer: React.ElementType;\n isInactiveRelation?: boolean;\n};\n\nconst RowCellRenderer = ({cell, CellValueRenderer, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.rowCell, {[styles.inactiveRowCell]: otherProps.isInactiveRelation})}>\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default RowCellRenderer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n menuItem: {\n minHeight: '32px',\n color: theme.palette.text.secondary\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0,\n marginLeft: '16px'\n },\n buttons: {\n display: 'flex',\n alignItems: 'center',\n paddingRight: '5px'\n }\n}));\n","import React, {forwardRef, ReactNode} from 'react';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport {noop, withTooltip} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst MenuItemWithTooltip = withTooltip(MenuItem);\n\ntype Item = {\n text?: string;\n disabled?: boolean;\n icon: ReactNode;\n tooltip?: string;\n onClick?: (e) => void;\n};\n\ntype Props = {\n item: Item;\n onMenuClose?: () => void;\n};\n\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = noop}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {icon, disabled, text, tooltip, onClick} = item;\n const handleClick = (e) => {\n onMenuClose();\n onClick(e);\n };\n\n return (\n <MenuItemWithTooltip\n tooltipTitle={tooltip}\n showForDisabled={true}\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n >\n {icon}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItemWithTooltip>\n );\n});\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React, {useCallback, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport {ConfirmationDialog, DropDownMenuButton, noop, SmallIconButton} from '@reltio/components';\nimport MenuItemRenderer from './MenuItemRenderer';\nimport {checkMetadataPermission, Connection, getLabel, getRelationType, MetadataPermissions} from '@reltio/mdm-sdk';\nimport {pipe, prop} from 'ramda';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n disableDelete?: boolean;\n connection: Connection;\n onMenuOpen?: () => void;\n onMenuClose?: () => void;\n onDelete: () => void;\n};\n\nexport const RelationshipMenuButton = ({\n disableDelete,\n connection: {entity, relation},\n onMenuOpen = noop,\n onMenuClose = noop,\n onDelete\n}: Props) => {\n const styles = useStyles();\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const hasDeletePermission = pipe(\n prop('relationType'),\n getRelationType(metadata),\n checkMetadataPermission(MetadataPermissions.DELETE)\n )(relation);\n\n const canDelete = !disableDelete && hasDeletePermission;\n\n const [pendingDeletion, setPendingDeletion] = useState(false);\n const showDeleteConfirmation = () => setPendingDeletion(true);\n const hideDeleteConfirmation = () => setPendingDeletion(false);\n\n const actions = [\n {\n disabled: !canDelete,\n text: i18n.text('Delete'),\n icon: <DeleteIcon />,\n tooltip: canDelete ? null : i18n.text(\"You don't have permissions to delete\"),\n onClick: showDeleteConfirmation\n }\n ];\n\n const handleMenuClose = useCallback(() => {\n if (!pendingDeletion) {\n onMenuClose();\n }\n }, [pendingDeletion, onMenuClose]);\n const truncateWithEllipsis = (text: string) => (text.length > 17 ? `${text.substring(0, 17)}...` : text);\n\n return (\n <div className={styles.buttons}>\n <DropDownMenuButton\n MenuItemRenderer={MenuItemRenderer}\n menuId={'relationships-table-actions'}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'S'\n }}\n menuItems={actions}\n onMenuOpen={onMenuOpen}\n onMenuClose={handleMenuClose}\n />\n <ConfirmationDialog\n open={pendingDeletion}\n title={i18n.text('Do you want to delete relationship \"${label}\"?', {\n label: truncateWithEllipsis(getLabel(entity.entityLabel))\n })}\n content={i18n.text(\n 'This relationship will be removed and all the values in the relationship will be permanently deleted. \\\nAre you sure you want to delete this relationship?'\n )}\n onSave={pipe(hideDeleteConfirmation, onMenuClose, onDelete)}\n onDiscard={pipe(hideDeleteConfirmation, onMenuClose)}\n saveCaption={i18n.text('Delete')}\n discardCaption={i18n.text('Cancel')}\n />\n </div>\n );\n};\n\nexport default RelationshipMenuButton;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n tableContainer: {\n flex: 1,\n overflow: 'hidden',\n display: 'flex',\n zIndex: 0,\n background: '#FFF'\n },\n hoveredRowRightContentWrapper: {\n width: '100%',\n pointerEvents: 'none!important' as any\n },\n menuButtonContainer: {\n position: 'absolute',\n top: 'calc(50% - 12px)',\n right: 0,\n pointerEvents: 'all'\n },\n tooltipAnchor: {\n width: '100%',\n height: '1px'\n }\n});\n","import React, {ForwardedRef, memo, useCallback, useMemo, useState} from 'react';\nimport {Connection, Metadata} from '@reltio/mdm-sdk';\nimport {\n BasicTable,\n ColumnData,\n ColumnFilter,\n RowCellAutoSizer,\n Sorting,\n useDynamicRowCellHeight\n} from '@reltio/components';\nimport Tooltip from '@mui/material/Tooltip';\nimport i18n from 'ui-i18n';\nimport {either} from 'ramda';\nimport {getIsInactiveRelation} from '../../services/helpers';\nimport {getBasicTableColumnsData, getBasicTableRowsData, getStaticRowCellHeight} from './helpers';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport RelationshipMenuButton from '../RelationshipMenuButton/RelationshipMenuButton';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n metadata: Metadata;\n connections: Connection[];\n columnsData: ColumnData[];\n sorting: Sorting;\n onSort: (field: string) => void;\n filters?: Record<string, ColumnFilter>;\n onFilter: (event: {columnId: string; filter: ColumnFilter}) => void;\n onRowClick: (rowIndex: number) => void;\n onDelete: (relationUri: string) => void;\n tableRef: ForwardedRef<unknown>;\n readOnly?: boolean;\n};\n\nconst RelationshipsTable = ({\n metadata,\n connections,\n columnsData,\n sorting,\n onSort,\n filters,\n onFilter,\n onRowClick,\n tableRef,\n onDelete,\n readOnly\n}: Props) => {\n const styles = useStyles();\n\n const tableRowsData = useMemo(\n () => getBasicTableRowsData(metadata, columnsData, connections),\n [metadata, connections, columnsData]\n );\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const {getDynamicRowCellHeight, changeRowCellHeight} = useDynamicRowCellHeight();\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, getStaticRowCellHeight), [\n getDynamicRowCellHeight,\n getStaticRowCellHeight\n ]);\n const [hoverRowIndex, setHoverRowIndex] = useState<number>(null);\n\n const renderRowCell = useCallback(\n (props) => {\n const isInactiveRelation = getIsInactiveRelation(props.rowValue.rawValue);\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} isInactiveRelation={isInactiveRelation} />\n </RowCellAutoSizer>\n );\n },\n [changeRowCellHeight]\n );\n\n const [isActionsMenuOpen, setIsActionsMenuOpen] = useState(false);\n\n const handleActionsMenuOpen = useCallback(() => setIsActionsMenuOpen(true), []);\n const handleActionsMenuClose = useCallback(() => {\n setHoverRowIndex(null);\n setIsActionsMenuOpen(false);\n }, []);\n\n const onRowHover = useCallback(\n (rowIndex) => setHoverRowIndex((prevHoverRowIndex) => (isActionsMenuOpen ? prevHoverRowIndex : rowIndex)),\n [isActionsMenuOpen]\n );\n\n const hoveredRowRightContent = useMemo(() => {\n const connection: Connection = hoverRowIndex != null ? tableRowsData[hoverRowIndex].rawValue : null;\n const isInactiveRelation = getIsInactiveRelation(connection);\n\n return (\n connection && (\n <>\n <Tooltip\n key={connection.relation.relationUri}\n open={!isActionsMenuOpen && isInactiveRelation}\n title={i18n.text('Inactive')}\n >\n <div className={styles.tooltipAnchor} />\n </Tooltip>\n <div className={styles.menuButtonContainer}>\n <RelationshipMenuButton\n disableDelete={readOnly}\n connection={connection}\n onMenuOpen={handleActionsMenuOpen}\n onMenuClose={handleActionsMenuClose}\n onDelete={() => onDelete(connection.relation.relationUri)}\n />\n </div>\n </>\n )\n );\n }, [isActionsMenuOpen, onDelete, tableRowsData, hoverRowIndex]);\n\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n fixFirstColumn={true}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={48}\n getRowCellHeight={getRowCellHeight}\n renderRowCell={renderRowCell}\n onRowClick={onRowClick}\n ref={tableRef}\n hoverStateEnabled={true}\n hoverRowIndex={hoverRowIndex}\n onRowHover={onRowHover}\n hoveredRowRightContent={hoveredRowRightContent}\n classes={{\n hoveredRowRightContentWrapper: styles.hoveredRowRightContentWrapper\n }}\n />\n </div>\n );\n};\n\nexport default memo(RelationshipsTable);\n","import {AttributeType, Relation} from '@reltio/mdm-sdk';\nimport {CrosswalksByTypes, groupCrosswalksByTypesAndSources} from '@reltio/components';\nimport {assoc, map, pipe, propOr} from 'ramda';\n\ntype TableRow = {\n source: string;\n crosswalksByTypes: CrosswalksByTypes;\n};\n\nexport const buildTableRowsData = (relation: Relation, selectedAttributeTypes: AttributeType[] = []): TableRow[] => {\n return pipe(\n propOr([], 'crosswalks'),\n map(assoc('ownerType', 'entity')),\n groupCrosswalksByTypesAndSources(relation.type, selectedAttributeTypes)\n )(relation);\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n tableRow: {\n '& + &': {\n marginTop: '4px'\n },\n margin: 'auto',\n maxWidth: '448px'\n }\n}));\n","import React, {memo, useCallback, useMemo, useState} from 'react';\nimport {\n AttributeType,\n checkCanDeleteCrosswalk,\n checkCanEditCrosswalk,\n getRelationType,\n Metadata,\n Relation,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {DeleteCrosswalkEvent, EditCrosswalkEvent, SourceCrosswalksRow} from '@reltio/components';\nimport {append, ifElse, includes, without} from 'ramda';\nimport {buildTableRowsData} from './helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n readOnly?: boolean;\n relation: Relation;\n metadata: Metadata;\n selectedAttributeTypes?: AttributeType[];\n onDeleteCrosswalk: (event: DeleteCrosswalkEvent) => void;\n onEditCrosswalk: (event: EditCrosswalkEvent) => void;\n};\n\nconst LegendTable = ({\n readOnly,\n relation,\n metadata,\n selectedAttributeTypes,\n onDeleteCrosswalk,\n onEditCrosswalk\n}: Props) => {\n const styles = useStyles();\n\n const relationType: TRelationType = getRelationType(metadata, relation.type);\n\n const rowsData = useMemo(\n () => buildTableRowsData(relation, selectedAttributeTypes),\n [relation, selectedAttributeTypes]\n );\n const [expandedSources, setExpandedSources] = useState<string[]>([]);\n\n const handleDelete = useCallback(\n (crosswalkId: string) => {\n onDeleteCrosswalk({entityUri: relation.uri, crosswalkId});\n },\n [onDeleteCrosswalk, relation.uri]\n );\n\n const handleEdit = useCallback(\n (event: Omit<EditCrosswalkEvent, 'entityUri'>) => {\n onEditCrosswalk({entityUri: relation.uri, ...event});\n },\n [onEditCrosswalk, relation.uri]\n );\n\n return (\n <div>\n {rowsData.map(({source, crosswalksByTypes}) => {\n return (\n <div key={source} className={styles.tableRow}>\n <SourceCrosswalksRow\n source={source}\n crosswalksByTypes={crosswalksByTypes}\n expanded={expandedSources.includes(source)}\n disableEditCrosswalk={!checkCanEditCrosswalk(relationType) || readOnly}\n disableDeleteCrosswalk={!checkCanDeleteCrosswalk(relationType) || readOnly}\n onEdit={handleEdit}\n onDelete={handleDelete}\n onToggleExpanded={() => {\n setExpandedSources(ifElse(includes(source), without([source]), append(source)));\n }}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default memo(LegendTable);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n padding: '20px 12px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n title: {\n fontWeight: 500,\n fontSize: '20px',\n lineHeight: '23px',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary,\n marginLeft: '12px'\n },\n hint: {\n color: theme.palette.text.secondary,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n alignSelf: 'flex-start',\n margin: '4px 14px 10px'\n },\n hintText: {\n marginLeft: '8px',\n fontSize: '12px',\n lineHeight: '16px'\n },\n buttons: {\n display: 'flex',\n padding: '8px 6px 4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n paddingLeft: 25,\n margin: 'auto',\n maxWidth: '448px',\n boxSizing: 'border-box',\n marginBottom: '4px'\n },\n tableContainer: {\n overflowY: 'auto',\n overflowX: 'hidden',\n paddingLeft: '16px',\n paddingRight: '6px'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport InfoIcon from '@mui/icons-material/Info';\nimport AddIcon from '@mui/icons-material/Add';\nimport Button from '@mui/material/Button';\nimport LegendTable from '../LegendTable/LegendTable';\nimport {\n AttributeType,\n checkCanCreateCrosswalk,\n getRelationType,\n Metadata,\n Relation,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {\n AddCrosswalkEvent,\n CrosswalkEditor,\n DeleteCrosswalkEvent,\n EditCrosswalkEvent,\n withTooltip\n} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst ButtonWithTooltip = withTooltip(Button);\n\ntype Props = {\n className?: string;\n readOnly?: boolean;\n relation: Relation;\n selectedAttributeTypes?: AttributeType[];\n onAddCrosswalk: (event: AddCrosswalkEvent) => void;\n onDeleteCrosswalk: (event: DeleteCrosswalkEvent) => void;\n onEditCrosswalk: (event: EditCrosswalkEvent) => void;\n};\n\nconst LegendPanel = ({\n className,\n readOnly,\n relation,\n selectedAttributeTypes,\n onAddCrosswalk,\n onDeleteCrosswalk,\n onEditCrosswalk\n}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationType: TRelationType = getRelationType(metadata, relation.type);\n\n const [openEditor, setOpenEditor] = useState(false);\n const canAdd = checkCanCreateCrosswalk(relationType) && !readOnly;\n\n return (\n <div className={className}>\n <div className={styles.header}>\n <span className={styles.title}>{i18n.text('Legend')}</span>\n </div>\n <div className={styles.buttons}>\n <ButtonWithTooltip\n color=\"primary\"\n showForDisabled={true}\n disabled={!canAdd}\n tooltipTitle={canAdd ? null : i18n.text(\"You don't have permissions to add crosswalk\")}\n onClick={() => setOpenEditor(true)}\n >\n <AddIcon className={styles.icon} />\n <div className={styles.buttonLabel}>{i18n.text('Crosswalk')}</div>\n </ButtonWithTooltip>\n </div>\n <div className={styles.hint}>\n <InfoIcon className={styles.icon} />\n <span className={styles.hintText}>\n {i18n.text('You can drag a crosswalk to add values to attributes swimlanes')}\n </span>\n </div>\n <div className={styles.tableContainer}>\n {openEditor && (\n <CrosswalkEditor\n className={styles.editor}\n onAdd={(crosswalk) => onAddCrosswalk({entity: relation, crosswalk})}\n onClose={() => setOpenEditor(false)}\n />\n )}\n <LegendTable\n readOnly={readOnly}\n metadata={metadata}\n relation={relation}\n selectedAttributeTypes={selectedAttributeTypes}\n onDeleteCrosswalk={onDeleteCrosswalk}\n onEditCrosswalk={onEditCrosswalk}\n />\n </div>\n </div>\n );\n};\n\nexport default memo(LegendPanel);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n entityInfo: {\n flex: '0 1 auto',\n overflow: 'hidden',\n minWidth: '100px'\n },\n entityLabelContainer: {\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden'\n },\n entityLabel: {\n lineHeight: '1.2',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary\n },\n infoIcon: {\n fontSize: '16px',\n color: theme.palette.text.secondary,\n marginLeft: '5px'\n },\n profileBand: {\n margin: '-10px',\n maxWidth: '500px'\n },\n entityTypeBadge: {\n marginTop: '7px'\n }\n}));\n","import React from 'react';\nimport {Entity, getLabel} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport {ExpandedValueTooltip, LightArrowTooltip, ProfileBand, EntityTypeBadge} from '@reltio/components';\nimport InfoIcon from '@mui/icons-material/Info';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n};\n\nconst EntityInfo = ({entity}: Props) => {\n const styles = useStyles();\n const label = getLabel(entity.label);\n return (\n <div className={styles.entityInfo}>\n <div className={styles.entityLabelContainer}>\n <ExpandedValueTooltip value={label}>\n <Typography variant=\"h6\" className={styles.entityLabel} noWrap>\n {label}\n </Typography>\n </ExpandedValueTooltip>\n <LightArrowTooltip\n title={<ProfileBand className={styles.profileBand} entity={entity} />}\n placement={'right'}\n >\n <InfoIcon className={styles.infoIcon} />\n </LightArrowTooltip>\n </div>\n <EntityTypeBadge className={styles.entityTypeBadge} entity={entity} size={'medium'} />\n </div>\n );\n};\n\nexport default EntityInfo;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n flexShrink: 0,\n overflow: 'hidden',\n width: '110px'\n },\n label: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n","import React from 'react';\nimport {ConnectionRelation} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport {ExpandedValueTooltip} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n relation: ConnectionRelation;\n};\n\nconst RelationDirection = ({relation}: Props) => {\n const styles = useStyles();\n const {direction, relationLabel} = relation;\n return (\n <div className={styles.root}>\n <ExpandedValueTooltip value={relationLabel}>\n <Typography variant={'subtitle2'} className={styles.label} align={'center'} noWrap>\n {relationLabel}\n </Typography>\n </ExpandedValueTooltip>\n <svg width=\"110\" height=\"12\" fill=\"black\" fillOpacity=\"0.3\">\n {direction === 'out' && <polygon points=\"94 0, 110 6, 94 12, 94 9, 0 9, 0 3, 94 3\" />}\n {direction === 'bidirectional' && (\n <polygon points=\"94 0, 110 6, 94 12, 94 9, 16 9, 16 12, 0 6, 16 0, 16 3, 94 3\" />\n )}\n {direction === 'in' && <polygon points=\"16 12, 0 6, 16 0, 16 3, 110 3, 110 9, 16 9\" />}\n </svg>\n </div>\n );\n};\n\nexport default RelationDirection;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n '&:hover $editButton': {\n visibility: 'visible'\n }\n },\n editButton: {\n visibility: 'hidden',\n marginLeft: '4px',\n marginBottom: '4px'\n },\n paper: {\n width: '150px',\n border: '3px solid rgba(0, 0, 0, 0.3)',\n borderRadius: '4px',\n boxSizing: 'border-box',\n overflow: 'hidden'\n }\n}));\n","import React, {KeyboardEvent, useRef, useState} from 'react';\nimport {formatDate} from '@reltio/mdm-sdk';\nimport {DateEditor, SmallIconButton} from '@reltio/components';\nimport EditIcon from '@mui/icons-material/Edit';\nimport Popover from '@mui/material/Popover';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: number;\n onChange: (value: number) => void;\n readOnly?: boolean;\n};\n\nconst RelationDate = ({value = null, onChange, readOnly}: Props) => {\n const styles = useStyles();\n const ref = useRef<HTMLSpanElement>();\n\n const [showEditor, setShowEditor] = useState(false);\n const openEditor = () => setShowEditor(true);\n const closeEditor = () => setShowEditor(false);\n\n const [editedValue, setEditedValue] = useState(value);\n\n const applyChangesAndClose = () => {\n if (editedValue !== value) {\n onChange(editedValue);\n }\n closeEditor();\n };\n\n const onKeyUp = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter') applyChangesAndClose();\n else if (event.key === 'Escape') closeEditor();\n };\n\n return (\n <span ref={ref} className={styles.root}>\n {value && formatDate(value)}\n <SmallIconButton\n disabled={readOnly}\n icon={EditIcon}\n size={'XXS'}\n className={styles.editButton}\n onClick={openEditor}\n />\n <Popover\n classes={{paper: styles.paper}}\n open={showEditor}\n anchorEl={ref.current}\n anchorOrigin={{vertical: 'top', horizontal: 'left'}}\n transformOrigin={{vertical: 14, horizontal: 20}}\n onKeyUp={onKeyUp}\n onBackdropClick={applyChangesAndClose}\n >\n <DateEditor\n label={undefined}\n value={editedValue && new Date(editedValue)}\n onChange={(value) => setEditedValue(value && value.valueOf())}\n slotProps={{\n textField: {\n size: 'small',\n hiddenLabel: true,\n InputProps: {\n autoFocus: true,\n disableUnderline: true,\n fullWidth: true\n }\n }\n }}\n />\n </Popover>\n </span>\n );\n};\n\nexport default RelationDate;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n relationBand: {\n flexShrink: 0,\n boxShadow: 'inset 0px -1px 0px rgba(0,0,0,0.06)',\n padding: '16px 19px'\n },\n inactiveRelationBand: {\n opacity: 0.6,\n background: 'rgba(185, 188, 197, 0.18)'\n },\n toolbar: {\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n marginBottom: '10px'\n },\n mainInfo: {\n display: 'flex',\n gap: '16px',\n marginLeft: '40px'\n },\n detailsInfo: {\n display: 'flex',\n gap: '34px',\n marginLeft: '40px',\n marginTop: '17px',\n color: theme.palette.text.secondary,\n fontSize: '13px'\n },\n detailTitle: {\n color: theme.palette.text.primary,\n flexShrink: 0,\n marginRight: '4px'\n },\n directionalLabel: {\n display: 'flex',\n overflow: 'hidden',\n '& span': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n }\n },\n relationDate: {\n flexShrink: 0\n },\n commentsContainer: {\n marginRight: '18px'\n }\n}));\n","import React, {memo} from 'react';\nimport {CollaborationObjectTypes, Connection, createRelatedObjectUris, Entity} from '@reltio/mdm-sdk';\nimport {\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ExpandedValueTooltip,\n SmallIconButton,\n Spacer\n} from '@reltio/components';\nimport classnames from 'classnames';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport Typography from '@mui/material/Typography';\nimport i18n from 'ui-i18n';\nimport EntityInfo from './EntityInfo/EntityInfo';\nimport RelationDirection from './RelationDirection/RelationDirection';\nimport RelationDate from './RelationDate/RelationDate';\nimport {getIsInactiveRelation} from '../../services/helpers';\nimport RelationshipMenuButton from '../RelationshipMenuButton/RelationshipMenuButton';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n readOnly?: boolean;\n entity: Entity;\n connection: Connection;\n onNavigateBack: () => void;\n onDelete: () => void;\n onChangeActivenessDate: (attributeName: string, value: number) => void;\n};\n\nconst RelationshipBand = ({readOnly, entity, connection, onNavigateBack, onDelete, onChangeActivenessDate}: Props) => {\n const isInactiveRelation = getIsInactiveRelation(connection);\n const styles = useStyles();\n return (\n <div\n className={classnames(styles.relationBand, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [styles.inactiveRelationBand]: isInactiveRelation\n })}\n data-reltio-id=\"relationship-band-wrapper\"\n >\n <div className={styles.toolbar}>\n <SmallIconButton icon={ArrowBackIcon} size={'S'} onClick={() => onNavigateBack()} />\n <Typography variant={'subtitle2'} display={'inline'}>\n {i18n.text('Back to relationships')}\n </Typography>\n <Spacer />\n <div className={styles.commentsContainer}>\n <CommentsContainer\n uri={connection.relation.relationUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: entity?.uri,\n connection\n })}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n </div>\n <RelationshipMenuButton connection={connection} onDelete={onDelete} disableDelete={readOnly} />\n </div>\n <div className={styles.mainInfo}>\n <EntityInfo entity={entity} />\n <RelationDirection relation={connection.relation} />\n <EntityInfo entity={{...connection.entity.object, dataTenant: connection.entity.dataTenant}} />\n </div>\n <div className={styles.detailsInfo}>\n <div className={styles.directionalLabel}>\n <span className={styles.detailTitle}>{i18n.text('Directional label:')}</span>\n <ExpandedValueTooltip value={connection.relation.relationLabel}>\n <span>{connection.relation.relationLabel}</span>\n </ExpandedValueTooltip>\n </div>\n <div className={styles.relationDate}>\n <span className={styles.detailTitle}>{i18n.text('Start date:')}</span>\n <RelationDate\n value={connection.relation.startDate}\n onChange={(value) => onChangeActivenessDate('startDate', value)}\n readOnly={readOnly}\n />\n </div>\n <div className={styles.relationDate}>\n <span className={styles.detailTitle}>{i18n.text('End date:')}</span>\n <RelationDate\n value={connection.relation.endDate}\n onChange={(value) => onChangeActivenessDate('endDate', value)}\n readOnly={readOnly}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default memo(RelationshipBand);\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","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n detailsView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: 'hidden'\n },\n locked: {\n pointerEvents: 'none'\n },\n resizablePanesWrapper: {\n flexGrow: 1\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});\n","import React, {memo, useCallback, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {\n ApiError,\n ApiErrorCode,\n AttributeType,\n Connection,\n deleteActivenessAttribute,\n Entity,\n getRelation,\n Relation,\n updateActivenessAttribute\n} from '@reltio/mdm-sdk';\nimport {\n AttributesTable,\n BasicView,\n CrosswalkDragLayer,\n CrosswalksDisplayProvider,\n ExpandedAttributesProvider,\n ResizablePanes,\n useCrosswalkActions,\n useModifiedEntity,\n useSafePromise\n} from '@reltio/components';\nimport LegendPanel from '../LegendPanel/LegendPanel';\nimport RelationshipBand from '../RelationshipBand/RelationshipBand';\nimport {assocPath, dissocPath, pipe} from 'ramda';\nimport {showErrorMessage} from '../../services/errors';\nimport {useCrosswalksDisplay} from '../../hooks/useCrosswalksDisplay';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport {DndProvider} from 'react-dnd';\n\nimport {useStyles} from './styles';\n\nconst MIN_PANE1_SIZE = 600;\nconst MIN_PANE2_SIZE = 480;\nconst MAX_PANE1_SIZE = -MIN_PANE2_SIZE;\n\ntype Props = {\n entity: Entity;\n connection: Connection;\n visibleColumns?: string[];\n onClose: (error?: ApiError) => void;\n onDeleteConnection: () => void;\n onChangeConnection: (connection: Connection) => void;\n onChangeVisibleColumns: (visibleColumns: string[]) => void;\n readOnly?: boolean;\n};\n\nconst RelationshipDetails = ({\n entity,\n connection,\n visibleColumns,\n onClose,\n onDeleteConnection,\n onChangeConnection,\n onChangeVisibleColumns,\n readOnly\n}: Props) => {\n const styles = useStyles();\n const displayProps = useCrosswalksDisplay();\n const [paneSize, setPaneSize] = useState(MAX_PANE1_SIZE);\n const handlePaneSizeChange = useCallback(({percentageSize}) => setPaneSize(percentageSize), []);\n\n const [selectedAttrTypes, setSelectedAttrTypes] = useState<AttributeType[]>();\n const [isLoading, setIsLoading] = useState(false);\n const relationUri = connection.relation.relationUri;\n\n const safePromise = useSafePromise();\n const onLoad = useCallback(() => setIsLoading(true), []);\n const onLoaded = useCallback(() => setIsLoading(false), []);\n const onDeleteRelation = useCallback(pipe(onDeleteConnection, onLoad), []);\n const [onError, reloadRelation] = useMemo(() => {\n const onError = (error: ApiError) => {\n if (error.errorCode === ApiErrorCode.CROSSWALK_NOT_FOUND) {\n showErrorMessage(error);\n reloadRelation();\n } else if (error.errorCode === ApiErrorCode.OBJECT_NOT_FOUND) {\n onClose(error);\n } else {\n showErrorMessage(error);\n onLoaded();\n }\n };\n const reloadRelation = () => {\n safePromise(getRelation(relationUri))\n .then((newRelation: Relation) => {\n onChangeConnection(assocPath(['relation', 'object'], newRelation, connection));\n onLoaded();\n })\n .catch(onError);\n };\n return [onError, reloadRelation];\n }, [connection, onLoaded, onChangeConnection, onClose]);\n\n const {\n modifiedEntity,\n crosswalksMap,\n newlyCreatedAttributes,\n onPinAttribute,\n onIgnoreAttribute,\n onAddAttribute,\n onEditAttribute,\n onDeleteAttribute,\n emptyTempAttributeUris\n } = useModifiedEntity({\n entity: connection.relation.object,\n onModify: reloadRelation,\n onError,\n onLoad\n });\n\n const {addCrosswalk, deleteCrosswalk, editCrosswalk} = useCrosswalkActions({\n onSuccess: reloadRelation,\n onError,\n onLoad\n });\n\n const onChangeActivenessDate = useCallback(\n (attributeName: string, value: number) => {\n onLoad();\n const request = value\n ? updateActivenessAttribute({entityUri: relationUri, attributeName, value}).then(() =>\n onChangeConnection(assocPath(['relation', attributeName], value, connection))\n )\n : deleteActivenessAttribute({entityUri: relationUri, attributeName}).then(() =>\n onChangeConnection(dissocPath(['relation', attributeName], connection))\n );\n request.then(onLoaded).catch(onError);\n },\n [connection, onLoad, onLoaded, onError]\n );\n\n return (\n <BasicView className={styles.detailsView}>\n <CrosswalksDisplayProvider {...displayProps}>\n <DndProvider backend={HTML5Backend}>\n <CrosswalkDragLayer />\n <ResizablePanes\n className={classnames(styles.resizablePanesWrapper, {[styles.locked]: isLoading})}\n orientation={'vertical'}\n size={paneSize}\n minSize={MIN_PANE1_SIZE}\n maxSize={MAX_PANE1_SIZE}\n allowResize={true}\n onChange={handlePaneSizeChange}\n >\n <div className={styles.pane}>\n <RelationshipBand\n readOnly={readOnly}\n entity={entity}\n connection={connection}\n onNavigateBack={onClose}\n onDelete={onDeleteRelation}\n onChangeActivenessDate={onChangeActivenessDate}\n />\n <ExpandedAttributesProvider attributeUris={newlyCreatedAttributes}>\n <AttributesTable\n readOnly={readOnly}\n entity={modifiedEntity}\n crosswalksMap={crosswalksMap}\n isLoading={isLoading}\n onPin={onPinAttribute}\n onIgnore={onIgnoreAttribute}\n onEdit={onEditAttribute}\n onAdd={onAddAttribute}\n onDelete={onDeleteAttribute}\n emptyTempAttributeUris={emptyTempAttributeUris}\n selectedAttributeTypes={selectedAttrTypes}\n onSelectAttributeTypes={setSelectedAttrTypes}\n visibleColumns={visibleColumns}\n onChangeVisibleColumns={onChangeVisibleColumns}\n />\n </ExpandedAttributesProvider>\n </div>\n <LegendPanel\n readOnly={readOnly}\n className={styles.pane}\n relation={connection.relation.object}\n selectedAttributeTypes={selectedAttrTypes}\n onAddCrosswalk={addCrosswalk}\n onDeleteCrosswalk={deleteCrosswalk}\n onEditCrosswalk={editCrosswalk}\n />\n </ResizablePanes>\n </DndProvider>\n </CrosswalksDisplayProvider>\n </BasicView>\n );\n};\n\nexport default memo(RelationshipDetails);\n","import {useCallback, useMemo, useState, useRef} from 'react';\nimport {CrosswalkBase, debounce, eqCrosswalks} from '@reltio/mdm-sdk';\nimport {any, concat} from 'ramda';\n\nexport const useCrosswalksDisplay = () => {\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 cacheHighlightedCrosswalks([crosswalk]);\n } else {\n cacheHighlightedCrosswalks([]);\n }\n },\n [cacheHighlightedCrosswalks]\n );\n\n const [focusedCrosswalks, setFocusedCrosswalks] = useState<CrosswalkBase[]>([]);\n const calculateFocusedCrosswalks = (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 const toggleCrosswalkFocus = useCallback((crosswalk: CrosswalkBase) => {\n if (!crosswalk) return;\n setFocusedCrosswalks((prevValue) => calculateFocusedCrosswalks([crosswalk], prevValue));\n }, []);\n\n return {\n highlightedCrosswalks: useMemo(\n () => [...highlightedCrosswalks, ...focusedCrosswalks],\n [highlightedCrosswalks, focusedCrosswalks]\n ),\n focusedCrosswalks,\n toggleCrosswalkFocus,\n setCrosswalkHighlighted\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n relationshipsView: {\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 flexDirection: 'column'\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 pane: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflow: 'hidden',\n position: 'relative'\n }\n});\n","import React, {useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react';\nimport {Dispatch} from 'redux';\nimport {connect, useSelector} from 'react-redux';\nimport {\n always,\n andThen,\n both,\n either,\n equals,\n filter,\n identity,\n map,\n otherwise,\n pipe,\n prop,\n propEq,\n update,\n when,\n not\n} from 'ramda';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n ApiError,\n ApiErrorCode,\n checkMetadataPermission,\n CollaborationObjectTypes,\n Connection,\n Entity,\n getEntitiesMapForConnections,\n getInheritancePath,\n getRelationshipsObjectIdsForCollaboration,\n isDataTenantEntity,\n Metadata,\n MetadataPermissions,\n Mode,\n RelationshipsPerspectiveConfig,\n removeRelation,\n TRelationType,\n ActivityFilter\n} from '@reltio/mdm-sdk';\nimport {\n BasicTablePagination,\n BasicView,\n CollaborationContextProvider,\n EntitiesMapContext,\n FeaturesContext,\n LinearLoadIndicator,\n ScreenProfileBand,\n useCollaboration,\n useDidUpdateEffect,\n useRelationsLoader,\n useSnackbar\n} from '@reltio/components';\nimport useSavedState from '../../hooks/useSavedState';\nimport {useRelationshipsTable} from '../../hooks/useRelationshipsTable';\nimport {RelationshipsSavedState} from '../../types';\nimport {DEFAULT_COLUMNS, getColumnsData, ROWS_PER_PAGE_OPTIONS} from './helpers/tableHelpers';\nimport {buildRelationshipsFilter} from './helpers/filtersHelpers';\nimport RelationshipsTableHeader from '../RelationshipsTableHeader/RelationshipsTableHeader';\nimport RelationshipsTable from '../RelationshipsTable/RelationshipsTable';\nimport RelationshipDetails from '../RelationshipDetails/RelationshipDetails';\nimport {showErrorMessage} from '../../services/errors';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationshipsPerspectiveConfig;\n entity: Entity;\n metadata: Metadata;\n connections: Connection[];\n total: number;\n saveState: (state: RelationshipsSavedState) => void;\n getSavedState: () => Promise<RelationshipsSavedState>;\n dispatch: Dispatch;\n};\n\nconst RelationshipsView = ({\n config,\n entity,\n metadata,\n connections,\n total,\n saveState,\n getSavedState,\n dispatch\n}: Props) => {\n const styles = useStyles();\n const tableRef = useRef();\n\n const isDTEntity = isDataTenantEntity(entity);\n\n const [searchByOv, setSearchByOv] = useState(false);\n const [showInactive, setShowInactive] = useState(false);\n\n const {type: entityTypeUri} = entity || {};\n const [\n {\n visibleColumns,\n filters,\n page,\n rowsPerPage,\n sorting,\n currentRelationType,\n stateToSave,\n entityTypeOfAppliedSavedState\n },\n {\n changeColumns,\n toggleFilters,\n changeFilter,\n changePage,\n changeRowsPerPage,\n toggleSort,\n changeRelationType,\n saveCurrentState,\n applySavedState\n }\n ] = useRelationshipsTable({\n defaultColumns: DEFAULT_COLUMNS,\n defaultRowsPerPage: ROWS_PER_PAGE_OPTIONS[0],\n defaultSorting: {\n field: DEFAULT_COLUMNS[0],\n order: 'asc'\n }\n });\n\n const isSavedStateApplied = entityTypeOfAppliedSavedState === entityTypeUri;\n\n const {\n isLoading: isSavedStateLoading,\n relationsTableSavedState,\n attributesTableSavedState,\n updateRelationsTableSavedState,\n updateAttributesTableSavedState\n } = useSavedState({\n getSavedState,\n saveState,\n entityTypeUri\n });\n\n const [attributesTableVisibleColumns, setAttributesTableVisibleColumns] = useState<string[]>();\n\n const featuresContext = useContext(FeaturesContext);\n const showDescription = useSelector(mdmModule.selectors.getShowAttributeDescription);\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\n\n useEffect(() => {\n if (!isSavedStateLoading) {\n applySavedState({savedState: relationsTableSavedState, entityTypeUri});\n }\n }, [isSavedStateLoading, entityTypeUri]); // eslint-disable-line\n\n useEffect(() => {\n if (!isSavedStateLoading) {\n setAttributesTableVisibleColumns(attributesTableSavedState?.visibleColumns);\n }\n }, [isSavedStateLoading]); // eslint-disable-line\n\n useDidUpdateEffect(() => {\n if (isSavedStateApplied) {\n updateRelationsTableSavedState(stateToSave);\n }\n }, [stateToSave]);\n\n const resetPage = () => {\n changePage(0);\n };\n useDidUpdateEffect(resetPage, [entity]);\n\n const [detailedConnectionIndex, setDetailedConnectionIndex] = useState<number>();\n const hideConnectionDetails = useCallback(() => {\n setDetailedConnectionIndex(null);\n }, []);\n\n const relationTypes: TRelationType[] = useMemo(() => {\n const inheritancePath = getInheritancePath(metadata, entityTypeUri);\n const isRelatedToEntityType = ({startObject, endObject}) =>\n inheritancePath.some(either(equals(startObject.objectTypeURI), equals(endObject.objectTypeURI)));\n return metadata.relationTypes.filter(\n both(checkMetadataPermission(MetadataPermissions.READ), isRelatedToEntityType)\n );\n }, [metadata, entityTypeUri]);\n\n const columnsData = useMemo(\n () => getColumnsData(relationTypes, currentRelationType),\n [relationTypes, currentRelationType]\n );\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => columnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, columnsData]\n );\n\n const relationsConfig = useMemo(() => {\n const relations = pipe(\n when(always(currentRelationType), filter(propEq('uri', currentRelationType))),\n map(prop('uri'))\n )(relationTypes);\n return {\n id: config.id,\n content: {\n inRelations: relations,\n outRelations: relations\n }\n };\n }, [config.id, currentRelationType, relationTypes]);\n\n const relationFilter = useMemo(\n () => buildRelationshipsFilter(filters, visibleColumnsData),\n [filters, visibleColumnsData]\n );\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar({\n showDismiss: true\n });\n const {isLoading: isRelationsLoading, reload: reloadRelations} = useRelationsLoader({\n page,\n rowsPerPage,\n config: relationsConfig,\n entity: isSavedStateApplied ? entity : null,\n filter: relationFilter,\n mode: Mode.Viewing,\n sorting,\n searchByOv,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n showSnackbarMessage\n });\n\n const isLoading = !isSavedStateApplied || isRelationsLoading;\n\n const onSort = useCallback(pipe(toggleSort, saveCurrentState), [toggleSort, saveCurrentState]);\n const onFilter = useCallback(pipe(changeFilter, saveCurrentState), [changeFilter, saveCurrentState]);\n const onToggleFilters = useCallback(pipe(toggleFilters, saveCurrentState), [toggleFilters, saveCurrentState]);\n const onChangeColumns = useCallback(pipe(changeColumns, saveCurrentState), [changeColumns, saveCurrentState]);\n const onRelationTypeChange = useCallback(pipe(changeRelationType, saveCurrentState), [\n changeRelationType,\n saveCurrentState\n ]);\n const onChangeDetailedColumns = useCallback(\n (visibleColumns: string[]) => {\n setAttributesTableVisibleColumns(visibleColumns);\n updateAttributesTableSavedState({visibleColumns});\n },\n [updateAttributesTableSavedState]\n );\n\n const detailedConnection = connections?.[detailedConnectionIndex];\n const onChangeDetailedConnection = useCallback(\n (newConnection: Connection) => {\n dispatch(\n profile.relations.actions.relationsLoaded({\n id: config.id,\n connections: update(detailedConnectionIndex, newConnection, connections),\n total\n })\n );\n },\n [detailedConnection]\n );\n const [objectIds, objectTypes] = useMemo(() => {\n return [getRelationshipsObjectIdsForCollaboration(connections), [CollaborationObjectTypes.RELATION]];\n }, [connections]);\n\n const collaboration = useCollaboration({objectIds, objectTypes, enabled: !isDTEntity});\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const handleError = useCallback(\n (error: ApiError) => {\n showErrorMessage(error);\n if (error.errorCode === ApiErrorCode.OBJECT_NOT_FOUND) {\n reloadRelations();\n }\n },\n [reloadRelations]\n );\n\n const deleteRelation = useCallback(\n (relationUri: string) => {\n pipe(removeRelation, andThen(reloadRelations), otherwise(handleError))(relationUri);\n },\n [reloadRelations, handleError]\n );\n\n const deleteRelationAndCloseDetails = useCallback(() => {\n pipe(\n removeRelation,\n andThen(pipe(hideConnectionDetails, reloadRelations)),\n otherwise((error: ApiError) => {\n if (error.errorCode === ApiErrorCode.OBJECT_NOT_FOUND) {\n hideConnectionDetails();\n }\n handleError(error);\n })\n )(detailedConnection.relation.relationUri);\n }, [detailedConnection, reloadRelations, hideConnectionDetails, handleError]);\n\n const onCloseConnectionDetails = useCallback(\n (error?: ApiError) => {\n if (error) handleError(error);\n hideConnectionDetails();\n },\n [handleError, hideConnectionDetails]\n );\n\n const onToggleSearchByOv = useCallback(() => {\n setSearchByOv(not);\n }, []);\n\n const onToggleShowInactive = useCallback(() => {\n setShowInactive(not);\n }, []);\n\n return (\n <FeaturesContext.Provider value={features}>\n <CollaborationContextProvider collaboration={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={styles.relationshipsView}>\n <ScreenProfileBand entity={entity} />\n <RelationshipsTableHeader\n total={total}\n filteringEnabled={!!filters}\n onToggleFilters={onToggleFilters}\n columnsData={columnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n relationTypes={relationTypes}\n currentRelationType={currentRelationType}\n onRelationTypeChange={onRelationTypeChange}\n searchByOv={searchByOv}\n onToggleSearchByOv={onToggleSearchByOv}\n showInactive={showInactive}\n onToggleShowInactive={onToggleShowInactive}\n />\n <div className={styles.pane}>\n {isLoading && <LinearLoadIndicator />}\n <RelationshipsTable\n readOnly={isDTEntity}\n metadata={metadata}\n connections={connections}\n columnsData={visibleColumnsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n onRowClick={setDetailedConnectionIndex}\n tableRef={tableRef}\n onDelete={deleteRelation}\n />\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n basicTableRef={tableRef}\n />\n </div>\n {detailedConnection && (\n <RelationshipDetails\n readOnly={isDTEntity}\n entity={entity}\n visibleColumns={attributesTableVisibleColumns}\n onChangeVisibleColumns={onChangeDetailedColumns}\n connection={detailedConnection}\n onClose={onCloseConnectionDetails}\n onDeleteConnection={deleteRelationAndCloseDetails}\n onChangeConnection={onChangeDetailedConnection}\n />\n )}\n </BasicView>\n </EntitiesMapContext.Provider>\n </CollaborationContextProvider>\n <SnackbarRenderer />\n </FeaturesContext.Provider>\n );\n};\n\nconst mapStateToProps = (state, {config: {id}}) => {\n return {\n entity: mdmModule.selectors.getEntity(state),\n metadata: mdmModule.selectors.getMetadata(state),\n connections: mdmModule.selectors.getConnectionsByViewId(state, id),\n total: mdmModule.selectors.getTotalByViewId(state, id)\n };\n};\n\nexport default connect(mapStateToProps)(RelationshipsView);\n","import {buildColumnsFilter, ColumnFilter} from '@reltio/components';\nimport {FilterBuilder} from '@reltio/mdm-sdk';\nimport {RelationshipsTableColumnData} from '../../../types';\n\nexport const buildRelationshipsFilter = (\n filters: Record<string, ColumnFilter>,\n columnsData: RelationshipsTableColumnData[]\n) => {\n const filtersClause = buildColumnsFilter(columnsData, filters);\n\n return new FilterBuilder().addClause(filtersClause).build();\n};\n","import React, {useCallback} from 'react';\n\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {RelationshipsSavedState} from '../../types';\nimport RelationshipsView from './RelationshipsView';\nimport {promisifyCallback, RelationshipsPerspectiveConfig} from '@reltio/mdm-sdk';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'relationshipsPerspective',\n disableGlobal: true,\n seed: 'relP'\n});\n\ntype Props = {\n config: RelationshipsPerspectiveConfig;\n onResize?: (width: number, height: number) => void;\n saveState: (state: RelationshipsSavedState) => void;\n getSavedState: (clb: (state: RelationshipsSavedState) => void) => void;\n};\n\nconst RelationshipsPerspective = ({config, onResize, saveState, getSavedState}: Props) => {\n const getSavedStatePromisified: () => Promise<RelationshipsSavedState> = useCallback(\n promisifyCallback(getSavedState),\n [getSavedState]\n );\n\n return (\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize?.(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <RelationshipsView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n )}\n <ErrorPopup />\n </LocalizationProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n );\n};\n\nexport default RelationshipsPerspective;\n","import {RelationshipsView} from '@reltio/relationships';\n\nexport default RelationshipsView;\n"],"names":["props","width","height","viewBox","xmlns","d","fill","fillRule","stroke","strokeWidth","useStyles","makeStyles","theme","color","palette","primary","main","closeIcon","position","right","bottom","transform","button","padding","FilterButton","enabled","onClick","styles","Tooltip","title","i18n","IconButton","classes","root","size","Filter","className","Close","propTypes","PropTypes","pagination","display","alignItems","justifyContent","flexShrink","borderTop","boxShadow","boxSizing","overflowY","containerType","caption","fontSize","lineHeight","displayedRows","selectRoot","marginLeft","marginRight","select","textAlign","actions","BasicTablePagination","count","rowsPerPageOptions","page","onChangePage","rowsPerPage","onChangeRowsPerPage","basicTableRef","labelRowsPerPage","resetScrollbarPosition","useCallback","pathOr","identity","handleChangePage","value","handleChangeRowsPerPage","TablePagination","classnames","selectLabel","input","backIconButtonProps","nextIconButtonProps","component","labelDisplayedRows","from","to","fromRow","toRow","countRows","onPageChange","pipe","nthArg","onRowsPerPageChange","getValue","displayName","memo","CHANGE_COLUMNS","TOGGLE_FILTERS","CHANGE_FILTER","TOGGLE_SORT","CHANGE_PAGE","CHANGE_ROWS_PER_PAGE","changeColumns","createStandardAction","toggleFilters","changeFilter","toggleSort","changePage","changeRowsPerPage","changeVisibleColumns","state","nextVisibleColumns","removedColumns","difference","visibleColumns","isRemovedColumn","columnId","includes","evolve","always","sorting","when","field","nextSortField","order","filters","keys","reduce","acc","dissoc","reducer","action","type","columnIds","payload","enableFilters","filter","assoc","prevSortField","path","prevSortOrder","toggleSortOrder","basicViewPaper","flexDirection","basicView","BasicView","forwardRef","ref","children","otherProps","Paper","paper","minHeight","fontWeight","letterSpacing","content","contentText","marginBottom","actionButtons","paddingTop","discardButton","open","onCancel","cancelCaption","onDiscard","discardCaption","onSave","saveCaption","disabledSave","Dialog","onClose","paperScrollPaper","DialogTitle","DialogContent","DialogContentText","DialogActions","disableSpacing","Button","disabled","autoFocus","menuItem","menuText","text","checkbox","SettingsMenuItemRenderer","item","onMenuClose","id","selected","MenuItem","e","Checkbox","checked","Typography","items","menuId","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","icon","SettingsIcon","tooltipTitle","menuItems","MenuItemRenderer","VerticalDivider","margin","style","borderLeft","useActions","dispatch","useMemo","Object","entries","actionName","actionCreator","buildSuggestedIds","wrapInArrayIfNeeded","length","times","n","isValidRequestConfig","config","entry","entityTypes","nextEntry","useRelationsLoader","entity","relationActivityFilter","mode","searchByOv","showSnackbarMessage","isLoading","setIsLoading","useState","relationsLoaded","useMdmAction","tenant","useMdmTenant","metadata","useMdmMetadata","dtssPath","useMdmDtssPath","activityFilter","globalFilter","useMdmGlobalSearchRequestOptions","lastLoadedTime","useMdmProfileLastLoadedTime","safePromise","useSafePromise","processContent","getUri","isObject","prop","filterRelation","isAvailableRelationTypeUri","filterFn","isAvailableEntityTypeUri","inRelations","outRelations","suggested","options","modeRef","useRef","current","loadRelations","uri","requestConfig","sortBy","returnDates","returnObjects","activeness","relation","ActivityFilter","max","offset","addGlobalFilterToQuery","undefined","configs","concat","ifElse","map","i","emptyResponsePromise","Promise","resolve","total","request","cond","isTempUri","console","warn","isDataTenantEntity","getRelationsForDataTenantEntity","entityUri","customerTenant","dataTenant","T","getRelationsForEntity","then","result","Array","isArray","Error","JSON","stringify","connections","notAllDataFetched","catch","finally","isRequestSentRef","useEffect","prevMode","usePrevious","Mode","reload","DEFAULT_SAVED_STATE","relationsTable","attributesTable","RELATION_TYPE_COLUMN_ID","ATTRIBUTES_COLUMN_ID","ANALYTICS_ATTRIBUTES_COLUMN_ID","DEFAULT_COLUMNS_DATA","label","dataTypeDefinition","DataTypes","hideable","filterable","initialWidth","autoResize","sortable","maxAttrsToShow","DEFAULT_COLUMNS","pluck","ALL_TYPES_COLUMNS","ROWS_PER_PAGE_OPTIONS","getColumnIdFromAttrUri","attributeUriToSearchUri","getColumnsDataFromRelationAttributes","attr","description","getAttrDataTypeDefinition","uniqBy","CHANGE_RELATION_TYPE","APPLY_SAVED_STATE","SAVE_CURRENT_STATE","basicTableViewState","changeRelationType","applySavedState","saveCurrentState","resetPageNumber","getDefaultVisibleColumnsForCurrentRelationType","currentRelationType","without","intersection","getSavedVisibleColumnsForCurrentRelationType","changeVisibleColumnsForCurrentRelationType","either","getFiltersFromSavedState","propOr","unless","isNil","validateFilterValue","saveVisibleColumnsForCurrentRelationType","visibleColumnsForRelationTypes","getStateToSave","pick","paddingLeft","selectMenu","textField","maxWidth","onChange","relationTypes","DropDownEditor","displayEmpty","disableUnderline","TextFieldProps","MenuProps","list","header","background","paddingRight","secondary","relationTypeSelector","overflow","filteringEnabled","onToggleFilters","columnsData","selectedColumns","onRelationTypeChange","onChangeColumns","onToggleSearchByOv","showInactive","onToggleShowInactive","settingItems","BasicViewHeader","variant","Spacer","SettingsMenu","ColumnsSettings","getIsInactiveRelation","connection","isActiveObject","headCell","rowCell","overflowWrap","inactiveRowCell","opacity","defaultWrapper","paddingBottom","entityCell","entityAvatar","inactiveEntityAvatar","backgroundColor","border","borderRadius","entityLabel","textDecoration","attributesWrapper","commentsContainer","headLabelWrapper","withFilterAtBottom","headCellData","cellLabel","DescriptionIcon","DefaultHeadCellRenderer","entityType","isInactiveRelation","currentEntityUri","useSelector","mdmModule","COMMENTS_CONTAINER_VISIBILITY_AREA","EntityTypeIcon","EntityUriLink","getEntityUriForLink","getLabel","stopPropagation","CommentsContainer","relationUri","relatedObjectUris","createRelatedObjectUris","CollaborationObjectTypes","objectType","allowOnlyOneComment","columnData","attributes","analyticsAttributes","attributeTypes","attrTypes","drawLines","DataTypeValue","getAttrPathFromColumnId","split","slice","Infinity","getNestedPathByColumnId","startsWith","attrPath","getCellValueRenderer","EntityProfileRenderer","AttributesRenderer","DefaultCellValueRenderer","getBasicTableColumnsData","resizable","headCellRenderer","HeadCellRenderer","nestedPath","rowCellValueRenderer","calculateAttributesCellHeight","cell","attributesCount","values","getStaticRowCellHeight","pathEq","defaultGetRowCellHeight","CellValueRenderer","index","key","buttons","MenuItemWithTooltip","withTooltip","noop","tooltip","showForDisabled","disableDelete","onMenuOpen","onDelete","hasDeletePermission","getRelationType","checkMetadataPermission","MetadataPermissions","canDelete","pendingDeletion","setPendingDeletion","hideDeleteConfirmation","Delete","handleMenuClose","SmallIconButton","MoreVertIcon","ConfirmationDialog","substring","tableContainer","flex","zIndex","hoveredRowRightContentWrapper","pointerEvents","menuButtonContainer","top","tooltipAnchor","onSort","onFilter","onRowClick","tableRef","readOnly","tableRowsData","getEntityType","relationType","relationLabel","startDate","endDate","object","getOvAttributeValuesByPath","getRelationAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","getDynamicRowCellHeight","changeRowCellHeight","useDynamicRowCellHeight","getRowCellHeight","hoverRowIndex","setHoverRowIndex","renderRowCell","rowValue","rawValue","RowCellAutoSizer","onChangeHeight","isActionsMenuOpen","setIsActionsMenuOpen","handleActionsMenuOpen","handleActionsMenuClose","onRowHover","rowIndex","prevHoverRowIndex","hoveredRowRightContent","BasicTable","fixFirstColumn","rowsData","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","hoverStateEnabled","tableRow","marginTop","selectedAttributeTypes","onDeleteCrosswalk","onEditCrosswalk","groupCrosswalksByTypesAndSources","buildTableRowsData","expandedSources","setExpandedSources","handleDelete","crosswalkId","handleEdit","event","source","crosswalksByTypes","SourceCrosswalksRow","expanded","disableEditCrosswalk","checkCanEditCrosswalk","disableDeleteCrosswalk","checkCanDeleteCrosswalk","onEdit","onToggleExpanded","append","borderBottom","hint","alignSelf","hintText","buttonLabel","editor","overflowX","ButtonWithTooltip","onAddCrosswalk","openEditor","setOpenEditor","canAdd","checkCanCreateCrosswalk","Add","Info","CrosswalkEditor","onAdd","crosswalk","entityInfo","minWidth","entityLabelContainer","infoIcon","profileBand","entityTypeBadge","ExpandedValueTooltip","noWrap","LightArrowTooltip","ProfileBand","placement","EntityTypeBadge","direction","align","fillOpacity","points","visibility","editButton","showEditor","setShowEditor","closeEditor","editedValue","setEditedValue","applyChangesAndClose","formatDate","EditIcon","Popover","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","onKeyUp","onBackdropClick","DateEditor","Date","valueOf","slotProps","hiddenLabel","InputProps","fullWidth","relationBand","inactiveRelationBand","toolbar","gap","mainInfo","detailsInfo","detailTitle","directionalLabel","textOverflow","whiteSpace","relationDate","onNavigateBack","onChangeActivenessDate","ArrowBackIcon","showErrorMessage","error","ErrorPopup","message","getRequestErrorMessage","detailsView","left","locked","resizablePanesWrapper","flexGrow","pane","onDeleteConnection","onChangeConnection","onChangeVisibleColumns","displayProps","highlightedCrosswalks","setHighlightedCrosswalks","highlightedCrosswalksCache","applyHighlightedCrosswalks","debounce","cacheHighlightedCrosswalks","arr","setCrosswalkHighlighted","highlighted","focusedCrosswalks","setFocusedCrosswalks","toggleCrosswalkFocus","prevValue","calculateFocusedCrosswalks","prev","next","prevCrosswalk","any","eqCrosswalks","nextCrosswalk","useCrosswalksDisplay","paneSize","setPaneSize","handlePaneSizeChange","percentageSize","selectedAttrTypes","setSelectedAttrTypes","onLoad","onLoaded","onDeleteRelation","onError","reloadRelation","errorCode","ApiErrorCode","getRelation","newRelation","assocPath","modifiedEntity","crosswalksMap","newlyCreatedAttributes","onPinAttribute","onIgnoreAttribute","onAddAttribute","onEditAttribute","onDeleteAttribute","emptyTempAttributeUris","useModifiedEntity","onModify","addCrosswalk","deleteCrosswalk","editCrosswalk","useCrosswalkActions","onSuccess","attributeName","updateActivenessAttribute","deleteActivenessAttribute","dissocPath","DndProvider","backend","HTML5Backend","CrosswalkDragLayer","ResizablePanes","orientation","minSize","maxSize","allowResize","attributeUris","AttributesTable","onPin","onIgnore","onSelectAttributeTypes","relationshipsView","fontFamily","connect","saveState","getSavedState","isDTEntity","setSearchByOv","setShowInactive","entityTypeUri","stateToSave","entityTypeOfAppliedSavedState","defaultColumns","defaultSorting","defaultRowsPerPage","initState","useReducer","nextRelationType","savedState","useRelationshipsTable","isSavedStateApplied","isSavedStateLoading","relationsTableSavedState","attributesTableSavedState","updateRelationsTableSavedState","updateAttributesTableSavedState","setSavedState","changedRelationsState","setRelationsChangedState","useDidUpdateEffect","_","changedState","useSavedState","attributesTableVisibleColumns","setAttributesTableVisibleColumns","featuresContext","useContext","FeaturesContext","showDescription","features","detailedConnectionIndex","setDetailedConnectionIndex","hideConnectionDetails","inheritancePath","getInheritancePath","both","startObject","endObject","some","equals","objectTypeURI","filteredColumnsData","find","converge","getReadableAttributesList","getReadableAnalyticsAttributesList","reject","updateColumnData","updateFn","getRelationColumnDataType","adjust","findIndex","propEq","updateRelationTypeColumn","getColumnsData","visibleColumnsData","relationsConfig","relations","relationFilter","filtersClause","buildColumnsFilter","FilterBuilder","addClause","build","buildRelationshipsFilter","SnackbarRenderer","useSnackbar","showDismiss","isRelationsLoading","reloadRelations","onChangeDetailedColumns","detailedConnection","onChangeDetailedConnection","newConnection","profile","update","objectIds","objectTypes","getRelationshipsObjectIdsForCollaboration","collaboration","useCollaboration","entitiesMap","getEntitiesMapForConnections","handleError","deleteRelation","removeRelation","andThen","otherwise","deleteRelationAndCloseDetails","onCloseConnectionDetails","not","CollaborationContext","EntitiesMapContext","ScreenProfileBand","LinearLoadIndicator","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","seed","onResize","getSavedStatePromisified","promisifyCallback","ViewIdContext","StylesProvider","LocalizationProvider","dateAdapter","AdapterMoment","handleHeight","Math","floor"],"sourceRoot":""}
|