@reltio/remotes 1.4.1519 → 1.4.1521
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/1032.js +1 -1
- package/2125.js +1 -1
- package/3118.js +1 -1
- package/3118.js.map +1 -1
- package/3270.js +1 -1
- package/3270.js.map +1 -1
- package/3294.js +1 -1
- package/3396.js +1 -1
- package/3469.js +1 -1
- package/4183.js +2 -0
- package/4183.js.map +1 -0
- package/4469.js +1 -1
- package/5285.js +1 -1
- package/5285.js.map +1 -1
- package/5706.js +1 -1
- package/5706.js.map +1 -1
- package/5756.js +1 -1
- package/6880.js +1 -1
- package/6880.js.map +1 -1
- package/9113.js +1 -1
- package/9258.js +1 -1
- package/9258.js.map +1 -1
- package/929.js +1 -1
- package/9481.js +1 -1
- package/9481.js.map +1 -1
- package/9561.js +1 -1
- package/9973.js +1 -1
- package/9973.js.map +1 -1
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
- package/remoteEntry.js.map +1 -1
- package/1777.js +0 -2
- package/1777.js.map +0 -1
package/9481.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"9481.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/ActionButton/styles.ts","webpack://@reltio/remotes/../components/src/components/ActionButton/ActionButton.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/BasicTablePagination.js","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/ConfirmationDialog.tsx","webpack://@reltio/remotes/../components/src/components/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.js","webpack://@reltio/remotes/../components/src/components/EntityTypeBadge/styles.ts","webpack://@reltio/remotes/../components/src/components/EntityTypeBadge/EntityTypeBadge.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBand/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileBand/ProfileBand.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/ProfileBandNavigationWidget.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/searchProviders/MainSearchProvider.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/searchProviders/GraphSearchProvider.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/helpers/index.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/hooks/useSearchNavigation.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/searchProviders/SearchProviderFactory.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/ProfileBandNavigation.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/hooks/useSearchNavigationVisibility.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardContent/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardContent/ProfileCardContent.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardPlaceholder/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardPlaceholder/ProfileCardPlaceholder.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCard.tsx","webpack://@reltio/remotes/../components/src/components/SideIconPanel/styles.ts","webpack://@reltio/remotes/../components/src/components/SideIconPanel/SideButtonsPanel.tsx","webpack://@reltio/remotes/../components/src/components/SidePanel/styles.ts","webpack://@reltio/remotes/../components/src/components/SidePanel/SidePanel.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/RelationTypeSelector/components/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/RelationTypeSelector/components/RelationOption.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/RelationTypeSelector/RelationTypeSelector.js","webpack://@reltio/remotes/../components/src/components/history/ProfileBandHistory/styles.ts","webpack://@reltio/remotes/../components/src/components/history/ProfileBandHistory/ProfileBandHistory.tsx","webpack://@reltio/remotes/../components/src/contexts/ActionsHookContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/LabelsContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useCollaboration.ts","webpack://@reltio/remotes/../components/src/hooks/useRelationTypeSelector.js"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n button: {\n padding: '9px 16px 9px 12px',\n '& svg g path, & svg path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n }\n },\n iconButton: {\n '& svg g path, & svg path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n }\n },\n startIcon: {\n marginLeft: 0,\n marginRight: '8px',\n width: '18px',\n height: '18px',\n alignItems: 'center'\n },\n label: {\n whiteSpace: 'nowrap',\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: 0\n },\n overflowStyle: {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n },\n menuIcon: {\n marginRight: '12px'\n },\n menuItem: {\n minHeight: '28px',\n padding: '2px 16px 2px 12px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n }\n}));\n","import React, {forwardRef} from 'react';\nimport classnames from 'classnames';\nimport {Button as Button} from '@material-ui/core';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\nimport {noop} from '../../core';\nimport ExpandedValueTooltip from '../ExpandedValueTooltip/ExpandedValueTooltip';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\n\nexport enum ActionButtonMode {\n iconButton = 'iconButton',\n button = 'button',\n menuItem = 'menuItem'\n}\n\nexport type Props = {\n className?: string;\n disabled?: boolean;\n icon: React.ElementType;\n label: string;\n mode: ActionButtonMode;\n onClick: () => void;\n onMenuClose?: () => void;\n};\n\nexport const ActionButton = forwardRef<HTMLLIElement, Props>(\n (\n {\n className,\n mode = ActionButtonMode.iconButton,\n label,\n disabled,\n icon: Icon,\n onClick = noop,\n onMenuClose = noop,\n ...otherProps\n }: Props,\n ref: React.Ref<HTMLLIElement>\n ) => {\n const styles = useStyles();\n\n const getButtonView = () => {\n switch (mode) {\n case 'iconButton': {\n return (\n <SmallIconButtonWithTooltip\n disabled={disabled}\n className={classnames(styles.iconButton, className)}\n size=\"S\"\n tooltipTitle={label}\n onClick={onClick}\n icon={Icon}\n showForDisabled\n {...otherProps}\n />\n );\n }\n case 'button': {\n return (\n <Button\n className={classnames(styles.button, className)}\n disabled={disabled}\n startIcon={<Icon />}\n onClick={onClick}\n color=\"primary\"\n classes={{startIcon: styles.startIcon, label: styles.label}}\n {...otherProps}\n >\n <ExpandedValueTooltip value={label}>\n <div className={styles.overflowStyle}>{label}</div>\n </ExpandedValueTooltip>\n </Button>\n );\n }\n case 'menuItem': {\n const handleClick = () => {\n onMenuClose();\n onClick();\n };\n return (\n <MenuItem\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n {...otherProps}\n >\n <>\n <Icon className={styles.menuIcon} />\n <Typography classes={{root: styles.menuText}}>{label}</Typography>\n </>\n </MenuItem>\n );\n }\n }\n };\n\n return getButtonView();\n }\n);\n\nActionButton.displayName = 'ActionButton';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n pagination: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n height: '56px',\n borderTop: '1px solid rgba(0,0,0,0.12)',\n boxShadow: 'none'\n },\n caption: {\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'\n }\n});\n","import PropTypes from 'prop-types';\nimport React, {useCallback} from 'react';\nimport classnames from 'classnames';\nimport {TablePagination as TablePagination} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {getValue} from '../../../core/utils';\nimport {nthArg, pipe, pathOr, identity} from 'ramda';\nimport {useStyles} from './styles';\n\nconst BasicTablePagination = ({\n classes = {},\n count,\n rowsPerPageOptions,\n page,\n onChangePage,\n rowsPerPage,\n onChangeRowsPerPage,\n basicTableRef,\n labelRowsPerPage\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 const styles = useStyles();\n const resetScrollbarPosition = useCallback(() => {\n pathOr(identity, ['current', 'resetScrollbarPosition'], basicTableRef)();\n }, [basicTableRef]);\n const handleChangePage = useCallback(\n (value) => {\n onChangePage(value);\n resetScrollbarPosition();\n },\n [onChangePage, resetScrollbarPosition]\n );\n const handleChangeRowsPerPage = useCallback(\n (value) => {\n onChangePage(0);\n onChangeRowsPerPage(value);\n resetScrollbarPosition();\n },\n [onChangePage, onChangeRowsPerPage, resetScrollbarPosition]\n );\n return (\n <TablePagination\n classes={{\n ...classes,\n root: classnames(styles.pagination, classes.root),\n select: classnames(styles.select, classes.select),\n caption: styles.caption,\n selectRoot: styles.selectRoot,\n actions: styles.actions\n }}\n component=\"div\"\n labelRowsPerPage={labelRowsPerPage || i18n.text('Rows per page:')}\n labelDisplayedRows={labelDisplayedRows}\n count={count}\n rowsPerPageOptions={rowsPerPageOptions}\n page={page}\n onChangePage={pipe(nthArg(1), handleChangePage)}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={pipe(getValue, handleChangeRowsPerPage)}\n />\n );\n};\n\nBasicTablePagination.propTypes = {\n classes: PropTypes.object,\n rowsPerPageOptions: PropTypes.arrayOf(PropTypes.number),\n count: PropTypes.number,\n page: PropTypes.number,\n onChangePage: PropTypes.func,\n rowsPerPage: PropTypes.number,\n onChangeRowsPerPage: PropTypes.func,\n basicTableRef: PropTypes.shape({current: PropTypes.object}),\n labelRowsPerPage: PropTypes.string\n};\n\nexport default React.memo(BasicTablePagination);\n","import {makeStyles} from '@material-ui/core/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 as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogContentText as DialogContentText} from '@material-ui/core';\nimport {DialogTitle as DialogTitle} from '@material-ui/core';\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 React, {useMemo, useCallback, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {ConnectionRelationType, RelationTypeType} from '@reltio/mdm-sdk';\nimport {identity, pipe} from 'ramda';\nimport {useRelationTypeSelector} from '../../hooks';\nimport RelationTypeSelector from '../attributes/editMode/RelationTypeSelector/RelationTypeSelector';\n\nconst ConnectionRelationTypeSelector = ({\n relation = {},\n inRelationTypes = [],\n outRelationTypes = [],\n onChange = identity,\n applyFirstByDefault = false,\n reversedContextLabels = false,\n ...otherProps\n}) => {\n const {getRelationTypesOptions, fromEditorValue, toEditorValue} = useRelationTypeSelector({reversedContextLabels});\n\n const relationsTypesOptions = useMemo(() => getRelationTypesOptions(inRelationTypes, outRelationTypes), [\n getRelationTypesOptions,\n inRelationTypes,\n outRelationTypes\n ]);\n\n const handleChange = useCallback(pipe(fromEditorValue(inRelationTypes, outRelationTypes), onChange), [\n fromEditorValue,\n inRelationTypes,\n outRelationTypes,\n onChange\n ]);\n\n const hasValue = !!relation.relationType;\n\n useEffect(() => {\n if (applyFirstByDefault && relationsTypesOptions.length && !hasValue) {\n handleChange(relationsTypesOptions[0]);\n }\n }, [relationsTypesOptions, applyFirstByDefault, handleChange, hasValue]);\n\n return (\n <RelationTypeSelector\n value={toEditorValue(relation, relationsTypesOptions)}\n options={relationsTypesOptions}\n onChange={handleChange}\n {...otherProps}\n />\n );\n};\n\nConnectionRelationTypeSelector.propTypes = {\n className: PropTypes.string,\n relation: ConnectionRelationType,\n inRelationTypes: PropTypes.arrayOf(RelationTypeType),\n outRelationTypes: PropTypes.arrayOf(RelationTypeType),\n applyFirstByDefault: PropTypes.bool,\n reversedContextLabels: PropTypes.bool,\n onChange: PropTypes.func\n};\n\nexport default ConnectionRelationTypeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n 'entityType-overflow': {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n\n 'entityType-small': {\n padding: '1px 4px',\n fontSize: '10px',\n lineHeight: 'normal',\n marginRight: '12px',\n borderRadius: '2px',\n flexShrink: 0\n },\n 'entityType-medium': {\n padding: '2px 8px 3px',\n borderRadius: '2px',\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px',\n marginRight: '16px',\n flexShrink: 0\n }\n});\n\nexport default useStyles;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {getEntityType, getEntityTypeLabel, getPropWithInheritance, theme, utils, Entity} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport ExpandedValueTooltip from '../ExpandedValueTooltip/ExpandedValueTooltip';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n className?: string;\n size?: 'small' | 'medium';\n};\n\nconst EntityTypeBadge = ({entity, className, size = 'small'}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityTypeUri = entity.type;\n const entityType = getEntityType(metadata, entityTypeUri) || {};\n const entityTypeColor = getPropWithInheritance(metadata, entityType, 'typeColor') || theme.palette.primary.main;\n const entityTypeLabel = getEntityTypeLabel(metadata, entity);\n\n return (\n <ExpandedValueTooltip value={entityTypeLabel} placement=\"top\">\n <Typography\n style={{\n backgroundColor: entityTypeColor,\n color: utils.Colors.getColor(entityTypeColor) ? '#FFFFFF' : '#212121'\n }}\n className={classnames(styles[`entityType-${size}`], styles['entityType-overflow'], className)}\n component=\"div\"\n >\n {entityTypeLabel}\n </Typography>\n </ExpandedValueTooltip>\n );\n};\n\nexport default EntityTypeBadge;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string}) => ({\n profileBandWrapper: {\n // especially for IE (overflow fix)\n flexShrink: 0\n },\n profileBand: {\n display: 'flex',\n padding: '16px 12px 16px 16px',\n alignItems: 'flex-start',\n backgroundColor: '#fff',\n boxShadow: '0px 1px 0px rgba(0, 0, 0, 0.12)',\n marginBottom: '1px',\n '&:after': {\n // IE workaround for minHeight and centering items\n content: '\"\"',\n minHeight: 'inherit',\n fontSize: 0\n }\n },\n inactive: {\n background: theme.inactiveBackground\n },\n profileIcon: {\n marginRight: '12px'\n },\n imageProfileIcon: {\n width: '48px',\n height: '48px'\n },\n profileInfo: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 50%'\n },\n badge: {},\n label: {\n lineHeight: '1.2',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary,\n wordBreak: 'break-word',\n\n '&+ $specialInfo': {\n marginTop: '4px'\n }\n },\n secondaryLabel: {\n display: 'inline-flex',\n color: theme.palette.text.primary,\n marginTop: '2px',\n lineHeight: '16px',\n fontSize: '14px',\n fontWeight: 400,\n\n '&+ $businessCard': {\n marginLeft: '12px'\n }\n },\n businessCard: {\n color: theme.palette.text.secondary,\n display: 'inline-flex',\n fontSize: '14px',\n marginTop: '4px',\n lineHeight: '1.2'\n },\n specialInfo: {\n display: 'flex',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n width: '100%',\n marginTop: '8px'\n },\n entityType: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n entityId: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n}));\n\nexport default useStyles;\n","import React, {ReactNode, useCallback} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {isNil, identity} from 'ramda';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {getLabel, isActiveObject, getBusinessCardAttributesText, getEntityId, isTempUri, Entity} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport EntityAvatar from '../EntityAvatar/EntityAvatar';\nimport EntityTypeBadge from '../EntityTypeBadge/EntityTypeBadge';\n\nimport useStyles from './styles';\n\ntype Props = {\n className?: string;\n entity?: Entity;\n children?: ReactNode;\n classes?: Partial<ReturnType<typeof useStyles>>;\n renderLabel?: (label: string) => React.ReactNode;\n};\n\nconst ProfileBand = ({className, entity, children, classes, renderLabel = identity}: Props) => {\n const styles = useStyles({classes});\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const showEntityId = useSelector(mdmModule.selectors.getShowEntityId);\n const handleCopyEntityIdToClipboard = useCallback(() => {\n navigator.clipboard.writeText(getEntityId(entity));\n }, [entity]);\n\n if (isNil(entity)) {\n return null;\n }\n\n const label = getLabel(entity.label);\n const secondaryLabel = entity.secondaryLabel;\n const businessCardText = getBusinessCardAttributesText(metadata, entity);\n const isActive = isActiveObject(entity);\n const entityUri = entity.uri;\n const entityId = getEntityId(entity);\n return (\n <div className={classnames(styles.profileBandWrapper, className)}>\n <div\n className={classnames(styles.profileBand, {\n [styles.inactive]: !isActive\n })}\n data-entity-uri={entityUri}\n >\n <EntityAvatar\n key={entity.uri}\n entity={entity}\n avatarClassName={styles.profileIcon}\n imageClassName={styles.imageProfileIcon}\n />\n <div className={styles.profileInfo}>\n <div>\n <Typography variant=\"h6\" className={styles.label}>\n {renderLabel(label)}\n </Typography>\n {secondaryLabel && (\n <Typography variant=\"subtitle2\" className={styles.secondaryLabel}>\n {secondaryLabel}\n </Typography>\n )}\n {businessCardText && (\n <Typography variant=\"subtitle1\" className={styles.businessCard}>\n {businessCardText}\n </Typography>\n )}\n </div>\n <div className={styles.specialInfo}>\n <div className={styles.entityType}>\n <EntityTypeBadge entity={entity} size=\"medium\" className={styles.badge} />\n {!isTempUri(entityUri) && showEntityId && (\n <Tooltip title={i18n.text('Copy to clipboard')}>\n <Typography\n display=\"inline\"\n variant=\"body2\"\n className={styles.entityId}\n onClick={handleCopyEntityIdToClipboard}\n >\n {i18n.text('Entity ID')}: {entityId}\n </Typography>\n </Tooltip>\n )}\n </div>\n </div>\n </div>\n {children && <div>{children}</div>}\n </div>\n </div>\n );\n};\n\nexport default ProfileBand;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n alignItems: 'center'\n },\n link: {\n whiteSpace: 'nowrap',\n marginRight: '9px'\n }\n});\n","import React, {useContext} from 'react';\nimport {Link as Link} from '@material-ui/core';\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {mergeRight} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {LabelsContext} from '../../contexts/LabelsContext';\nimport {withTooltip} from '../../HOCs';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\n\nimport {useStyles} from './styles';\n\nconst LinkWithTooltip = withTooltip<typeof Link, {component: string}>(Link);\n\ntype Props = {\n className?: string;\n total?: number;\n onPrev?: () => void;\n onNext?: () => void;\n onSearchResultsClick?: () => void;\n isPrevDisabled?: boolean;\n isNextDisabled?: boolean;\n};\n\nconst ProfileBandNavigationWidget = ({\n className,\n total = 0,\n onPrev,\n onNext,\n onSearchResultsClick,\n isPrevDisabled,\n isNextDisabled\n}: Props) => {\n const styles = useStyles();\n const labels = useContext(LabelsContext);\n const {OPEN_RESULTS, SEARCH_RESULT, SEARCH_RESULTS, NEXT_PROFILE, PREVIOUS_PROFILE} = mergeRight(\n {\n OPEN_RESULTS: i18n.text('Go to search results'),\n SEARCH_RESULT: i18n.text('Search result'),\n SEARCH_RESULTS: i18n.text('Search results'),\n PREVIOUS_PROFILE: i18n.text('Go to previous profile'),\n NEXT_PROFILE: i18n.text('Go to next profile')\n },\n labels?.profileBand ?? {}\n );\n return (\n <div className={classnames(styles.container, className)}>\n <LinkWithTooltip\n className={styles.link}\n component=\"button\"\n variant=\"caption\"\n onClick={onSearchResultsClick}\n underline=\"none\"\n tooltipTitle={OPEN_RESULTS}\n >\n {formatNumberAsMetric(total, 1000000)} {total === 1 ? SEARCH_RESULT : SEARCH_RESULTS}\n </LinkWithTooltip>\n <SmallIconButtonWithTooltip\n size=\"L\"\n icon={KeyboardArrowLeft}\n tooltipTitle={PREVIOUS_PROFILE}\n onClick={onPrev}\n disabled={isPrevDisabled}\n showForDisabled\n />\n <SmallIconButtonWithTooltip\n size=\"L\"\n icon={KeyboardArrowRight}\n tooltipTitle={NEXT_PROFILE}\n onClick={onNext}\n disabled={isNextDisabled}\n showForDisabled\n />\n </div>\n );\n};\n\nexport {ProfileBandNavigationWidget, LinkWithTooltip};\n","import {\n Entity,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotals,\n getTotalFromDataTenant,\n TotalResponse\n} from '@reltio/mdm-sdk';\n\nimport {SearchProvider} from './SearchProvider';\n\nexport class MainSearchProvider implements SearchProvider {\n private readonly query;\n private readonly sortField;\n private readonly sortOrder;\n private readonly tenant;\n private readonly searchTenant;\n private readonly apiPath;\n private readonly dtssPath;\n private readonly globalSearchRequestOptions;\n\n constructor({\n data: {query, sortField, sortOrder},\n tenant,\n searchTenant,\n apiPath,\n dtssPath,\n globalSearchRequestOptions\n }) {\n this.query = query;\n this.sortField = sortField;\n this.sortOrder = sortOrder;\n this.tenant = tenant;\n this.searchTenant = searchTenant;\n this.apiPath = apiPath;\n this.dtssPath = dtssPath;\n this.globalSearchRequestOptions = globalSearchRequestOptions;\n }\n\n private isDT = () => this.tenant !== this.searchTenant;\n\n private getQueryFilter = () => ({rawFilter: this.query});\n\n private getEntities = (filters = [], options = {}): Promise<Entity[]> => {\n const requestFilters = [this.getQueryFilter(), ...filters];\n const requestOptions = {\n ...this.globalSearchRequestOptions,\n sort: this.sortField,\n order: this.sortOrder,\n select: 'uri,label,type',\n scoreEnabled: false,\n ...options\n };\n return this.isDT()\n ? getFilteredEntitiesFromDataTenant({\n filters: requestFilters,\n options: requestOptions,\n customerTenant: this.tenant,\n dataTenant: this.searchTenant,\n dtssPath: this.dtssPath\n })\n : getFilteredEntities(requestFilters, requestOptions);\n };\n\n checkEntity = (uri): Promise<boolean> => {\n return this.getEntities(\n [\n {\n filter: 'equals',\n fieldName: 'uri',\n values: [uri]\n }\n ],\n {offset: 0, max: 1}\n ).then((entities) => {\n return entities && entities.length > 0 && entities[0].uri === uri;\n });\n };\n\n requestEntities = (max, offset): Promise<Entity[]> => {\n return this.getEntities([], {offset, max});\n };\n\n requestTotal = (): Promise<number> => {\n const filters = [this.getQueryFilter()];\n const options = this.globalSearchRequestOptions;\n return (this.isDT()\n ? getTotalFromDataTenant({\n filters,\n options,\n customerTenant: this.tenant,\n dataTenant: this.searchTenant,\n dtssPath: this.dtssPath\n })\n : getTotals(filters, options)\n ).then((json) => (json as TotalResponse).total);\n };\n}\n","import {\n Entity,\n getGraphSearchCount,\n getGraphSearchEntities,\n getEntityId,\n buildFilterQueryString\n} from '@reltio/mdm-sdk';\n\nimport {SearchProvider} from './SearchProvider';\n\nexport class GraphSearchProvider implements SearchProvider {\n private readonly searchBody;\n private readonly tenant;\n private readonly apiPath;\n\n constructor({data, tenant, apiPath}) {\n this.searchBody = data;\n this.tenant = tenant;\n this.apiPath = apiPath;\n }\n\n private getEntities = (filters = [], options = {}): Promise<Entity[]> => {\n const allFilters = [\n {\n rawFilter: this.searchBody.filter\n },\n ...filters\n ];\n return getGraphSearchEntities({\n apiPath: this.apiPath,\n tenant: this.tenant,\n searchBody: {\n ...this.searchBody,\n filter: filters.length ? buildFilterQueryString()(allFilters) : this.searchBody.filter\n },\n options\n });\n };\n\n checkEntity = (uri): Promise<boolean> => {\n return this.getEntities(\n [\n {\n filter: 'equals',\n fieldName: 'id',\n values: [getEntityId({uri})]\n }\n ],\n {from: 0, max: 1}\n ).then((entities) => {\n return entities && entities.length > 0 && entities[0].uri === uri;\n });\n };\n\n requestEntities = (max, from): Promise<Entity[]> => {\n return this.getEntities([], {from, max});\n };\n\n requestTotal = (): Promise<number> => {\n return getGraphSearchCount({\n apiPath: this.apiPath,\n tenant: this.tenant,\n searchBody: this.searchBody\n }).then((json) => json.count);\n };\n}\n","import {SearchNavigationData} from '../types';\n\ntype Payload = {\n winnerUri: string;\n losersUris: string[];\n};\n\nconst replaceWithWinnerUri = (searchNavigationData: SearchNavigationData, winnerUri: string): SearchNavigationData => {\n let {uri, index, total, cache} = searchNavigationData;\n if (winnerUri && winnerUri !== uri) {\n if (cache && cache.includes(uri)) {\n cache = [...cache];\n const winnerIndex = cache.indexOf(winnerUri);\n let uriIndex = cache.indexOf(uri);\n if (winnerIndex >= 0) {\n cache.splice(winnerIndex, 1);\n total--;\n if (winnerIndex < uriIndex) {\n index--;\n }\n }\n uriIndex = cache.indexOf(uri);\n cache.splice(uriIndex, 1, winnerUri);\n }\n uri = winnerUri;\n return {\n ...searchNavigationData,\n uri,\n index,\n cache,\n total\n };\n }\n return searchNavigationData;\n};\n\nconst removeLosersUris = (searchNavigationData: SearchNavigationData, losersUris: string[]): SearchNavigationData => {\n const {cache = [], index, total, uri} = searchNavigationData;\n const losersInCache = losersUris.filter((uri) => cache.includes(uri));\n if (losersInCache.length === 0) {\n return searchNavigationData;\n }\n const updatedTotal = total - losersInCache.length;\n const uriIndex = cache.indexOf(uri);\n let updatedIndex = index;\n for (const loser of losersInCache) {\n const loserIndex = cache.indexOf(loser);\n if (loserIndex < uriIndex) {\n updatedIndex--;\n }\n }\n const updatedCache = cache.filter((uri) => !losersInCache.includes(uri));\n\n return {\n ...searchNavigationData,\n cache: updatedCache,\n index: updatedIndex,\n total: updatedTotal\n };\n};\n\nexport const applyMergeToSearchNavigationData = (\n searchNavigationData: SearchNavigationData,\n payload: Payload\n): SearchNavigationData => {\n const {winnerUri, losersUris = []} = payload;\n const updatedSearchNavigationData = replaceWithWinnerUri(searchNavigationData, winnerUri);\n return removeLosersUris(updatedSearchNavigationData, losersUris);\n};\n","import {useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {search as mdmModuleSearch, ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {getEntityUriForLink} from '@reltio/mdm-sdk';\nimport {map, pipe, prop, reject} from 'ramda';\nimport {useActionsHook, ViewIdContext} from '../../../contexts';\nimport {useSafePromise} from '../../../hooks';\nimport {getSearchProvider} from '../searchProviders/SearchProviderFactory';\nimport {SearchNavigationData, SearchProviderData} from '../types';\nimport {applyMergeToSearchNavigationData} from '../helpers';\n\nexport const REQUEST_PAGE_SIZE = 15;\n\nconst getNewUris = (entities, cache) =>\n pipe(\n map(prop('uri')),\n reject((uri) => cache.includes(uri))\n )(entities);\n\nconst useSearchNavigation = () => {\n const safeCheckEntityPromise = useSafePromise();\n const safeRequestTotalPromise = useSafePromise();\n const safeRequestEntitiesPromise = useSafePromise();\n const {\n uri,\n index,\n total,\n tenant: searchTenant,\n cache\n } = useSelector<unknown, SearchNavigationData>(mdmModule.selectors.getSearchNavigationData) || {};\n const {type, data} = useSelector<unknown, SearchProviderData>(mdmModule.selectors.getSearchProviderData) || {};\n const tenant = useSelector<unknown, string>(mdmModule.selectors.getTenant);\n const apiPath = useSelector<unknown, string>(mdmModule.selectors.getApiPath);\n const dtssPath = useSelector<unknown, string>(mdmModule.selectors.getDtssPath);\n const globalSearchRequestOptions = useSelector((state) =>\n mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n );\n const viewId = useContext(ViewIdContext);\n const dispatch = useDispatch();\n const [loading, setLoading] = useState<boolean>(false);\n\n const searchProvider = useMemo(\n () => getSearchProvider(type, {data, tenant, searchTenant, apiPath, dtssPath, globalSearchRequestOptions}),\n [type, data, tenant, searchTenant, apiPath, dtssPath, globalSearchRequestOptions]\n );\n\n const updateNavigationData = useCallback(\n (data: Partial<SearchNavigationData>) => {\n dispatch(mdmModuleSearch.actions.updateSearchNavigationDataFields(data));\n },\n [dispatch]\n );\n\n const openEntity = useCallback(\n (uri: string) => {\n const preparedUri = tenant !== searchTenant ? getEntityUriForLink({uri, dataTenant: searchTenant}) : uri;\n dispatch(mdmModuleUi.actions.openEntity({uri: preparedUri, viewId, source: 'navigation'}));\n },\n [dispatch, viewId, tenant, searchTenant]\n );\n\n const onSearchResultsClick = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: type, viewId}));\n }, [dispatch, type, viewId]);\n\n useEffect(() => {\n if (index >= total) {\n updateNavigationData({\n index: total - 1\n });\n } else if (index < 0) {\n updateNavigationData({\n index: 0\n });\n }\n }, [total, index, updateNavigationData]);\n\n const listenToActions = useActionsHook();\n\n useEffect(() => {\n const stopListeningActions = listenToActions((action, state) => {\n switch (action.type) {\n case mdmModuleSearch.constants.UPDATE_SEARCH_NAVIGATION_DATA_ON_MERGE: {\n const searchNavigationData: SearchNavigationData =\n mdmModule.selectors.getSearchNavigationData(state);\n if (searchNavigationData) {\n updateNavigationData(applyMergeToSearchNavigationData(searchNavigationData, action.payload));\n }\n break;\n }\n }\n });\n return () => stopListeningActions();\n }, [listenToActions, updateNavigationData]);\n\n const requestNextPage = useCallback(\n (cache: string[], total: number, index: number): Promise<void> => {\n setLoading(true);\n safeRequestTotalPromise(searchProvider.requestTotal()).then((total) => updateNavigationData({total}));\n\n const newIndex = index + 1;\n return safeRequestEntitiesPromise(searchProvider.requestEntities(REQUEST_PAGE_SIZE, newIndex))\n .then((entities) => {\n if (!entities) {\n return;\n }\n if (entities.length) {\n const newUris = getNewUris(entities, cache);\n if (newUris.length > 0) {\n updateNavigationData({\n cache: cache.concat(newUris),\n uri: newUris[0],\n index: newIndex + entities.length - newUris.length\n });\n openEntity(newUris[0]);\n return;\n } else if (index + entities.length < total - 1) {\n return requestNextPage(cache, total - entities.length, index + entities.length);\n }\n }\n updateNavigationData({\n index: newIndex\n });\n })\n .finally(() => {\n setLoading(false);\n });\n },\n [searchProvider, updateNavigationData, openEntity]\n );\n\n const requestPrevPage = useCallback(\n (cache: string[], index: number): Promise<void> => {\n setLoading(true);\n safeRequestTotalPromise(searchProvider.requestTotal()).then((total) => updateNavigationData({total}));\n\n const newIndex = index - 1;\n const offset = Math.max(0, index - REQUEST_PAGE_SIZE);\n const max = REQUEST_PAGE_SIZE + Math.min(0, index - REQUEST_PAGE_SIZE);\n return safeRequestEntitiesPromise(searchProvider.requestEntities(max, offset))\n .then((entities) => {\n if (!entities) {\n return;\n }\n if (entities.length) {\n const newUris = getNewUris(entities, cache);\n if (newUris.length > 0) {\n updateNavigationData({\n cache: newUris.concat(cache),\n uri: newUris[newUris.length - 1],\n index: newIndex - (entities.length - newUris.length)\n });\n openEntity(newUris[newUris.length - 1]);\n return;\n } else if (index - entities.length > 0) {\n return requestPrevPage(cache, index - entities.length);\n }\n }\n updateNavigationData({\n index: 0\n });\n })\n .finally(() => {\n setLoading(false);\n });\n },\n [searchProvider, updateNavigationData, openEntity]\n );\n\n const stepForwardWithCheck = useCallback(\n (cache: string[], cacheIndex: number, total: number, index: number): Promise<void> | void => {\n if (cacheIndex < cache.length) {\n const uri = cache[cacheIndex];\n setLoading(true);\n return safeCheckEntityPromise(searchProvider.checkEntity(uri))\n .then((isExists) => {\n if (isExists) {\n updateNavigationData({\n index: index + 1,\n uri,\n cache,\n total\n });\n openEntity(uri);\n } else {\n const clearedCache = [...cache];\n clearedCache.splice(cacheIndex, 1);\n return stepForwardWithCheck(clearedCache, cacheIndex, total - 1, index);\n }\n })\n .finally(() => {\n setLoading(false);\n });\n } else if (index >= total - 1) {\n updateNavigationData({\n cache,\n total,\n index: total - 1\n });\n } else {\n return requestNextPage(cache, total, index);\n }\n },\n [searchProvider, updateNavigationData, openEntity, requestNextPage]\n );\n\n const stepBackWithCheck = useCallback(\n (cache: string[], cacheIndex: number, total: number, index: number): Promise<void> | void => {\n if (cacheIndex > -1) {\n const uri = cache[cacheIndex];\n setLoading(true);\n return safeCheckEntityPromise(searchProvider.checkEntity(uri))\n .then((isExists) => {\n if (isExists) {\n updateNavigationData({\n index: index - 1,\n uri,\n cache,\n total\n });\n openEntity(uri);\n } else {\n const clearedCache = [...cache];\n clearedCache.splice(cacheIndex, 1);\n return stepBackWithCheck(clearedCache, cacheIndex - 1, total - 1, index - 1);\n }\n })\n .finally(() => {\n setLoading(false);\n });\n } else if (index <= 0) {\n updateNavigationData({\n index: 0,\n cache,\n total\n });\n } else {\n return requestPrevPage(cache, index);\n }\n },\n [searchProvider, updateNavigationData, openEntity, requestPrevPage]\n );\n\n const onPrev = useCallback(() => {\n if (cache && uri) {\n const cacheIndex = cache.indexOf(uri) - 1;\n stepBackWithCheck(cache, cacheIndex, total, index);\n }\n }, [stepBackWithCheck, cache, uri, total, index]);\n\n const onNext = useCallback(() => {\n if (cache && uri) {\n const cacheIndex = cache.indexOf(uri) + 1;\n stepForwardWithCheck(cache, cacheIndex, total, index);\n }\n }, [stepForwardWithCheck, cache, uri, total, index]);\n\n const isPrevDisabled = loading || index <= 0;\n const isNextDisabled = loading || index >= total - 1;\n return {total, onPrev, onNext, onSearchResultsClick, isPrevDisabled, isNextDisabled};\n};\n\nexport {useSearchNavigation};\n","import {MainSearchProvider} from './MainSearchProvider';\nimport {GraphSearchProvider} from './GraphSearchProvider';\n\nexport const getSearchProvider = (type: string, options) => {\n switch (type) {\n case 'search':\n return new MainSearchProvider(options);\n case 'graphsearch':\n return new GraphSearchProvider(options);\n }\n};\n","import React from 'react';\n\nimport {ProfileBandNavigationWidget} from './ProfileBandNavigationWidget';\nimport {useSearchNavigation} from './hooks/useSearchNavigation';\nimport {useSearchNavigationVisibility} from './hooks/useSearchNavigationVisibility';\n\ntype Props = {\n className?: string;\n};\n\nconst ProfileBandNavigation = ({className}: Props) => {\n const {total, onPrev, onNext, onSearchResultsClick, isPrevDisabled, isNextDisabled} = useSearchNavigation();\n const isVisible = useSearchNavigationVisibility();\n return isVisible ? (\n <ProfileBandNavigationWidget\n className={className}\n total={total}\n onPrev={onPrev}\n onNext={onNext}\n onSearchResultsClick={onSearchResultsClick}\n isPrevDisabled={isPrevDisabled}\n isNextDisabled={isNextDisabled}\n />\n ) : null;\n};\n\nexport {ProfileBandNavigation};\n","import {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, isViewMode} from '@reltio/mdm-sdk';\nimport {SearchNavigationData} from '../types';\n\nconst useSearchNavigationVisibility = () => {\n const {cache} = useSelector<unknown, SearchNavigationData>(mdmModule.selectors.getSearchNavigationData) || {};\n const mode = useSelector<unknown, string>(mdmModule.selectors.getMode);\n const entity = useSelector<unknown, Entity>(mdmModule.selectors.getEntity);\n\n return isViewMode(mode) && cache?.includes(entity?.uri);\n};\n\nexport {useSearchNavigationVisibility};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n image: {\n width: '40px',\n height: '40px'\n },\n info: {\n marginLeft: '12px',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column'\n },\n label: {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n fontWeight: 400,\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.primary.main\n },\n secondaryLabel: {\n marginTop: '4px',\n fontWeight: 400,\n fontSize: '10px',\n lineHeight: '12px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n link: {\n textDecoration: 'none'\n },\n thirdRow: {\n display: 'flex',\n overflow: 'hidden',\n alignItems: 'center',\n marginTop: 'auto',\n paddingTop: '4px'\n },\n entityId: {\n display: 'flex',\n overflow: 'hidden',\n alignItems: 'baseline',\n whiteSpace: 'nowrap',\n fontWeight: 400,\n fontSize: '12px',\n lineHeight: '16px'\n },\n entityIdLabel: {\n color: theme.palette.text.secondary\n },\n entityIdValue: {\n marginLeft: '8px',\n color: theme.palette.text.primary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n '&[aria-describedby]': {\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Entity, getEntityId, getEntityUriForLink, getLabel} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport EntityTypeBadge from '../../EntityTypeBadge/EntityTypeBadge';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n classes?: {\n label?: string;\n secondaryLabel?: string;\n };\n};\n\nexport const ProfileCardContent = ({entity, classes = {}}: Props) => {\n const styles = useStyles();\n const {secondaryLabel: secondaryLabelClass, label: labelClass} = classes;\n const label = getLabel(entity.label);\n const {secondaryLabel} = entity;\n const handleCopyEntityIdToClipboard = useCallback(() => {\n navigator.clipboard.writeText(getEntityId(entity));\n }, [entity]);\n\n return (\n <>\n <EntityAvatar entity={entity} imageClassName={styles.image} />\n <div className={styles.info}>\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.link}>\n <ExpandedValueTooltip value={label} placement=\"top\" showOnExceededHeight={true}>\n <div className={classnames(styles.label, labelClass)}>{label}</div>\n </ExpandedValueTooltip>\n </EntityUriLink>\n\n {secondaryLabel && (\n <ExpandedValueTooltip value={secondaryLabel} placement=\"top\" showOnExceededHeight={true}>\n <div className={classnames(styles.secondaryLabel, secondaryLabelClass)}>{secondaryLabel}</div>\n </ExpandedValueTooltip>\n )}\n <div className={styles.thirdRow}>\n <EntityTypeBadge entity={entity} size=\"medium\" />\n <div className={styles.entityId} onClick={handleCopyEntityIdToClipboard}>\n <div className={styles.entityIdLabel}>{i18n.text('ID:')}</div>\n <ExpandedValueTooltip value={`Copy to clipboard ${getEntityId(entity)}`} placement=\"top\">\n <div className={styles.entityIdValue}>{getEntityId(entity)}</div>\n </ExpandedValueTooltip>\n </div>\n </div>\n </div>\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n '@keyframes keyframes-wave': {\n '0%': {\n transform: 'translateX(-100%)'\n },\n '60%': {\n transform: 'translateX(100%)'\n },\n '100%': {\n transform: 'translateX(100%)'\n }\n },\n wave: {\n overflow: 'hidden',\n position: 'relative',\n '&:after': {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n content: '\"\"',\n position: 'absolute',\n animation: '$keyframes-wave 1.6s linear 0.5s infinite',\n transform: 'translateX(-100%)',\n background: 'linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.04), transparent);'\n }\n },\n avatar: {\n flex: 'none',\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n info: {\n marginLeft: '12px',\n flex: 'auto'\n },\n label: {\n width: '40%',\n height: '15px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n secondaryLabel: {\n marginTop: '4px',\n width: '100%',\n height: '12px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n thirdRow: {\n marginTop: '4px',\n width: '60%',\n height: '24px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nexport const ProfileCardPlaceholder = () => {\n const styles = useStyles();\n return (\n <>\n <div className={classnames(styles.avatar, styles.wave)} />\n <div className={styles.info}>\n <div className={classnames(styles.label, styles.wave)} />\n <div className={classnames(styles.secondaryLabel, styles.wave)} />\n <div className={classnames(styles.thirdRow, styles.wave)} />\n </div>\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n container: {\n display: 'flex',\n padding: '16px',\n overflow: 'hidden'\n }\n});\n\nexport default useStyles;\n","import React, {memo} from 'react';\nimport classnames from 'classnames';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {ProfileCardContent} from './ProfileCardContent/ProfileCardContent';\nimport {ProfileCardPlaceholder} from './ProfileCardPlaceholder/ProfileCardPlaceholder';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n classes?: {\n label?: string;\n secondaryLabel?: string;\n container?: string;\n };\n variant?: 'loading' | 'normal';\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst ProfileCard = ({entity, classes = {}, variant = 'normal', ...otherProps}: Props) => {\n const styles = useStyles();\n const {container: containerClass} = classes;\n return (\n <div className={classnames(styles.container, containerClass)} {...otherProps}>\n {variant === 'normal' ? (\n <ProfileCardContent entity={entity} classes={classes} />\n ) : (\n <ProfileCardPlaceholder />\n )}\n </div>\n );\n};\n\nexport default memo(ProfileCard);\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n width: '64px',\n paddingTop: '8px',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)'\n },\n active: {\n backgroundColor: fade(theme.palette.primary.main, 0.12),\n color: theme.palette.primary.main,\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n height: '42px',\n width: '3px',\n backgroundColor: theme.palette.primary.main,\n left: '-8px',\n borderRadius: '0 6px 6px 0'\n }\n },\n buttonWrapper: {\n position: 'relative',\n width: '48px',\n height: '44px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '6px',\n margin: '2px 8px',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {ElementType} from 'react';\nimport classnames from 'classnames';\nimport {IconButtonProps} from '@material-ui/core/IconButton';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n buttonsProps: {\n icon: ElementType;\n tooltipTitle: string;\n id: number;\n disabled?: boolean;\n }[];\n classes?: {active?: string; buttonWrapper?: string} & IconButtonProps['classes'];\n activeIndexId: number;\n className?: string;\n onButtonClick: (id: number) => void;\n};\n\nexport const SideButtonsPanel = ({buttonsProps, activeIndexId, className, onButtonClick, classes = {}}: Props) => {\n const styles = useStyles();\n const {active, buttonWrapper, ...iconButtonClasses} = classes;\n\n return (\n <div className={classnames(styles.container, className)}>\n {buttonsProps.map(({id, ...buttonProps}) => {\n return (\n <SmallIconButtonWithTooltip\n {...buttonProps}\n classes={iconButtonClasses}\n size=\"S\"\n key={id}\n className={classnames(\n {[classnames(styles.active, active)]: activeIndexId === id},\n styles.buttonWrapper,\n buttonWrapper\n )}\n onClick={() => onButtonClick(id)}\n data-reltio-id={`reltio-profile-right-side-button-${id}`}\n />\n );\n })}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n contentWrapper: {\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)',\n marginLeft: '3px',\n transition: theme.transitions.create(['width'], {\n duration: theme.transitions.duration.enteringScreen\n })\n }\n}));\n","import React, {ReactNode, VFC} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = {\n width: number;\n open: boolean;\n children: ReactNode;\n};\n\nexport const SidePanel: VFC<Props> = ({width, open, children}) => {\n const styles = useStyles();\n return (\n <div\n className={styles.contentWrapper}\n style={{\n width: `${open ? width : 0}px`\n }}\n >\n {open && <>{children}</>}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst iconsWidth = '68px';\n\nexport const useOptionStyles = makeStyles({\n container: {\n display: 'flex',\n alignItems: 'center',\n height: '32px',\n minHeight: '32px',\n padding: 0\n },\n text: {\n display: 'flex',\n width: `calc(100% - ${iconsWidth})`\n },\n textItem: {\n fontSize: '13px',\n lineHeight: '15px',\n marginRight: 10\n },\n primaryTextItem: {\n flex: '1 0',\n flexBasis: 0,\n maxWidth: '50%',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n secondaryTextItem: {\n flex: '1 0',\n flexBasis: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n icons: {\n transform: 'scale(0.5)',\n position: 'relative',\n flexShrink: 0,\n width: iconsWidth,\n bottom: '10px'\n },\n iconTop: {\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 1\n },\n iconBottom: {\n position: 'absolute',\n top: 0,\n left: 26,\n zIndex: 0\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useOptionStyles} from './styles';\nimport EntityTypeIcon from '../../../../EntityTypeIcon/EntityTypeIcon';\nimport ExpandedValueTooltip from '../../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nconst RelationOption = ({innerRef, innerProps, selectOption, data}) => {\n const styles = useOptionStyles();\n const {value, label, startObject, endObject} = data;\n const secondaryLabel = startObject.objectType.label + ' \\u2194 ' + endObject.objectType.label;\n return (\n <MenuItem\n className={styles.container}\n ref={innerRef}\n key={value}\n onClick={() => selectOption({label, value, startObject, endObject})}\n {...innerProps}\n >\n <div className={styles.icons}>\n <EntityTypeIcon className={styles.iconTop} entityType={startObject.objectType} />\n <EntityTypeIcon className={styles.iconBottom} entityType={endObject.objectType} />\n </div>\n <div className={styles.text}>\n <ExpandedValueTooltip value={label}>\n <Typography className={classnames(styles.textItem, styles.primaryTextItem)}>{label}</Typography>\n </ExpandedValueTooltip>\n <ExpandedValueTooltip value={secondaryLabel}>\n <Typography color=\"textSecondary\" className={classnames(styles.textItem, styles.secondaryTextItem)}>\n {secondaryLabel}\n </Typography>\n </ExpandedValueTooltip>\n </div>\n </MenuItem>\n );\n};\n\nRelationOption.propTypes = {\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n innerProps: PropTypes.object.isRequired,\n selectOption: PropTypes.func.isRequired,\n data: PropTypes.shape({\n value: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n startObject: PropTypes.object,\n endObject: PropTypes.object\n })\n};\n\nexport default RelationOption;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {identity, defaultTo} from 'ramda';\nimport RelationOption from './components/RelationOption';\nimport DropDownSelector from '../../../DropDownSelector/DropDownSelector';\n\nconst RelationTypeSelector = ({value = {}, options = [], onChange = identity, TextFieldProps, ...otherProps}) => {\n const textFieldProps = useMemo(\n () => ({\n ...defaultTo({}, TextFieldProps),\n ['data-reltio-id']: 'relation-type-selector'\n }),\n [TextFieldProps]\n );\n return (\n <DropDownSelector\n value={value}\n options={options}\n onChange={onChange}\n label={i18n.text('Select relationship type ')}\n components={{Option: RelationOption}}\n TextFieldProps={textFieldProps}\n {...otherProps}\n />\n );\n};\n\nconst ValueType = PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n startObject: PropTypes.object,\n endObject: PropTypes.object\n});\n\nRelationTypeSelector.propTypes = {\n value: ValueType,\n options: PropTypes.arrayOf(ValueType),\n onChange: PropTypes.func\n};\n\nexport default RelationTypeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n alignItems: 'flex-start'\n },\n slice: {\n fontWeight: 500\n },\n cancelButton: {\n width: '88px',\n flexShrink: 0,\n marginLeft: '15px'\n }\n});\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {pipe} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\nconst ProfileBandHistory = () => {\n const styles = useStyles();\n\n const historyEvent = useSelector(mdmModule.selectors.getHistoryEvent);\n const dispatch = useDispatch();\n const onCancel = pipe(profile.history.actions.clearHistoryEvent, dispatch);\n\n return historyEvent ? (\n <div className={styles.root}>\n <Typography component={'div'}>\n {i18n.text('You are viewing a historic slice:')}{' '}\n <span className={styles.slice}>{i18n.date(historyEvent.aStamp, 'llll')}</span>\n </Typography>\n <Button className={styles.cancelButton} variant=\"contained\" color=\"primary\" onClick={onCancel}>\n {i18n.text('Cancel')}\n </Button>\n </div>\n ) : null;\n};\n\nexport default ProfileBandHistory;\n","import React, {createContext, useContext} from 'react';\nimport {AnyAction} from 'redux';\n\ntype ActionsHook = (listener: (action: AnyAction, state: any) => void) => () => void;\n\nconst ActionsHookContext = createContext<ActionsHook | null>(null);\nActionsHookContext.displayName = 'ActionsHookContext';\n\ntype ProviderProps = {\n hook: ActionsHook;\n children: React.ReactNode;\n};\n\nexport const ActionsHookProvider = ({children, hook}: ProviderProps) => {\n return <ActionsHookContext.Provider value={hook}>{children}</ActionsHookContext.Provider>;\n};\n\nexport const useActionsHook = () => {\n const listenToActions = useContext(ActionsHookContext);\n if (!listenToActions) {\n throw new Error('ActionsHookContext must be provided');\n }\n return listenToActions;\n};\n","import React from 'react';\n\ntype Labels = {\n profileBand: {\n OPEN_RESULTS?: string;\n SEARCH_RESULT?: string;\n SEARCH_RESULTS?: string;\n NEXT_PROFILE?: string;\n PREVIOUS_PROFILE?: string;\n };\n};\nexport const LabelsContext = React.createContext<Labels>({\n profileBand: {}\n});\n\nLabelsContext.displayName = 'LabelsContext';\n","import {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n andThen,\n fromPairs,\n map,\n otherwise,\n pipe,\n props,\n uniqBy,\n prop,\n propEq,\n when,\n always,\n assocPath,\n dissocPath,\n path,\n pathOr,\n mergeRight\n} from 'ramda';\nimport {\n CollaborationObjectTypes,\n Comment,\n CommentsMap,\n createComment as createCommentRequest,\n createReply as createReplyRequest,\n getComment as getCommentRequest,\n getCommentsCount as getCommentsCountRequest,\n Reply,\n updateComment as updateCommentRequest,\n updateReply as updateReplyRequest,\n deleteComment as deleteCommentRequest,\n deleteReply as deleteReplyRequest,\n getComments as getCommentsRequest,\n isTempUri,\n CollaborationStateMap,\n CommentState\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\n\ntype Props = {\n objectIds?: string[];\n objectTypes?: CollaborationObjectTypes[];\n enabled?: boolean;\n};\n\nconst filterReplies = (replyId: string, replies: Reply[]) => replies.filter((reply) => reply.replyId !== replyId);\n\nconst getUpdatedReplies = (comment: Comment, reply: Reply) => {\n const changedReplyIndex = comment.replies.findIndex(({replyId}) => replyId === reply.replyId);\n const newReplies = [...comment.replies];\n newReplies[changedReplyIndex] = reply;\n return newReplies;\n};\n\nconst defaultObjectIds = [];\nconst catchErrorInRequest = (e) => console.error('Collaboration error', e);\nexport const useCollaboration = ({objectIds = defaultObjectIds, objectTypes, enabled = true}: Props) => {\n const entity = useSelector(mdm.selectors.getEntity);\n const tenant: string = useSelector(mdm.selectors.getTenant);\n const collaborationPath: string = useSelector(mdm.selectors.getCollaborationPath);\n const isCollaborationEnabled = useSelector(mdm.selectors.isCollaborationEnabled) && enabled;\n\n const [pageToken, setPageToken] = useState<string | null>(null);\n const [comments, setComments] = useState<Comment[]>([]);\n const [commentsMap, setCommentsMap] = useState<CommentsMap>(null);\n const [currentComment, setCurrentComment] = useState<Comment | null>(null);\n const [sending, setSending] = useState(false);\n const [loading, setLoading] = useState(false);\n const [collaborationStateMap, setCollaborationStateMap] = useState<CollaborationStateMap>({});\n\n const addCommentsToCommentsMap = useCallback((commentsMap: CommentsMap) => {\n setCommentsMap((currentCommentsMap) => ({\n ...currentCommentsMap,\n ...commentsMap\n }));\n }, []);\n const entityUri = entity?.uri;\n const getCommentsCount = useCallback(\n (objectIds: string[], shouldResetCommentsMap = false) => {\n if (isCollaborationEnabled && entityUri && !isTempUri(entityUri)) {\n const onError = (e) => {\n console.warn('Collaboration error', e);\n setCommentsMap(null);\n };\n pipe(\n getCommentsCountRequest,\n andThen(map(props(['objectId', 'comments']))),\n andThen(fromPairs),\n andThen(shouldResetCommentsMap ? setCommentsMap : addCommentsToCommentsMap),\n otherwise(onError)\n )({uris: objectIds, tenant, collaborationPath});\n } else {\n setCommentsMap(null);\n }\n },\n [addCommentsToCommentsMap, collaborationPath, entityUri, isCollaborationEnabled, tenant]\n );\n\n useEffect(() => {\n getCommentsCount(objectIds, true);\n }, [objectIds, getCommentsCount]);\n\n const getComments = useCallback(\n (relatedObjectUri: string, pageToken?: string) => {\n getCommentsRequest({collaborationPath, tenant, relatedObjectUri, pageToken})\n .then(({items, nextPageToken}) => {\n setComments((prevComments) => {\n if (!pageToken) {\n return items;\n }\n return uniqBy(prop('commentId'), [...prevComments, ...items]);\n });\n setPageToken(nextPageToken);\n })\n .catch(catchErrorInRequest);\n },\n [collaborationPath, tenant]\n );\n\n const getComment = useCallback(\n (commentId: string) => {\n setLoading(true);\n\n getCommentRequest({collaborationPath, tenant, commentId})\n .then(setCurrentComment)\n .catch(catchErrorInRequest)\n .finally(() => setLoading(false));\n },\n [collaborationPath, tenant]\n );\n\n const addCommentToState = (comment: Comment, uri: string) => {\n setCurrentComment(comment);\n setCommentsMap((prevCommentsMap) => {\n return {\n ...prevCommentsMap,\n [uri]: [...(prevCommentsMap[uri] || []), {commentId: comment.commentId, replies: 0, status: 'open'}]\n };\n });\n setComments((prevComments) => [comment, ...prevComments]);\n };\n const updateCommentInState = (comment: Comment) => {\n setCurrentComment(comment);\n setComments(map(when(propEq('commentId', comment.commentId), always(comment))));\n };\n const deleteCommentFromState = (commentId: string, uri: string) => {\n setCurrentComment(null);\n setCommentsMap((prevCommentsMap) => {\n const comments = prevCommentsMap[uri] || [];\n return {\n ...prevCommentsMap,\n [uri]: comments.filter((c) => c.commentId !== commentId)\n };\n });\n setComments((prevComments) => {\n return prevComments.filter((comment) => comment.commentId !== commentId);\n });\n };\n const createComment = useCallback(\n ({content, namedUsers, objectType, uri, relatedObjectUris}) => {\n setSending(true);\n\n const data = {\n objectId: uri,\n content,\n relatedObjectUris,\n objectType,\n visibility: 'public',\n namedUsers,\n permanentLink: `${window.location.href}&commentId=${encodeURIComponent('{commentId}')}`\n };\n\n return createCommentRequest({collaborationPath, tenant, data})\n .then(([comment]) => addCommentToState(comment, uri))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant]\n );\n\n const editComment = useCallback(\n ({content, namedUsers, objectType, uri, relatedObjectUris, commentId, replies}) => {\n setSending(true);\n\n const data = {\n objectId: uri,\n content,\n relatedObjectUris,\n objectType,\n visibility: 'public',\n namedUsers,\n commentId,\n replies\n };\n\n return updateCommentRequest({collaborationPath, tenant, data})\n .then((comment) => updateCommentInState({...comment, replies}))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant]\n );\n\n const deleteComment = useCallback(\n ({uri, commentId}) => {\n setSending(true);\n\n deleteCommentRequest({collaborationPath, tenant, commentId})\n .then(() => deleteCommentFromState(commentId, uri))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant]\n );\n\n const updateReplyInState = useCallback((reply: Reply, uri: string, commentId: string, isDeleteReply?: boolean) => {\n const newStatus = reply.action === 'resolve' ? 'resolved' : 'open';\n const {replyId} = reply;\n if (newStatus === 'resolved') {\n setCurrentComment((prevCurrentComment) => {\n if (prevCurrentComment) {\n return null;\n }\n });\n } else {\n setCurrentComment((prevCurrentComment) => {\n if (prevCurrentComment) {\n return {\n ...prevCurrentComment,\n replies: isDeleteReply\n ? filterReplies(replyId, prevCurrentComment.replies)\n : [...prevCurrentComment.replies, reply]\n };\n }\n });\n }\n\n setCommentsMap((prevCommentsMap) => ({\n ...prevCommentsMap,\n [uri]: (prevCommentsMap[uri] || []).map((comment) => {\n if (comment.commentId === commentId) {\n return {\n ...comment,\n status: newStatus,\n replies: isDeleteReply ? comment.replies - 1 : comment.replies + 1\n };\n }\n\n return comment;\n })\n }));\n\n setComments((prevComments) => {\n return prevComments.map((comment) => {\n if (comment.commentId === commentId) {\n return {\n ...comment,\n status: newStatus,\n replies: isDeleteReply\n ? filterReplies(reply.replyId, comment.replies)\n : [...comment.replies, reply]\n };\n }\n\n return comment;\n });\n });\n }, []);\n\n const deleteReply = useCallback(\n ({uri, commentId, reply}) => {\n setSending(true);\n\n deleteReplyRequest({collaborationPath, tenant, commentId, replyId: reply.replyId})\n .then(() => updateReplyInState(reply, uri, commentId, true))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, updateReplyInState, tenant]\n );\n\n const editReplyInState = useCallback((reply: Reply, commentId: string) => {\n setCurrentComment((prevCurrentComment) => {\n if (prevCurrentComment) {\n return {\n ...prevCurrentComment,\n replies: getUpdatedReplies(prevCurrentComment, reply)\n };\n }\n });\n\n setComments((prevComments) => {\n return prevComments.map((comment) => {\n if (comment.commentId === commentId) {\n return {\n ...comment,\n replies: getUpdatedReplies(comment, reply)\n };\n }\n\n return comment;\n });\n });\n }, []);\n\n const editReply = useCallback(\n ({content, namedUsers, commentId, replyId}) => {\n setSending(true);\n const data = {\n content,\n namedUsers\n };\n return updateReplyRequest({collaborationPath, tenant, commentId, replyId, data})\n .then((reply) => editReplyInState(reply, commentId))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant, editReplyInState]\n );\n\n const createReply = useCallback(\n ({content, namedUsers, commentId, action, uri}) => {\n setSending(true);\n\n const data = {\n content,\n action,\n namedUsers\n };\n\n return createReplyRequest({collaborationPath, tenant, commentId, data})\n .then(([reply]) => updateReplyInState(reply, uri, commentId))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant, updateReplyInState]\n );\n\n const resolveThread = useCallback(\n ({commentId, uri}) => {\n createReply({content: '', namedUsers: [], commentId, action: 'resolve', uri});\n },\n [createReply]\n );\n\n const reOpenThread = useCallback(\n ({commentId, uri}) => {\n createReply({content: '', namedUsers: [], commentId, action: 'reopen', uri});\n },\n [createReply]\n );\n\n const clearCurrentComment = useCallback(() => {\n setCurrentComment(null);\n }, []);\n\n const getCommentState = (uri: string, commentUri: string) => pathOr({}, [uri, commentUri], collaborationStateMap);\n\n const clearCommentState = (uri: string, commentUri: string) =>\n setCollaborationStateMap(dissocPath([uri, commentUri]));\n\n const updateCommentState = (uri: string, commentUri: string, newState: CommentState) => {\n setCollaborationStateMap((prevCollaborationStateMap) => {\n const pathToCommentState = [uri, commentUri];\n const prevCommentState = path(pathToCommentState, prevCollaborationStateMap);\n return assocPath(pathToCommentState, mergeRight(prevCommentState, newState), prevCollaborationStateMap);\n });\n };\n\n return {\n clearCurrentComment,\n comments,\n commentsMap,\n getCommentState,\n updateCommentState,\n clearCommentState,\n createComment,\n createReply,\n currentComment,\n deleteComment,\n editComment,\n getComment,\n getComments,\n getCommentsCount,\n loading,\n objectTypes,\n pageToken,\n reOpenThread,\n resolveThread,\n sending,\n deleteReply,\n editReply\n };\n};\n","import {useCallback} from 'react';\nimport {Directions, getDirectionalLabelFromObject} from '@reltio/mdm-sdk';\nimport {ascend, curry, evolve, pipe, prop, propEq, propOr, tap} from 'ramda';\n\nexport const useRelationTypeSelector = ({reversedContextLabels}) => {\n const getRelationTypesOptions = useCallback(\n (inRelations, outRelations) => {\n const labelsMap = {};\n const addLabelInMap = (label) => (labelsMap[label] = propOr(0, label, labelsMap) + 1);\n const getDirectionalLabel = pipe(getDirectionalLabelFromObject, tap(addLabelInMap));\n const byLabel = ascend(prop('label'));\n\n const prepareRelation = curry((direction, {uri, label, startObject, endObject}) => {\n const dirObject =\n direction === (reversedContextLabels ? Directions.OUT : Directions.IN) ? startObject : endObject;\n return {\n label: {directionalLabel: getDirectionalLabel(dirObject), typeLabel: label},\n value: `${uri},${direction}`,\n startObject,\n endObject\n };\n });\n\n return inRelations\n .map(prepareRelation(Directions.IN))\n .concat(outRelations.map(prepareRelation(Directions.OUT)))\n .map(\n evolve({\n label: ({directionalLabel, typeLabel}) => {\n return directionalLabel\n ? labelsMap[directionalLabel] > 1\n ? `${directionalLabel} (${typeLabel})`\n : directionalLabel\n : typeLabel;\n }\n })\n )\n .sort(byLabel);\n },\n [reversedContextLabels]\n );\n\n const fromEditorValue = useCallback(\n (inRelationTypes, outRelationTypes) => (relation) => {\n const [uri, direction] = relation.value.split(',');\n const type = (direction === Directions.IN ? inRelationTypes : outRelationTypes).find(propEq('uri', uri));\n return {type, direction};\n },\n []\n );\n\n const toEditorValue = useCallback(\n (relation, relationsTypesOptions) =>\n relationsTypesOptions.find(propEq('value', `${relation.relationType},${relation.direction}`)),\n []\n );\n\n return {\n getRelationTypesOptions,\n fromEditorValue,\n toEditorValue\n };\n};\n"],"names":["useStyles","makeStyles","theme","button","padding","fill","palette","primary","main","fillOpacity","iconButton","startIcon","marginLeft","marginRight","width","height","alignItems","label","whiteSpace","fontSize","lineHeight","letterSpacing","overflowStyle","overflow","textOverflow","menuIcon","menuItem","minHeight","menuText","color","text","ActionButtonMode","ActionButton","forwardRef","ref","className","mode","disabled","icon","Icon","onClick","noop","onMenuClose","otherProps","styles","SmallIconButton","classnames","size","tooltipTitle","showForDisabled","Button","classes","ExpandedValueTooltip","value","handleClick","MenuItem","root","Typography","getButtonView","displayName","pagination","display","justifyContent","borderTop","boxShadow","caption","selectRoot","select","textAlign","actions","BasicTablePagination","count","rowsPerPageOptions","page","onChangePage","rowsPerPage","onChangeRowsPerPage","basicTableRef","labelRowsPerPage","resetScrollbarPosition","useCallback","pathOr","identity","handleChangePage","handleChangeRowsPerPage","TablePagination","component","i18n","labelDisplayedRows","from","to","fromRow","toRow","countRows","pipe","nthArg","getValue","propTypes","PropTypes","current","React","paper","title","fontWeight","content","contentText","marginBottom","actionButtons","paddingTop","discardButton","open","onCancel","cancelCaption","onDiscard","discardCaption","onSave","saveCaption","disabledSave","Dialog","onClose","paperScrollPaper","DialogTitle","DialogContent","DialogContentText","DialogActions","disableSpacing","autoFocus","ConnectionRelationTypeSelector","relation","inRelationTypes","outRelationTypes","onChange","applyFirstByDefault","reversedContextLabels","getRelationTypesOptions","fromEditorValue","toEditorValue","useRelationTypeSelector","relationsTypesOptions","useMemo","handleChange","hasValue","relationType","useEffect","length","options","ConnectionRelationType","RelationTypeType","borderRadius","flexShrink","entity","metadata","useSelector","mdmModule","entityTypeUri","type","entityType","getEntityType","entityTypeColor","getPropWithInheritance","entityTypeLabel","getEntityTypeLabel","placement","style","backgroundColor","utils","profileBandWrapper","profileBand","inactive","background","inactiveBackground","profileIcon","imageProfileIcon","profileInfo","flexDirection","flex","badge","wordBreak","marginTop","secondaryLabel","businessCard","secondary","specialInfo","flexWrap","entityId","cursor","textDecoration","children","renderLabel","showEntityId","handleCopyEntityIdToClipboard","navigator","clipboard","writeText","getEntityId","isNil","getLabel","businessCardText","getBusinessCardAttributesText","isActive","isActiveObject","entityUri","uri","EntityAvatar","key","avatarClassName","imageClassName","variant","EntityTypeBadge","isTempUri","Tooltip","container","link","LinkWithTooltip","withTooltip","Link","ProfileBandNavigationWidget","total","onPrev","onNext","onSearchResultsClick","isPrevDisabled","isNextDisabled","labels","useContext","LabelsContext","OPEN_RESULTS","SEARCH_RESULT","SEARCH_RESULTS","NEXT_PROFILE","PREVIOUS_PROFILE","mergeRight","underline","formatNumberAsMetric","KeyboardArrowLeft","KeyboardArrowRight","MainSearchProvider","constructor","data","query","sortField","sortOrder","tenant","searchTenant","apiPath","dtssPath","globalSearchRequestOptions","isDT","this","getQueryFilter","rawFilter","getEntities","filters","requestFilters","requestOptions","sort","order","scoreEnabled","getFilteredEntitiesFromDataTenant","customerTenant","dataTenant","getFilteredEntities","checkEntity","filter","fieldName","values","offset","max","then","entities","requestEntities","requestTotal","getTotalFromDataTenant","getTotals","json","GraphSearchProvider","searchBody","allFilters","getGraphSearchEntities","buildFilterQueryString","getGraphSearchCount","getNewUris","cache","map","prop","reject","includes","useSearchNavigation","safeCheckEntityPromise","useSafePromise","safeRequestTotalPromise","safeRequestEntitiesPromise","index","state","viewId","ViewIdContext","dispatch","useDispatch","loading","setLoading","useState","searchProvider","getSearchProvider","updateNavigationData","mdmModuleSearch","openEntity","preparedUri","getEntityUriForLink","mdmModuleUi","source","perspectiveId","listenToActions","useActionsHook","stopListeningActions","action","searchNavigationData","payload","winnerUri","losersUris","updatedSearchNavigationData","winnerIndex","indexOf","uriIndex","splice","replaceWithWinnerUri","losersInCache","updatedTotal","updatedIndex","loser","updatedCache","removeLosersUris","applyMergeToSearchNavigationData","requestNextPage","newIndex","newUris","concat","finally","requestPrevPage","Math","min","stepForwardWithCheck","cacheIndex","isExists","clearedCache","stepBackWithCheck","ProfileBandNavigation","isViewMode","useSearchNavigationVisibility","image","info","thirdRow","entityIdLabel","entityIdValue","ProfileCardContent","secondaryLabelClass","labelClass","EntityUriLink","showOnExceededHeight","transform","wave","position","top","left","right","bottom","animation","avatar","ProfileCardPlaceholder","memo","containerClass","active","fade","buttonWrapper","margin","SideButtonsPanel","buttonsProps","activeIndexId","onButtonClick","iconButtonClasses","id","buttonProps","contentWrapper","transition","transitions","create","duration","enteringScreen","SidePanel","useOptionStyles","textItem","primaryTextItem","flexBasis","maxWidth","secondaryTextItem","icons","iconTop","zIndex","iconBottom","RelationOption","innerRef","innerProps","selectOption","startObject","endObject","objectType","EntityTypeIcon","RelationTypeSelector","TextFieldProps","textFieldProps","defaultTo","DropDownSelector","components","Option","ValueType","slice","cancelButton","historyEvent","profile","aStamp","ActionsHookContext","createContext","ActionsHookProvider","hook","Provider","Error","filterReplies","replyId","replies","reply","getUpdatedReplies","comment","changedReplyIndex","findIndex","newReplies","defaultObjectIds","catchErrorInRequest","e","console","error","useCollaboration","objectIds","objectTypes","enabled","mdm","collaborationPath","isCollaborationEnabled","pageToken","setPageToken","comments","setComments","commentsMap","setCommentsMap","currentComment","setCurrentComment","sending","setSending","collaborationStateMap","setCollaborationStateMap","addCommentsToCommentsMap","currentCommentsMap","getCommentsCount","shouldResetCommentsMap","onError","warn","getCommentsCountRequest","andThen","props","fromPairs","otherwise","uris","getComments","relatedObjectUri","getCommentsRequest","items","nextPageToken","prevComments","uniqBy","catch","getComment","commentId","getCommentRequest","createComment","namedUsers","relatedObjectUris","objectId","visibility","permanentLink","window","location","href","encodeURIComponent","createCommentRequest","prevCommentsMap","status","addCommentToState","editComment","updateCommentRequest","when","propEq","always","updateCommentInState","deleteComment","deleteCommentRequest","c","deleteCommentFromState","updateReplyInState","isDeleteReply","newStatus","prevCurrentComment","deleteReply","deleteReplyRequest","editReplyInState","editReply","updateReplyRequest","createReply","createReplyRequest","resolveThread","reOpenThread","clearCurrentComment","getCommentState","commentUri","updateCommentState","newState","prevCollaborationStateMap","pathToCommentState","prevCommentState","path","assocPath","clearCommentState","dissocPath","inRelations","outRelations","labelsMap","getDirectionalLabel","getDirectionalLabelFromObject","tap","propOr","byLabel","ascend","prepareRelation","curry","direction","dirObject","Directions","directionalLabel","typeLabel","evolve","split","find"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"9481.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/ActionButton/styles.ts","webpack://@reltio/remotes/../components/src/components/ActionButton/ActionButton.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/BasicTablePagination.js","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/ConfirmationDialog.tsx","webpack://@reltio/remotes/../components/src/components/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.js","webpack://@reltio/remotes/../components/src/components/EntityTypeBadge/styles.ts","webpack://@reltio/remotes/../components/src/components/EntityTypeBadge/EntityTypeBadge.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBand/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileBand/ProfileBand.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/ProfileBandNavigationWidget.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/searchProviders/MainSearchProvider.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/searchProviders/GraphSearchProvider.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/helpers/index.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/hooks/useSearchNavigation.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/searchProviders/SearchProviderFactory.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/ProfileBandNavigation.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/hooks/useSearchNavigationVisibility.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardContent/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardContent/ProfileCardContent.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardPlaceholder/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardPlaceholder/ProfileCardPlaceholder.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCard.tsx","webpack://@reltio/remotes/../components/src/components/SideIconPanel/styles.ts","webpack://@reltio/remotes/../components/src/components/SideIconPanel/SideButtonsPanel.tsx","webpack://@reltio/remotes/../components/src/components/SidePanel/styles.ts","webpack://@reltio/remotes/../components/src/components/SidePanel/SidePanel.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/RelationTypeSelector/components/styles.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/RelationTypeSelector/components/RelationOption.js","webpack://@reltio/remotes/../components/src/components/attributes/editMode/RelationTypeSelector/RelationTypeSelector.js","webpack://@reltio/remotes/../components/src/components/history/ProfileBandHistory/styles.ts","webpack://@reltio/remotes/../components/src/components/history/ProfileBandHistory/ProfileBandHistory.tsx","webpack://@reltio/remotes/../components/src/contexts/ActionsHookContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/EntityLoadingIndicationContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/LabelsContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useCollaboration.ts","webpack://@reltio/remotes/../components/src/hooks/useRelationTypeSelector.js"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n button: {\n padding: '9px 16px 9px 12px',\n '& svg g path, & svg path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n }\n },\n iconButton: {\n '& svg g path, & svg path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n }\n },\n startIcon: {\n marginLeft: 0,\n marginRight: '8px',\n width: '18px',\n height: '18px',\n alignItems: 'center'\n },\n label: {\n whiteSpace: 'nowrap',\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: 0\n },\n overflowStyle: {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n },\n menuIcon: {\n marginRight: '12px'\n },\n menuItem: {\n minHeight: '28px',\n padding: '2px 16px 2px 12px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n }\n}));\n","import React, {forwardRef} from 'react';\nimport classnames from 'classnames';\nimport {Button as Button} from '@material-ui/core';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {useStyles} from './styles';\nimport {noop} from '../../core';\nimport ExpandedValueTooltip from '../ExpandedValueTooltip/ExpandedValueTooltip';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\n\nexport enum ActionButtonMode {\n iconButton = 'iconButton',\n button = 'button',\n menuItem = 'menuItem'\n}\n\nexport type Props = {\n className?: string;\n disabled?: boolean;\n icon: React.ElementType;\n label: string;\n mode: ActionButtonMode;\n onClick: () => void;\n onMenuClose?: () => void;\n};\n\nexport const ActionButton = forwardRef<HTMLLIElement, Props>(\n (\n {\n className,\n mode = ActionButtonMode.iconButton,\n label,\n disabled,\n icon: Icon,\n onClick = noop,\n onMenuClose = noop,\n ...otherProps\n }: Props,\n ref: React.Ref<HTMLLIElement>\n ) => {\n const styles = useStyles();\n\n const getButtonView = () => {\n switch (mode) {\n case 'iconButton': {\n return (\n <SmallIconButtonWithTooltip\n disabled={disabled}\n className={classnames(styles.iconButton, className)}\n size=\"S\"\n tooltipTitle={label}\n onClick={onClick}\n icon={Icon}\n showForDisabled\n {...otherProps}\n />\n );\n }\n case 'button': {\n return (\n <Button\n className={classnames(styles.button, className)}\n disabled={disabled}\n startIcon={<Icon />}\n onClick={onClick}\n color=\"primary\"\n classes={{startIcon: styles.startIcon, label: styles.label}}\n {...otherProps}\n >\n <ExpandedValueTooltip value={label}>\n <div className={styles.overflowStyle}>{label}</div>\n </ExpandedValueTooltip>\n </Button>\n );\n }\n case 'menuItem': {\n const handleClick = () => {\n onMenuClose();\n onClick();\n };\n return (\n <MenuItem\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n {...otherProps}\n >\n <>\n <Icon className={styles.menuIcon} />\n <Typography classes={{root: styles.menuText}}>{label}</Typography>\n </>\n </MenuItem>\n );\n }\n }\n };\n\n return getButtonView();\n }\n);\n\nActionButton.displayName = 'ActionButton';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n pagination: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n height: '56px',\n borderTop: '1px solid rgba(0,0,0,0.12)',\n boxShadow: 'none'\n },\n caption: {\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'\n }\n});\n","import PropTypes from 'prop-types';\nimport React, {useCallback} from 'react';\nimport classnames from 'classnames';\nimport {TablePagination as TablePagination} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {getValue} from '../../../core/utils';\nimport {nthArg, pipe, pathOr, identity} from 'ramda';\nimport {useStyles} from './styles';\n\nconst BasicTablePagination = ({\n classes = {},\n count,\n rowsPerPageOptions,\n page,\n onChangePage,\n rowsPerPage,\n onChangeRowsPerPage,\n basicTableRef,\n labelRowsPerPage\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 const styles = useStyles();\n const resetScrollbarPosition = useCallback(() => {\n pathOr(identity, ['current', 'resetScrollbarPosition'], basicTableRef)();\n }, [basicTableRef]);\n const handleChangePage = useCallback(\n (value) => {\n onChangePage(value);\n resetScrollbarPosition();\n },\n [onChangePage, resetScrollbarPosition]\n );\n const handleChangeRowsPerPage = useCallback(\n (value) => {\n onChangePage(0);\n onChangeRowsPerPage(value);\n resetScrollbarPosition();\n },\n [onChangePage, onChangeRowsPerPage, resetScrollbarPosition]\n );\n return (\n <TablePagination\n classes={{\n ...classes,\n root: classnames(styles.pagination, classes.root),\n select: classnames(styles.select, classes.select),\n caption: styles.caption,\n selectRoot: styles.selectRoot,\n actions: styles.actions\n }}\n component=\"div\"\n labelRowsPerPage={labelRowsPerPage || i18n.text('Rows per page:')}\n labelDisplayedRows={labelDisplayedRows}\n count={count}\n rowsPerPageOptions={rowsPerPageOptions}\n page={page}\n onChangePage={pipe(nthArg(1), handleChangePage)}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={pipe(getValue, handleChangeRowsPerPage)}\n />\n );\n};\n\nBasicTablePagination.propTypes = {\n classes: PropTypes.object,\n rowsPerPageOptions: PropTypes.arrayOf(PropTypes.number),\n count: PropTypes.number,\n page: PropTypes.number,\n onChangePage: PropTypes.func,\n rowsPerPage: PropTypes.number,\n onChangeRowsPerPage: PropTypes.func,\n basicTableRef: PropTypes.shape({current: PropTypes.object}),\n labelRowsPerPage: PropTypes.string\n};\n\nexport default React.memo(BasicTablePagination);\n","import {makeStyles} from '@material-ui/core/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 as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogContentText as DialogContentText} from '@material-ui/core';\nimport {DialogTitle as DialogTitle} from '@material-ui/core';\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 React, {useMemo, useCallback, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {ConnectionRelationType, RelationTypeType} from '@reltio/mdm-sdk';\nimport {identity, pipe} from 'ramda';\nimport {useRelationTypeSelector} from '../../hooks';\nimport RelationTypeSelector from '../attributes/editMode/RelationTypeSelector/RelationTypeSelector';\n\nconst ConnectionRelationTypeSelector = ({\n relation = {},\n inRelationTypes = [],\n outRelationTypes = [],\n onChange = identity,\n applyFirstByDefault = false,\n reversedContextLabels = false,\n ...otherProps\n}) => {\n const {getRelationTypesOptions, fromEditorValue, toEditorValue} = useRelationTypeSelector({reversedContextLabels});\n\n const relationsTypesOptions = useMemo(() => getRelationTypesOptions(inRelationTypes, outRelationTypes), [\n getRelationTypesOptions,\n inRelationTypes,\n outRelationTypes\n ]);\n\n const handleChange = useCallback(pipe(fromEditorValue(inRelationTypes, outRelationTypes), onChange), [\n fromEditorValue,\n inRelationTypes,\n outRelationTypes,\n onChange\n ]);\n\n const hasValue = !!relation.relationType;\n\n useEffect(() => {\n if (applyFirstByDefault && relationsTypesOptions.length && !hasValue) {\n handleChange(relationsTypesOptions[0]);\n }\n }, [relationsTypesOptions, applyFirstByDefault, handleChange, hasValue]);\n\n return (\n <RelationTypeSelector\n value={toEditorValue(relation, relationsTypesOptions)}\n options={relationsTypesOptions}\n onChange={handleChange}\n {...otherProps}\n />\n );\n};\n\nConnectionRelationTypeSelector.propTypes = {\n className: PropTypes.string,\n relation: ConnectionRelationType,\n inRelationTypes: PropTypes.arrayOf(RelationTypeType),\n outRelationTypes: PropTypes.arrayOf(RelationTypeType),\n applyFirstByDefault: PropTypes.bool,\n reversedContextLabels: PropTypes.bool,\n onChange: PropTypes.func\n};\n\nexport default ConnectionRelationTypeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n 'entityType-overflow': {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n\n 'entityType-small': {\n padding: '1px 4px',\n fontSize: '10px',\n lineHeight: 'normal',\n marginRight: '12px',\n borderRadius: '2px',\n flexShrink: 0\n },\n 'entityType-medium': {\n padding: '2px 8px 3px',\n borderRadius: '2px',\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px',\n marginRight: '16px',\n flexShrink: 0\n }\n});\n\nexport default useStyles;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {getEntityType, getEntityTypeLabel, getPropWithInheritance, theme, utils, Entity} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport ExpandedValueTooltip from '../ExpandedValueTooltip/ExpandedValueTooltip';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n className?: string;\n size?: 'small' | 'medium';\n};\n\nconst EntityTypeBadge = ({entity, className, size = 'small'}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityTypeUri = entity.type;\n const entityType = getEntityType(metadata, entityTypeUri) || {};\n const entityTypeColor = getPropWithInheritance(metadata, entityType, 'typeColor') || theme.palette.primary.main;\n const entityTypeLabel = getEntityTypeLabel(metadata, entity);\n\n return (\n <ExpandedValueTooltip value={entityTypeLabel} placement=\"top\">\n <Typography\n style={{\n backgroundColor: entityTypeColor,\n color: utils.Colors.getColor(entityTypeColor) ? '#FFFFFF' : '#212121'\n }}\n className={classnames(styles[`entityType-${size}`], styles['entityType-overflow'], className)}\n component=\"div\"\n >\n {entityTypeLabel}\n </Typography>\n </ExpandedValueTooltip>\n );\n};\n\nexport default EntityTypeBadge;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string}) => ({\n profileBandWrapper: {\n // especially for IE (overflow fix)\n flexShrink: 0\n },\n profileBand: {\n display: 'flex',\n padding: '16px 12px 16px 16px',\n alignItems: 'flex-start',\n backgroundColor: '#fff',\n boxShadow: '0px 1px 0px rgba(0, 0, 0, 0.12)',\n marginBottom: '1px',\n '&:after': {\n // IE workaround for minHeight and centering items\n content: '\"\"',\n minHeight: 'inherit',\n fontSize: 0\n }\n },\n inactive: {\n background: theme.inactiveBackground\n },\n profileIcon: {\n marginRight: '12px'\n },\n imageProfileIcon: {\n width: '48px',\n height: '48px'\n },\n profileInfo: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 50%'\n },\n badge: {},\n label: {\n lineHeight: '1.2',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary,\n wordBreak: 'break-word',\n\n '&+ $specialInfo': {\n marginTop: '4px'\n }\n },\n secondaryLabel: {\n display: 'inline-flex',\n color: theme.palette.text.primary,\n marginTop: '2px',\n lineHeight: '16px',\n fontSize: '14px',\n fontWeight: 400,\n\n '&+ $businessCard': {\n marginLeft: '12px'\n }\n },\n businessCard: {\n color: theme.palette.text.secondary,\n display: 'inline-flex',\n fontSize: '14px',\n marginTop: '4px',\n lineHeight: '1.2'\n },\n specialInfo: {\n display: 'flex',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n width: '100%',\n marginTop: '8px'\n },\n entityType: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n entityId: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n}));\n\nexport default useStyles;\n","import React, {ReactNode, useCallback} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {isNil, identity} from 'ramda';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {getLabel, isActiveObject, getBusinessCardAttributesText, getEntityId, isTempUri, Entity} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport EntityAvatar from '../EntityAvatar/EntityAvatar';\nimport EntityTypeBadge from '../EntityTypeBadge/EntityTypeBadge';\n\nimport useStyles from './styles';\n\ntype Props = {\n className?: string;\n entity?: Entity;\n children?: ReactNode;\n classes?: Partial<ReturnType<typeof useStyles>>;\n renderLabel?: (label: string) => React.ReactNode;\n};\n\nconst ProfileBand = ({className, entity, children, classes, renderLabel = identity}: Props) => {\n const styles = useStyles({classes});\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const showEntityId = useSelector(mdmModule.selectors.getShowEntityId);\n const handleCopyEntityIdToClipboard = useCallback(() => {\n navigator.clipboard.writeText(getEntityId(entity));\n }, [entity]);\n\n if (isNil(entity)) {\n return null;\n }\n\n const label = getLabel(entity.label);\n const secondaryLabel = entity.secondaryLabel;\n const businessCardText = getBusinessCardAttributesText(metadata, entity);\n const isActive = isActiveObject(entity);\n const entityUri = entity.uri;\n const entityId = getEntityId(entity);\n return (\n <div className={classnames(styles.profileBandWrapper, className)}>\n <div\n className={classnames(styles.profileBand, {\n [styles.inactive]: !isActive\n })}\n data-entity-uri={entityUri}\n >\n <EntityAvatar\n key={entity.uri}\n entity={entity}\n avatarClassName={styles.profileIcon}\n imageClassName={styles.imageProfileIcon}\n />\n <div className={styles.profileInfo}>\n <div>\n <Typography variant=\"h6\" className={styles.label}>\n {renderLabel(label)}\n </Typography>\n {secondaryLabel && (\n <Typography variant=\"subtitle2\" className={styles.secondaryLabel}>\n {secondaryLabel}\n </Typography>\n )}\n {businessCardText && (\n <Typography variant=\"subtitle1\" className={styles.businessCard}>\n {businessCardText}\n </Typography>\n )}\n </div>\n <div className={styles.specialInfo}>\n <div className={styles.entityType}>\n <EntityTypeBadge entity={entity} size=\"medium\" className={styles.badge} />\n {!isTempUri(entityUri) && showEntityId && (\n <Tooltip title={i18n.text('Copy to clipboard')}>\n <Typography\n display=\"inline\"\n variant=\"body2\"\n className={styles.entityId}\n onClick={handleCopyEntityIdToClipboard}\n >\n {i18n.text('Entity ID')}: {entityId}\n </Typography>\n </Tooltip>\n )}\n </div>\n </div>\n </div>\n {children && <div>{children}</div>}\n </div>\n </div>\n );\n};\n\nexport default ProfileBand;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n alignItems: 'center'\n },\n link: {\n whiteSpace: 'nowrap',\n marginRight: '9px'\n }\n});\n","import React, {useContext} from 'react';\nimport {Link as Link} from '@material-ui/core';\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {mergeRight} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {LabelsContext} from '../../contexts/LabelsContext';\nimport {withTooltip} from '../../HOCs';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\n\nimport {useStyles} from './styles';\n\nconst LinkWithTooltip = withTooltip<typeof Link, {component: string}>(Link);\n\ntype Props = {\n className?: string;\n total?: number;\n onPrev?: () => void;\n onNext?: () => void;\n onSearchResultsClick?: () => void;\n isPrevDisabled?: boolean;\n isNextDisabled?: boolean;\n};\n\nconst ProfileBandNavigationWidget = ({\n className,\n total = 0,\n onPrev,\n onNext,\n onSearchResultsClick,\n isPrevDisabled,\n isNextDisabled\n}: Props) => {\n const styles = useStyles();\n const labels = useContext(LabelsContext);\n const {OPEN_RESULTS, SEARCH_RESULT, SEARCH_RESULTS, NEXT_PROFILE, PREVIOUS_PROFILE} = mergeRight(\n {\n OPEN_RESULTS: i18n.text('Go to search results'),\n SEARCH_RESULT: i18n.text('Search result'),\n SEARCH_RESULTS: i18n.text('Search results'),\n PREVIOUS_PROFILE: i18n.text('Go to previous profile'),\n NEXT_PROFILE: i18n.text('Go to next profile')\n },\n labels?.profileBand ?? {}\n );\n return (\n <div className={classnames(styles.container, className)}>\n <LinkWithTooltip\n className={styles.link}\n component=\"button\"\n variant=\"caption\"\n onClick={onSearchResultsClick}\n underline=\"none\"\n tooltipTitle={OPEN_RESULTS}\n >\n {formatNumberAsMetric(total, 1000000)} {total === 1 ? SEARCH_RESULT : SEARCH_RESULTS}\n </LinkWithTooltip>\n <SmallIconButtonWithTooltip\n size=\"L\"\n icon={KeyboardArrowLeft}\n tooltipTitle={PREVIOUS_PROFILE}\n onClick={onPrev}\n disabled={isPrevDisabled}\n showForDisabled\n />\n <SmallIconButtonWithTooltip\n size=\"L\"\n icon={KeyboardArrowRight}\n tooltipTitle={NEXT_PROFILE}\n onClick={onNext}\n disabled={isNextDisabled}\n showForDisabled\n />\n </div>\n );\n};\n\nexport {ProfileBandNavigationWidget, LinkWithTooltip};\n","import {\n Entity,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotals,\n getTotalFromDataTenant,\n TotalResponse\n} from '@reltio/mdm-sdk';\n\nimport {SearchProvider} from './SearchProvider';\n\nexport class MainSearchProvider implements SearchProvider {\n private readonly query;\n private readonly sortField;\n private readonly sortOrder;\n private readonly tenant;\n private readonly searchTenant;\n private readonly apiPath;\n private readonly dtssPath;\n private readonly globalSearchRequestOptions;\n\n constructor({\n data: {query, sortField, sortOrder},\n tenant,\n searchTenant,\n apiPath,\n dtssPath,\n globalSearchRequestOptions\n }) {\n this.query = query;\n this.sortField = sortField;\n this.sortOrder = sortOrder;\n this.tenant = tenant;\n this.searchTenant = searchTenant;\n this.apiPath = apiPath;\n this.dtssPath = dtssPath;\n this.globalSearchRequestOptions = globalSearchRequestOptions;\n }\n\n private isDT = () => this.tenant !== this.searchTenant;\n\n private getQueryFilter = () => ({rawFilter: this.query});\n\n private getEntities = (filters = [], options = {}): Promise<Entity[]> => {\n const requestFilters = [this.getQueryFilter(), ...filters];\n const requestOptions = {\n ...this.globalSearchRequestOptions,\n sort: this.sortField,\n order: this.sortOrder,\n select: 'uri,label,type',\n scoreEnabled: false,\n ...options\n };\n return this.isDT()\n ? getFilteredEntitiesFromDataTenant({\n filters: requestFilters,\n options: requestOptions,\n customerTenant: this.tenant,\n dataTenant: this.searchTenant,\n dtssPath: this.dtssPath\n })\n : getFilteredEntities(requestFilters, requestOptions);\n };\n\n checkEntity = (uri): Promise<boolean> => {\n return this.getEntities(\n [\n {\n filter: 'equals',\n fieldName: 'uri',\n values: [uri]\n }\n ],\n {offset: 0, max: 1}\n ).then((entities) => {\n return entities && entities.length > 0 && entities[0].uri === uri;\n });\n };\n\n requestEntities = (max, offset): Promise<Entity[]> => {\n return this.getEntities([], {offset, max});\n };\n\n requestTotal = (): Promise<number> => {\n const filters = [this.getQueryFilter()];\n const options = this.globalSearchRequestOptions;\n return (this.isDT()\n ? getTotalFromDataTenant({\n filters,\n options,\n customerTenant: this.tenant,\n dataTenant: this.searchTenant,\n dtssPath: this.dtssPath\n })\n : getTotals(filters, options)\n ).then((json) => (json as TotalResponse).total);\n };\n}\n","import {\n Entity,\n getGraphSearchCount,\n getGraphSearchEntities,\n getEntityId,\n buildFilterQueryString\n} from '@reltio/mdm-sdk';\n\nimport {SearchProvider} from './SearchProvider';\n\nexport class GraphSearchProvider implements SearchProvider {\n private readonly searchBody;\n private readonly tenant;\n private readonly apiPath;\n\n constructor({data, tenant, apiPath}) {\n this.searchBody = data;\n this.tenant = tenant;\n this.apiPath = apiPath;\n }\n\n private getEntities = (filters = [], options = {}): Promise<Entity[]> => {\n const allFilters = [\n {\n rawFilter: this.searchBody.filter\n },\n ...filters\n ];\n return getGraphSearchEntities({\n apiPath: this.apiPath,\n tenant: this.tenant,\n searchBody: {\n ...this.searchBody,\n filter: filters.length ? buildFilterQueryString()(allFilters) : this.searchBody.filter\n },\n options\n });\n };\n\n checkEntity = (uri): Promise<boolean> => {\n return this.getEntities(\n [\n {\n filter: 'equals',\n fieldName: 'id',\n values: [getEntityId({uri})]\n }\n ],\n {from: 0, max: 1}\n ).then((entities) => {\n return entities && entities.length > 0 && entities[0].uri === uri;\n });\n };\n\n requestEntities = (max, from): Promise<Entity[]> => {\n return this.getEntities([], {from, max});\n };\n\n requestTotal = (): Promise<number> => {\n return getGraphSearchCount({\n apiPath: this.apiPath,\n tenant: this.tenant,\n searchBody: this.searchBody\n }).then((json) => json.count);\n };\n}\n","import {SearchNavigationData} from '../types';\n\ntype Payload = {\n winnerUri: string;\n losersUris: string[];\n};\n\nconst replaceWithWinnerUri = (searchNavigationData: SearchNavigationData, winnerUri: string): SearchNavigationData => {\n let {uri, index, total, cache} = searchNavigationData;\n if (winnerUri && winnerUri !== uri) {\n if (cache && cache.includes(uri)) {\n cache = [...cache];\n const winnerIndex = cache.indexOf(winnerUri);\n let uriIndex = cache.indexOf(uri);\n if (winnerIndex >= 0) {\n cache.splice(winnerIndex, 1);\n total--;\n if (winnerIndex < uriIndex) {\n index--;\n }\n }\n uriIndex = cache.indexOf(uri);\n cache.splice(uriIndex, 1, winnerUri);\n }\n uri = winnerUri;\n return {\n ...searchNavigationData,\n uri,\n index,\n cache,\n total\n };\n }\n return searchNavigationData;\n};\n\nconst removeLosersUris = (searchNavigationData: SearchNavigationData, losersUris: string[]): SearchNavigationData => {\n const {cache = [], index, total, uri} = searchNavigationData;\n const losersInCache = losersUris.filter((uri) => cache.includes(uri));\n if (losersInCache.length === 0) {\n return searchNavigationData;\n }\n const updatedTotal = total - losersInCache.length;\n const uriIndex = cache.indexOf(uri);\n let updatedIndex = index;\n for (const loser of losersInCache) {\n const loserIndex = cache.indexOf(loser);\n if (loserIndex < uriIndex) {\n updatedIndex--;\n }\n }\n const updatedCache = cache.filter((uri) => !losersInCache.includes(uri));\n\n return {\n ...searchNavigationData,\n cache: updatedCache,\n index: updatedIndex,\n total: updatedTotal\n };\n};\n\nexport const applyMergeToSearchNavigationData = (\n searchNavigationData: SearchNavigationData,\n payload: Payload\n): SearchNavigationData => {\n const {winnerUri, losersUris = []} = payload;\n const updatedSearchNavigationData = replaceWithWinnerUri(searchNavigationData, winnerUri);\n return removeLosersUris(updatedSearchNavigationData, losersUris);\n};\n","import {useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {search as mdmModuleSearch, ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {getEntityUriForLink} from '@reltio/mdm-sdk';\nimport {map, pipe, prop, reject} from 'ramda';\nimport {useEntityLoadingIndication, useActionsHook, ViewIdContext} from '../../../contexts';\nimport {useSafePromise} from '../../../hooks';\nimport {getSearchProvider} from '../searchProviders/SearchProviderFactory';\nimport {SearchNavigationData, SearchProviderData} from '../types';\nimport {applyMergeToSearchNavigationData} from '../helpers';\n\nexport const REQUEST_PAGE_SIZE = 15;\n\nconst getNewUris = (entities, cache) =>\n pipe(\n map(prop('uri')),\n reject((uri) => cache.includes(uri))\n )(entities);\n\nconst useSearchNavigation = () => {\n const safeCheckEntityPromise = useSafePromise();\n const safeRequestTotalPromise = useSafePromise();\n const safeRequestEntitiesPromise = useSafePromise();\n const {\n uri,\n index,\n total,\n tenant: searchTenant,\n cache\n } = useSelector<unknown, SearchNavigationData>(mdmModule.selectors.getSearchNavigationData) || {};\n const {type, data} = useSelector<unknown, SearchProviderData>(mdmModule.selectors.getSearchProviderData) || {};\n const tenant = useSelector<unknown, string>(mdmModule.selectors.getTenant);\n const apiPath = useSelector<unknown, string>(mdmModule.selectors.getApiPath);\n const dtssPath = useSelector<unknown, string>(mdmModule.selectors.getDtssPath);\n const globalSearchRequestOptions = useSelector((state) =>\n mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n );\n const {updateEntitiesNavigationLoadingState} = useEntityLoadingIndication();\n const viewId = useContext(ViewIdContext);\n const dispatch = useDispatch();\n const [loading, setLoading] = useState<boolean>(false);\n\n const searchProvider = useMemo(\n () => getSearchProvider(type, {data, tenant, searchTenant, apiPath, dtssPath, globalSearchRequestOptions}),\n [type, data, tenant, searchTenant, apiPath, dtssPath, globalSearchRequestOptions]\n );\n\n const updateNavigationData = useCallback(\n (data: Partial<SearchNavigationData>) => {\n dispatch(mdmModuleSearch.actions.updateSearchNavigationDataFields(data));\n },\n [dispatch]\n );\n\n const openEntity = useCallback(\n (uri: string) => {\n const preparedUri = tenant !== searchTenant ? getEntityUriForLink({uri, dataTenant: searchTenant}) : uri;\n dispatch(mdmModuleUi.actions.openEntity({uri: preparedUri, viewId, source: 'navigation'}));\n },\n [dispatch, viewId, tenant, searchTenant]\n );\n\n const onSearchResultsClick = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: type, viewId}));\n }, [dispatch, type, viewId]);\n\n useEffect(() => {\n if (index >= total) {\n updateNavigationData({\n index: total - 1\n });\n } else if (index < 0) {\n updateNavigationData({\n index: 0\n });\n }\n }, [total, index, updateNavigationData]);\n\n const listenToActions = useActionsHook();\n\n useEffect(() => {\n const stopListeningActions = listenToActions((action, state) => {\n switch (action.type) {\n case mdmModuleSearch.constants.UPDATE_SEARCH_NAVIGATION_DATA_ON_MERGE: {\n const searchNavigationData: SearchNavigationData =\n mdmModule.selectors.getSearchNavigationData(state);\n if (searchNavigationData) {\n updateNavigationData(applyMergeToSearchNavigationData(searchNavigationData, action.payload));\n }\n break;\n }\n }\n });\n return () => stopListeningActions();\n }, [listenToActions, updateNavigationData]);\n\n const requestNextPage = useCallback(\n (cache: string[], total: number, index: number): Promise<void> => {\n setLoading(true);\n safeRequestTotalPromise(searchProvider.requestTotal()).then((total) => updateNavigationData({total}));\n\n const newIndex = index + 1;\n return safeRequestEntitiesPromise(searchProvider.requestEntities(REQUEST_PAGE_SIZE, newIndex))\n .then((entities) => {\n if (!entities) {\n return;\n }\n if (entities.length) {\n const newUris = getNewUris(entities, cache);\n if (newUris.length > 0) {\n updateNavigationData({\n cache: cache.concat(newUris),\n uri: newUris[0],\n index: newIndex + entities.length - newUris.length\n });\n openEntity(newUris[0]);\n return;\n } else if (index + entities.length < total - 1) {\n return requestNextPage(cache, total - entities.length, index + entities.length);\n }\n }\n updateNavigationData({\n index: newIndex\n });\n })\n .finally(() => {\n setLoading(false);\n });\n },\n [searchProvider, updateNavigationData, openEntity]\n );\n\n const requestPrevPage = useCallback(\n (cache: string[], index: number): Promise<void> => {\n setLoading(true);\n safeRequestTotalPromise(searchProvider.requestTotal()).then((total) => updateNavigationData({total}));\n\n const newIndex = index - 1;\n const offset = Math.max(0, index - REQUEST_PAGE_SIZE);\n const max = REQUEST_PAGE_SIZE + Math.min(0, index - REQUEST_PAGE_SIZE);\n return safeRequestEntitiesPromise(searchProvider.requestEntities(max, offset))\n .then((entities) => {\n if (!entities) {\n return;\n }\n if (entities.length) {\n const newUris = getNewUris(entities, cache);\n if (newUris.length > 0) {\n updateNavigationData({\n cache: newUris.concat(cache),\n uri: newUris[newUris.length - 1],\n index: newIndex - (entities.length - newUris.length)\n });\n openEntity(newUris[newUris.length - 1]);\n return;\n } else if (index - entities.length > 0) {\n return requestPrevPage(cache, index - entities.length);\n }\n }\n updateNavigationData({\n index: 0\n });\n })\n .finally(() => {\n setLoading(false);\n });\n },\n [searchProvider, updateNavigationData, openEntity]\n );\n\n const stepForwardWithCheck = useCallback(\n (cache: string[], cacheIndex: number, total: number, index: number): Promise<void> | void => {\n if (cacheIndex < cache.length) {\n const uri = cache[cacheIndex];\n setLoading(true);\n return safeCheckEntityPromise(searchProvider.checkEntity(uri))\n .then((isExists) => {\n if (isExists) {\n updateNavigationData({\n index: index + 1,\n uri,\n cache,\n total\n });\n openEntity(uri);\n } else {\n const clearedCache = [...cache];\n clearedCache.splice(cacheIndex, 1);\n return stepForwardWithCheck(clearedCache, cacheIndex, total - 1, index);\n }\n })\n .finally(() => {\n setLoading(false);\n });\n } else if (index >= total - 1) {\n updateNavigationData({\n cache,\n total,\n index: total - 1\n });\n } else {\n return requestNextPage(cache, total, index);\n }\n },\n [searchProvider, updateNavigationData, openEntity, requestNextPage]\n );\n\n const stepBackWithCheck = useCallback(\n (cache: string[], cacheIndex: number, total: number, index: number): Promise<void> | void => {\n if (cacheIndex > -1) {\n const uri = cache[cacheIndex];\n setLoading(true);\n return safeCheckEntityPromise(searchProvider.checkEntity(uri))\n .then((isExists) => {\n if (isExists) {\n updateNavigationData({\n index: index - 1,\n uri,\n cache,\n total\n });\n openEntity(uri);\n } else {\n const clearedCache = [...cache];\n clearedCache.splice(cacheIndex, 1);\n return stepBackWithCheck(clearedCache, cacheIndex - 1, total - 1, index - 1);\n }\n })\n .finally(() => {\n setLoading(false);\n });\n } else if (index <= 0) {\n updateNavigationData({\n index: 0,\n cache,\n total\n });\n } else {\n return requestPrevPage(cache, index);\n }\n },\n [searchProvider, updateNavigationData, openEntity, requestPrevPage]\n );\n\n const onPrev = useCallback(() => {\n if (cache && uri) {\n const cacheIndex = cache.indexOf(uri) - 1;\n stepBackWithCheck(cache, cacheIndex, total, index);\n }\n }, [stepBackWithCheck, cache, uri, total, index]);\n\n const onNext = useCallback(() => {\n if (cache && uri) {\n const cacheIndex = cache.indexOf(uri) + 1;\n stepForwardWithCheck(cache, cacheIndex, total, index);\n }\n }, [stepForwardWithCheck, cache, uri, total, index]);\n\n useEffect(() => {\n updateEntitiesNavigationLoadingState(loading);\n }, [updateEntitiesNavigationLoadingState, loading]);\n\n useEffect(() => {\n return () => updateEntitiesNavigationLoadingState(false);\n }, []);\n\n const isPrevDisabled = loading || index <= 0;\n const isNextDisabled = loading || index >= total - 1;\n return {total, onPrev, onNext, onSearchResultsClick, isPrevDisabled, isNextDisabled};\n};\n\nexport {useSearchNavigation};\n","import {MainSearchProvider} from './MainSearchProvider';\nimport {GraphSearchProvider} from './GraphSearchProvider';\n\nexport const getSearchProvider = (type: string, options) => {\n switch (type) {\n case 'search':\n return new MainSearchProvider(options);\n case 'graphsearch':\n return new GraphSearchProvider(options);\n }\n};\n","import React from 'react';\n\nimport {ProfileBandNavigationWidget} from './ProfileBandNavigationWidget';\nimport {useSearchNavigation} from './hooks/useSearchNavigation';\nimport {useSearchNavigationVisibility} from './hooks/useSearchNavigationVisibility';\n\ntype Props = {\n className?: string;\n};\n\nconst ProfileBandNavigation = ({className}: Props) => {\n const {total, onPrev, onNext, onSearchResultsClick, isPrevDisabled, isNextDisabled} = useSearchNavigation();\n const isVisible = useSearchNavigationVisibility();\n return isVisible ? (\n <ProfileBandNavigationWidget\n className={className}\n total={total}\n onPrev={onPrev}\n onNext={onNext}\n onSearchResultsClick={onSearchResultsClick}\n isPrevDisabled={isPrevDisabled}\n isNextDisabled={isNextDisabled}\n />\n ) : null;\n};\n\nexport {ProfileBandNavigation};\n","import {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, isViewMode} from '@reltio/mdm-sdk';\nimport {SearchNavigationData} from '../types';\n\nconst useSearchNavigationVisibility = () => {\n const {cache} = useSelector<unknown, SearchNavigationData>(mdmModule.selectors.getSearchNavigationData) || {};\n const mode = useSelector<unknown, string>(mdmModule.selectors.getMode);\n const entity = useSelector<unknown, Entity>(mdmModule.selectors.getEntity);\n\n return isViewMode(mode) && cache?.includes(entity?.uri);\n};\n\nexport {useSearchNavigationVisibility};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n image: {\n width: '40px',\n height: '40px'\n },\n info: {\n marginLeft: '12px',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column'\n },\n label: {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n fontWeight: 400,\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.primary.main\n },\n secondaryLabel: {\n marginTop: '4px',\n fontWeight: 400,\n fontSize: '10px',\n lineHeight: '12px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n link: {\n textDecoration: 'none'\n },\n thirdRow: {\n display: 'flex',\n overflow: 'hidden',\n alignItems: 'center',\n marginTop: 'auto',\n paddingTop: '4px'\n },\n entityId: {\n display: 'flex',\n overflow: 'hidden',\n alignItems: 'baseline',\n whiteSpace: 'nowrap',\n fontWeight: 400,\n fontSize: '12px',\n lineHeight: '16px'\n },\n entityIdLabel: {\n color: theme.palette.text.secondary\n },\n entityIdValue: {\n marginLeft: '8px',\n color: theme.palette.text.primary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n '&[aria-describedby]': {\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Entity, getEntityId, getEntityUriForLink, getLabel} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport EntityTypeBadge from '../../EntityTypeBadge/EntityTypeBadge';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n classes?: {\n label?: string;\n secondaryLabel?: string;\n };\n};\n\nexport const ProfileCardContent = ({entity, classes = {}}: Props) => {\n const styles = useStyles();\n const {secondaryLabel: secondaryLabelClass, label: labelClass} = classes;\n const label = getLabel(entity.label);\n const {secondaryLabel} = entity;\n const handleCopyEntityIdToClipboard = useCallback(() => {\n navigator.clipboard.writeText(getEntityId(entity));\n }, [entity]);\n\n return (\n <>\n <EntityAvatar entity={entity} imageClassName={styles.image} />\n <div className={styles.info}>\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.link}>\n <ExpandedValueTooltip value={label} placement=\"top\" showOnExceededHeight={true}>\n <div className={classnames(styles.label, labelClass)}>{label}</div>\n </ExpandedValueTooltip>\n </EntityUriLink>\n\n {secondaryLabel && (\n <ExpandedValueTooltip value={secondaryLabel} placement=\"top\" showOnExceededHeight={true}>\n <div className={classnames(styles.secondaryLabel, secondaryLabelClass)}>{secondaryLabel}</div>\n </ExpandedValueTooltip>\n )}\n <div className={styles.thirdRow}>\n <EntityTypeBadge entity={entity} size=\"medium\" />\n <div className={styles.entityId} onClick={handleCopyEntityIdToClipboard}>\n <div className={styles.entityIdLabel}>{i18n.text('ID:')}</div>\n <ExpandedValueTooltip value={`Copy to clipboard ${getEntityId(entity)}`} placement=\"top\">\n <div className={styles.entityIdValue}>{getEntityId(entity)}</div>\n </ExpandedValueTooltip>\n </div>\n </div>\n </div>\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n '@keyframes keyframes-wave': {\n '0%': {\n transform: 'translateX(-100%)'\n },\n '60%': {\n transform: 'translateX(100%)'\n },\n '100%': {\n transform: 'translateX(100%)'\n }\n },\n wave: {\n overflow: 'hidden',\n position: 'relative',\n '&:after': {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n content: '\"\"',\n position: 'absolute',\n animation: '$keyframes-wave 1.6s linear 0.5s infinite',\n transform: 'translateX(-100%)',\n background: 'linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.04), transparent);'\n }\n },\n avatar: {\n flex: 'none',\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n info: {\n marginLeft: '12px',\n flex: 'auto'\n },\n label: {\n width: '40%',\n height: '15px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n secondaryLabel: {\n marginTop: '4px',\n width: '100%',\n height: '12px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n thirdRow: {\n marginTop: '4px',\n width: '60%',\n height: '24px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nexport const ProfileCardPlaceholder = () => {\n const styles = useStyles();\n return (\n <>\n <div className={classnames(styles.avatar, styles.wave)} />\n <div className={styles.info}>\n <div className={classnames(styles.label, styles.wave)} />\n <div className={classnames(styles.secondaryLabel, styles.wave)} />\n <div className={classnames(styles.thirdRow, styles.wave)} />\n </div>\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n container: {\n display: 'flex',\n padding: '16px',\n overflow: 'hidden'\n }\n});\n\nexport default useStyles;\n","import React, {memo} from 'react';\nimport classnames from 'classnames';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {ProfileCardContent} from './ProfileCardContent/ProfileCardContent';\nimport {ProfileCardPlaceholder} from './ProfileCardPlaceholder/ProfileCardPlaceholder';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n classes?: {\n label?: string;\n secondaryLabel?: string;\n container?: string;\n };\n variant?: 'loading' | 'normal';\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst ProfileCard = ({entity, classes = {}, variant = 'normal', ...otherProps}: Props) => {\n const styles = useStyles();\n const {container: containerClass} = classes;\n return (\n <div className={classnames(styles.container, containerClass)} {...otherProps}>\n {variant === 'normal' ? (\n <ProfileCardContent entity={entity} classes={classes} />\n ) : (\n <ProfileCardPlaceholder />\n )}\n </div>\n );\n};\n\nexport default memo(ProfileCard);\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n width: '64px',\n paddingTop: '8px',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)'\n },\n active: {\n backgroundColor: fade(theme.palette.primary.main, 0.12),\n color: theme.palette.primary.main,\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n height: '42px',\n width: '3px',\n backgroundColor: theme.palette.primary.main,\n left: '-8px',\n borderRadius: '0 6px 6px 0'\n }\n },\n buttonWrapper: {\n position: 'relative',\n width: '48px',\n height: '44px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '6px',\n margin: '2px 8px',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {ElementType} from 'react';\nimport classnames from 'classnames';\nimport {IconButtonProps} from '@material-ui/core/IconButton';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n buttonsProps: {\n icon: ElementType;\n tooltipTitle: string;\n id: number;\n disabled?: boolean;\n }[];\n classes?: {active?: string; buttonWrapper?: string} & IconButtonProps['classes'];\n activeIndexId: number;\n className?: string;\n onButtonClick: (id: number) => void;\n};\n\nexport const SideButtonsPanel = ({buttonsProps, activeIndexId, className, onButtonClick, classes = {}}: Props) => {\n const styles = useStyles();\n const {active, buttonWrapper, ...iconButtonClasses} = classes;\n\n return (\n <div className={classnames(styles.container, className)}>\n {buttonsProps.map(({id, ...buttonProps}) => {\n return (\n <SmallIconButtonWithTooltip\n {...buttonProps}\n classes={iconButtonClasses}\n size=\"S\"\n key={id}\n className={classnames(\n {[classnames(styles.active, active)]: activeIndexId === id},\n styles.buttonWrapper,\n buttonWrapper\n )}\n onClick={() => onButtonClick(id)}\n data-reltio-id={`reltio-profile-right-side-button-${id}`}\n />\n );\n })}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n contentWrapper: {\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)',\n marginLeft: '3px',\n transition: theme.transitions.create(['width'], {\n duration: theme.transitions.duration.enteringScreen\n })\n }\n}));\n","import React, {ReactNode, VFC} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = {\n width: number;\n open: boolean;\n children: ReactNode;\n};\n\nexport const SidePanel: VFC<Props> = ({width, open, children}) => {\n const styles = useStyles();\n return (\n <div\n className={styles.contentWrapper}\n style={{\n width: `${open ? width : 0}px`\n }}\n >\n {open && <>{children}</>}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst iconsWidth = '68px';\n\nexport const useOptionStyles = makeStyles({\n container: {\n display: 'flex',\n alignItems: 'center',\n height: '32px',\n minHeight: '32px',\n padding: 0\n },\n text: {\n display: 'flex',\n width: `calc(100% - ${iconsWidth})`\n },\n textItem: {\n fontSize: '13px',\n lineHeight: '15px',\n marginRight: 10\n },\n primaryTextItem: {\n flex: '1 0',\n flexBasis: 0,\n maxWidth: '50%',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n secondaryTextItem: {\n flex: '1 0',\n flexBasis: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n icons: {\n transform: 'scale(0.5)',\n position: 'relative',\n flexShrink: 0,\n width: iconsWidth,\n bottom: '10px'\n },\n iconTop: {\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 1\n },\n iconBottom: {\n position: 'absolute',\n top: 0,\n left: 26,\n zIndex: 0\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useOptionStyles} from './styles';\nimport EntityTypeIcon from '../../../../EntityTypeIcon/EntityTypeIcon';\nimport ExpandedValueTooltip from '../../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nconst RelationOption = ({innerRef, innerProps, selectOption, data}) => {\n const styles = useOptionStyles();\n const {value, label, startObject, endObject} = data;\n const secondaryLabel = startObject.objectType.label + ' \\u2194 ' + endObject.objectType.label;\n return (\n <MenuItem\n className={styles.container}\n ref={innerRef}\n key={value}\n onClick={() => selectOption({label, value, startObject, endObject})}\n {...innerProps}\n >\n <div className={styles.icons}>\n <EntityTypeIcon className={styles.iconTop} entityType={startObject.objectType} />\n <EntityTypeIcon className={styles.iconBottom} entityType={endObject.objectType} />\n </div>\n <div className={styles.text}>\n <ExpandedValueTooltip value={label}>\n <Typography className={classnames(styles.textItem, styles.primaryTextItem)}>{label}</Typography>\n </ExpandedValueTooltip>\n <ExpandedValueTooltip value={secondaryLabel}>\n <Typography color=\"textSecondary\" className={classnames(styles.textItem, styles.secondaryTextItem)}>\n {secondaryLabel}\n </Typography>\n </ExpandedValueTooltip>\n </div>\n </MenuItem>\n );\n};\n\nRelationOption.propTypes = {\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n innerProps: PropTypes.object.isRequired,\n selectOption: PropTypes.func.isRequired,\n data: PropTypes.shape({\n value: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n startObject: PropTypes.object,\n endObject: PropTypes.object\n })\n};\n\nexport default RelationOption;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {identity, defaultTo} from 'ramda';\nimport RelationOption from './components/RelationOption';\nimport DropDownSelector from '../../../DropDownSelector/DropDownSelector';\n\nconst RelationTypeSelector = ({value = {}, options = [], onChange = identity, TextFieldProps, ...otherProps}) => {\n const textFieldProps = useMemo(\n () => ({\n ...defaultTo({}, TextFieldProps),\n ['data-reltio-id']: 'relation-type-selector'\n }),\n [TextFieldProps]\n );\n return (\n <DropDownSelector\n value={value}\n options={options}\n onChange={onChange}\n label={i18n.text('Select relationship type ')}\n components={{Option: RelationOption}}\n TextFieldProps={textFieldProps}\n {...otherProps}\n />\n );\n};\n\nconst ValueType = PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n startObject: PropTypes.object,\n endObject: PropTypes.object\n});\n\nRelationTypeSelector.propTypes = {\n value: ValueType,\n options: PropTypes.arrayOf(ValueType),\n onChange: PropTypes.func\n};\n\nexport default RelationTypeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n alignItems: 'flex-start'\n },\n slice: {\n fontWeight: 500\n },\n cancelButton: {\n width: '88px',\n flexShrink: 0,\n marginLeft: '15px'\n }\n});\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {pipe} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\nconst ProfileBandHistory = () => {\n const styles = useStyles();\n\n const historyEvent = useSelector(mdmModule.selectors.getHistoryEvent);\n const dispatch = useDispatch();\n const onCancel = pipe(profile.history.actions.clearHistoryEvent, dispatch);\n\n return historyEvent ? (\n <div className={styles.root}>\n <Typography component={'div'}>\n {i18n.text('You are viewing a historic slice:')}{' '}\n <span className={styles.slice}>{i18n.date(historyEvent.aStamp, 'llll')}</span>\n </Typography>\n <Button className={styles.cancelButton} variant=\"contained\" color=\"primary\" onClick={onCancel}>\n {i18n.text('Cancel')}\n </Button>\n </div>\n ) : null;\n};\n\nexport default ProfileBandHistory;\n","import React, {createContext, useContext} from 'react';\nimport {AnyAction} from 'redux';\n\ntype ActionsHook = (listener: (action: AnyAction, state: any) => void) => () => void;\n\nconst ActionsHookContext = createContext<ActionsHook | null>(null);\nActionsHookContext.displayName = 'ActionsHookContext';\n\ntype ProviderProps = {\n hook: ActionsHook;\n children: React.ReactNode;\n};\n\nexport const ActionsHookProvider = ({children, hook}: ProviderProps) => {\n return <ActionsHookContext.Provider value={hook}>{children}</ActionsHookContext.Provider>;\n};\n\nexport const useActionsHook = () => {\n const listenToActions = useContext(ActionsHookContext);\n if (!listenToActions) {\n throw new Error('ActionsHookContext must be provided');\n }\n return listenToActions;\n};\n","import React, {useState, useCallback, useContext} from 'react';\nimport {noop} from '../../core/utils';\n\ntype LoadingState = {\n entitiesNavigation: boolean;\n entity: boolean;\n};\n\ntype ContextValue = {\n isLoading: boolean;\n updateEntityLoadingState: (loading: boolean) => void;\n updateEntitiesNavigationLoadingState: (loading: boolean) => void;\n resetLoadingState: () => void;\n};\n\nconst EntityLoadingIndicationContext = React.createContext<ContextValue>({\n isLoading: false,\n updateEntityLoadingState: noop,\n updateEntitiesNavigationLoadingState: noop,\n resetLoadingState: noop\n});\n\nconst defaultLoadingState: LoadingState = {entitiesNavigation: false, entity: false};\n\nconst useEntityLoadingIndicationHook = () => {\n const [loadingState, setLoadingState] = useState(defaultLoadingState);\n\n const updateEntityLoadingState = useCallback((loading: boolean) => {\n setLoadingState((prevLoadingState) => ({...prevLoadingState, entity: loading}));\n }, []);\n\n const updateEntitiesNavigationLoadingState = useCallback((loading: boolean) => {\n setLoadingState((prevLoadingState) => ({...prevLoadingState, entitiesNavigation: loading}));\n }, []);\n\n const resetLoadingState = useCallback(() => {\n setLoadingState(defaultLoadingState);\n }, []);\n\n const isLoading = Object.values(loadingState).includes(true);\n\n return {isLoading, updateEntityLoadingState, updateEntitiesNavigationLoadingState, resetLoadingState};\n};\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const EntityLoadingIndicationProvider = ({children}: Props) => {\n const value = useEntityLoadingIndicationHook();\n return <EntityLoadingIndicationContext.Provider value={value}>{children}</EntityLoadingIndicationContext.Provider>;\n};\n\nexport const useEntityLoadingIndication = () => {\n return useContext(EntityLoadingIndicationContext);\n};\n","import React from 'react';\n\ntype Labels = {\n profileBand: {\n OPEN_RESULTS?: string;\n SEARCH_RESULT?: string;\n SEARCH_RESULTS?: string;\n NEXT_PROFILE?: string;\n PREVIOUS_PROFILE?: string;\n };\n};\nexport const LabelsContext = React.createContext<Labels>({\n profileBand: {}\n});\n\nLabelsContext.displayName = 'LabelsContext';\n","import {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n andThen,\n fromPairs,\n map,\n otherwise,\n pipe,\n props,\n uniqBy,\n prop,\n propEq,\n when,\n always,\n assocPath,\n dissocPath,\n path,\n pathOr,\n mergeRight\n} from 'ramda';\nimport {\n CollaborationObjectTypes,\n Comment,\n CommentsMap,\n createComment as createCommentRequest,\n createReply as createReplyRequest,\n getComment as getCommentRequest,\n getCommentsCount as getCommentsCountRequest,\n Reply,\n updateComment as updateCommentRequest,\n updateReply as updateReplyRequest,\n deleteComment as deleteCommentRequest,\n deleteReply as deleteReplyRequest,\n getComments as getCommentsRequest,\n isTempUri,\n CollaborationStateMap,\n CommentState\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\n\ntype Props = {\n objectIds?: string[];\n objectTypes?: CollaborationObjectTypes[];\n enabled?: boolean;\n};\n\nconst filterReplies = (replyId: string, replies: Reply[]) => replies.filter((reply) => reply.replyId !== replyId);\n\nconst getUpdatedReplies = (comment: Comment, reply: Reply) => {\n const changedReplyIndex = comment.replies.findIndex(({replyId}) => replyId === reply.replyId);\n const newReplies = [...comment.replies];\n newReplies[changedReplyIndex] = reply;\n return newReplies;\n};\n\nconst defaultObjectIds = [];\nconst catchErrorInRequest = (e) => console.error('Collaboration error', e);\nexport const useCollaboration = ({objectIds = defaultObjectIds, objectTypes, enabled = true}: Props) => {\n const entity = useSelector(mdm.selectors.getEntity);\n const tenant: string = useSelector(mdm.selectors.getTenant);\n const collaborationPath: string = useSelector(mdm.selectors.getCollaborationPath);\n const isCollaborationEnabled = useSelector(mdm.selectors.isCollaborationEnabled) && enabled;\n\n const [pageToken, setPageToken] = useState<string | null>(null);\n const [comments, setComments] = useState<Comment[]>([]);\n const [commentsMap, setCommentsMap] = useState<CommentsMap>(null);\n const [currentComment, setCurrentComment] = useState<Comment | null>(null);\n const [sending, setSending] = useState(false);\n const [loading, setLoading] = useState(false);\n const [collaborationStateMap, setCollaborationStateMap] = useState<CollaborationStateMap>({});\n\n const addCommentsToCommentsMap = useCallback((commentsMap: CommentsMap) => {\n setCommentsMap((currentCommentsMap) => ({\n ...currentCommentsMap,\n ...commentsMap\n }));\n }, []);\n const entityUri = entity?.uri;\n const getCommentsCount = useCallback(\n (objectIds: string[], shouldResetCommentsMap = false) => {\n if (isCollaborationEnabled && entityUri && !isTempUri(entityUri)) {\n const onError = (e) => {\n console.warn('Collaboration error', e);\n setCommentsMap(null);\n };\n pipe(\n getCommentsCountRequest,\n andThen(map(props(['objectId', 'comments']))),\n andThen(fromPairs),\n andThen(shouldResetCommentsMap ? setCommentsMap : addCommentsToCommentsMap),\n otherwise(onError)\n )({uris: objectIds, tenant, collaborationPath});\n } else {\n setCommentsMap(null);\n }\n },\n [addCommentsToCommentsMap, collaborationPath, entityUri, isCollaborationEnabled, tenant]\n );\n\n useEffect(() => {\n getCommentsCount(objectIds, true);\n }, [objectIds, getCommentsCount]);\n\n const getComments = useCallback(\n (relatedObjectUri: string, pageToken?: string) => {\n getCommentsRequest({collaborationPath, tenant, relatedObjectUri, pageToken})\n .then(({items, nextPageToken}) => {\n setComments((prevComments) => {\n if (!pageToken) {\n return items;\n }\n return uniqBy(prop('commentId'), [...prevComments, ...items]);\n });\n setPageToken(nextPageToken);\n })\n .catch(catchErrorInRequest);\n },\n [collaborationPath, tenant]\n );\n\n const getComment = useCallback(\n (commentId: string) => {\n setLoading(true);\n\n getCommentRequest({collaborationPath, tenant, commentId})\n .then(setCurrentComment)\n .catch(catchErrorInRequest)\n .finally(() => setLoading(false));\n },\n [collaborationPath, tenant]\n );\n\n const addCommentToState = (comment: Comment, uri: string) => {\n setCurrentComment(comment);\n setCommentsMap((prevCommentsMap) => {\n return {\n ...prevCommentsMap,\n [uri]: [...(prevCommentsMap[uri] || []), {commentId: comment.commentId, replies: 0, status: 'open'}]\n };\n });\n setComments((prevComments) => [comment, ...prevComments]);\n };\n const updateCommentInState = (comment: Comment) => {\n setCurrentComment(comment);\n setComments(map(when(propEq('commentId', comment.commentId), always(comment))));\n };\n const deleteCommentFromState = (commentId: string, uri: string) => {\n setCurrentComment(null);\n setCommentsMap((prevCommentsMap) => {\n const comments = prevCommentsMap[uri] || [];\n return {\n ...prevCommentsMap,\n [uri]: comments.filter((c) => c.commentId !== commentId)\n };\n });\n setComments((prevComments) => {\n return prevComments.filter((comment) => comment.commentId !== commentId);\n });\n };\n const createComment = useCallback(\n ({content, namedUsers, objectType, uri, relatedObjectUris}) => {\n setSending(true);\n\n const data = {\n objectId: uri,\n content,\n relatedObjectUris,\n objectType,\n visibility: 'public',\n namedUsers,\n permanentLink: `${window.location.href}&commentId=${encodeURIComponent('{commentId}')}`\n };\n\n return createCommentRequest({collaborationPath, tenant, data})\n .then(([comment]) => addCommentToState(comment, uri))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant]\n );\n\n const editComment = useCallback(\n ({content, namedUsers, objectType, uri, relatedObjectUris, commentId, replies}) => {\n setSending(true);\n\n const data = {\n objectId: uri,\n content,\n relatedObjectUris,\n objectType,\n visibility: 'public',\n namedUsers,\n commentId,\n replies\n };\n\n return updateCommentRequest({collaborationPath, tenant, data})\n .then((comment) => updateCommentInState({...comment, replies}))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant]\n );\n\n const deleteComment = useCallback(\n ({uri, commentId}) => {\n setSending(true);\n\n deleteCommentRequest({collaborationPath, tenant, commentId})\n .then(() => deleteCommentFromState(commentId, uri))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant]\n );\n\n const updateReplyInState = useCallback((reply: Reply, uri: string, commentId: string, isDeleteReply?: boolean) => {\n const newStatus = reply.action === 'resolve' ? 'resolved' : 'open';\n const {replyId} = reply;\n if (newStatus === 'resolved') {\n setCurrentComment((prevCurrentComment) => {\n if (prevCurrentComment) {\n return null;\n }\n });\n } else {\n setCurrentComment((prevCurrentComment) => {\n if (prevCurrentComment) {\n return {\n ...prevCurrentComment,\n replies: isDeleteReply\n ? filterReplies(replyId, prevCurrentComment.replies)\n : [...prevCurrentComment.replies, reply]\n };\n }\n });\n }\n\n setCommentsMap((prevCommentsMap) => ({\n ...prevCommentsMap,\n [uri]: (prevCommentsMap[uri] || []).map((comment) => {\n if (comment.commentId === commentId) {\n return {\n ...comment,\n status: newStatus,\n replies: isDeleteReply ? comment.replies - 1 : comment.replies + 1\n };\n }\n\n return comment;\n })\n }));\n\n setComments((prevComments) => {\n return prevComments.map((comment) => {\n if (comment.commentId === commentId) {\n return {\n ...comment,\n status: newStatus,\n replies: isDeleteReply\n ? filterReplies(reply.replyId, comment.replies)\n : [...comment.replies, reply]\n };\n }\n\n return comment;\n });\n });\n }, []);\n\n const deleteReply = useCallback(\n ({uri, commentId, reply}) => {\n setSending(true);\n\n deleteReplyRequest({collaborationPath, tenant, commentId, replyId: reply.replyId})\n .then(() => updateReplyInState(reply, uri, commentId, true))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, updateReplyInState, tenant]\n );\n\n const editReplyInState = useCallback((reply: Reply, commentId: string) => {\n setCurrentComment((prevCurrentComment) => {\n if (prevCurrentComment) {\n return {\n ...prevCurrentComment,\n replies: getUpdatedReplies(prevCurrentComment, reply)\n };\n }\n });\n\n setComments((prevComments) => {\n return prevComments.map((comment) => {\n if (comment.commentId === commentId) {\n return {\n ...comment,\n replies: getUpdatedReplies(comment, reply)\n };\n }\n\n return comment;\n });\n });\n }, []);\n\n const editReply = useCallback(\n ({content, namedUsers, commentId, replyId}) => {\n setSending(true);\n const data = {\n content,\n namedUsers\n };\n return updateReplyRequest({collaborationPath, tenant, commentId, replyId, data})\n .then((reply) => editReplyInState(reply, commentId))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant, editReplyInState]\n );\n\n const createReply = useCallback(\n ({content, namedUsers, commentId, action, uri}) => {\n setSending(true);\n\n const data = {\n content,\n action,\n namedUsers\n };\n\n return createReplyRequest({collaborationPath, tenant, commentId, data})\n .then(([reply]) => updateReplyInState(reply, uri, commentId))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant, updateReplyInState]\n );\n\n const resolveThread = useCallback(\n ({commentId, uri}) => {\n createReply({content: '', namedUsers: [], commentId, action: 'resolve', uri});\n },\n [createReply]\n );\n\n const reOpenThread = useCallback(\n ({commentId, uri}) => {\n createReply({content: '', namedUsers: [], commentId, action: 'reopen', uri});\n },\n [createReply]\n );\n\n const clearCurrentComment = useCallback(() => {\n setCurrentComment(null);\n }, []);\n\n const getCommentState = (uri: string, commentUri: string) => pathOr({}, [uri, commentUri], collaborationStateMap);\n\n const clearCommentState = (uri: string, commentUri: string) =>\n setCollaborationStateMap(dissocPath([uri, commentUri]));\n\n const updateCommentState = (uri: string, commentUri: string, newState: CommentState) => {\n setCollaborationStateMap((prevCollaborationStateMap) => {\n const pathToCommentState = [uri, commentUri];\n const prevCommentState = path(pathToCommentState, prevCollaborationStateMap);\n return assocPath(pathToCommentState, mergeRight(prevCommentState, newState), prevCollaborationStateMap);\n });\n };\n\n return {\n clearCurrentComment,\n comments,\n commentsMap,\n getCommentState,\n updateCommentState,\n clearCommentState,\n createComment,\n createReply,\n currentComment,\n deleteComment,\n editComment,\n getComment,\n getComments,\n getCommentsCount,\n loading,\n objectTypes,\n pageToken,\n reOpenThread,\n resolveThread,\n sending,\n deleteReply,\n editReply\n };\n};\n","import {useCallback} from 'react';\nimport {Directions, getDirectionalLabelFromObject} from '@reltio/mdm-sdk';\nimport {ascend, curry, evolve, pipe, prop, propEq, propOr, tap} from 'ramda';\n\nexport const useRelationTypeSelector = ({reversedContextLabels}) => {\n const getRelationTypesOptions = useCallback(\n (inRelations, outRelations) => {\n const labelsMap = {};\n const addLabelInMap = (label) => (labelsMap[label] = propOr(0, label, labelsMap) + 1);\n const getDirectionalLabel = pipe(getDirectionalLabelFromObject, tap(addLabelInMap));\n const byLabel = ascend(prop('label'));\n\n const prepareRelation = curry((direction, {uri, label, startObject, endObject}) => {\n const dirObject =\n direction === (reversedContextLabels ? Directions.OUT : Directions.IN) ? startObject : endObject;\n return {\n label: {directionalLabel: getDirectionalLabel(dirObject), typeLabel: label},\n value: `${uri},${direction}`,\n startObject,\n endObject\n };\n });\n\n return inRelations\n .map(prepareRelation(Directions.IN))\n .concat(outRelations.map(prepareRelation(Directions.OUT)))\n .map(\n evolve({\n label: ({directionalLabel, typeLabel}) => {\n return directionalLabel\n ? labelsMap[directionalLabel] > 1\n ? `${directionalLabel} (${typeLabel})`\n : directionalLabel\n : typeLabel;\n }\n })\n )\n .sort(byLabel);\n },\n [reversedContextLabels]\n );\n\n const fromEditorValue = useCallback(\n (inRelationTypes, outRelationTypes) => (relation) => {\n const [uri, direction] = relation.value.split(',');\n const type = (direction === Directions.IN ? inRelationTypes : outRelationTypes).find(propEq('uri', uri));\n return {type, direction};\n },\n []\n );\n\n const toEditorValue = useCallback(\n (relation, relationsTypesOptions) =>\n relationsTypesOptions.find(propEq('value', `${relation.relationType},${relation.direction}`)),\n []\n );\n\n return {\n getRelationTypesOptions,\n fromEditorValue,\n toEditorValue\n };\n};\n"],"names":["useStyles","makeStyles","theme","button","padding","fill","palette","primary","main","fillOpacity","iconButton","startIcon","marginLeft","marginRight","width","height","alignItems","label","whiteSpace","fontSize","lineHeight","letterSpacing","overflowStyle","overflow","textOverflow","menuIcon","menuItem","minHeight","menuText","color","text","ActionButtonMode","ActionButton","forwardRef","ref","className","mode","disabled","icon","Icon","onClick","noop","onMenuClose","otherProps","styles","SmallIconButton","classnames","size","tooltipTitle","showForDisabled","Button","classes","ExpandedValueTooltip","value","handleClick","MenuItem","root","Typography","getButtonView","displayName","pagination","display","justifyContent","borderTop","boxShadow","caption","selectRoot","select","textAlign","actions","BasicTablePagination","count","rowsPerPageOptions","page","onChangePage","rowsPerPage","onChangeRowsPerPage","basicTableRef","labelRowsPerPage","resetScrollbarPosition","useCallback","pathOr","identity","handleChangePage","handleChangeRowsPerPage","TablePagination","component","i18n","labelDisplayedRows","from","to","fromRow","toRow","countRows","pipe","nthArg","getValue","propTypes","PropTypes","current","React","paper","title","fontWeight","content","contentText","marginBottom","actionButtons","paddingTop","discardButton","open","onCancel","cancelCaption","onDiscard","discardCaption","onSave","saveCaption","disabledSave","Dialog","onClose","paperScrollPaper","DialogTitle","DialogContent","DialogContentText","DialogActions","disableSpacing","autoFocus","ConnectionRelationTypeSelector","relation","inRelationTypes","outRelationTypes","onChange","applyFirstByDefault","reversedContextLabels","getRelationTypesOptions","fromEditorValue","toEditorValue","useRelationTypeSelector","relationsTypesOptions","useMemo","handleChange","hasValue","relationType","useEffect","length","options","ConnectionRelationType","RelationTypeType","borderRadius","flexShrink","entity","metadata","useSelector","mdmModule","entityTypeUri","type","entityType","getEntityType","entityTypeColor","getPropWithInheritance","entityTypeLabel","getEntityTypeLabel","placement","style","backgroundColor","utils","profileBandWrapper","profileBand","inactive","background","inactiveBackground","profileIcon","imageProfileIcon","profileInfo","flexDirection","flex","badge","wordBreak","marginTop","secondaryLabel","businessCard","secondary","specialInfo","flexWrap","entityId","cursor","textDecoration","children","renderLabel","showEntityId","handleCopyEntityIdToClipboard","navigator","clipboard","writeText","getEntityId","isNil","getLabel","businessCardText","getBusinessCardAttributesText","isActive","isActiveObject","entityUri","uri","EntityAvatar","key","avatarClassName","imageClassName","variant","EntityTypeBadge","isTempUri","Tooltip","container","link","LinkWithTooltip","withTooltip","Link","ProfileBandNavigationWidget","total","onPrev","onNext","onSearchResultsClick","isPrevDisabled","isNextDisabled","labels","useContext","LabelsContext","OPEN_RESULTS","SEARCH_RESULT","SEARCH_RESULTS","NEXT_PROFILE","PREVIOUS_PROFILE","mergeRight","underline","formatNumberAsMetric","KeyboardArrowLeft","KeyboardArrowRight","MainSearchProvider","constructor","data","query","sortField","sortOrder","tenant","searchTenant","apiPath","dtssPath","globalSearchRequestOptions","isDT","this","getQueryFilter","rawFilter","getEntities","filters","requestFilters","requestOptions","sort","order","scoreEnabled","getFilteredEntitiesFromDataTenant","customerTenant","dataTenant","getFilteredEntities","checkEntity","filter","fieldName","values","offset","max","then","entities","requestEntities","requestTotal","getTotalFromDataTenant","getTotals","json","GraphSearchProvider","searchBody","allFilters","getGraphSearchEntities","buildFilterQueryString","getGraphSearchCount","getNewUris","cache","map","prop","reject","includes","useSearchNavigation","safeCheckEntityPromise","useSafePromise","safeRequestTotalPromise","safeRequestEntitiesPromise","index","state","updateEntitiesNavigationLoadingState","useEntityLoadingIndication","viewId","ViewIdContext","dispatch","useDispatch","loading","setLoading","useState","searchProvider","getSearchProvider","updateNavigationData","mdmModuleSearch","openEntity","preparedUri","getEntityUriForLink","mdmModuleUi","source","perspectiveId","listenToActions","useActionsHook","stopListeningActions","action","searchNavigationData","payload","winnerUri","losersUris","updatedSearchNavigationData","winnerIndex","indexOf","uriIndex","splice","replaceWithWinnerUri","losersInCache","updatedTotal","updatedIndex","loser","updatedCache","removeLosersUris","applyMergeToSearchNavigationData","requestNextPage","newIndex","newUris","concat","finally","requestPrevPage","Math","min","stepForwardWithCheck","cacheIndex","isExists","clearedCache","stepBackWithCheck","ProfileBandNavigation","isViewMode","useSearchNavigationVisibility","image","info","thirdRow","entityIdLabel","entityIdValue","ProfileCardContent","secondaryLabelClass","labelClass","EntityUriLink","showOnExceededHeight","transform","wave","position","top","left","right","bottom","animation","avatar","ProfileCardPlaceholder","memo","containerClass","active","fade","buttonWrapper","margin","SideButtonsPanel","buttonsProps","activeIndexId","onButtonClick","iconButtonClasses","id","buttonProps","contentWrapper","transition","transitions","create","duration","enteringScreen","SidePanel","useOptionStyles","textItem","primaryTextItem","flexBasis","maxWidth","secondaryTextItem","icons","iconTop","zIndex","iconBottom","RelationOption","innerRef","innerProps","selectOption","startObject","endObject","objectType","EntityTypeIcon","RelationTypeSelector","TextFieldProps","textFieldProps","defaultTo","DropDownSelector","components","Option","ValueType","slice","cancelButton","historyEvent","profile","aStamp","ActionsHookContext","createContext","ActionsHookProvider","hook","Provider","Error","EntityLoadingIndicationContext","isLoading","updateEntityLoadingState","resetLoadingState","defaultLoadingState","entitiesNavigation","EntityLoadingIndicationProvider","loadingState","setLoadingState","prevLoadingState","Object","useEntityLoadingIndicationHook","filterReplies","replyId","replies","reply","getUpdatedReplies","comment","changedReplyIndex","findIndex","newReplies","defaultObjectIds","catchErrorInRequest","e","console","error","useCollaboration","objectIds","objectTypes","enabled","mdm","collaborationPath","isCollaborationEnabled","pageToken","setPageToken","comments","setComments","commentsMap","setCommentsMap","currentComment","setCurrentComment","sending","setSending","collaborationStateMap","setCollaborationStateMap","addCommentsToCommentsMap","currentCommentsMap","getCommentsCount","shouldResetCommentsMap","onError","warn","getCommentsCountRequest","andThen","props","fromPairs","otherwise","uris","getComments","relatedObjectUri","getCommentsRequest","items","nextPageToken","prevComments","uniqBy","catch","getComment","commentId","getCommentRequest","createComment","namedUsers","relatedObjectUris","objectId","visibility","permanentLink","window","location","href","encodeURIComponent","createCommentRequest","prevCommentsMap","status","addCommentToState","editComment","updateCommentRequest","when","propEq","always","updateCommentInState","deleteComment","deleteCommentRequest","c","deleteCommentFromState","updateReplyInState","isDeleteReply","newStatus","prevCurrentComment","deleteReply","deleteReplyRequest","editReplyInState","editReply","updateReplyRequest","createReply","createReplyRequest","resolveThread","reOpenThread","clearCurrentComment","getCommentState","commentUri","updateCommentState","newState","prevCollaborationStateMap","pathToCommentState","prevCommentState","path","assocPath","clearCommentState","dissocPath","inRelations","outRelations","labelsMap","getDirectionalLabel","getDirectionalLabelFromObject","tap","propOr","byLabel","ascend","prepareRelation","curry","direction","dirObject","Directions","directionalLabel","typeLabel","evolve","split","find"],"sourceRoot":""}
|