@reltio/remotes 1.4.1498 → 1.4.1499
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/3270.js +1 -1
- package/3270.js.map +1 -1
- package/6880.js +1 -1
- package/6880.js.map +1 -1
- package/9481.js +1 -1
- package/9481.js.map +1 -1
- package/package.json +1 -1
package/3270.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3270.js","mappings":"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","sources":["webpack://@reltio/remotes/../../node_modules/@date-io/moment/build/index.esm.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/Edit.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/EventBusy.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/Info.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/KeyboardArrowLeft.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/KeyboardArrowRight.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/Settings.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/Visibility.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/HOCs/withTableContext.js","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/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/SettingsMenu/SettingsMenu.tsx","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/useRelationsLoader.ts","webpack://@reltio/remotes/../relationships/src/hooks/useSavedState.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/helpers/tableHelpers.ts","webpack://@reltio/remotes/../relationships/src/hooks/useRelationshipsTable.ts","webpack://@reltio/remotes/../relationships/src/components/RelationTypeSelector/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationTypeSelector/RelationTypeSelector.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTableHeader/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTableHeader/RelationshipsTableHeader.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/EntityProfileRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/AttributesRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/helpers.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipMenuButton/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipMenuButton/MenuItemRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipMenuButton/RelationshipMenuButton.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/RelationshipsTable.tsx","webpack://@reltio/remotes/../relationships/src/components/LegendTable/helpers.ts","webpack://@reltio/remotes/../relationships/src/components/LegendTable/styles.ts","webpack://@reltio/remotes/../relationships/src/components/LegendTable/LegendTable.tsx","webpack://@reltio/remotes/../relationships/src/components/LegendPanel/styles.ts","webpack://@reltio/remotes/../relationships/src/components/LegendPanel/LegendPanel.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/EntityInfo/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/EntityInfo/EntityInfo.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDirection/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDirection/RelationDirection.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDate/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDate/RelationDate.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationshipBand.tsx","webpack://@reltio/remotes/../relationships/src/services/errors.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipDetails/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipDetails/RelationshipDetails.tsx","webpack://@reltio/remotes/../relationships/src/hooks/useCrosswalksDisplay.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/RelationshipsView.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/helpers/filtersHelpers.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/index.tsx","webpack://@reltio/remotes/./src/relationships.ts","webpack://@reltio/remotes/../../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js"],"sourcesContent":["import defaultMoment from 'moment';\n\nvar MomentUtils = /** @class */ (function () {\n function MomentUtils(_a) {\n var _b = _a === void 0 ? {} : _a, locale = _b.locale, instance = _b.instance, moment = _b.moment;\n this.yearFormat = \"YYYY\";\n this.yearMonthFormat = \"MMMM YYYY\";\n this.dateTime12hFormat = \"MMMM Do hh:mm a\";\n this.dateTime24hFormat = \"MMMM Do HH:mm\";\n this.time12hFormat = \"hh:mm A\";\n this.time24hFormat = \"HH:mm\";\n this.dateFormat = \"MMMM Do\";\n this.moment = instance || moment || defaultMoment;\n this.locale = locale;\n }\n MomentUtils.prototype.parse = function (value, format) {\n if (value === \"\") {\n return null;\n }\n return this.moment(value, format, true);\n };\n MomentUtils.prototype.date = function (value) {\n if (value === null) {\n return null;\n }\n var moment = this.moment(value);\n moment.locale(this.locale);\n return moment;\n };\n MomentUtils.prototype.isValid = function (value) {\n return this.moment(value).isValid();\n };\n MomentUtils.prototype.isNull = function (date) {\n return date === null;\n };\n MomentUtils.prototype.getDiff = function (date, comparing) {\n return date.diff(comparing);\n };\n MomentUtils.prototype.isAfter = function (date, value) {\n return date.isAfter(value);\n };\n MomentUtils.prototype.isBefore = function (date, value) {\n return date.isBefore(value);\n };\n MomentUtils.prototype.isAfterDay = function (date, value) {\n return date.isAfter(value, \"day\");\n };\n MomentUtils.prototype.isBeforeDay = function (date, value) {\n return date.isBefore(value, \"day\");\n };\n MomentUtils.prototype.isBeforeYear = function (date, value) {\n return date.isBefore(value, \"year\");\n };\n MomentUtils.prototype.isAfterYear = function (date, value) {\n return date.isAfter(value, \"year\");\n };\n MomentUtils.prototype.startOfDay = function (date) {\n return date.clone().startOf(\"day\");\n };\n MomentUtils.prototype.endOfDay = function (date) {\n return date.clone().endOf(\"day\");\n };\n MomentUtils.prototype.format = function (date, formatString) {\n date.locale(this.locale);\n return date.format(formatString);\n };\n MomentUtils.prototype.formatNumber = function (numberToFormat) {\n return numberToFormat;\n };\n MomentUtils.prototype.getHours = function (date) {\n return date.get(\"hours\");\n };\n MomentUtils.prototype.addDays = function (date, count) {\n return count < 0\n ? date.clone().subtract(Math.abs(count), \"days\")\n : date.clone().add(count, \"days\");\n };\n MomentUtils.prototype.setHours = function (date, count) {\n return date.clone().hours(count);\n };\n MomentUtils.prototype.getMinutes = function (date) {\n return date.get(\"minutes\");\n };\n MomentUtils.prototype.setMinutes = function (date, count) {\n return date.clone().minutes(count);\n };\n MomentUtils.prototype.getSeconds = function (date) {\n return date.get(\"seconds\");\n };\n MomentUtils.prototype.setSeconds = function (date, count) {\n return date.clone().seconds(count);\n };\n MomentUtils.prototype.getMonth = function (date) {\n return date.get(\"month\");\n };\n MomentUtils.prototype.isSameDay = function (date, comparing) {\n return date.isSame(comparing, \"day\");\n };\n MomentUtils.prototype.isSameMonth = function (date, comparing) {\n return date.isSame(comparing, \"month\");\n };\n MomentUtils.prototype.isSameYear = function (date, comparing) {\n return date.isSame(comparing, \"year\");\n };\n MomentUtils.prototype.isSameHour = function (date, comparing) {\n return date.isSame(comparing, \"hour\");\n };\n MomentUtils.prototype.setMonth = function (date, count) {\n return date.clone().month(count);\n };\n MomentUtils.prototype.getMeridiemText = function (ampm) {\n return ampm === \"am\" ? \"AM\" : \"PM\";\n };\n MomentUtils.prototype.startOfMonth = function (date) {\n return date.clone().startOf(\"month\");\n };\n MomentUtils.prototype.endOfMonth = function (date) {\n return date.clone().endOf(\"month\");\n };\n MomentUtils.prototype.getNextMonth = function (date) {\n return date.clone().add(1, \"month\");\n };\n MomentUtils.prototype.getPreviousMonth = function (date) {\n return date.clone().subtract(1, \"month\");\n };\n MomentUtils.prototype.getMonthArray = function (date) {\n var firstMonth = date.clone().startOf(\"year\");\n var monthArray = [firstMonth];\n while (monthArray.length < 12) {\n var prevMonth = monthArray[monthArray.length - 1];\n monthArray.push(this.getNextMonth(prevMonth));\n }\n return monthArray;\n };\n MomentUtils.prototype.getYear = function (date) {\n return date.get(\"year\");\n };\n MomentUtils.prototype.setYear = function (date, year) {\n return date.clone().set(\"year\", year);\n };\n MomentUtils.prototype.mergeDateAndTime = function (date, time) {\n return this.setMinutes(this.setHours(date, this.getHours(time)), this.getMinutes(time));\n };\n MomentUtils.prototype.getWeekdays = function () {\n return this.moment.weekdaysShort(true);\n };\n MomentUtils.prototype.isEqual = function (value, comparing) {\n if (value === null && comparing === null) {\n return true;\n }\n return this.moment(value).isSame(comparing);\n };\n MomentUtils.prototype.getWeekArray = function (date) {\n var start = date\n .clone()\n .startOf(\"month\")\n .startOf(\"week\");\n var end = date\n .clone()\n .endOf(\"month\")\n .endOf(\"week\");\n var count = 0;\n var current = start;\n var nestedWeeks = [];\n while (current.isBefore(end)) {\n var weekNumber = Math.floor(count / 7);\n nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];\n nestedWeeks[weekNumber].push(current);\n current = current.clone().add(1, \"day\");\n count += 1;\n }\n return nestedWeeks;\n };\n MomentUtils.prototype.getYearRange = function (start, end) {\n var startDate = this.moment(start).startOf(\"year\");\n var endDate = this.moment(end).endOf(\"year\");\n var years = [];\n var current = startDate;\n while (current.isBefore(endDate)) {\n years.push(current);\n current = current.clone().add(1, \"year\");\n }\n return years;\n };\n // displaying methods\n MomentUtils.prototype.getCalendarHeaderText = function (date) {\n return this.format(date, this.yearMonthFormat);\n };\n MomentUtils.prototype.getYearText = function (date) {\n return this.format(date, \"YYYY\");\n };\n MomentUtils.prototype.getDatePickerHeaderText = function (date) {\n return this.format(date, \"ddd, MMM D\");\n };\n MomentUtils.prototype.getDateTimePickerHeaderText = function (date) {\n return this.format(date, \"MMM D\");\n };\n MomentUtils.prototype.getMonthText = function (date) {\n return this.format(date, \"MMMM\");\n };\n MomentUtils.prototype.getDayText = function (date) {\n return this.format(date, \"D\");\n };\n MomentUtils.prototype.getHourText = function (date, ampm) {\n return this.format(date, ampm ? \"hh\" : \"HH\");\n };\n MomentUtils.prototype.getMinuteText = function (date) {\n return this.format(date, \"mm\");\n };\n MomentUtils.prototype.getSecondText = function (date) {\n return this.format(date, \"ss\");\n };\n return MomentUtils;\n}());\n\nexport default MomentUtils;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Edit');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M9.31 17l2.44-2.44L14.19 17l1.06-1.06-2.44-2.44 2.44-2.44L14.19 10l-2.44 2.44L9.31 10l-1.06 1.06 2.44 2.44-2.44 2.44L9.31 17zM19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11z\"\n}), 'EventBusy');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"\n}), 'Info');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'KeyboardArrowLeft');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'KeyboardArrowRight');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\n transform: \"scale(1.2, 1.2)\",\n fill: \"none\",\n d: \"M0 0h20v20H0V0z\"\n}), _react.default.createElement(\"path\", {\n transform: \"scale(1.2, 1.2)\",\n d: \"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\"\n})), 'Settings');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'Visibility');\n\nexports.default = _default;","import {TableContext} from '../contexts/TableContext';\nimport {withContext} from '../../../../HOCs/withContext/withContext';\n\nconst withTableContext = (contextSelector) => (CellRenderer) =>\n withContext(TableContext, contextSelector, CellRenderer);\n\nexport default withTableContext;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n 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 {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 removeLoserUri = (searchNavigationData: SearchNavigationData, loserUri: string): SearchNavigationData => {\n const {uri, total} = searchNavigationData;\n let {index, cache} = searchNavigationData;\n if (cache && cache.includes(loserUri)) {\n cache = [...cache];\n const loserIndex = cache.indexOf(loserUri);\n const uriIndex = cache.indexOf(uri);\n cache.splice(loserIndex, 1);\n if (loserIndex < uriIndex) {\n index--;\n }\n return {\n ...searchNavigationData,\n total: total - 1,\n cache,\n index\n };\n }\n return searchNavigationData;\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 losersUris.reduce(removeLoserUri, updatedSearchNavigationData);\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 React from 'react';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport i18n from 'ui-i18n';\nimport {DropDownMenuItem} from '../../types';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport DropDownMenuButton from '../DropDownMenuButton/DropDownMenuButton';\n\ntype Props = {\n items: Array<DropDownMenuItem>;\n menuId: string;\n};\n\nconst SettingsMenu = ({items, menuId}: Props) => {\n return (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: SettingsIcon,\n tooltipTitle: i18n.text('Settings'),\n size: 'L'\n }}\n menuId={menuId}\n menuItems={items}\n />\n );\n};\n\nexport default SettingsMenu;\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, useEffect, useMemo, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {cond, pipe, prop, T, evolve, filter as filterFn, when, identity, times, length, ifElse, always} from 'ramda';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n ActivityFilter,\n addGlobalFilterToQuery,\n Connection,\n Entity,\n getRelationsForDataTenantEntity,\n getRelationsForEntity,\n GlobalSearchRequestOptions,\n isAvailableEntityTypeUri,\n isAvailableRelationTypeUri,\n isDataTenantEntity,\n isObject,\n isTempUri,\n Metadata,\n Mode,\n RelationsContent,\n RelationsViewConfig,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from './useSafePromise';\nimport {usePrevious} from './usePrevious';\n\ntype Props = {\n sorting?: {\n field: string;\n order: string;\n };\n filter?: string;\n page: number;\n rowsPerPage: number;\n config: Pick<RelationsViewConfig, 'suggested' | 'content' | 'id'>;\n entity: Entity;\n relationActivityFilter?: ActivityFilter;\n mode: Mode;\n searchByOv?: boolean;\n};\n\nconst buildSuggestedIds = when(\n identity,\n pipe(\n wrapInArrayIfNeeded,\n length,\n times((n) => n + 1)\n )\n);\ntype ConnectionResponse = Array<{connections?: Connection[]; total: number}>;\n\nexport const useRelationsLoader = ({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter,\n mode,\n searchByOv = false\n}: Props) => {\n const [isLoading, setIsLoading] = useState(false);\n const dispatch = useDispatch();\n const tenant = useSelector(mdm.selectors.getTenant) as string;\n const metadata = useSelector(mdm.selectors.getMetadata) as Metadata;\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdm.selectors.getGlobalSearchRequestOptions) || {};\n const lastLoadedTime = useSelector(mdm.selectors.getProfileLastLoadedTime);\n const safePromise = useSafePromise();\n\n const processContent = (content: RelationsContent) => {\n const getUri = when(isObject, prop('uri'));\n const filterRelation = pipe(getUri, isAvailableRelationTypeUri(metadata));\n\n return evolve({\n entityTypes: filterFn(isAvailableEntityTypeUri(metadata)),\n inRelations: filterFn(filterRelation),\n outRelations: filterFn(filterRelation),\n nextEntry: processContent\n })(content);\n };\n\n const suggested = config.suggested;\n const options = useMemo(\n () => ({\n searchByOv\n }),\n [searchByOv]\n );\n const loadRelations = useCallback(() => {\n if (entity?.uri) {\n const processedConfig = processContent(config.content);\n const requestConfig = {\n ...processedConfig,\n sortBy: sorting?.field,\n order: sorting?.order,\n returnDates: true,\n returnObjects: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n },\n max: rowsPerPage,\n offset: page * rowsPerPage,\n filter: addGlobalFilterToQuery(globalFilter, filter) || undefined,\n suggested: buildSuggestedIds(suggested)\n };\n const configs = [requestConfig].concat(\n ifElse(\n identity,\n pipe(wrapInArrayIfNeeded, (suggested) =>\n suggested.map((config, i) => ({...config, id: requestConfig.suggested[i]}))\n ),\n always([])\n )(suggested)\n );\n\n const request: (entity: Entity) => Promise<ConnectionResponse> = cond([\n [pipe(prop('uri'), isTempUri), () => Promise.resolve([{total: 0}])],\n [\n isDataTenantEntity,\n (entity) =>\n getRelationsForDataTenantEntity({\n entityUri: entity.uri,\n configs: configs,\n customerTenant: tenant,\n dataTenant: entity.dataTenant,\n dtssPath,\n options\n })\n ],\n [T, (entity) => getRelationsForEntity(entity.uri, configs, options)]\n ]);\n setIsLoading(true);\n safePromise(request(entity))\n .then(([{connections, total}]) => {\n dispatch(profile.relations.actions.relationsLoaded({id: config.id, connections, total}));\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n activityFilter,\n metadata,\n config,\n dispatch,\n dtssPath,\n entity?.uri,\n entity?.dataTenant,\n filter,\n globalFilter,\n page,\n relationActivityFilter,\n rowsPerPage,\n safePromise,\n sorting,\n tenant,\n options,\n lastLoadedTime\n ]);\n const isRequestSentRef = useRef<boolean>(false);\n isRequestSentRef.current = false;\n useEffect(() => {\n isRequestSentRef.current = true;\n loadRelations();\n }, [loadRelations]);\n\n const prevMode = usePrevious(mode);\n useEffect(() => {\n if (mode === Mode.Viewing && !isRequestSentRef.current && prevMode !== mode) {\n isRequestSentRef.current = true;\n loadRelations();\n }\n }, [loadRelations, mode, prevMode]);\n return {isLoading, reload: loadRelations};\n};\n","import {useEffect, useState} from 'react';\nimport {useDidUpdateEffect} from '@reltio/components';\nimport {\n RelationshipsSavedState,\n RelationsTableSavedState,\n AttributesTableSavedState\n} from './../types/RelationshipsSavedState';\n\nconst DEFAULT_SAVED_STATE = {\n relationsTable: {},\n attributesTable: {}\n};\n\nconst useSavedState = ({getSavedState, saveState, entityTypeUri}) => {\n const [savedState, setSavedState] = useState<RelationshipsSavedState>(DEFAULT_SAVED_STATE);\n const [changedRelationsState, setRelationsChangedState] = useState<Record<string, RelationsTableSavedState>>(null);\n\n const saveChangesLocallyForPrevEntityType = () => {\n if (changedRelationsState) {\n setSavedState({...savedState, relationsTable: changedRelationsState});\n setRelationsChangedState(null);\n }\n };\n useDidUpdateEffect(saveChangesLocallyForPrevEntityType, [entityTypeUri]);\n\n const updateRelationsTableSavedState = (stateToSave: RelationsTableSavedState) => {\n const changedState: Record<string, RelationsTableSavedState> = {\n ...savedState.relationsTable,\n [entityTypeUri]: stateToSave\n };\n setRelationsChangedState(changedState);\n saveState({...savedState, relationsTable: changedState});\n };\n\n const updateAttributesTableSavedState = (stateToSave: AttributesTableSavedState) => {\n saveState({...savedState, attributesTable: stateToSave});\n };\n\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n getSavedState()\n .then((savedState) => {\n setSavedState(savedState || DEFAULT_SAVED_STATE);\n })\n .then((_) => setIsLoading(false))\n .catch((_) => setIsLoading(false));\n }, []); // eslint-disable-line\n return {\n isLoading,\n relationsTableSavedState: savedState.relationsTable?.[entityTypeUri],\n attributesTableSavedState: savedState.attributesTable,\n updateRelationsTableSavedState,\n updateAttributesTableSavedState\n };\n};\n\nexport default useSavedState;\n","import {\n attributeUriToSearchUri,\n DataTypes,\n getAttrDataTypeDefinition,\n getReadableAttributesList,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {adjust, assoc, concat, find, map, pipe, pluck, prop, propEq, reject, uniqBy} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {RelationshipsTableColumnData} from '../../../types';\n\nconst RELATION_TYPE_COLUMN_ID = 'relation.type';\nconst ATTRIBUTES_COLUMN_ID = 'relation.attributes';\n\nexport const DEFAULT_COLUMNS_DATA = [\n {\n id: 'entity.label',\n get label() {\n return i18n.text('Profile');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n filterable: false,\n initialWidth: 280,\n autoResize: false\n },\n {\n id: RELATION_TYPE_COLUMN_ID,\n get label() {\n return i18n.text('Type');\n }\n },\n {\n id: 'relation.label',\n get label() {\n return i18n.text('Directional Label');\n },\n filterable: false,\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n }\n },\n {\n id: 'relation.activeness.startDate',\n get label() {\n return i18n.text('Start Date');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ACTIVENESS_DATE\n }\n },\n {\n id: 'relation.activeness.endDate',\n get label() {\n return i18n.text('End Date');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ACTIVENESS_DATE\n }\n },\n {\n id: ATTRIBUTES_COLUMN_ID,\n get label() {\n return i18n.text('Attributes');\n },\n sortable: false,\n filterable: false,\n maxAttrsToShow: 7\n }\n];\n\nexport const DEFAULT_COLUMNS = pluck('id', DEFAULT_COLUMNS_DATA);\nexport const ALL_TYPES_COLUMNS = [RELATION_TYPE_COLUMN_ID, ATTRIBUTES_COLUMN_ID];\n\nexport const ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\n\nconst getColumnIdFromAttrUri = pipe(attributeUriToSearchUri, concat('relation.'));\n\nconst getColumnsDataFromRelationAttributes = pipe(\n map((attr) => ({\n id: getColumnIdFromAttrUri(attr.uri),\n label: attr.label,\n description: attr?.description,\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n })),\n uniqBy(prop('id'))\n);\n\nconst getRelationColumnDataType = (relationTypes: TRelationType[]) => ({\n type: DataTypes.TYPE_SELECT,\n options: relationTypes.map(({uri, label}) => ({value: uri, label}))\n});\n\nconst updateColumnData = (columnId: string, updateFn) => (columnsData: RelationshipsTableColumnData[]) =>\n adjust(columnsData.findIndex(propEq('id', columnId)), updateFn, columnsData);\n\nconst updateRelationTypeColumn = (relationTypes: TRelationType[]) =>\n updateColumnData(RELATION_TYPE_COLUMN_ID, assoc('dataTypeDefinition', getRelationColumnDataType(relationTypes)));\n\nexport const getColumnsData = (relationTypes: TRelationType[], currentRelationType: string) =>\n currentRelationType\n ? pipe(\n find((relationType: TRelationType) => relationType.uri === currentRelationType),\n getReadableAttributesList,\n getColumnsDataFromRelationAttributes,\n concat(DEFAULT_COLUMNS_DATA),\n reject(({id}) => ALL_TYPES_COLUMNS.includes(id))\n )(relationTypes)\n : updateRelationTypeColumn(relationTypes)(DEFAULT_COLUMNS_DATA);\n","import {\n assoc,\n pipe,\n evolve,\n either,\n path,\n prop,\n propOr,\n ifElse,\n always,\n without,\n concat,\n intersection,\n pick,\n unless,\n isNil,\n filter\n} from 'ramda';\nimport {useReducer} from 'react';\nimport {basicTableViewState, createStandardAction, Sorting, useActions} from '@reltio/components';\nimport {ALL_TYPES_COLUMNS, DEFAULT_COLUMNS} from '../components/RelationshipsView/helpers/tableHelpers';\nimport {validateFilterValue} from '@reltio/mdm-sdk';\n\ntype Props = {\n defaultColumns: string[];\n defaultSorting: Sorting;\n defaultRowsPerPage: number;\n};\n\nconst CHANGE_RELATION_TYPE = 'CHANGE_RELATION_TYPE';\nconst APPLY_SAVED_STATE = 'APPLY_SAVED_STATE';\nconst SAVE_CURRENT_STATE = 'SAVE_CURRENT_STATE';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeRelationType: createStandardAction(CHANGE_RELATION_TYPE),\n applySavedState: createStandardAction(APPLY_SAVED_STATE),\n saveCurrentState: createStandardAction(SAVE_CURRENT_STATE)\n};\n\nconst resetPageNumber = assoc('page', 0);\n\nconst getDefaultVisibleColumnsForCurrentRelationType = (state) => {\n return pipe(\n prop('visibleColumns'),\n ifElse(always(state.currentRelationType), without(ALL_TYPES_COLUMNS), concat(ALL_TYPES_COLUMNS)),\n intersection(DEFAULT_COLUMNS)\n )(state);\n};\n\nconst getSavedVisibleColumnsForCurrentRelationType = (state) =>\n path(['visibleColumnsForRelationTypes', `${state.currentRelationType}`], state);\n\nconst changeVisibleColumnsForCurrentRelationType = (state) => {\n const nextVisibleColumns = either(\n getSavedVisibleColumnsForCurrentRelationType,\n getDefaultVisibleColumnsForCurrentRelationType\n )(state);\n return basicTableViewState.changeVisibleColumns(state, nextVisibleColumns);\n};\n\nconst getFiltersFromSavedState = pipe(\n propOr(null, 'filters'),\n unless(\n isNil,\n filter(({filter, value}) => validateFilterValue(filter, value))\n )\n);\n\nconst saveVisibleColumnsForCurrentRelationType = (state) => {\n const {currentRelationType, visibleColumns} = state;\n return evolve(\n {\n visibleColumnsForRelationTypes: assoc(`${currentRelationType}`, visibleColumns)\n },\n state\n );\n};\n\nconst getStateToSave = pipe(\n saveVisibleColumnsForCurrentRelationType,\n pick(['currentRelationType', 'visibleColumnsForRelationTypes', 'filters', 'sorting'])\n);\n\nexport const useRelationshipsTable = ({defaultColumns, defaultSorting, defaultRowsPerPage}: Props) => {\n const initState = {\n visibleColumns: defaultColumns,\n filters: null,\n sorting: defaultSorting,\n page: 0,\n rowsPerPage: defaultRowsPerPage,\n currentRelationType: null,\n stateToSave: null,\n visibleColumnsForRelationTypes: {},\n entityTypeOfAppliedSavedState: null\n };\n const [state, dispatch] = useReducer((state, action) => {\n switch (action.type) {\n case CHANGE_RELATION_TYPE: {\n const nextRelationType = action.payload;\n return pipe(\n saveVisibleColumnsForCurrentRelationType,\n assoc('currentRelationType', nextRelationType),\n changeVisibleColumnsForCurrentRelationType,\n resetPageNumber\n )(state);\n }\n case APPLY_SAVED_STATE: {\n const {savedState, entityTypeUri} = action.payload;\n const visibleColumns = savedState\n ? getSavedVisibleColumnsForCurrentRelationType(savedState)\n : state.visibleColumns;\n const filters = savedState ? getFiltersFromSavedState(savedState) : state.filters;\n return {\n ...state,\n ...savedState,\n filters,\n visibleColumns,\n entityTypeOfAppliedSavedState: entityTypeUri\n };\n }\n case SAVE_CURRENT_STATE: {\n return {\n ...state,\n stateToSave: getStateToSave(state)\n };\n }\n default:\n return basicTableViewState.reducer(state, action);\n }\n }, initState);\n const tableActions = useActions({actions, dispatch});\n return [state, tableActions];\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n select: {\n fontSize: '13px',\n color: 'rgba(0,0,0,.6)',\n paddingLeft: '15px',\n '&&': {\n paddingRight: '35px'\n }\n },\n selectMenu: {\n '& li': {\n fontSize: '13px',\n height: '32px'\n }\n },\n textField: {\n maxWidth: '100%'\n }\n});\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {map, concat, pipe} from 'ramda';\nimport {TRelationType} from '@reltio/mdm-sdk';\nimport {DropDownEditor} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: string;\n onChange: (value: string) => void;\n relationTypes: TRelationType[];\n className?: string;\n};\n\nconst RelationTypeSelector = ({value, onChange, relationTypes, className}: Props) => {\n const styles = useStyles();\n const entries = useMemo(\n () =>\n pipe(\n map(({label, uri}) => ({label, value: uri})),\n concat([{value: '', label: i18n.text('All types')}])\n )(relationTypes),\n [relationTypes]\n );\n\n return (\n <div className={className}>\n <DropDownEditor\n displayEmpty\n disableUnderline\n classes={{\n select: styles.select\n }}\n TextFieldProps={{\n classes: {\n root: styles.textField\n }\n }}\n MenuProps={{\n classes: {\n list: styles.selectMenu\n }\n }}\n value={value || ''}\n entries={entries}\n onChange={(value: string) => onChange(value || null)}\n />\n </div>\n );\n};\n\nexport default RelationTypeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n height: '56px',\n boxSizing: 'border-box',\n paddingRight: '10px'\n },\n title: {\n fontSize: '16px'\n },\n total: {\n fontSize: '14px',\n color: theme.palette.text.secondary,\n flexShrink: 0,\n marginRight: '5px'\n },\n relationTypeSelector: {\n margin: '0px 10px 0 30px',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {TRelationType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n BasicViewHeader,\n ColumnsSettings,\n DropDownMenuItem,\n FilterButton,\n SettingsMenu,\n Spacer,\n VerticalDivider\n} from '@reltio/components';\nimport RelationTypeSelector from '../RelationTypeSelector/RelationTypeSelector';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total: number;\n filteringEnabled: boolean;\n onToggleFilters: () => void;\n columnsData: Record<string, unknown>[];\n selectedColumns: string[];\n currentRelationType: string;\n onRelationTypeChange: (value: string) => void;\n relationTypes: TRelationType[];\n onChangeColumns: (columns: string[]) => void;\n searchByOv: boolean;\n onToggleSearchByOv: () => void;\n};\n\nconst RelationshipsTableHeader = ({\n total,\n filteringEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n currentRelationType,\n onRelationTypeChange,\n relationTypes,\n onChangeColumns,\n searchByOv,\n onToggleSearchByOv\n}: Props) => {\n const styles = useStyles();\n\n const settingItems = useMemo<Array<DropDownMenuItem>>(() => {\n return [\n {\n selected: searchByOv,\n selectable: true,\n text: i18n.text('Search by OV only'),\n onClick: onToggleSearchByOv,\n id: 'showNonOv'\n }\n ];\n }, [onToggleSearchByOv, searchByOv]);\n\n return (\n <BasicViewHeader title={i18n.text('Relationships')} classes={{root: styles.header, title: styles.title}}>\n {relationTypes.length > 0 && (\n <RelationTypeSelector\n className={styles.relationTypeSelector}\n value={currentRelationType}\n onChange={onRelationTypeChange}\n relationTypes={relationTypes}\n />\n )}\n <VerticalDivider height={28} margin={20} />\n <Typography variant=\"caption\" className={styles.total}>\n {total === 1\n ? i18n.text('${count} record', {count: total})\n : i18n.text('${count} records', {count: total})}\n </Typography>\n <Spacer />\n <SettingsMenu items={settingItems} menuId=\"relationships-view-settings\" />\n <FilterButton enabled={filteringEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={28} margin={8} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </BasicViewHeader>\n );\n};\n\nexport default memo(RelationshipsTableHeader);\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n width: '100%',\n fontSize: '12px',\n color: theme.palette.text.secondary,\n background: 'linear-gradient(0deg, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.06)), #FFFFFF'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden',\n overflowWrap: 'break-word'\n },\n inactiveRowCell: {\n opacity: 0.6\n },\n defaultWrapper: {\n padding: '15px 25px 0 25px',\n '&:last-child': {\n paddingBottom: '15px'\n }\n },\n entityCell: {\n display: 'flex',\n alignItems: 'flex-start',\n padding: '15px'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n margin: '-10px 0 -10px -10px'\n },\n inactiveEntityAvatar: {\n overflow: 'initial',\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n backgroundColor: 'rgb(209, 206, 206)',\n border: '1px solid rgba(0, 0, 0, 1)',\n borderRadius: '2px',\n width: '12px',\n right: 0,\n bottom: 0,\n height: '12px'\n },\n '& > img': {\n borderRadius: '50%',\n overflow: 'hidden'\n }\n },\n entityLabel: {\n color: theme.palette.primary.main,\n textDecoration: 'none',\n fontWeight: 500\n },\n attributesWrapper: {\n padding: '15px 25px 10px 25px',\n color: 'rgba(0,0,0,0.87)'\n },\n commentsContainer: {\n marginLeft: 'auto'\n },\n description: {\n marginLeft: '-22px'\n }\n}));\n","import React from 'react';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {DescriptionIcon, withFilterAtBottom} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n const {description} = props?.headCellData;\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n <DescriptionIcon description={description} className={styles.description} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {CommentsContainer, COMMENTS_CONTAINER_VISIBILITY_AREA, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n ConnectionEntity,\n ConnectionRelation,\n createRelatedObjectUris,\n getEntityUriForLink,\n getLabel,\n TEntityType\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n entity: ConnectionEntity;\n relation: ConnectionRelation;\n entityType: TEntityType;\n };\n isInactiveRelation?: boolean;\n};\n\nconst EntityProfileRenderer = ({value: {entity, entityType, relation}, isInactiveRelation}: Props) => {\n const styles = useStyles();\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUri);\n return (\n <div className={classnames(styles.entityCell, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <EntityTypeIcon\n className={classnames(styles.entityAvatar, {[styles.inactiveEntityAvatar]: isInactiveRelation})}\n entityType={entityType}\n />\n <EntityUriLink\n value={getEntityUriForLink({uri: entity.entityUri, dataTenant: entity.dataTenant})}\n className={styles.entityLabel}\n >\n {getLabel(entity.entityLabel)}\n </EntityUriLink>\n <div className={styles.commentsContainer} onClick={(e) => e.stopPropagation()}>\n <CommentsContainer\n uri={relation.relationUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection: {relation, entity}\n })}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n </div>\n </div>\n );\n};\n\nexport default EntityProfileRenderer;\n","import React from 'react';\nimport {ReadOnlyAttributesList} from '@reltio/components';\nimport {AttributeType, RecordAttributesType} from '@reltio/mdm-sdk';\nimport {RelationshipsTableColumnData} from '../../../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n columnData: RelationshipsTableColumnData;\n value: {\n attributeTypes: AttributeType[];\n attributes: RecordAttributesType;\n };\n};\n\nconst AttributesRenderer = ({columnData, value: {attributes, attributeTypes}}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.attributesWrapper} onClick={(e) => e.stopPropagation()}>\n <ReadOnlyAttributesList\n max={columnData.maxAttrsToShow}\n entity={{attributes}}\n attrTypes={attributeTypes}\n drawLines={false}\n />\n </div>\n );\n};\n\nexport default AttributesRenderer;\n","import React from 'react';\nimport {DataTypeValue} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {RelationshipsTableColumnData} from '../../../types';\n\ntype Props = {\n columnData: RelationshipsTableColumnData;\n value: unknown;\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.defaultWrapper}>\n <DataTypeValue value={value} dataTypeDefinition={dataTypeDefinition} />\n </div>\n );\n};\n\nexport default DefaultCellValueRenderer;\n","import {assoc, split, slice, values, length, path, cond, map, pathEq, pipe, reduce, T} from 'ramda';\nimport {defaultGetRowCellHeight} from '@reltio/components';\nimport {Connection, getEntityType, getRelationType, getOvAttributeValuesByPath, Metadata} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport EntityProfileRenderer from './cell-renderers/EntityProfileRenderer';\nimport AttributesRenderer from './cell-renderers/AttributesRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport {RelationshipsTableColumnData} from '../../types';\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getRelationAttributeValues = (attrPath, relation) =>\n pipe(path(['object', 'attributes']), getOvAttributeValuesByPath(attrPath))(relation);\n\nconst getRowValueByColumnId = (metadata: Metadata, {entity, relation}: Connection, columnId: string) => {\n switch (columnId) {\n case 'entity.label':\n return {entity, entityType: getEntityType(metadata, entity.entityType), relation};\n case 'relation.type':\n return relation.relationType;\n case 'relation.label':\n return relation.relationLabel;\n case 'relation.activeness.startDate':\n return relation.startDate;\n case 'relation.activeness.endDate':\n return relation.endDate;\n case 'relation.attributes':\n return {\n attributes: relation.object.attributes,\n attributeTypes: getRelationType(metadata, relation.relationType).attributes\n };\n default: {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getRelationAttributeValues(attrPath, relation);\n }\n }\n};\n\nconst getBasicTableRowsData = (\n metadata: Metadata,\n columnsData: RelationshipsTableColumnData[],\n connections: Connection[]\n) => {\n return (connections || []).map((connection) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(metadata, connection, id), acc), {}),\n assoc('rawValue', connection)\n )(columnsData)\n );\n};\n\nconst getNestedPathByColumnId = (columnId: string) => {\n if (columnId.startsWith('relation.attributes')) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRenderer = (columnId: string) => {\n switch (columnId) {\n case 'entity.label':\n return EntityProfileRenderer;\n case 'relation.attributes':\n return AttributesRenderer;\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getColumnDataByColumnId = (columnData: RelationshipsTableColumnData) => ({\n sortable: true,\n resizable: true,\n ...columnData,\n headCellRenderer: HeadCellRenderer,\n nestedPath: getNestedPathByColumnId(columnData.id),\n rowCellValueRenderer: getCellValueRenderer(columnData.id)\n});\n\nconst getBasicTableColumnsData = map(getColumnDataByColumnId);\n\nconst calculateAttributesCellHeight = ({columnData, cell}) => {\n const attributesCount = pipe(path(['values', 0, 'attributes']), values, length)(cell);\n return attributesCount > columnData.maxAttrsToShow\n ? columnData.maxAttrsToShow * 26 + 49\n : attributesCount * 26 + 25;\n};\n\nconst getStaticRowCellHeight = cond([\n [pathEq(['columnData', 'id'], 'relation.attributes'), calculateAttributesCellHeight],\n [T, defaultGetRowCellHeight]\n]);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData, getStaticRowCellHeight};\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n cell: {\n values: unknown[];\n };\n CellValueRenderer: React.ElementType;\n isInactiveRelation?: boolean;\n};\n\nconst RowCellRenderer = ({cell, CellValueRenderer, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.rowCell, {[styles.inactiveRowCell]: otherProps.isInactiveRelation})}>\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default RowCellRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n menuItem: {\n minHeight: '32px',\n color: theme.palette.text.secondary\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0,\n marginLeft: '16px'\n },\n buttons: {\n display: 'flex',\n alignItems: 'center',\n paddingRight: '5px'\n }\n}));\n","import React, {forwardRef, ReactNode} from 'react';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {noop, withTooltip} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst MenuItemWithTooltip = withTooltip(MenuItem);\n\ntype Item = {\n text?: string;\n disabled?: boolean;\n icon: ReactNode;\n tooltip?: string;\n onClick?: (e) => void;\n};\n\ntype Props = {\n item: Item;\n onMenuClose?: () => void;\n};\n\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = noop}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {icon, disabled, text, tooltip, onClick} = item;\n const handleClick = (e) => {\n onMenuClose();\n onClick(e);\n };\n\n return (\n <MenuItemWithTooltip\n tooltipTitle={tooltip}\n showForDisabled={true}\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n >\n {icon}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItemWithTooltip>\n );\n});\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React, {useCallback, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {ConfirmationDialog, DropDownMenuButton, noop, SmallIconButton} from '@reltio/components';\nimport MenuItemRenderer from './MenuItemRenderer';\nimport {checkMetadataPermission, Connection, getLabel, getRelationType, MetadataPermissions} from '@reltio/mdm-sdk';\nimport {pipe, prop} from 'ramda';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n disableDelete?: boolean;\n connection: Connection;\n onMenuOpen?: () => void;\n onMenuClose?: () => void;\n onDelete: () => void;\n};\n\nexport const RelationshipMenuButton = ({\n disableDelete,\n connection: {entity, relation},\n onMenuOpen = noop,\n onMenuClose = noop,\n onDelete\n}: Props) => {\n const styles = useStyles();\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const hasDeletePermission = pipe(\n prop('relationType'),\n getRelationType(metadata),\n checkMetadataPermission(MetadataPermissions.DELETE)\n )(relation);\n\n const canDelete = !disableDelete && hasDeletePermission;\n\n const [pendingDeletion, setPendingDeletion] = useState(false);\n const showDeleteConfirmation = () => setPendingDeletion(true);\n const hideDeleteConfirmation = () => setPendingDeletion(false);\n\n const actions = [\n {\n disabled: !canDelete,\n text: i18n.text('Delete'),\n icon: <DeleteIcon />,\n tooltip: canDelete ? null : i18n.text(\"You don't have permissions to delete\"),\n onClick: showDeleteConfirmation\n }\n ];\n\n const handleMenuClose = useCallback(() => {\n if (!pendingDeletion) {\n onMenuClose();\n }\n }, [pendingDeletion, onMenuClose]);\n const truncateWithEllipsis = (text: string) => (text.length > 17 ? `${text.substring(0, 17)}...` : text);\n\n return (\n <div className={styles.buttons}>\n <DropDownMenuButton\n MenuItemRenderer={MenuItemRenderer}\n menuId={'relationships-table-actions'}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'S'\n }}\n menuItems={actions}\n onMenuOpen={onMenuOpen}\n onMenuClose={handleMenuClose}\n />\n <ConfirmationDialog\n open={pendingDeletion}\n title={i18n.text('Do you want to delete relationship \"${label}\"?', {\n label: truncateWithEllipsis(getLabel(entity.entityLabel))\n })}\n content={i18n.text(\n 'This relationship will be removed and all the values in the relationship will be permanently deleted. \\\nAre you sure you want to delete this relationship?'\n )}\n onSave={pipe(hideDeleteConfirmation, onMenuClose, onDelete)}\n onDiscard={pipe(hideDeleteConfirmation, onMenuClose)}\n saveCaption={i18n.text('Delete')}\n discardCaption={i18n.text('Cancel')}\n />\n </div>\n );\n};\n\nexport default RelationshipMenuButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n tableContainer: {\n flex: 1,\n overflow: 'hidden',\n display: 'flex',\n zIndex: 0\n },\n hoveredRowRightContentWrapper: {\n width: '100%',\n pointerEvents: 'none!important' as any\n },\n menuButtonContainer: {\n position: 'absolute',\n top: 'calc(50% - 12px)',\n right: 0,\n pointerEvents: 'all'\n },\n tooltipAnchor: {\n width: '100%',\n height: '1px'\n }\n});\n","import React, {ForwardedRef, memo, useCallback, useMemo, useState} from 'react';\nimport {Connection, isActiveObject, Metadata} from '@reltio/mdm-sdk';\nimport {\n BasicTable,\n ColumnData,\n ColumnFilter,\n RowCellAutoSizer,\n Sorting,\n useDynamicRowCellHeight\n} from '@reltio/components';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {getBasicTableColumnsData, getBasicTableRowsData, getStaticRowCellHeight} from './helpers';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {either} from 'ramda';\nimport RelationshipMenuButton from '../RelationshipMenuButton/RelationshipMenuButton';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n metadata: Metadata;\n connections: Connection[];\n columnsData: ColumnData[];\n sorting: Sorting;\n onSort: (field: string) => void;\n filters?: Record<string, ColumnFilter>;\n onFilter: (event: {columnId: string; filter: ColumnFilter}) => void;\n onRowClick: (rowIndex: number) => void;\n onDelete: (relationUri: string) => void;\n tableRef: ForwardedRef<unknown>;\n readOnly?: boolean;\n};\n\nconst RelationshipsTable = ({\n metadata,\n connections,\n columnsData,\n sorting,\n onSort,\n filters,\n onFilter,\n onRowClick,\n tableRef,\n onDelete,\n readOnly\n}: Props) => {\n const styles = useStyles();\n\n const tableRowsData = useMemo(() => getBasicTableRowsData(metadata, columnsData, connections), [\n metadata,\n connections,\n columnsData\n ]);\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const {getDynamicRowCellHeight, changeRowCellHeight} = useDynamicRowCellHeight();\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, getStaticRowCellHeight), [\n getDynamicRowCellHeight,\n getStaticRowCellHeight\n ]);\n const [hoverRowIndex, setHoverRowIndex] = useState<number>(null);\n\n const renderRowCell = useCallback(\n (props) => {\n const isInactiveRelation = !isActiveObject(props.rowValue.rawValue.relation);\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} isInactiveRelation={isInactiveRelation} />\n </RowCellAutoSizer>\n );\n },\n [changeRowCellHeight]\n );\n\n const [isActionsMenuOpen, setIsActionsMenuOpen] = useState(false);\n\n const handleActionsMenuOpen = useCallback(() => setIsActionsMenuOpen(true), []);\n const handleActionsMenuClose = useCallback(() => {\n setHoverRowIndex(null);\n setIsActionsMenuOpen(false);\n }, []);\n\n const onRowHover = useCallback(\n (rowIndex) => setHoverRowIndex((prevHoverRowIndex) => (isActionsMenuOpen ? prevHoverRowIndex : rowIndex)),\n [isActionsMenuOpen]\n );\n\n const hoveredRowRightContent = useMemo(() => {\n const connection: Connection = hoverRowIndex != null ? tableRowsData[hoverRowIndex].rawValue : null;\n const isInactiveRelation = !isActiveObject(connection?.relation);\n\n return (\n connection && (\n <>\n <Tooltip\n key={connection.relation.relationUri}\n open={isInactiveRelation}\n title={i18n.text('Inactive')}\n >\n <div className={styles.tooltipAnchor} />\n </Tooltip>\n <div className={styles.menuButtonContainer}>\n <RelationshipMenuButton\n disableDelete={readOnly}\n connection={connection}\n onMenuOpen={handleActionsMenuOpen}\n onMenuClose={handleActionsMenuClose}\n onDelete={() => onDelete(connection.relation.relationUri)}\n />\n </div>\n </>\n )\n );\n }, [onDelete, tableRowsData, hoverRowIndex]);\n\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n fixFirstColumn={true}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={48}\n getRowCellHeight={getRowCellHeight}\n renderRowCell={renderRowCell}\n onRowClick={onRowClick}\n ref={tableRef}\n hoverStateEnabled={true}\n hoverRowIndex={hoverRowIndex}\n onRowHover={onRowHover}\n hoveredRowRightContent={hoveredRowRightContent}\n classes={{\n hoveredRowRightContentWrapper: styles.hoveredRowRightContentWrapper\n }}\n />\n </div>\n );\n};\n\nexport default memo(RelationshipsTable);\n","import {AttributeType, Relation} from '@reltio/mdm-sdk';\nimport {CrosswalksByTypes, groupCrosswalksByTypesAndSources} from '@reltio/components';\nimport {assoc, map, pipe, propOr} from 'ramda';\n\ntype TableRow = {\n source: string;\n crosswalksByTypes: CrosswalksByTypes;\n};\n\nexport const buildTableRowsData = (relation: Relation, selectedAttributeTypes: AttributeType[] = []): TableRow[] => {\n return pipe(\n propOr([], 'crosswalks'),\n map(assoc('ownerType', 'entity')),\n groupCrosswalksByTypesAndSources(relation.type, selectedAttributeTypes)\n )(relation);\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n tableRow: {\n '& + &': {\n marginTop: '4px'\n },\n margin: 'auto',\n maxWidth: '448px'\n }\n}));\n","import React, {memo, useCallback, useMemo, useState} from 'react';\nimport {\n AttributeType,\n checkCanDeleteCrosswalk,\n checkCanEditCrosswalk,\n getRelationType,\n Metadata,\n Relation,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {DeleteCrosswalkEvent, EditCrosswalkEvent, SourceCrosswalksRow} from '@reltio/components';\nimport {append, ifElse, includes, without} from 'ramda';\nimport {buildTableRowsData} from './helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n readOnly?: boolean;\n relation: Relation;\n metadata: Metadata;\n selectedAttributeTypes?: AttributeType[];\n onDeleteCrosswalk: (event: DeleteCrosswalkEvent) => void;\n onEditCrosswalk: (event: EditCrosswalkEvent) => void;\n};\n\nconst LegendTable = ({\n readOnly,\n relation,\n metadata,\n selectedAttributeTypes,\n onDeleteCrosswalk,\n onEditCrosswalk\n}: Props) => {\n const styles = useStyles();\n\n const relationType: TRelationType = getRelationType(metadata, relation.type);\n\n const rowsData = useMemo(() => buildTableRowsData(relation, selectedAttributeTypes), [\n relation,\n selectedAttributeTypes\n ]);\n const [expandedSources, setExpandedSources] = useState<string[]>([]);\n\n const handleDelete = useCallback(\n (crosswalkId: string) => {\n onDeleteCrosswalk({entityUri: relation.uri, crosswalkId});\n },\n [onDeleteCrosswalk, relation.uri]\n );\n\n const handleEdit = useCallback(\n (event: Omit<EditCrosswalkEvent, 'entityUri'>) => {\n onEditCrosswalk({entityUri: relation.uri, ...event});\n },\n [onEditCrosswalk, relation.uri]\n );\n\n return (\n <div>\n {rowsData.map(({source, crosswalksByTypes}) => {\n return (\n <div key={source} className={styles.tableRow}>\n <SourceCrosswalksRow\n source={source}\n crosswalksByTypes={crosswalksByTypes}\n expanded={expandedSources.includes(source)}\n disableEditCrosswalk={!checkCanEditCrosswalk(relationType) || readOnly}\n disableDeleteCrosswalk={!checkCanDeleteCrosswalk(relationType) || readOnly}\n onEdit={handleEdit}\n onDelete={handleDelete}\n onToggleExpanded={() => {\n setExpandedSources(ifElse(includes(source), without([source]), append(source)));\n }}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default memo(LegendTable);\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n header: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n padding: '20px 12px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n title: {\n fontWeight: 500,\n fontSize: '20px',\n lineHeight: '23px',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary,\n marginLeft: '12px'\n },\n hint: {\n color: theme.palette.text.secondary,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n alignSelf: 'flex-start',\n margin: '4px 14px 10px'\n },\n hintText: {\n marginLeft: '8px',\n fontSize: '12px',\n lineHeight: '16px'\n },\n buttons: {\n display: 'flex',\n padding: '8px 6px 4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n paddingLeft: 25,\n margin: 'auto',\n maxWidth: '448px',\n boxSizing: 'border-box',\n marginBottom: '4px'\n },\n tableContainer: {\n overflowY: 'auto',\n overflowX: 'hidden',\n paddingLeft: '16px',\n paddingRight: '6px'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport InfoIcon from '@material-ui/icons/Info';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Button as Button} from '@material-ui/core';\nimport LegendTable from '../LegendTable/LegendTable';\nimport {\n AttributeType,\n checkCanCreateCrosswalk,\n getRelationType,\n Metadata,\n Relation,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {\n AddCrosswalkEvent,\n CrosswalkEditor,\n DeleteCrosswalkEvent,\n EditCrosswalkEvent,\n withTooltip\n} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst ButtonWithTooltip = withTooltip(Button);\n\ntype Props = {\n className?: string;\n readOnly?: boolean;\n relation: Relation;\n selectedAttributeTypes?: AttributeType[];\n onAddCrosswalk: (event: AddCrosswalkEvent) => void;\n onDeleteCrosswalk: (event: DeleteCrosswalkEvent) => void;\n onEditCrosswalk: (event: EditCrosswalkEvent) => void;\n};\n\nconst LegendPanel = ({\n className,\n readOnly,\n relation,\n selectedAttributeTypes,\n onAddCrosswalk,\n onDeleteCrosswalk,\n onEditCrosswalk\n}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationType: TRelationType = getRelationType(metadata, relation.type);\n\n const [openEditor, setOpenEditor] = useState(false);\n const canAdd = checkCanCreateCrosswalk(relationType) && !readOnly;\n\n return (\n <div className={className}>\n <div className={styles.header}>\n <span className={styles.title}>{i18n.text('Legend')}</span>\n </div>\n <div className={styles.buttons}>\n <ButtonWithTooltip\n color=\"primary\"\n showForDisabled={true}\n disabled={!canAdd}\n tooltipTitle={canAdd ? null : i18n.text(\"You don't have permissions to add crosswalk\")}\n onClick={() => setOpenEditor(true)}\n >\n <AddIcon className={styles.icon} />\n <div className={styles.buttonLabel}>{i18n.text('Crosswalk')}</div>\n </ButtonWithTooltip>\n </div>\n <div className={styles.hint}>\n <InfoIcon className={styles.icon} />\n <span className={styles.hintText}>\n {i18n.text('You can drag a crosswalk to add values to attributes swimlanes')}\n </span>\n </div>\n <div className={styles.tableContainer}>\n {openEditor && (\n <CrosswalkEditor\n className={styles.editor}\n onAdd={(crosswalk) => onAddCrosswalk({entity: relation, crosswalk})}\n onClose={() => setOpenEditor(false)}\n />\n )}\n <LegendTable\n readOnly={readOnly}\n metadata={metadata}\n relation={relation}\n selectedAttributeTypes={selectedAttributeTypes}\n onDeleteCrosswalk={onDeleteCrosswalk}\n onEditCrosswalk={onEditCrosswalk}\n />\n </div>\n </div>\n );\n};\n\nexport default memo(LegendPanel);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n entityInfo: {\n flex: '0 1 auto',\n overflow: 'hidden',\n minWidth: '100px'\n },\n entityLabelContainer: {\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden'\n },\n entityLabel: {\n lineHeight: '1.2',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary\n },\n infoIcon: {\n fontSize: '16px',\n color: theme.palette.text.secondary,\n marginLeft: '5px'\n },\n profileBand: {\n margin: '-10px',\n maxWidth: '500px'\n },\n entityTypeBadge: {\n marginTop: '7px'\n }\n}));\n","import React from 'react';\nimport {Entity, getLabel} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {ExpandedValueTooltip, LightArrowTooltip, ProfileBand, EntityTypeBadge} from '@reltio/components';\nimport InfoIcon from '@material-ui/icons/Info';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n};\n\nconst EntityInfo = ({entity}: Props) => {\n const styles = useStyles();\n const label = getLabel(entity.label);\n return (\n <div className={styles.entityInfo}>\n <div className={styles.entityLabelContainer}>\n <ExpandedValueTooltip value={label}>\n <Typography variant=\"h6\" className={styles.entityLabel} noWrap>\n {label}\n </Typography>\n </ExpandedValueTooltip>\n <LightArrowTooltip\n title={<ProfileBand className={styles.profileBand} entity={entity} />}\n placement={'right'}\n >\n <InfoIcon className={styles.infoIcon} />\n </LightArrowTooltip>\n </div>\n <EntityTypeBadge className={styles.entityTypeBadge} entity={entity} size={'medium'} />\n </div>\n );\n};\n\nexport default EntityInfo;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n flexShrink: 0,\n overflow: 'hidden',\n width: '110px'\n },\n label: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n","import React from 'react';\nimport {ConnectionRelation} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {ExpandedValueTooltip} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n relation: ConnectionRelation;\n};\n\nconst RelationDirection = ({relation}: Props) => {\n const styles = useStyles();\n const {direction, relationLabel} = relation;\n return (\n <div className={styles.root}>\n <ExpandedValueTooltip value={relationLabel}>\n <Typography variant={'subtitle2'} className={styles.label} align={'center'} noWrap>\n {relationLabel}\n </Typography>\n </ExpandedValueTooltip>\n <svg width=\"110\" height=\"12\" fill=\"black\" fillOpacity=\"0.3\">\n {direction === 'out' && <polygon points=\"94 0, 110 6, 94 12, 94 9, 0 9, 0 3, 94 3\" />}\n {direction === 'bidirectional' && (\n <polygon points=\"94 0, 110 6, 94 12, 94 9, 16 9, 16 12, 0 6, 16 0, 16 3, 94 3\" />\n )}\n {direction === 'in' && <polygon points=\"16 12, 0 6, 16 0, 16 3, 110 3, 110 9, 16 9\" />}\n </svg>\n </div>\n );\n};\n\nexport default RelationDirection;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n '&:hover $editButton': {\n visibility: 'visible'\n }\n },\n editButton: {\n visibility: 'hidden',\n marginLeft: '4px',\n marginBottom: '4px'\n },\n paper: {\n width: '150px',\n border: '3px solid rgba(0, 0, 0, 0.3)',\n borderRadius: '4px',\n boxSizing: 'border-box',\n overflow: 'hidden'\n }\n}));\n","import React, {KeyboardEvent, useRef, useState} from 'react';\nimport {formatDate} from '@reltio/mdm-sdk';\nimport {DateEditor, SmallIconButton} from '@reltio/components';\nimport EditIcon from '@material-ui/icons/Edit';\nimport {Popover as Popover} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: number;\n onChange: (value: number) => void;\n readOnly?: boolean;\n};\n\nconst RelationDate = ({value = null, onChange, readOnly}: Props) => {\n const styles = useStyles();\n const ref = useRef<HTMLSpanElement>();\n\n const [showEditor, setShowEditor] = useState(false);\n const openEditor = () => setShowEditor(true);\n const closeEditor = () => setShowEditor(false);\n\n const [editedValue, setEditedValue] = useState(value);\n\n const applyChangesAndClose = () => {\n if (editedValue !== value) {\n onChange(editedValue);\n }\n closeEditor();\n };\n\n const onKeyUp = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter') applyChangesAndClose();\n else if (event.key === 'Escape') closeEditor();\n };\n\n return (\n <span ref={ref} className={styles.root}>\n {value && formatDate(value)}\n <SmallIconButton\n disabled={readOnly}\n icon={EditIcon}\n size={'XXS'}\n className={styles.editButton}\n onClick={openEditor}\n />\n <Popover\n classes={{paper: styles.paper}}\n open={showEditor}\n anchorEl={ref.current}\n anchorOrigin={{vertical: 'top', horizontal: 'left'}}\n transformOrigin={{vertical: 14, horizontal: 20}}\n onKeyUp={onKeyUp}\n onBackdropClick={applyChangesAndClose}\n >\n <DateEditor\n InputProps={{\n autoFocus: true,\n disableUnderline: true,\n fullWidth: true\n }}\n size={'small'}\n hiddenLabel={true}\n label={undefined}\n value={editedValue && new Date(editedValue)}\n onChange={(value) => setEditedValue(value && value.valueOf())}\n />\n </Popover>\n </span>\n );\n};\n\nexport default RelationDate;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n relationBand: {\n flexShrink: 0,\n boxShadow: 'inset 0px -1px 0px rgba(0,0,0,0.06)',\n padding: '16px 19px'\n },\n inactiveRelationBand: {\n opacity: 0.6,\n background: 'rgba(185, 188, 197, 0.18)'\n },\n toolbar: {\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n marginBottom: '10px'\n },\n mainInfo: {\n display: 'flex',\n gap: '16px',\n marginLeft: '40px'\n },\n detailsInfo: {\n display: 'flex',\n gap: '34px',\n marginLeft: '40px',\n marginTop: '17px',\n color: theme.palette.text.secondary,\n fontSize: '13px'\n },\n detailTitle: {\n color: theme.palette.text.primary,\n flexShrink: 0,\n marginRight: '4px'\n },\n directionalLabel: {\n display: 'flex',\n overflow: 'hidden',\n '& span': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n }\n },\n relationDate: {\n flexShrink: 0\n },\n commentsContainer: {\n marginRight: '18px'\n }\n}));\n","import React, {memo} from 'react';\nimport {CollaborationObjectTypes, Connection, createRelatedObjectUris, Entity, isActiveObject} from '@reltio/mdm-sdk';\nimport {\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ExpandedValueTooltip,\n SmallIconButton,\n Spacer\n} from '@reltio/components';\nimport classnames from 'classnames';\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack';\nimport {Typography as Typography} from '@material-ui/core';\nimport EntityInfo from './EntityInfo/EntityInfo';\nimport RelationDirection from './RelationDirection/RelationDirection';\nimport RelationDate from './RelationDate/RelationDate';\nimport RelationshipMenuButton from '../RelationshipMenuButton/RelationshipMenuButton';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n readOnly?: boolean;\n entity: Entity;\n connection: Connection;\n onNavigateBack: () => void;\n onDelete: () => void;\n onChangeActivenessDate: (attributeName: string, value: number) => void;\n};\n\nconst RelationshipBand = ({readOnly, entity, connection, onNavigateBack, onDelete, onChangeActivenessDate}: Props) => {\n const isInactiveRelation = !isActiveObject(connection.relation);\n const styles = useStyles();\n return (\n <div\n className={classnames(styles.relationBand, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [styles.inactiveRelationBand]: isInactiveRelation\n })}\n >\n <div className={styles.toolbar}>\n <SmallIconButton icon={ArrowBackIcon} size={'S'} onClick={() => onNavigateBack()} />\n <Typography variant={'subtitle2'} display={'inline'}>\n {i18n.text('Back to relationships')}\n </Typography>\n <Spacer />\n <div className={styles.commentsContainer}>\n <CommentsContainer\n uri={connection.relation.relationUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: entity?.uri,\n connection\n })}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n </div>\n <RelationshipMenuButton connection={connection} onDelete={onDelete} disableDelete={readOnly} />\n </div>\n <div className={styles.mainInfo}>\n <EntityInfo entity={entity} />\n <RelationDirection relation={connection.relation} />\n <EntityInfo entity={{...connection.entity.object, dataTenant: connection.entity.dataTenant}} />\n </div>\n <div className={styles.detailsInfo}>\n <div className={styles.directionalLabel}>\n <span className={styles.detailTitle}>{i18n.text('Directional label:')}</span>\n <ExpandedValueTooltip value={connection.relation.relationLabel}>\n <span>{connection.relation.relationLabel}</span>\n </ExpandedValueTooltip>\n </div>\n <div className={styles.relationDate}>\n <span className={styles.detailTitle}>{i18n.text('Start date:')}</span>\n <RelationDate\n value={connection.relation.startDate}\n onChange={(value) => onChangeActivenessDate('startDate', value)}\n readOnly={readOnly}\n />\n </div>\n <div className={styles.relationDate}>\n <span className={styles.detailTitle}>{i18n.text('End date:')}</span>\n <RelationDate\n value={connection.relation.endDate}\n onChange={(value) => onChangeActivenessDate('endDate', value)}\n readOnly={readOnly}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default memo(RelationshipBand);\n","import {ErrorPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {getRequestErrorMessage} from '@reltio/mdm-sdk';\n\nexport const showErrorMessage = (error: unknown) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: getRequestErrorMessage(error, i18n.text('Something went wrong'))\n });\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n detailsView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: 'hidden'\n },\n locked: {\n pointerEvents: 'none'\n },\n resizablePanesWrapper: {\n flexGrow: 1\n },\n pane: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n});\n","import React, {memo, useCallback, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {\n ApiError,\n ApiErrorCode,\n AttributeType,\n Connection,\n deleteActivenessAttribute,\n Entity,\n getRelation,\n Relation,\n updateActivenessAttribute\n} from '@reltio/mdm-sdk';\nimport {\n AttributesTable,\n BasicView,\n CrosswalkDragLayer,\n CrosswalksDisplayProvider,\n ExpandedAttributesProvider,\n ResizablePanes,\n useCrosswalkActions,\n useModifiedEntity,\n useSafePromise\n} from '@reltio/components';\nimport LegendPanel from '../LegendPanel/LegendPanel';\nimport RelationshipBand from '../RelationshipBand/RelationshipBand';\nimport {assocPath, dissocPath, pipe} from 'ramda';\nimport {showErrorMessage} from '../../services/errors';\nimport {useCrosswalksDisplay} from '../../hooks/useCrosswalksDisplay';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport {DndProvider} from 'react-dnd';\n\nimport {useStyles} from './styles';\n\nconst MIN_PANE1_SIZE = 600;\nconst MIN_PANE2_SIZE = 480;\nconst MAX_PANE1_SIZE = -MIN_PANE2_SIZE;\n\ntype Props = {\n entity: Entity;\n connection: Connection;\n visibleColumns?: string[];\n onClose: (error?: ApiError) => void;\n onDeleteConnection: () => void;\n onChangeConnection: (connection: Connection) => void;\n onChangeVisibleColumns: (visibleColumns: string[]) => void;\n readOnly?: boolean;\n};\n\nconst RelationshipDetails = ({\n entity,\n connection,\n visibleColumns,\n onClose,\n onDeleteConnection,\n onChangeConnection,\n onChangeVisibleColumns,\n readOnly\n}: Props) => {\n const styles = useStyles();\n const displayProps = useCrosswalksDisplay();\n const [paneSize, setPaneSize] = useState(MAX_PANE1_SIZE);\n const handlePaneSizeChange = useCallback(({percentageSize}) => setPaneSize(percentageSize), []);\n\n const [selectedAttrTypes, setSelectedAttrTypes] = useState<AttributeType[]>();\n const [isLoading, setIsLoading] = useState(false);\n const relationUri = connection.relation.relationUri;\n\n const safePromise = useSafePromise();\n const onLoad = useCallback(() => setIsLoading(true), []);\n const onLoaded = useCallback(() => setIsLoading(false), []);\n const onDeleteRelation = useCallback(pipe(onDeleteConnection, onLoad), []);\n const [onError, reloadRelation] = useMemo(() => {\n const onError = (error: ApiError) => {\n if (error.errorCode === ApiErrorCode.CROSSWALK_NOT_FOUND) {\n showErrorMessage(error);\n reloadRelation();\n } else if (error.errorCode === ApiErrorCode.OBJECT_NOT_FOUND) {\n onClose(error);\n } else {\n showErrorMessage(error);\n onLoaded();\n }\n };\n const reloadRelation = () => {\n safePromise(getRelation(relationUri))\n .then((newRelation: Relation) => {\n onChangeConnection(assocPath(['relation', 'object'], newRelation, connection));\n onLoaded();\n })\n .catch(onError);\n };\n return [onError, reloadRelation];\n }, [connection, onLoaded, onChangeConnection, onClose]);\n\n const {\n modifiedEntity,\n crosswalksMap,\n newlyCreatedAttributes,\n onPinAttribute,\n onIgnoreAttribute,\n onAddAttribute,\n onEditAttribute,\n onDeleteAttribute\n } = useModifiedEntity({\n entity: connection.relation.object,\n onModify: reloadRelation,\n onError,\n onLoad\n });\n\n const {addCrosswalk, deleteCrosswalk, editCrosswalk} = useCrosswalkActions({\n onSuccess: reloadRelation,\n onError,\n onLoad\n });\n\n const onChangeActivenessDate = useCallback(\n (attributeName: string, value: number) => {\n onLoad();\n const request = value\n ? updateActivenessAttribute({entityUri: relationUri, attributeName, value}).then(() =>\n onChangeConnection(assocPath(['relation', attributeName], value, connection))\n )\n : deleteActivenessAttribute({entityUri: relationUri, attributeName}).then(() =>\n onChangeConnection(dissocPath(['relation', attributeName], connection))\n );\n request.then(onLoaded).catch(onError);\n },\n [connection, onLoad, onLoaded, onError]\n );\n\n return (\n <BasicView className={styles.detailsView}>\n <CrosswalksDisplayProvider {...displayProps}>\n <DndProvider backend={HTML5Backend}>\n <CrosswalkDragLayer />\n <ResizablePanes\n className={classnames(styles.resizablePanesWrapper, {[styles.locked]: isLoading})}\n orientation={'vertical'}\n size={paneSize}\n minSize={MIN_PANE1_SIZE}\n maxSize={MAX_PANE1_SIZE}\n allowResize={true}\n onChange={handlePaneSizeChange}\n >\n <div className={styles.pane}>\n <RelationshipBand\n readOnly={readOnly}\n entity={entity}\n connection={connection}\n onNavigateBack={onClose}\n onDelete={onDeleteRelation}\n onChangeActivenessDate={onChangeActivenessDate}\n />\n <ExpandedAttributesProvider attributeUris={newlyCreatedAttributes}>\n <AttributesTable\n readOnly={readOnly}\n entity={modifiedEntity}\n crosswalksMap={crosswalksMap}\n isLoading={isLoading}\n onPin={onPinAttribute}\n onIgnore={onIgnoreAttribute}\n onEdit={onEditAttribute}\n onAdd={onAddAttribute}\n onDelete={onDeleteAttribute}\n selectedAttributeTypes={selectedAttrTypes}\n onSelectAttributeTypes={setSelectedAttrTypes}\n visibleColumns={visibleColumns}\n onChangeVisibleColumns={onChangeVisibleColumns}\n />\n </ExpandedAttributesProvider>\n </div>\n <LegendPanel\n readOnly={readOnly}\n className={styles.pane}\n relation={connection.relation.object}\n selectedAttributeTypes={selectedAttrTypes}\n onAddCrosswalk={addCrosswalk}\n onDeleteCrosswalk={deleteCrosswalk}\n onEditCrosswalk={editCrosswalk}\n />\n </ResizablePanes>\n </DndProvider>\n </CrosswalksDisplayProvider>\n </BasicView>\n );\n};\n\nexport default memo(RelationshipDetails);\n","import {useCallback, useMemo, useState, useRef} from 'react';\nimport {CrosswalkBase, debounce, eqCrosswalks} from '@reltio/mdm-sdk';\nimport {any, concat} from 'ramda';\n\nexport const useCrosswalksDisplay = () => {\n const [highlightedCrosswalks, setHighlightedCrosswalks] = useState<CrosswalkBase[]>([]);\n const highlightedCrosswalksCache = useRef([]);\n const applyHighlightedCrosswalks = useCallback(\n debounce(() => {\n setHighlightedCrosswalks([...highlightedCrosswalksCache.current]);\n }, 50),\n []\n );\n const cacheHighlightedCrosswalks = useCallback(\n (arr) => {\n highlightedCrosswalksCache.current = arr;\n applyHighlightedCrosswalks(arr);\n },\n [applyHighlightedCrosswalks]\n );\n\n const setCrosswalkHighlighted = useCallback(\n (crosswalk: CrosswalkBase, highlighted: boolean) => {\n if (!crosswalk) return;\n if (highlighted) {\n cacheHighlightedCrosswalks([crosswalk]);\n } else {\n cacheHighlightedCrosswalks([]);\n }\n },\n [cacheHighlightedCrosswalks]\n );\n\n const [focusedCrosswalks, setFocusedCrosswalks] = useState<CrosswalkBase[]>([]);\n const calculateFocusedCrosswalks = (prev: CrosswalkBase[], next: CrosswalkBase[]) =>\n concat(\n prev.filter((prevCrosswalk) => !any(eqCrosswalks(prevCrosswalk), next)),\n next.filter((nextCrosswalk) => !any(eqCrosswalks(nextCrosswalk), prev))\n );\n\n const toggleCrosswalkFocus = useCallback((crosswalk: CrosswalkBase) => {\n if (!crosswalk) return;\n setFocusedCrosswalks((prevValue) => calculateFocusedCrosswalks([crosswalk], prevValue));\n }, []);\n\n return {\n highlightedCrosswalks: useMemo(() => [...highlightedCrosswalks, ...focusedCrosswalks], [\n highlightedCrosswalks,\n focusedCrosswalks\n ]),\n focusedCrosswalks,\n toggleCrosswalkFocus,\n setCrosswalkHighlighted\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n relationshipsView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflowX: 'hidden',\n overflowY: 'auto',\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n display: 'flex',\n flexDirection: 'column'\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n pane: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflow: 'hidden',\n position: 'relative'\n }\n});\n","import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport {Dispatch} from 'redux';\nimport {connect} from 'react-redux';\nimport {\n always,\n andThen,\n both,\n either,\n equals,\n filter,\n identity,\n map,\n otherwise,\n pipe,\n prop,\n propEq,\n update,\n when,\n not\n} from 'ramda';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n ApiError,\n ApiErrorCode,\n checkMetadataPermission,\n CollaborationObjectTypes,\n Connection,\n Entity,\n getEntitiesMapForConnections,\n getInheritancePath,\n getRelationshipsObjectIdsForCollaboration,\n isDataTenantEntity,\n Metadata,\n MetadataPermissions,\n Mode,\n RelationshipsPerspectiveConfig,\n removeRelation,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {\n BasicTablePagination,\n CollaborationContextProvider,\n EntitiesMapContext,\n LinearLoadIndicator,\n ScreenProfileBand,\n useCollaboration,\n useDidUpdateEffect,\n useRelationsLoader\n} from '@reltio/components';\nimport useSavedState from '../../hooks/useSavedState';\nimport {useRelationshipsTable} from '../../hooks/useRelationshipsTable';\nimport {RelationshipsSavedState} from '../../types';\nimport {DEFAULT_COLUMNS, getColumnsData, ROWS_PER_PAGE_OPTIONS} from './helpers/tableHelpers';\nimport {buildRelationshipsFilter} from './helpers/filtersHelpers';\nimport RelationshipsTableHeader from '../RelationshipsTableHeader/RelationshipsTableHeader';\nimport RelationshipsTable from '../RelationshipsTable/RelationshipsTable';\nimport RelationshipDetails from '../RelationshipDetails/RelationshipDetails';\nimport {showErrorMessage} from '../../services/errors';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationshipsPerspectiveConfig;\n entity: Entity;\n metadata: Metadata;\n connections: Connection[];\n total: number;\n saveState: (state: RelationshipsSavedState) => void;\n getSavedState: () => Promise<RelationshipsSavedState>;\n dispatch: Dispatch;\n};\n\nconst RelationshipsView = ({\n config,\n entity,\n metadata,\n connections,\n total,\n saveState,\n getSavedState,\n dispatch\n}: Props) => {\n const styles = useStyles();\n const tableRef = useRef();\n\n const isDTEntity = isDataTenantEntity(entity);\n\n const [searchByOv, setSearchByOv] = useState(false);\n\n const {type: entityTypeUri} = entity || {};\n const [\n {\n visibleColumns,\n filters,\n page,\n rowsPerPage,\n sorting,\n currentRelationType,\n stateToSave,\n entityTypeOfAppliedSavedState\n },\n {\n changeColumns,\n toggleFilters,\n changeFilter,\n changePage,\n changeRowsPerPage,\n toggleSort,\n changeRelationType,\n saveCurrentState,\n applySavedState\n }\n ] = useRelationshipsTable({\n defaultColumns: DEFAULT_COLUMNS,\n defaultRowsPerPage: ROWS_PER_PAGE_OPTIONS[0],\n defaultSorting: {\n field: DEFAULT_COLUMNS[0],\n order: 'asc'\n }\n });\n\n const isSavedStateApplied = entityTypeOfAppliedSavedState === entityTypeUri;\n\n const {\n isLoading: isSavedStateLoading,\n relationsTableSavedState,\n attributesTableSavedState,\n updateRelationsTableSavedState,\n updateAttributesTableSavedState\n } = useSavedState({\n getSavedState,\n saveState,\n entityTypeUri\n });\n\n const [attributesTableVisibleColumns, setAttributesTableVisibleColumns] = useState<string[]>();\n\n useEffect(() => {\n if (!isSavedStateLoading) {\n applySavedState({savedState: relationsTableSavedState, entityTypeUri});\n }\n }, [isSavedStateLoading, entityTypeUri]); // eslint-disable-line\n\n useEffect(() => {\n if (!isSavedStateLoading) {\n setAttributesTableVisibleColumns(attributesTableSavedState?.visibleColumns);\n }\n }, [isSavedStateLoading]); // eslint-disable-line\n\n useDidUpdateEffect(() => {\n if (isSavedStateApplied) {\n updateRelationsTableSavedState(stateToSave);\n }\n }, [stateToSave]);\n\n const resetPage = () => {\n changePage(0);\n };\n useDidUpdateEffect(resetPage, [entity]);\n\n const [detailedConnectionIndex, setDetailedConnectionIndex] = useState<number>();\n const hideConnectionDetails = useCallback(() => {\n setDetailedConnectionIndex(null);\n }, []);\n\n const relationTypes: TRelationType[] = useMemo(() => {\n const inheritancePath = getInheritancePath(metadata, entityTypeUri);\n const isRelatedToEntityType = ({startObject, endObject}) =>\n inheritancePath.some(either(equals(startObject.objectTypeURI), equals(endObject.objectTypeURI)));\n return metadata.relationTypes.filter(\n both(checkMetadataPermission(MetadataPermissions.READ), isRelatedToEntityType)\n );\n }, [metadata, entityTypeUri]);\n\n const columnsData = useMemo(\n () => getColumnsData(relationTypes, currentRelationType),\n [relationTypes, currentRelationType]\n );\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => columnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, columnsData]\n );\n\n const relationsConfig = useMemo(() => {\n const relations = pipe(\n when(always(currentRelationType), filter(propEq('uri', currentRelationType))),\n map(prop('uri'))\n )(relationTypes);\n return {\n id: config.id,\n content: {\n inRelations: relations,\n outRelations: relations\n }\n };\n }, [config.id, currentRelationType, relationTypes]);\n\n const relationFilter = useMemo(\n () => buildRelationshipsFilter(filters, visibleColumnsData),\n [filters, visibleColumnsData]\n );\n\n const {isLoading: isRelationsLoading, reload: reloadRelations} = useRelationsLoader({\n page,\n rowsPerPage,\n config: relationsConfig,\n entity: isSavedStateApplied ? entity : null,\n filter: relationFilter,\n mode: Mode.Viewing,\n sorting,\n searchByOv\n });\n\n const isLoading = !isSavedStateApplied || isRelationsLoading;\n\n const onSort = useCallback(pipe(toggleSort, saveCurrentState), [toggleSort, saveCurrentState]);\n const onFilter = useCallback(pipe(changeFilter, saveCurrentState), [changeFilter, saveCurrentState]);\n const onToggleFilters = useCallback(pipe(toggleFilters, saveCurrentState), [toggleFilters, saveCurrentState]);\n const onChangeColumns = useCallback(pipe(changeColumns, saveCurrentState), [changeColumns, saveCurrentState]);\n const onRelationTypeChange = useCallback(pipe(changeRelationType, saveCurrentState), [\n changeRelationType,\n saveCurrentState\n ]);\n const onChangeDetailedColumns = useCallback(\n (visibleColumns: string[]) => {\n setAttributesTableVisibleColumns(visibleColumns);\n updateAttributesTableSavedState({visibleColumns});\n },\n [updateAttributesTableSavedState]\n );\n\n const detailedConnection = connections?.[detailedConnectionIndex];\n const onChangeDetailedConnection = useCallback(\n (newConnection: Connection) => {\n dispatch(\n profile.relations.actions.relationsLoaded({\n id: config.id,\n connections: update(detailedConnectionIndex, newConnection, connections),\n total\n })\n );\n },\n [detailedConnection]\n );\n const [objectIds, objectTypes] = useMemo(() => {\n return [getRelationshipsObjectIdsForCollaboration(connections), [CollaborationObjectTypes.RELATION]];\n }, [connections]);\n\n const collaboration = useCollaboration({objectIds, objectTypes, enabled: !isDTEntity});\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const handleError = useCallback(\n (error: ApiError) => {\n showErrorMessage(error);\n if (error.errorCode === ApiErrorCode.OBJECT_NOT_FOUND) {\n reloadRelations();\n }\n },\n [reloadRelations]\n );\n\n const deleteRelation = useCallback(\n (relationUri: string) => {\n pipe(removeRelation, andThen(reloadRelations), otherwise(handleError))(relationUri);\n },\n [reloadRelations, handleError]\n );\n\n const deleteRelationAndCloseDetails = useCallback(() => {\n pipe(\n removeRelation,\n andThen(pipe(hideConnectionDetails, reloadRelations)),\n otherwise((error: ApiError) => {\n if (error.errorCode === ApiErrorCode.OBJECT_NOT_FOUND) {\n hideConnectionDetails();\n }\n handleError(error);\n })\n )(detailedConnection.relation.relationUri);\n }, [detailedConnection, reloadRelations, hideConnectionDetails, handleError]);\n\n const onCloseConnectionDetails = useCallback(\n (error?: ApiError) => {\n if (error) handleError(error);\n hideConnectionDetails();\n },\n [handleError, hideConnectionDetails]\n );\n\n const onToggleSearchByOv = useCallback(() => {\n setSearchByOv(not);\n }, [setSearchByOv]);\n return (\n <CollaborationContextProvider collaboration={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.relationshipsView}>\n <ScreenProfileBand entity={entity} />\n <RelationshipsTableHeader\n total={total}\n filteringEnabled={!!filters}\n onToggleFilters={onToggleFilters}\n columnsData={columnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n relationTypes={relationTypes}\n currentRelationType={currentRelationType}\n onRelationTypeChange={onRelationTypeChange}\n searchByOv={searchByOv}\n onToggleSearchByOv={onToggleSearchByOv}\n />\n <div className={styles.pane}>\n {isLoading && <LinearLoadIndicator />}\n <RelationshipsTable\n readOnly={isDTEntity}\n metadata={metadata}\n connections={connections}\n columnsData={visibleColumnsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n onRowClick={setDetailedConnectionIndex}\n tableRef={tableRef}\n onDelete={deleteRelation}\n />\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n basicTableRef={tableRef}\n />\n </div>\n {detailedConnection && (\n <RelationshipDetails\n readOnly={isDTEntity}\n entity={entity}\n visibleColumns={attributesTableVisibleColumns}\n onChangeVisibleColumns={onChangeDetailedColumns}\n connection={detailedConnection}\n onClose={onCloseConnectionDetails}\n onDeleteConnection={deleteRelationAndCloseDetails}\n onChangeConnection={onChangeDetailedConnection}\n />\n )}\n </div>\n </EntitiesMapContext.Provider>\n </CollaborationContextProvider>\n );\n};\n\nconst mapStateToProps = (state, {config: {id}}) => {\n return {\n entity: mdmModule.selectors.getEntity(state),\n metadata: mdmModule.selectors.getMetadata(state),\n connections: mdmModule.selectors.getConnectionsByViewId(state, id),\n total: mdmModule.selectors.getTotalByViewId(state, id)\n };\n};\n\nexport default connect(mapStateToProps)(RelationshipsView);\n","import {buildColumnsFilter, ColumnFilter} from '@reltio/components';\nimport {FilterBuilder} from '@reltio/mdm-sdk';\nimport {RelationshipsTableColumnData} from '../../../types';\n\nexport const buildRelationshipsFilter = (\n filters: Record<string, ColumnFilter>,\n columnsData: RelationshipsTableColumnData[]\n) => {\n const filtersClause = buildColumnsFilter(columnsData, filters);\n\n return new FilterBuilder().addClause(filtersClause).build();\n};\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\n\nimport MomentUtils from '@date-io/moment';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {ErrorPopup, ViewIdContext, FeaturesContext} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {RelationshipsSavedState} from '../../types';\nimport RelationshipsView from './RelationshipsView';\nimport {promisifyCallback, RelationshipsPerspectiveConfig} from '@reltio/mdm-sdk';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'relationshipsPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: RelationshipsPerspectiveConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n saveState: (state: RelationshipsSavedState) => void;\n getSavedState: (clb: (state: RelationshipsSavedState) => void) => void;\n};\n\nconst RelationshipsPerspective = ({config, store, onResize, saveState, getSavedState}: Props) => {\n const getSavedStatePromisified: () => Promise<RelationshipsSavedState> = useCallback(\n promisifyCallback(getSavedState),\n [getSavedState]\n );\n const featuresContext = useContext(FeaturesContext);\n const showDescription = mdmModule.selectors.getShowAttributeDescription(store.getState());\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\n\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <FeaturesContext.Provider value={features}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize?.(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <RelationshipsView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n )}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </FeaturesContext.Provider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default RelationshipsPerspective;\n","import {RelationshipsView} from '@reltio/relationships';\n\nexport default RelationshipsView;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n"],"names":["MomentUtils","_a","_b","locale","instance","moment","this","yearFormat","yearMonthFormat","dateTime12hFormat","dateTime24hFormat","time12hFormat","time24hFormat","dateFormat","prototype","parse","value","format","date","isValid","isNull","getDiff","comparing","diff","isAfter","isBefore","isAfterDay","isBeforeDay","isBeforeYear","isAfterYear","startOfDay","clone","startOf","endOfDay","endOf","formatString","formatNumber","numberToFormat","getHours","get","addDays","count","subtract","Math","abs","add","setHours","hours","getMinutes","setMinutes","minutes","getSeconds","setSeconds","seconds","getMonth","isSameDay","isSame","isSameMonth","isSameYear","isSameHour","setMonth","month","getMeridiemText","ampm","startOfMonth","endOfMonth","getNextMonth","getPreviousMonth","getMonthArray","monthArray","length","prevMonth","push","getYear","setYear","year","set","mergeDateAndTime","time","getWeekdays","weekdaysShort","isEqual","getWeekArray","start","end","current","nestedWeeks","weekNumber","floor","getYearRange","startDate","endDate","years","getCalendarHeaderText","getYearText","getDatePickerHeaderText","getDateTimePickerHeaderText","getMonthText","getDayText","getHourText","getMinuteText","getSecondText","_interopRequireDefault","exports","_react","_default","default","createElement","d","Fragment","transform","fill","contextSelector","CellRenderer","withContext","TableContext","useStyles","makeStyles","pagination","display","alignItems","justifyContent","height","borderTop","boxShadow","caption","color","fontSize","lineHeight","selectRoot","marginLeft","marginRight","select","textAlign","actions","BasicTablePagination","classes","rowsPerPageOptions","page","onChangePage","rowsPerPage","onChangeRowsPerPage","basicTableRef","labelRowsPerPage","styles","resetScrollbarPosition","useCallback","pathOr","identity","handleChangePage","handleChangeRowsPerPage","TablePagination","root","classnames","component","i18n","labelDisplayedRows","from","to","fromRow","toRow","countRows","pipe","nthArg","getValue","propTypes","PropTypes","React","paper","minHeight","title","padding","fontWeight","letterSpacing","content","contentText","marginBottom","actionButtons","paddingTop","discardButton","open","onCancel","cancelCaption","onDiscard","discardCaption","onSave","saveCaption","disabledSave","Dialog","onClose","paperScrollPaper","DialogTitle","DialogContent","DialogContentText","DialogActions","className","disableSpacing","Button","onClick","disabled","autoFocus","textOverflow","overflow","whiteSpace","borderRadius","flexShrink","entity","size","metadata","useSelector","mdmModule","entityTypeUri","type","entityType","getEntityType","entityTypeColor","getPropWithInheritance","theme","entityTypeLabel","getEntityTypeLabel","ExpandedValueTooltip","placement","Typography","style","backgroundColor","utils","profileBandWrapper","profileBand","inactive","background","inactiveBackground","profileIcon","imageProfileIcon","width","profileInfo","flexDirection","flex","badge","label","palette","text","primary","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","tooltipTitle","formatNumberAsMetric","SmallIconButton","icon","KeyboardArrowLeft","showForDisabled","KeyboardArrowRight","MainSearchProvider","constructor","data","query","sortField","sortOrder","tenant","searchTenant","apiPath","dtssPath","globalSearchRequestOptions","isDT","getQueryFilter","rawFilter","getEntities","filters","options","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","removeLoserUri","searchNavigationData","loserUri","index","cache","includes","loserIndex","indexOf","uriIndex","splice","getNewUris","map","prop","reject","useSearchNavigation","safeCheckEntityPromise","useSafePromise","safeRequestTotalPromise","safeRequestEntitiesPromise","state","viewId","ViewIdContext","dispatch","useDispatch","loading","setLoading","useState","searchProvider","useMemo","getSearchProvider","updateNavigationData","mdmModuleSearch","openEntity","preparedUri","getEntityUriForLink","mdmModuleUi","source","perspectiveId","useEffect","listenToActions","useActionsHook","stopListeningActions","action","payload","winnerUri","losersUris","updatedSearchNavigationData","winnerIndex","replaceWithWinnerUri","reduce","applyMergeToSearchNavigationData","requestNextPage","newIndex","newUris","concat","finally","requestPrevPage","min","stepForwardWithCheck","cacheIndex","isExists","clearedCache","stepBackWithCheck","ProfileBandNavigation","mode","isViewMode","useSearchNavigationVisibility","items","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","SettingsIcon","menuItems","slice","cancelButton","historyEvent","profile","aStamp","ActionsHookContext","createContext","displayName","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","nextPageToken","prevComments","uniqBy","catch","getComment","commentId","getCommentRequest","createComment","namedUsers","objectType","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","buildSuggestedIds","wrapInArrayIfNeeded","times","n","useRelationsLoader","sorting","config","relationActivityFilter","searchByOv","isLoading","setIsLoading","activityFilter","globalFilter","lastLoadedTime","safePromise","processContent","getUri","isObject","filterRelation","isAvailableRelationTypeUri","evolve","entityTypes","filterFn","isAvailableEntityTypeUri","inRelations","outRelations","nextEntry","suggested","loadRelations","requestConfig","sortBy","field","returnDates","returnObjects","activeness","relation","ActivityFilter","addGlobalFilterToQuery","undefined","configs","ifElse","i","id","request","cond","Promise","resolve","isDataTenantEntity","getRelationsForDataTenantEntity","T","getRelationsForEntity","connections","isRequestSentRef","useRef","prevMode","usePrevious","Mode","reload","DEFAULT_SAVED_STATE","relationsTable","attributesTable","RELATION_TYPE_COLUMN_ID","ATTRIBUTES_COLUMN_ID","DEFAULT_COLUMNS_DATA","dataTypeDefinition","DataTypes","hideable","filterable","initialWidth","autoResize","sortable","maxAttrsToShow","DEFAULT_COLUMNS","pluck","ALL_TYPES_COLUMNS","ROWS_PER_PAGE_OPTIONS","getColumnIdFromAttrUri","attributeUriToSearchUri","getColumnsDataFromRelationAttributes","attr","description","getAttrDataTypeDefinition","CHANGE_RELATION_TYPE","APPLY_SAVED_STATE","SAVE_CURRENT_STATE","basicTableViewState","changeRelationType","createStandardAction","applySavedState","saveCurrentState","resetPageNumber","assoc","getDefaultVisibleColumnsForCurrentRelationType","currentRelationType","without","intersection","getSavedVisibleColumnsForCurrentRelationType","changeVisibleColumnsForCurrentRelationType","nextVisibleColumns","either","getFiltersFromSavedState","propOr","unless","validateFilterValue","saveVisibleColumnsForCurrentRelationType","visibleColumns","visibleColumnsForRelationTypes","getStateToSave","pick","paddingLeft","paddingRight","selectMenu","textField","maxWidth","onChange","relationTypes","entries","DropDownEditor","displayEmpty","disableUnderline","TextFieldProps","MenuProps","list","header","boxSizing","relationTypeSelector","margin","memo","filteringEnabled","onToggleFilters","columnsData","selectedColumns","onRelationTypeChange","onChangeColumns","onToggleSearchByOv","settingItems","selected","selectable","BasicViewHeader","VerticalDivider","Spacer","SettingsMenu","FilterButton","ColumnsSettings","headCell","rowCell","overflowWrap","inactiveRowCell","opacity","defaultWrapper","paddingBottom","entityCell","entityAvatar","inactiveEntityAvatar","position","border","right","bottom","entityLabel","main","attributesWrapper","commentsContainer","withFilterAtBottom","headCellData","DefaultHeadCellRenderer","DescriptionIcon","isInactiveRelation","currentEntityUri","COMMENTS_CONTAINER_VISIBILITY_AREA","EntityTypeIcon","EntityUriLink","stopPropagation","CommentsContainer","relationUri","createRelatedObjectUris","CollaborationObjectTypes","connection","allowOnlyOneComment","columnData","attributes","attributeTypes","attrTypes","drawLines","DataTypeValue","getAttrPathFromColumnId","split","Infinity","getNestedPathByColumnId","columnId","startsWith","attrPath","getCellValueRenderer","EntityProfileRenderer","AttributesRenderer","DefaultCellValueRenderer","getBasicTableColumnsData","resizable","headCellRenderer","HeadCellRenderer","nestedPath","rowCellValueRenderer","getStaticRowCellHeight","pathEq","cell","attributesCount","defaultGetRowCellHeight","CellValueRenderer","otherProps","menuItem","menuText","buttons","MenuItemWithTooltip","MenuItem","MenuItemRenderer","forwardRef","ref","item","onMenuClose","noop","tooltip","disableDelete","onMenuOpen","onDelete","hasDeletePermission","getRelationType","checkMetadataPermission","MetadataPermissions","canDelete","pendingDeletion","setPendingDeletion","hideDeleteConfirmation","Delete","handleMenuClose","DropDownMenuButton","MoreVertIcon","ConfirmationDialog","substring","tableContainer","zIndex","hoveredRowRightContentWrapper","pointerEvents","menuButtonContainer","top","tooltipAnchor","onSort","onFilter","onRowClick","tableRef","readOnly","tableRowsData","acc","relationType","relationLabel","object","getOvAttributeValuesByPath","getRelationAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","getDynamicRowCellHeight","changeRowCellHeight","useDynamicRowCellHeight","getRowCellHeight","hoverRowIndex","setHoverRowIndex","renderRowCell","rowValue","rawValue","RowCellAutoSizer","onChangeHeight","isActionsMenuOpen","setIsActionsMenuOpen","handleActionsMenuOpen","handleActionsMenuClose","onRowHover","rowIndex","prevHoverRowIndex","hoveredRowRightContent","BasicTable","fixFirstColumn","rowsData","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","hoverStateEnabled","tableRow","selectedAttributeTypes","onDeleteCrosswalk","onEditCrosswalk","groupCrosswalksByTypesAndSources","buildTableRowsData","expandedSources","setExpandedSources","handleDelete","crosswalkId","handleEdit","event","crosswalksByTypes","SourceCrosswalksRow","expanded","disableEditCrosswalk","checkCanEditCrosswalk","disableDeleteCrosswalk","checkCanDeleteCrosswalk","onEdit","onToggleExpanded","append","borderBottom","hint","alignSelf","hintText","buttonLabel","editor","overflowY","overflowX","ButtonWithTooltip","onAddCrosswalk","openEditor","setOpenEditor","canAdd","checkCanCreateCrosswalk","Add","Info","CrosswalkEditor","onAdd","crosswalk","entityInfo","minWidth","entityLabelContainer","infoIcon","entityTypeBadge","noWrap","LightArrowTooltip","ProfileBand","direction","align","fillOpacity","points","editButton","showEditor","setShowEditor","closeEditor","editedValue","setEditedValue","applyChangesAndClose","formatDate","EditIcon","Popover","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","onKeyUp","onBackdropClick","DateEditor","InputProps","fullWidth","hiddenLabel","Date","valueOf","relationBand","inactiveRelationBand","toolbar","gap","mainInfo","detailsInfo","detailTitle","directionalLabel","relationDate","onNavigateBack","onChangeActivenessDate","ArrowBackIcon","showErrorMessage","ErrorPopup","message","getRequestErrorMessage","detailsView","left","locked","resizablePanesWrapper","flexGrow","pane","onDeleteConnection","onChangeConnection","onChangeVisibleColumns","displayProps","highlightedCrosswalks","setHighlightedCrosswalks","highlightedCrosswalksCache","applyHighlightedCrosswalks","debounce","cacheHighlightedCrosswalks","arr","setCrosswalkHighlighted","highlighted","focusedCrosswalks","setFocusedCrosswalks","toggleCrosswalkFocus","prevValue","calculateFocusedCrosswalks","prev","next","prevCrosswalk","any","eqCrosswalks","nextCrosswalk","useCrosswalksDisplay","paneSize","setPaneSize","handlePaneSizeChange","percentageSize","selectedAttrTypes","setSelectedAttrTypes","onLoad","onLoaded","onDeleteRelation","reloadRelation","errorCode","ApiErrorCode","getRelation","newRelation","modifiedEntity","crosswalksMap","newlyCreatedAttributes","onPinAttribute","onIgnoreAttribute","onAddAttribute","onEditAttribute","onDeleteAttribute","useModifiedEntity","onModify","addCrosswalk","deleteCrosswalk","editCrosswalk","useCrosswalkActions","onSuccess","attributeName","updateActivenessAttribute","deleteActivenessAttribute","BasicView","DndProvider","backend","HTML5Backend","CrosswalkDragLayer","ResizablePanes","orientation","minSize","maxSize","allowResize","attributeUris","AttributesTable","onPin","onIgnore","onSelectAttributeTypes","relationshipsView","fontFamily","connect","saveState","getSavedState","isDTEntity","setSearchByOv","stateToSave","entityTypeOfAppliedSavedState","changeColumns","toggleFilters","changeFilter","changePage","changeRowsPerPage","toggleSort","defaultColumns","defaultSorting","defaultRowsPerPage","initState","useReducer","nextRelationType","savedState","useActions","useRelationshipsTable","isSavedStateApplied","isSavedStateLoading","relationsTableSavedState","attributesTableSavedState","updateRelationsTableSavedState","updateAttributesTableSavedState","setSavedState","changedRelationsState","setRelationsChangedState","useDidUpdateEffect","_","changedState","useSavedState","attributesTableVisibleColumns","setAttributesTableVisibleColumns","detailedConnectionIndex","setDetailedConnectionIndex","hideConnectionDetails","inheritancePath","getInheritancePath","both","startObject","endObject","some","equals","objectTypeURI","find","getReadableAttributesList","updateColumnData","updateFn","getRelationColumnDataType","adjust","updateRelationTypeColumn","getColumnsData","visibleColumnsData","relationsConfig","relations","relationFilter","filtersClause","buildColumnsFilter","FilterBuilder","addClause","build","buildRelationshipsFilter","isRelationsLoading","reloadRelations","onChangeDetailedColumns","detailedConnection","onChangeDetailedConnection","newConnection","update","getRelationshipsObjectIdsForCollaboration","collaboration","entitiesMap","getEntitiesMapForConnections","handleError","deleteRelation","removeRelation","deleteRelationAndCloseDetails","onCloseConnectionDetails","not","CollaborationContext","EntitiesMapContext","ScreenProfileBand","LinearLoadIndicator","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","onResize","getSavedStatePromisified","promisifyCallback","featuresContext","FeaturesContext","showDescription","getState","features","StylesProvider","MuiPickersUtilsProvider","handleHeight","componentWillMount","getDerivedStateFromProps","setState","componentWillReceiveProps","nextProps","prevState","bind","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","name","newApiName","componentDidUpdate","maybeSnapshot","snapshot","call","__suppressDeprecationWarning"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"3270.js","mappings":"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","sources":["webpack://@reltio/remotes/../../node_modules/@date-io/moment/build/index.esm.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/Edit.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/EventBusy.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/Info.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/KeyboardArrowLeft.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/KeyboardArrowRight.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/Settings.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/Visibility.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/HOCs/withTableContext.js","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/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/SettingsMenu/SettingsMenu.tsx","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/useRelationsLoader.ts","webpack://@reltio/remotes/../relationships/src/hooks/useSavedState.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/helpers/tableHelpers.ts","webpack://@reltio/remotes/../relationships/src/hooks/useRelationshipsTable.ts","webpack://@reltio/remotes/../relationships/src/components/RelationTypeSelector/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationTypeSelector/RelationTypeSelector.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTableHeader/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTableHeader/RelationshipsTableHeader.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/EntityProfileRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/AttributesRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/helpers.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipMenuButton/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipMenuButton/MenuItemRenderer.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipMenuButton/RelationshipMenuButton.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsTable/RelationshipsTable.tsx","webpack://@reltio/remotes/../relationships/src/components/LegendTable/helpers.ts","webpack://@reltio/remotes/../relationships/src/components/LegendTable/styles.ts","webpack://@reltio/remotes/../relationships/src/components/LegendTable/LegendTable.tsx","webpack://@reltio/remotes/../relationships/src/components/LegendPanel/styles.ts","webpack://@reltio/remotes/../relationships/src/components/LegendPanel/LegendPanel.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/EntityInfo/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/EntityInfo/EntityInfo.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDirection/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDirection/RelationDirection.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDate/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationDate/RelationDate.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipBand/RelationshipBand.tsx","webpack://@reltio/remotes/../relationships/src/services/errors.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipDetails/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipDetails/RelationshipDetails.tsx","webpack://@reltio/remotes/../relationships/src/hooks/useCrosswalksDisplay.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/styles.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/RelationshipsView.tsx","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/helpers/filtersHelpers.ts","webpack://@reltio/remotes/../relationships/src/components/RelationshipsView/index.tsx","webpack://@reltio/remotes/./src/relationships.ts","webpack://@reltio/remotes/../../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js"],"sourcesContent":["import defaultMoment from 'moment';\n\nvar MomentUtils = /** @class */ (function () {\n function MomentUtils(_a) {\n var _b = _a === void 0 ? {} : _a, locale = _b.locale, instance = _b.instance, moment = _b.moment;\n this.yearFormat = \"YYYY\";\n this.yearMonthFormat = \"MMMM YYYY\";\n this.dateTime12hFormat = \"MMMM Do hh:mm a\";\n this.dateTime24hFormat = \"MMMM Do HH:mm\";\n this.time12hFormat = \"hh:mm A\";\n this.time24hFormat = \"HH:mm\";\n this.dateFormat = \"MMMM Do\";\n this.moment = instance || moment || defaultMoment;\n this.locale = locale;\n }\n MomentUtils.prototype.parse = function (value, format) {\n if (value === \"\") {\n return null;\n }\n return this.moment(value, format, true);\n };\n MomentUtils.prototype.date = function (value) {\n if (value === null) {\n return null;\n }\n var moment = this.moment(value);\n moment.locale(this.locale);\n return moment;\n };\n MomentUtils.prototype.isValid = function (value) {\n return this.moment(value).isValid();\n };\n MomentUtils.prototype.isNull = function (date) {\n return date === null;\n };\n MomentUtils.prototype.getDiff = function (date, comparing) {\n return date.diff(comparing);\n };\n MomentUtils.prototype.isAfter = function (date, value) {\n return date.isAfter(value);\n };\n MomentUtils.prototype.isBefore = function (date, value) {\n return date.isBefore(value);\n };\n MomentUtils.prototype.isAfterDay = function (date, value) {\n return date.isAfter(value, \"day\");\n };\n MomentUtils.prototype.isBeforeDay = function (date, value) {\n return date.isBefore(value, \"day\");\n };\n MomentUtils.prototype.isBeforeYear = function (date, value) {\n return date.isBefore(value, \"year\");\n };\n MomentUtils.prototype.isAfterYear = function (date, value) {\n return date.isAfter(value, \"year\");\n };\n MomentUtils.prototype.startOfDay = function (date) {\n return date.clone().startOf(\"day\");\n };\n MomentUtils.prototype.endOfDay = function (date) {\n return date.clone().endOf(\"day\");\n };\n MomentUtils.prototype.format = function (date, formatString) {\n date.locale(this.locale);\n return date.format(formatString);\n };\n MomentUtils.prototype.formatNumber = function (numberToFormat) {\n return numberToFormat;\n };\n MomentUtils.prototype.getHours = function (date) {\n return date.get(\"hours\");\n };\n MomentUtils.prototype.addDays = function (date, count) {\n return count < 0\n ? date.clone().subtract(Math.abs(count), \"days\")\n : date.clone().add(count, \"days\");\n };\n MomentUtils.prototype.setHours = function (date, count) {\n return date.clone().hours(count);\n };\n MomentUtils.prototype.getMinutes = function (date) {\n return date.get(\"minutes\");\n };\n MomentUtils.prototype.setMinutes = function (date, count) {\n return date.clone().minutes(count);\n };\n MomentUtils.prototype.getSeconds = function (date) {\n return date.get(\"seconds\");\n };\n MomentUtils.prototype.setSeconds = function (date, count) {\n return date.clone().seconds(count);\n };\n MomentUtils.prototype.getMonth = function (date) {\n return date.get(\"month\");\n };\n MomentUtils.prototype.isSameDay = function (date, comparing) {\n return date.isSame(comparing, \"day\");\n };\n MomentUtils.prototype.isSameMonth = function (date, comparing) {\n return date.isSame(comparing, \"month\");\n };\n MomentUtils.prototype.isSameYear = function (date, comparing) {\n return date.isSame(comparing, \"year\");\n };\n MomentUtils.prototype.isSameHour = function (date, comparing) {\n return date.isSame(comparing, \"hour\");\n };\n MomentUtils.prototype.setMonth = function (date, count) {\n return date.clone().month(count);\n };\n MomentUtils.prototype.getMeridiemText = function (ampm) {\n return ampm === \"am\" ? \"AM\" : \"PM\";\n };\n MomentUtils.prototype.startOfMonth = function (date) {\n return date.clone().startOf(\"month\");\n };\n MomentUtils.prototype.endOfMonth = function (date) {\n return date.clone().endOf(\"month\");\n };\n MomentUtils.prototype.getNextMonth = function (date) {\n return date.clone().add(1, \"month\");\n };\n MomentUtils.prototype.getPreviousMonth = function (date) {\n return date.clone().subtract(1, \"month\");\n };\n MomentUtils.prototype.getMonthArray = function (date) {\n var firstMonth = date.clone().startOf(\"year\");\n var monthArray = [firstMonth];\n while (monthArray.length < 12) {\n var prevMonth = monthArray[monthArray.length - 1];\n monthArray.push(this.getNextMonth(prevMonth));\n }\n return monthArray;\n };\n MomentUtils.prototype.getYear = function (date) {\n return date.get(\"year\");\n };\n MomentUtils.prototype.setYear = function (date, year) {\n return date.clone().set(\"year\", year);\n };\n MomentUtils.prototype.mergeDateAndTime = function (date, time) {\n return this.setMinutes(this.setHours(date, this.getHours(time)), this.getMinutes(time));\n };\n MomentUtils.prototype.getWeekdays = function () {\n return this.moment.weekdaysShort(true);\n };\n MomentUtils.prototype.isEqual = function (value, comparing) {\n if (value === null && comparing === null) {\n return true;\n }\n return this.moment(value).isSame(comparing);\n };\n MomentUtils.prototype.getWeekArray = function (date) {\n var start = date\n .clone()\n .startOf(\"month\")\n .startOf(\"week\");\n var end = date\n .clone()\n .endOf(\"month\")\n .endOf(\"week\");\n var count = 0;\n var current = start;\n var nestedWeeks = [];\n while (current.isBefore(end)) {\n var weekNumber = Math.floor(count / 7);\n nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];\n nestedWeeks[weekNumber].push(current);\n current = current.clone().add(1, \"day\");\n count += 1;\n }\n return nestedWeeks;\n };\n MomentUtils.prototype.getYearRange = function (start, end) {\n var startDate = this.moment(start).startOf(\"year\");\n var endDate = this.moment(end).endOf(\"year\");\n var years = [];\n var current = startDate;\n while (current.isBefore(endDate)) {\n years.push(current);\n current = current.clone().add(1, \"year\");\n }\n return years;\n };\n // displaying methods\n MomentUtils.prototype.getCalendarHeaderText = function (date) {\n return this.format(date, this.yearMonthFormat);\n };\n MomentUtils.prototype.getYearText = function (date) {\n return this.format(date, \"YYYY\");\n };\n MomentUtils.prototype.getDatePickerHeaderText = function (date) {\n return this.format(date, \"ddd, MMM D\");\n };\n MomentUtils.prototype.getDateTimePickerHeaderText = function (date) {\n return this.format(date, \"MMM D\");\n };\n MomentUtils.prototype.getMonthText = function (date) {\n return this.format(date, \"MMMM\");\n };\n MomentUtils.prototype.getDayText = function (date) {\n return this.format(date, \"D\");\n };\n MomentUtils.prototype.getHourText = function (date, ampm) {\n return this.format(date, ampm ? \"hh\" : \"HH\");\n };\n MomentUtils.prototype.getMinuteText = function (date) {\n return this.format(date, \"mm\");\n };\n MomentUtils.prototype.getSecondText = function (date) {\n return this.format(date, \"ss\");\n };\n return MomentUtils;\n}());\n\nexport default MomentUtils;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Edit');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M9.31 17l2.44-2.44L14.19 17l1.06-1.06-2.44-2.44 2.44-2.44L14.19 10l-2.44 2.44L9.31 10l-1.06 1.06 2.44 2.44-2.44 2.44L9.31 17zM19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11z\"\n}), 'EventBusy');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"\n}), 'Info');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'KeyboardArrowLeft');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'KeyboardArrowRight');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\n transform: \"scale(1.2, 1.2)\",\n fill: \"none\",\n d: \"M0 0h20v20H0V0z\"\n}), _react.default.createElement(\"path\", {\n transform: \"scale(1.2, 1.2)\",\n d: \"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\"\n})), 'Settings');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'Visibility');\n\nexports.default = _default;","import {TableContext} from '../contexts/TableContext';\nimport {withContext} from '../../../../HOCs/withContext/withContext';\n\nconst withTableContext = (contextSelector) => (CellRenderer) =>\n withContext(TableContext, contextSelector, CellRenderer);\n\nexport default withTableContext;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n 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 {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 React from 'react';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport i18n from 'ui-i18n';\nimport {DropDownMenuItem} from '../../types';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport DropDownMenuButton from '../DropDownMenuButton/DropDownMenuButton';\n\ntype Props = {\n items: Array<DropDownMenuItem>;\n menuId: string;\n};\n\nconst SettingsMenu = ({items, menuId}: Props) => {\n return (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: SettingsIcon,\n tooltipTitle: i18n.text('Settings'),\n size: 'L'\n }}\n menuId={menuId}\n menuItems={items}\n />\n );\n};\n\nexport default SettingsMenu;\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, useEffect, useMemo, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {cond, pipe, prop, T, evolve, filter as filterFn, when, identity, times, length, ifElse, always} from 'ramda';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n ActivityFilter,\n addGlobalFilterToQuery,\n Connection,\n Entity,\n getRelationsForDataTenantEntity,\n getRelationsForEntity,\n GlobalSearchRequestOptions,\n isAvailableEntityTypeUri,\n isAvailableRelationTypeUri,\n isDataTenantEntity,\n isObject,\n isTempUri,\n Metadata,\n Mode,\n RelationsContent,\n RelationsViewConfig,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from './useSafePromise';\nimport {usePrevious} from './usePrevious';\n\ntype Props = {\n sorting?: {\n field: string;\n order: string;\n };\n filter?: string;\n page: number;\n rowsPerPage: number;\n config: Pick<RelationsViewConfig, 'suggested' | 'content' | 'id'>;\n entity: Entity;\n relationActivityFilter?: ActivityFilter;\n mode: Mode;\n searchByOv?: boolean;\n};\n\nconst buildSuggestedIds = when(\n identity,\n pipe(\n wrapInArrayIfNeeded,\n length,\n times((n) => n + 1)\n )\n);\ntype ConnectionResponse = Array<{connections?: Connection[]; total: number}>;\n\nexport const useRelationsLoader = ({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter,\n mode,\n searchByOv = false\n}: Props) => {\n const [isLoading, setIsLoading] = useState(false);\n const dispatch = useDispatch();\n const tenant = useSelector(mdm.selectors.getTenant) as string;\n const metadata = useSelector(mdm.selectors.getMetadata) as Metadata;\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdm.selectors.getGlobalSearchRequestOptions) || {};\n const lastLoadedTime = useSelector(mdm.selectors.getProfileLastLoadedTime);\n const safePromise = useSafePromise();\n\n const processContent = (content: RelationsContent) => {\n const getUri = when(isObject, prop('uri'));\n const filterRelation = pipe(getUri, isAvailableRelationTypeUri(metadata));\n\n return evolve({\n entityTypes: filterFn(isAvailableEntityTypeUri(metadata)),\n inRelations: filterFn(filterRelation),\n outRelations: filterFn(filterRelation),\n nextEntry: processContent\n })(content);\n };\n\n const suggested = config.suggested;\n const options = useMemo(\n () => ({\n searchByOv\n }),\n [searchByOv]\n );\n const loadRelations = useCallback(() => {\n if (entity?.uri) {\n const processedConfig = processContent(config.content);\n const requestConfig = {\n ...processedConfig,\n sortBy: sorting?.field,\n order: sorting?.order,\n returnDates: true,\n returnObjects: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n },\n max: rowsPerPage,\n offset: page * rowsPerPage,\n filter: addGlobalFilterToQuery(globalFilter, filter) || undefined,\n suggested: buildSuggestedIds(suggested)\n };\n const configs = [requestConfig].concat(\n ifElse(\n identity,\n pipe(wrapInArrayIfNeeded, (suggested) =>\n suggested.map((config, i) => ({...config, id: requestConfig.suggested[i]}))\n ),\n always([])\n )(suggested)\n );\n\n const request: (entity: Entity) => Promise<ConnectionResponse> = cond([\n [pipe(prop('uri'), isTempUri), () => Promise.resolve([{total: 0}])],\n [\n isDataTenantEntity,\n (entity) =>\n getRelationsForDataTenantEntity({\n entityUri: entity.uri,\n configs: configs,\n customerTenant: tenant,\n dataTenant: entity.dataTenant,\n dtssPath,\n options\n })\n ],\n [T, (entity) => getRelationsForEntity(entity.uri, configs, options)]\n ]);\n setIsLoading(true);\n safePromise(request(entity))\n .then(([{connections, total}]) => {\n dispatch(profile.relations.actions.relationsLoaded({id: config.id, connections, total}));\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n activityFilter,\n metadata,\n config,\n dispatch,\n dtssPath,\n entity?.uri,\n entity?.dataTenant,\n filter,\n globalFilter,\n page,\n relationActivityFilter,\n rowsPerPage,\n safePromise,\n sorting,\n tenant,\n options,\n lastLoadedTime\n ]);\n const isRequestSentRef = useRef<boolean>(false);\n isRequestSentRef.current = false;\n useEffect(() => {\n isRequestSentRef.current = true;\n loadRelations();\n }, [loadRelations]);\n\n const prevMode = usePrevious(mode);\n useEffect(() => {\n if (mode === Mode.Viewing && !isRequestSentRef.current && prevMode !== mode) {\n isRequestSentRef.current = true;\n loadRelations();\n }\n }, [loadRelations, mode, prevMode]);\n return {isLoading, reload: loadRelations};\n};\n","import {useEffect, useState} from 'react';\nimport {useDidUpdateEffect} from '@reltio/components';\nimport {\n RelationshipsSavedState,\n RelationsTableSavedState,\n AttributesTableSavedState\n} from './../types/RelationshipsSavedState';\n\nconst DEFAULT_SAVED_STATE = {\n relationsTable: {},\n attributesTable: {}\n};\n\nconst useSavedState = ({getSavedState, saveState, entityTypeUri}) => {\n const [savedState, setSavedState] = useState<RelationshipsSavedState>(DEFAULT_SAVED_STATE);\n const [changedRelationsState, setRelationsChangedState] = useState<Record<string, RelationsTableSavedState>>(null);\n\n const saveChangesLocallyForPrevEntityType = () => {\n if (changedRelationsState) {\n setSavedState({...savedState, relationsTable: changedRelationsState});\n setRelationsChangedState(null);\n }\n };\n useDidUpdateEffect(saveChangesLocallyForPrevEntityType, [entityTypeUri]);\n\n const updateRelationsTableSavedState = (stateToSave: RelationsTableSavedState) => {\n const changedState: Record<string, RelationsTableSavedState> = {\n ...savedState.relationsTable,\n [entityTypeUri]: stateToSave\n };\n setRelationsChangedState(changedState);\n saveState({...savedState, relationsTable: changedState});\n };\n\n const updateAttributesTableSavedState = (stateToSave: AttributesTableSavedState) => {\n saveState({...savedState, attributesTable: stateToSave});\n };\n\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n getSavedState()\n .then((savedState) => {\n setSavedState(savedState || DEFAULT_SAVED_STATE);\n })\n .then((_) => setIsLoading(false))\n .catch((_) => setIsLoading(false));\n }, []); // eslint-disable-line\n return {\n isLoading,\n relationsTableSavedState: savedState.relationsTable?.[entityTypeUri],\n attributesTableSavedState: savedState.attributesTable,\n updateRelationsTableSavedState,\n updateAttributesTableSavedState\n };\n};\n\nexport default useSavedState;\n","import {\n attributeUriToSearchUri,\n DataTypes,\n getAttrDataTypeDefinition,\n getReadableAttributesList,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {adjust, assoc, concat, find, map, pipe, pluck, prop, propEq, reject, uniqBy} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {RelationshipsTableColumnData} from '../../../types';\n\nconst RELATION_TYPE_COLUMN_ID = 'relation.type';\nconst ATTRIBUTES_COLUMN_ID = 'relation.attributes';\n\nexport const DEFAULT_COLUMNS_DATA = [\n {\n id: 'entity.label',\n get label() {\n return i18n.text('Profile');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n filterable: false,\n initialWidth: 280,\n autoResize: false\n },\n {\n id: RELATION_TYPE_COLUMN_ID,\n get label() {\n return i18n.text('Type');\n }\n },\n {\n id: 'relation.label',\n get label() {\n return i18n.text('Directional Label');\n },\n filterable: false,\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n }\n },\n {\n id: 'relation.activeness.startDate',\n get label() {\n return i18n.text('Start Date');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ACTIVENESS_DATE\n }\n },\n {\n id: 'relation.activeness.endDate',\n get label() {\n return i18n.text('End Date');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ACTIVENESS_DATE\n }\n },\n {\n id: ATTRIBUTES_COLUMN_ID,\n get label() {\n return i18n.text('Attributes');\n },\n sortable: false,\n filterable: false,\n maxAttrsToShow: 7\n }\n];\n\nexport const DEFAULT_COLUMNS = pluck('id', DEFAULT_COLUMNS_DATA);\nexport const ALL_TYPES_COLUMNS = [RELATION_TYPE_COLUMN_ID, ATTRIBUTES_COLUMN_ID];\n\nexport const ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\n\nconst getColumnIdFromAttrUri = pipe(attributeUriToSearchUri, concat('relation.'));\n\nconst getColumnsDataFromRelationAttributes = pipe(\n map((attr) => ({\n id: getColumnIdFromAttrUri(attr.uri),\n label: attr.label,\n description: attr?.description,\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n })),\n uniqBy(prop('id'))\n);\n\nconst getRelationColumnDataType = (relationTypes: TRelationType[]) => ({\n type: DataTypes.TYPE_SELECT,\n options: relationTypes.map(({uri, label}) => ({value: uri, label}))\n});\n\nconst updateColumnData = (columnId: string, updateFn) => (columnsData: RelationshipsTableColumnData[]) =>\n adjust(columnsData.findIndex(propEq('id', columnId)), updateFn, columnsData);\n\nconst updateRelationTypeColumn = (relationTypes: TRelationType[]) =>\n updateColumnData(RELATION_TYPE_COLUMN_ID, assoc('dataTypeDefinition', getRelationColumnDataType(relationTypes)));\n\nexport const getColumnsData = (relationTypes: TRelationType[], currentRelationType: string) =>\n currentRelationType\n ? pipe(\n find((relationType: TRelationType) => relationType.uri === currentRelationType),\n getReadableAttributesList,\n getColumnsDataFromRelationAttributes,\n concat(DEFAULT_COLUMNS_DATA),\n reject(({id}) => ALL_TYPES_COLUMNS.includes(id))\n )(relationTypes)\n : updateRelationTypeColumn(relationTypes)(DEFAULT_COLUMNS_DATA);\n","import {\n assoc,\n pipe,\n evolve,\n either,\n path,\n prop,\n propOr,\n ifElse,\n always,\n without,\n concat,\n intersection,\n pick,\n unless,\n isNil,\n filter\n} from 'ramda';\nimport {useReducer} from 'react';\nimport {basicTableViewState, createStandardAction, Sorting, useActions} from '@reltio/components';\nimport {ALL_TYPES_COLUMNS, DEFAULT_COLUMNS} from '../components/RelationshipsView/helpers/tableHelpers';\nimport {validateFilterValue} from '@reltio/mdm-sdk';\n\ntype Props = {\n defaultColumns: string[];\n defaultSorting: Sorting;\n defaultRowsPerPage: number;\n};\n\nconst CHANGE_RELATION_TYPE = 'CHANGE_RELATION_TYPE';\nconst APPLY_SAVED_STATE = 'APPLY_SAVED_STATE';\nconst SAVE_CURRENT_STATE = 'SAVE_CURRENT_STATE';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeRelationType: createStandardAction(CHANGE_RELATION_TYPE),\n applySavedState: createStandardAction(APPLY_SAVED_STATE),\n saveCurrentState: createStandardAction(SAVE_CURRENT_STATE)\n};\n\nconst resetPageNumber = assoc('page', 0);\n\nconst getDefaultVisibleColumnsForCurrentRelationType = (state) => {\n return pipe(\n prop('visibleColumns'),\n ifElse(always(state.currentRelationType), without(ALL_TYPES_COLUMNS), concat(ALL_TYPES_COLUMNS)),\n intersection(DEFAULT_COLUMNS)\n )(state);\n};\n\nconst getSavedVisibleColumnsForCurrentRelationType = (state) =>\n path(['visibleColumnsForRelationTypes', `${state.currentRelationType}`], state);\n\nconst changeVisibleColumnsForCurrentRelationType = (state) => {\n const nextVisibleColumns = either(\n getSavedVisibleColumnsForCurrentRelationType,\n getDefaultVisibleColumnsForCurrentRelationType\n )(state);\n return basicTableViewState.changeVisibleColumns(state, nextVisibleColumns);\n};\n\nconst getFiltersFromSavedState = pipe(\n propOr(null, 'filters'),\n unless(\n isNil,\n filter(({filter, value}) => validateFilterValue(filter, value))\n )\n);\n\nconst saveVisibleColumnsForCurrentRelationType = (state) => {\n const {currentRelationType, visibleColumns} = state;\n return evolve(\n {\n visibleColumnsForRelationTypes: assoc(`${currentRelationType}`, visibleColumns)\n },\n state\n );\n};\n\nconst getStateToSave = pipe(\n saveVisibleColumnsForCurrentRelationType,\n pick(['currentRelationType', 'visibleColumnsForRelationTypes', 'filters', 'sorting'])\n);\n\nexport const useRelationshipsTable = ({defaultColumns, defaultSorting, defaultRowsPerPage}: Props) => {\n const initState = {\n visibleColumns: defaultColumns,\n filters: null,\n sorting: defaultSorting,\n page: 0,\n rowsPerPage: defaultRowsPerPage,\n currentRelationType: null,\n stateToSave: null,\n visibleColumnsForRelationTypes: {},\n entityTypeOfAppliedSavedState: null\n };\n const [state, dispatch] = useReducer((state, action) => {\n switch (action.type) {\n case CHANGE_RELATION_TYPE: {\n const nextRelationType = action.payload;\n return pipe(\n saveVisibleColumnsForCurrentRelationType,\n assoc('currentRelationType', nextRelationType),\n changeVisibleColumnsForCurrentRelationType,\n resetPageNumber\n )(state);\n }\n case APPLY_SAVED_STATE: {\n const {savedState, entityTypeUri} = action.payload;\n const visibleColumns = savedState\n ? getSavedVisibleColumnsForCurrentRelationType(savedState)\n : state.visibleColumns;\n const filters = savedState ? getFiltersFromSavedState(savedState) : state.filters;\n return {\n ...state,\n ...savedState,\n filters,\n visibleColumns,\n entityTypeOfAppliedSavedState: entityTypeUri\n };\n }\n case SAVE_CURRENT_STATE: {\n return {\n ...state,\n stateToSave: getStateToSave(state)\n };\n }\n default:\n return basicTableViewState.reducer(state, action);\n }\n }, initState);\n const tableActions = useActions({actions, dispatch});\n return [state, tableActions];\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n select: {\n fontSize: '13px',\n color: 'rgba(0,0,0,.6)',\n paddingLeft: '15px',\n '&&': {\n paddingRight: '35px'\n }\n },\n selectMenu: {\n '& li': {\n fontSize: '13px',\n height: '32px'\n }\n },\n textField: {\n maxWidth: '100%'\n }\n});\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {map, concat, pipe} from 'ramda';\nimport {TRelationType} from '@reltio/mdm-sdk';\nimport {DropDownEditor} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: string;\n onChange: (value: string) => void;\n relationTypes: TRelationType[];\n className?: string;\n};\n\nconst RelationTypeSelector = ({value, onChange, relationTypes, className}: Props) => {\n const styles = useStyles();\n const entries = useMemo(\n () =>\n pipe(\n map(({label, uri}) => ({label, value: uri})),\n concat([{value: '', label: i18n.text('All types')}])\n )(relationTypes),\n [relationTypes]\n );\n\n return (\n <div className={className}>\n <DropDownEditor\n displayEmpty\n disableUnderline\n classes={{\n select: styles.select\n }}\n TextFieldProps={{\n classes: {\n root: styles.textField\n }\n }}\n MenuProps={{\n classes: {\n list: styles.selectMenu\n }\n }}\n value={value || ''}\n entries={entries}\n onChange={(value: string) => onChange(value || null)}\n />\n </div>\n );\n};\n\nexport default RelationTypeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n height: '56px',\n boxSizing: 'border-box',\n paddingRight: '10px'\n },\n title: {\n fontSize: '16px'\n },\n total: {\n fontSize: '14px',\n color: theme.palette.text.secondary,\n flexShrink: 0,\n marginRight: '5px'\n },\n relationTypeSelector: {\n margin: '0px 10px 0 30px',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {TRelationType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n BasicViewHeader,\n ColumnsSettings,\n DropDownMenuItem,\n FilterButton,\n SettingsMenu,\n Spacer,\n VerticalDivider\n} from '@reltio/components';\nimport RelationTypeSelector from '../RelationTypeSelector/RelationTypeSelector';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total: number;\n filteringEnabled: boolean;\n onToggleFilters: () => void;\n columnsData: Record<string, unknown>[];\n selectedColumns: string[];\n currentRelationType: string;\n onRelationTypeChange: (value: string) => void;\n relationTypes: TRelationType[];\n onChangeColumns: (columns: string[]) => void;\n searchByOv: boolean;\n onToggleSearchByOv: () => void;\n};\n\nconst RelationshipsTableHeader = ({\n total,\n filteringEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n currentRelationType,\n onRelationTypeChange,\n relationTypes,\n onChangeColumns,\n searchByOv,\n onToggleSearchByOv\n}: Props) => {\n const styles = useStyles();\n\n const settingItems = useMemo<Array<DropDownMenuItem>>(() => {\n return [\n {\n selected: searchByOv,\n selectable: true,\n text: i18n.text('Search by OV only'),\n onClick: onToggleSearchByOv,\n id: 'showNonOv'\n }\n ];\n }, [onToggleSearchByOv, searchByOv]);\n\n return (\n <BasicViewHeader title={i18n.text('Relationships')} classes={{root: styles.header, title: styles.title}}>\n {relationTypes.length > 0 && (\n <RelationTypeSelector\n className={styles.relationTypeSelector}\n value={currentRelationType}\n onChange={onRelationTypeChange}\n relationTypes={relationTypes}\n />\n )}\n <VerticalDivider height={28} margin={20} />\n <Typography variant=\"caption\" className={styles.total}>\n {total === 1\n ? i18n.text('${count} record', {count: total})\n : i18n.text('${count} records', {count: total})}\n </Typography>\n <Spacer />\n <SettingsMenu items={settingItems} menuId=\"relationships-view-settings\" />\n <FilterButton enabled={filteringEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={28} margin={8} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </BasicViewHeader>\n );\n};\n\nexport default memo(RelationshipsTableHeader);\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n width: '100%',\n fontSize: '12px',\n color: theme.palette.text.secondary,\n background: 'linear-gradient(0deg, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.06)), #FFFFFF'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden',\n overflowWrap: 'break-word'\n },\n inactiveRowCell: {\n opacity: 0.6\n },\n defaultWrapper: {\n padding: '15px 25px 0 25px',\n '&:last-child': {\n paddingBottom: '15px'\n }\n },\n entityCell: {\n display: 'flex',\n alignItems: 'flex-start',\n padding: '15px'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n margin: '-10px 0 -10px -10px'\n },\n inactiveEntityAvatar: {\n overflow: 'initial',\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n backgroundColor: 'rgb(209, 206, 206)',\n border: '1px solid rgba(0, 0, 0, 1)',\n borderRadius: '2px',\n width: '12px',\n right: 0,\n bottom: 0,\n height: '12px'\n },\n '& > img': {\n borderRadius: '50%',\n overflow: 'hidden'\n }\n },\n entityLabel: {\n color: theme.palette.primary.main,\n textDecoration: 'none',\n fontWeight: 500\n },\n attributesWrapper: {\n padding: '15px 25px 10px 25px',\n color: 'rgba(0,0,0,0.87)'\n },\n commentsContainer: {\n marginLeft: 'auto'\n },\n description: {\n marginLeft: '-22px'\n }\n}));\n","import React from 'react';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {DescriptionIcon, withFilterAtBottom} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n const {description} = props?.headCellData;\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n <DescriptionIcon description={description} className={styles.description} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {CommentsContainer, COMMENTS_CONTAINER_VISIBILITY_AREA, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n ConnectionEntity,\n ConnectionRelation,\n createRelatedObjectUris,\n getEntityUriForLink,\n getLabel,\n TEntityType\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n entity: ConnectionEntity;\n relation: ConnectionRelation;\n entityType: TEntityType;\n };\n isInactiveRelation?: boolean;\n};\n\nconst EntityProfileRenderer = ({value: {entity, entityType, relation}, isInactiveRelation}: Props) => {\n const styles = useStyles();\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUri);\n return (\n <div className={classnames(styles.entityCell, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n <EntityTypeIcon\n className={classnames(styles.entityAvatar, {[styles.inactiveEntityAvatar]: isInactiveRelation})}\n entityType={entityType}\n />\n <EntityUriLink\n value={getEntityUriForLink({uri: entity.entityUri, dataTenant: entity.dataTenant})}\n className={styles.entityLabel}\n >\n {getLabel(entity.entityLabel)}\n </EntityUriLink>\n <div className={styles.commentsContainer} onClick={(e) => e.stopPropagation()}>\n <CommentsContainer\n uri={relation.relationUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection: {relation, entity}\n })}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n </div>\n </div>\n );\n};\n\nexport default EntityProfileRenderer;\n","import React from 'react';\nimport {ReadOnlyAttributesList} from '@reltio/components';\nimport {AttributeType, RecordAttributesType} from '@reltio/mdm-sdk';\nimport {RelationshipsTableColumnData} from '../../../types';\nimport {useStyles} from './styles';\n\ntype Props = {\n columnData: RelationshipsTableColumnData;\n value: {\n attributeTypes: AttributeType[];\n attributes: RecordAttributesType;\n };\n};\n\nconst AttributesRenderer = ({columnData, value: {attributes, attributeTypes}}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.attributesWrapper} onClick={(e) => e.stopPropagation()}>\n <ReadOnlyAttributesList\n max={columnData.maxAttrsToShow}\n entity={{attributes}}\n attrTypes={attributeTypes}\n drawLines={false}\n />\n </div>\n );\n};\n\nexport default AttributesRenderer;\n","import React from 'react';\nimport {DataTypeValue} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {RelationshipsTableColumnData} from '../../../types';\n\ntype Props = {\n columnData: RelationshipsTableColumnData;\n value: unknown;\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.defaultWrapper}>\n <DataTypeValue value={value} dataTypeDefinition={dataTypeDefinition} />\n </div>\n );\n};\n\nexport default DefaultCellValueRenderer;\n","import {assoc, split, slice, values, length, path, cond, map, pathEq, pipe, reduce, T} from 'ramda';\nimport {defaultGetRowCellHeight} from '@reltio/components';\nimport {Connection, getEntityType, getRelationType, getOvAttributeValuesByPath, Metadata} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport EntityProfileRenderer from './cell-renderers/EntityProfileRenderer';\nimport AttributesRenderer from './cell-renderers/AttributesRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport {RelationshipsTableColumnData} from '../../types';\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getRelationAttributeValues = (attrPath, relation) =>\n pipe(path(['object', 'attributes']), getOvAttributeValuesByPath(attrPath))(relation);\n\nconst getRowValueByColumnId = (metadata: Metadata, {entity, relation}: Connection, columnId: string) => {\n switch (columnId) {\n case 'entity.label':\n return {entity, entityType: getEntityType(metadata, entity.entityType), relation};\n case 'relation.type':\n return relation.relationType;\n case 'relation.label':\n return relation.relationLabel;\n case 'relation.activeness.startDate':\n return relation.startDate;\n case 'relation.activeness.endDate':\n return relation.endDate;\n case 'relation.attributes':\n return {\n attributes: relation.object.attributes,\n attributeTypes: getRelationType(metadata, relation.relationType).attributes\n };\n default: {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getRelationAttributeValues(attrPath, relation);\n }\n }\n};\n\nconst getBasicTableRowsData = (\n metadata: Metadata,\n columnsData: RelationshipsTableColumnData[],\n connections: Connection[]\n) => {\n return (connections || []).map((connection) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(metadata, connection, id), acc), {}),\n assoc('rawValue', connection)\n )(columnsData)\n );\n};\n\nconst getNestedPathByColumnId = (columnId: string) => {\n if (columnId.startsWith('relation.attributes')) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRenderer = (columnId: string) => {\n switch (columnId) {\n case 'entity.label':\n return EntityProfileRenderer;\n case 'relation.attributes':\n return AttributesRenderer;\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getColumnDataByColumnId = (columnData: RelationshipsTableColumnData) => ({\n sortable: true,\n resizable: true,\n ...columnData,\n headCellRenderer: HeadCellRenderer,\n nestedPath: getNestedPathByColumnId(columnData.id),\n rowCellValueRenderer: getCellValueRenderer(columnData.id)\n});\n\nconst getBasicTableColumnsData = map(getColumnDataByColumnId);\n\nconst calculateAttributesCellHeight = ({columnData, cell}) => {\n const attributesCount = pipe(path(['values', 0, 'attributes']), values, length)(cell);\n return attributesCount > columnData.maxAttrsToShow\n ? columnData.maxAttrsToShow * 26 + 49\n : attributesCount * 26 + 25;\n};\n\nconst getStaticRowCellHeight = cond([\n [pathEq(['columnData', 'id'], 'relation.attributes'), calculateAttributesCellHeight],\n [T, defaultGetRowCellHeight]\n]);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData, getStaticRowCellHeight};\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n cell: {\n values: unknown[];\n };\n CellValueRenderer: React.ElementType;\n isInactiveRelation?: boolean;\n};\n\nconst RowCellRenderer = ({cell, CellValueRenderer, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.rowCell, {[styles.inactiveRowCell]: otherProps.isInactiveRelation})}>\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default RowCellRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n menuItem: {\n minHeight: '32px',\n color: theme.palette.text.secondary\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0,\n marginLeft: '16px'\n },\n buttons: {\n display: 'flex',\n alignItems: 'center',\n paddingRight: '5px'\n }\n}));\n","import React, {forwardRef, ReactNode} from 'react';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {noop, withTooltip} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst MenuItemWithTooltip = withTooltip(MenuItem);\n\ntype Item = {\n text?: string;\n disabled?: boolean;\n icon: ReactNode;\n tooltip?: string;\n onClick?: (e) => void;\n};\n\ntype Props = {\n item: Item;\n onMenuClose?: () => void;\n};\n\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = noop}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {icon, disabled, text, tooltip, onClick} = item;\n const handleClick = (e) => {\n onMenuClose();\n onClick(e);\n };\n\n return (\n <MenuItemWithTooltip\n tooltipTitle={tooltip}\n showForDisabled={true}\n classes={{root: styles.menuItem}}\n onClick={handleClick}\n disabled={disabled}\n ref={ref}\n >\n {icon}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItemWithTooltip>\n );\n});\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React, {useCallback, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {ConfirmationDialog, DropDownMenuButton, noop, SmallIconButton} from '@reltio/components';\nimport MenuItemRenderer from './MenuItemRenderer';\nimport {checkMetadataPermission, Connection, getLabel, getRelationType, MetadataPermissions} from '@reltio/mdm-sdk';\nimport {pipe, prop} from 'ramda';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n disableDelete?: boolean;\n connection: Connection;\n onMenuOpen?: () => void;\n onMenuClose?: () => void;\n onDelete: () => void;\n};\n\nexport const RelationshipMenuButton = ({\n disableDelete,\n connection: {entity, relation},\n onMenuOpen = noop,\n onMenuClose = noop,\n onDelete\n}: Props) => {\n const styles = useStyles();\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const hasDeletePermission = pipe(\n prop('relationType'),\n getRelationType(metadata),\n checkMetadataPermission(MetadataPermissions.DELETE)\n )(relation);\n\n const canDelete = !disableDelete && hasDeletePermission;\n\n const [pendingDeletion, setPendingDeletion] = useState(false);\n const showDeleteConfirmation = () => setPendingDeletion(true);\n const hideDeleteConfirmation = () => setPendingDeletion(false);\n\n const actions = [\n {\n disabled: !canDelete,\n text: i18n.text('Delete'),\n icon: <DeleteIcon />,\n tooltip: canDelete ? null : i18n.text(\"You don't have permissions to delete\"),\n onClick: showDeleteConfirmation\n }\n ];\n\n const handleMenuClose = useCallback(() => {\n if (!pendingDeletion) {\n onMenuClose();\n }\n }, [pendingDeletion, onMenuClose]);\n const truncateWithEllipsis = (text: string) => (text.length > 17 ? `${text.substring(0, 17)}...` : text);\n\n return (\n <div className={styles.buttons}>\n <DropDownMenuButton\n MenuItemRenderer={MenuItemRenderer}\n menuId={'relationships-table-actions'}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'S'\n }}\n menuItems={actions}\n onMenuOpen={onMenuOpen}\n onMenuClose={handleMenuClose}\n />\n <ConfirmationDialog\n open={pendingDeletion}\n title={i18n.text('Do you want to delete relationship \"${label}\"?', {\n label: truncateWithEllipsis(getLabel(entity.entityLabel))\n })}\n content={i18n.text(\n 'This relationship will be removed and all the values in the relationship will be permanently deleted. \\\nAre you sure you want to delete this relationship?'\n )}\n onSave={pipe(hideDeleteConfirmation, onMenuClose, onDelete)}\n onDiscard={pipe(hideDeleteConfirmation, onMenuClose)}\n saveCaption={i18n.text('Delete')}\n discardCaption={i18n.text('Cancel')}\n />\n </div>\n );\n};\n\nexport default RelationshipMenuButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n tableContainer: {\n flex: 1,\n overflow: 'hidden',\n display: 'flex',\n zIndex: 0\n },\n hoveredRowRightContentWrapper: {\n width: '100%',\n pointerEvents: 'none!important' as any\n },\n menuButtonContainer: {\n position: 'absolute',\n top: 'calc(50% - 12px)',\n right: 0,\n pointerEvents: 'all'\n },\n tooltipAnchor: {\n width: '100%',\n height: '1px'\n }\n});\n","import React, {ForwardedRef, memo, useCallback, useMemo, useState} from 'react';\nimport {Connection, isActiveObject, Metadata} from '@reltio/mdm-sdk';\nimport {\n BasicTable,\n ColumnData,\n ColumnFilter,\n RowCellAutoSizer,\n Sorting,\n useDynamicRowCellHeight\n} from '@reltio/components';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {getBasicTableColumnsData, getBasicTableRowsData, getStaticRowCellHeight} from './helpers';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {either} from 'ramda';\nimport RelationshipMenuButton from '../RelationshipMenuButton/RelationshipMenuButton';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n metadata: Metadata;\n connections: Connection[];\n columnsData: ColumnData[];\n sorting: Sorting;\n onSort: (field: string) => void;\n filters?: Record<string, ColumnFilter>;\n onFilter: (event: {columnId: string; filter: ColumnFilter}) => void;\n onRowClick: (rowIndex: number) => void;\n onDelete: (relationUri: string) => void;\n tableRef: ForwardedRef<unknown>;\n readOnly?: boolean;\n};\n\nconst RelationshipsTable = ({\n metadata,\n connections,\n columnsData,\n sorting,\n onSort,\n filters,\n onFilter,\n onRowClick,\n tableRef,\n onDelete,\n readOnly\n}: Props) => {\n const styles = useStyles();\n\n const tableRowsData = useMemo(() => getBasicTableRowsData(metadata, columnsData, connections), [\n metadata,\n connections,\n columnsData\n ]);\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const {getDynamicRowCellHeight, changeRowCellHeight} = useDynamicRowCellHeight();\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, getStaticRowCellHeight), [\n getDynamicRowCellHeight,\n getStaticRowCellHeight\n ]);\n const [hoverRowIndex, setHoverRowIndex] = useState<number>(null);\n\n const renderRowCell = useCallback(\n (props) => {\n const isInactiveRelation = !isActiveObject(props.rowValue.rawValue.relation);\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} isInactiveRelation={isInactiveRelation} />\n </RowCellAutoSizer>\n );\n },\n [changeRowCellHeight]\n );\n\n const [isActionsMenuOpen, setIsActionsMenuOpen] = useState(false);\n\n const handleActionsMenuOpen = useCallback(() => setIsActionsMenuOpen(true), []);\n const handleActionsMenuClose = useCallback(() => {\n setHoverRowIndex(null);\n setIsActionsMenuOpen(false);\n }, []);\n\n const onRowHover = useCallback(\n (rowIndex) => setHoverRowIndex((prevHoverRowIndex) => (isActionsMenuOpen ? prevHoverRowIndex : rowIndex)),\n [isActionsMenuOpen]\n );\n\n const hoveredRowRightContent = useMemo(() => {\n const connection: Connection = hoverRowIndex != null ? tableRowsData[hoverRowIndex].rawValue : null;\n const isInactiveRelation = !isActiveObject(connection?.relation);\n\n return (\n connection && (\n <>\n <Tooltip\n key={connection.relation.relationUri}\n open={isInactiveRelation}\n title={i18n.text('Inactive')}\n >\n <div className={styles.tooltipAnchor} />\n </Tooltip>\n <div className={styles.menuButtonContainer}>\n <RelationshipMenuButton\n disableDelete={readOnly}\n connection={connection}\n onMenuOpen={handleActionsMenuOpen}\n onMenuClose={handleActionsMenuClose}\n onDelete={() => onDelete(connection.relation.relationUri)}\n />\n </div>\n </>\n )\n );\n }, [onDelete, tableRowsData, hoverRowIndex]);\n\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n fixFirstColumn={true}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={48}\n getRowCellHeight={getRowCellHeight}\n renderRowCell={renderRowCell}\n onRowClick={onRowClick}\n ref={tableRef}\n hoverStateEnabled={true}\n hoverRowIndex={hoverRowIndex}\n onRowHover={onRowHover}\n hoveredRowRightContent={hoveredRowRightContent}\n classes={{\n hoveredRowRightContentWrapper: styles.hoveredRowRightContentWrapper\n }}\n />\n </div>\n );\n};\n\nexport default memo(RelationshipsTable);\n","import {AttributeType, Relation} from '@reltio/mdm-sdk';\nimport {CrosswalksByTypes, groupCrosswalksByTypesAndSources} from '@reltio/components';\nimport {assoc, map, pipe, propOr} from 'ramda';\n\ntype TableRow = {\n source: string;\n crosswalksByTypes: CrosswalksByTypes;\n};\n\nexport const buildTableRowsData = (relation: Relation, selectedAttributeTypes: AttributeType[] = []): TableRow[] => {\n return pipe(\n propOr([], 'crosswalks'),\n map(assoc('ownerType', 'entity')),\n groupCrosswalksByTypesAndSources(relation.type, selectedAttributeTypes)\n )(relation);\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n tableRow: {\n '& + &': {\n marginTop: '4px'\n },\n margin: 'auto',\n maxWidth: '448px'\n }\n}));\n","import React, {memo, useCallback, useMemo, useState} from 'react';\nimport {\n AttributeType,\n checkCanDeleteCrosswalk,\n checkCanEditCrosswalk,\n getRelationType,\n Metadata,\n Relation,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {DeleteCrosswalkEvent, EditCrosswalkEvent, SourceCrosswalksRow} from '@reltio/components';\nimport {append, ifElse, includes, without} from 'ramda';\nimport {buildTableRowsData} from './helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n readOnly?: boolean;\n relation: Relation;\n metadata: Metadata;\n selectedAttributeTypes?: AttributeType[];\n onDeleteCrosswalk: (event: DeleteCrosswalkEvent) => void;\n onEditCrosswalk: (event: EditCrosswalkEvent) => void;\n};\n\nconst LegendTable = ({\n readOnly,\n relation,\n metadata,\n selectedAttributeTypes,\n onDeleteCrosswalk,\n onEditCrosswalk\n}: Props) => {\n const styles = useStyles();\n\n const relationType: TRelationType = getRelationType(metadata, relation.type);\n\n const rowsData = useMemo(() => buildTableRowsData(relation, selectedAttributeTypes), [\n relation,\n selectedAttributeTypes\n ]);\n const [expandedSources, setExpandedSources] = useState<string[]>([]);\n\n const handleDelete = useCallback(\n (crosswalkId: string) => {\n onDeleteCrosswalk({entityUri: relation.uri, crosswalkId});\n },\n [onDeleteCrosswalk, relation.uri]\n );\n\n const handleEdit = useCallback(\n (event: Omit<EditCrosswalkEvent, 'entityUri'>) => {\n onEditCrosswalk({entityUri: relation.uri, ...event});\n },\n [onEditCrosswalk, relation.uri]\n );\n\n return (\n <div>\n {rowsData.map(({source, crosswalksByTypes}) => {\n return (\n <div key={source} className={styles.tableRow}>\n <SourceCrosswalksRow\n source={source}\n crosswalksByTypes={crosswalksByTypes}\n expanded={expandedSources.includes(source)}\n disableEditCrosswalk={!checkCanEditCrosswalk(relationType) || readOnly}\n disableDeleteCrosswalk={!checkCanDeleteCrosswalk(relationType) || readOnly}\n onEdit={handleEdit}\n onDelete={handleDelete}\n onToggleExpanded={() => {\n setExpandedSources(ifElse(includes(source), without([source]), append(source)));\n }}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default memo(LegendTable);\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n header: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n padding: '20px 12px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n title: {\n fontWeight: 500,\n fontSize: '20px',\n lineHeight: '23px',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary,\n marginLeft: '12px'\n },\n hint: {\n color: theme.palette.text.secondary,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n alignSelf: 'flex-start',\n margin: '4px 14px 10px'\n },\n hintText: {\n marginLeft: '8px',\n fontSize: '12px',\n lineHeight: '16px'\n },\n buttons: {\n display: 'flex',\n padding: '8px 6px 4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n paddingLeft: 25,\n margin: 'auto',\n maxWidth: '448px',\n boxSizing: 'border-box',\n marginBottom: '4px'\n },\n tableContainer: {\n overflowY: 'auto',\n overflowX: 'hidden',\n paddingLeft: '16px',\n paddingRight: '6px'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport InfoIcon from '@material-ui/icons/Info';\nimport AddIcon from '@material-ui/icons/Add';\nimport {Button as Button} from '@material-ui/core';\nimport LegendTable from '../LegendTable/LegendTable';\nimport {\n AttributeType,\n checkCanCreateCrosswalk,\n getRelationType,\n Metadata,\n Relation,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {\n AddCrosswalkEvent,\n CrosswalkEditor,\n DeleteCrosswalkEvent,\n EditCrosswalkEvent,\n withTooltip\n} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst ButtonWithTooltip = withTooltip(Button);\n\ntype Props = {\n className?: string;\n readOnly?: boolean;\n relation: Relation;\n selectedAttributeTypes?: AttributeType[];\n onAddCrosswalk: (event: AddCrosswalkEvent) => void;\n onDeleteCrosswalk: (event: DeleteCrosswalkEvent) => void;\n onEditCrosswalk: (event: EditCrosswalkEvent) => void;\n};\n\nconst LegendPanel = ({\n className,\n readOnly,\n relation,\n selectedAttributeTypes,\n onAddCrosswalk,\n onDeleteCrosswalk,\n onEditCrosswalk\n}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationType: TRelationType = getRelationType(metadata, relation.type);\n\n const [openEditor, setOpenEditor] = useState(false);\n const canAdd = checkCanCreateCrosswalk(relationType) && !readOnly;\n\n return (\n <div className={className}>\n <div className={styles.header}>\n <span className={styles.title}>{i18n.text('Legend')}</span>\n </div>\n <div className={styles.buttons}>\n <ButtonWithTooltip\n color=\"primary\"\n showForDisabled={true}\n disabled={!canAdd}\n tooltipTitle={canAdd ? null : i18n.text(\"You don't have permissions to add crosswalk\")}\n onClick={() => setOpenEditor(true)}\n >\n <AddIcon className={styles.icon} />\n <div className={styles.buttonLabel}>{i18n.text('Crosswalk')}</div>\n </ButtonWithTooltip>\n </div>\n <div className={styles.hint}>\n <InfoIcon className={styles.icon} />\n <span className={styles.hintText}>\n {i18n.text('You can drag a crosswalk to add values to attributes swimlanes')}\n </span>\n </div>\n <div className={styles.tableContainer}>\n {openEditor && (\n <CrosswalkEditor\n className={styles.editor}\n onAdd={(crosswalk) => onAddCrosswalk({entity: relation, crosswalk})}\n onClose={() => setOpenEditor(false)}\n />\n )}\n <LegendTable\n readOnly={readOnly}\n metadata={metadata}\n relation={relation}\n selectedAttributeTypes={selectedAttributeTypes}\n onDeleteCrosswalk={onDeleteCrosswalk}\n onEditCrosswalk={onEditCrosswalk}\n />\n </div>\n </div>\n );\n};\n\nexport default memo(LegendPanel);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n entityInfo: {\n flex: '0 1 auto',\n overflow: 'hidden',\n minWidth: '100px'\n },\n entityLabelContainer: {\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden'\n },\n entityLabel: {\n lineHeight: '1.2',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary\n },\n infoIcon: {\n fontSize: '16px',\n color: theme.palette.text.secondary,\n marginLeft: '5px'\n },\n profileBand: {\n margin: '-10px',\n maxWidth: '500px'\n },\n entityTypeBadge: {\n marginTop: '7px'\n }\n}));\n","import React from 'react';\nimport {Entity, getLabel} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {ExpandedValueTooltip, LightArrowTooltip, ProfileBand, EntityTypeBadge} from '@reltio/components';\nimport InfoIcon from '@material-ui/icons/Info';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n};\n\nconst EntityInfo = ({entity}: Props) => {\n const styles = useStyles();\n const label = getLabel(entity.label);\n return (\n <div className={styles.entityInfo}>\n <div className={styles.entityLabelContainer}>\n <ExpandedValueTooltip value={label}>\n <Typography variant=\"h6\" className={styles.entityLabel} noWrap>\n {label}\n </Typography>\n </ExpandedValueTooltip>\n <LightArrowTooltip\n title={<ProfileBand className={styles.profileBand} entity={entity} />}\n placement={'right'}\n >\n <InfoIcon className={styles.infoIcon} />\n </LightArrowTooltip>\n </div>\n <EntityTypeBadge className={styles.entityTypeBadge} entity={entity} size={'medium'} />\n </div>\n );\n};\n\nexport default EntityInfo;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n flexShrink: 0,\n overflow: 'hidden',\n width: '110px'\n },\n label: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n","import React from 'react';\nimport {ConnectionRelation} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {ExpandedValueTooltip} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n relation: ConnectionRelation;\n};\n\nconst RelationDirection = ({relation}: Props) => {\n const styles = useStyles();\n const {direction, relationLabel} = relation;\n return (\n <div className={styles.root}>\n <ExpandedValueTooltip value={relationLabel}>\n <Typography variant={'subtitle2'} className={styles.label} align={'center'} noWrap>\n {relationLabel}\n </Typography>\n </ExpandedValueTooltip>\n <svg width=\"110\" height=\"12\" fill=\"black\" fillOpacity=\"0.3\">\n {direction === 'out' && <polygon points=\"94 0, 110 6, 94 12, 94 9, 0 9, 0 3, 94 3\" />}\n {direction === 'bidirectional' && (\n <polygon points=\"94 0, 110 6, 94 12, 94 9, 16 9, 16 12, 0 6, 16 0, 16 3, 94 3\" />\n )}\n {direction === 'in' && <polygon points=\"16 12, 0 6, 16 0, 16 3, 110 3, 110 9, 16 9\" />}\n </svg>\n </div>\n );\n};\n\nexport default RelationDirection;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n '&:hover $editButton': {\n visibility: 'visible'\n }\n },\n editButton: {\n visibility: 'hidden',\n marginLeft: '4px',\n marginBottom: '4px'\n },\n paper: {\n width: '150px',\n border: '3px solid rgba(0, 0, 0, 0.3)',\n borderRadius: '4px',\n boxSizing: 'border-box',\n overflow: 'hidden'\n }\n}));\n","import React, {KeyboardEvent, useRef, useState} from 'react';\nimport {formatDate} from '@reltio/mdm-sdk';\nimport {DateEditor, SmallIconButton} from '@reltio/components';\nimport EditIcon from '@material-ui/icons/Edit';\nimport {Popover as Popover} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: number;\n onChange: (value: number) => void;\n readOnly?: boolean;\n};\n\nconst RelationDate = ({value = null, onChange, readOnly}: Props) => {\n const styles = useStyles();\n const ref = useRef<HTMLSpanElement>();\n\n const [showEditor, setShowEditor] = useState(false);\n const openEditor = () => setShowEditor(true);\n const closeEditor = () => setShowEditor(false);\n\n const [editedValue, setEditedValue] = useState(value);\n\n const applyChangesAndClose = () => {\n if (editedValue !== value) {\n onChange(editedValue);\n }\n closeEditor();\n };\n\n const onKeyUp = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter') applyChangesAndClose();\n else if (event.key === 'Escape') closeEditor();\n };\n\n return (\n <span ref={ref} className={styles.root}>\n {value && formatDate(value)}\n <SmallIconButton\n disabled={readOnly}\n icon={EditIcon}\n size={'XXS'}\n className={styles.editButton}\n onClick={openEditor}\n />\n <Popover\n classes={{paper: styles.paper}}\n open={showEditor}\n anchorEl={ref.current}\n anchorOrigin={{vertical: 'top', horizontal: 'left'}}\n transformOrigin={{vertical: 14, horizontal: 20}}\n onKeyUp={onKeyUp}\n onBackdropClick={applyChangesAndClose}\n >\n <DateEditor\n InputProps={{\n autoFocus: true,\n disableUnderline: true,\n fullWidth: true\n }}\n size={'small'}\n hiddenLabel={true}\n label={undefined}\n value={editedValue && new Date(editedValue)}\n onChange={(value) => setEditedValue(value && value.valueOf())}\n />\n </Popover>\n </span>\n );\n};\n\nexport default RelationDate;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n relationBand: {\n flexShrink: 0,\n boxShadow: 'inset 0px -1px 0px rgba(0,0,0,0.06)',\n padding: '16px 19px'\n },\n inactiveRelationBand: {\n opacity: 0.6,\n background: 'rgba(185, 188, 197, 0.18)'\n },\n toolbar: {\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n marginBottom: '10px'\n },\n mainInfo: {\n display: 'flex',\n gap: '16px',\n marginLeft: '40px'\n },\n detailsInfo: {\n display: 'flex',\n gap: '34px',\n marginLeft: '40px',\n marginTop: '17px',\n color: theme.palette.text.secondary,\n fontSize: '13px'\n },\n detailTitle: {\n color: theme.palette.text.primary,\n flexShrink: 0,\n marginRight: '4px'\n },\n directionalLabel: {\n display: 'flex',\n overflow: 'hidden',\n '& span': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n }\n },\n relationDate: {\n flexShrink: 0\n },\n commentsContainer: {\n marginRight: '18px'\n }\n}));\n","import React, {memo} from 'react';\nimport {CollaborationObjectTypes, Connection, createRelatedObjectUris, Entity, isActiveObject} from '@reltio/mdm-sdk';\nimport {\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ExpandedValueTooltip,\n SmallIconButton,\n Spacer\n} from '@reltio/components';\nimport classnames from 'classnames';\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack';\nimport {Typography as Typography} from '@material-ui/core';\nimport EntityInfo from './EntityInfo/EntityInfo';\nimport RelationDirection from './RelationDirection/RelationDirection';\nimport RelationDate from './RelationDate/RelationDate';\nimport RelationshipMenuButton from '../RelationshipMenuButton/RelationshipMenuButton';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n readOnly?: boolean;\n entity: Entity;\n connection: Connection;\n onNavigateBack: () => void;\n onDelete: () => void;\n onChangeActivenessDate: (attributeName: string, value: number) => void;\n};\n\nconst RelationshipBand = ({readOnly, entity, connection, onNavigateBack, onDelete, onChangeActivenessDate}: Props) => {\n const isInactiveRelation = !isActiveObject(connection.relation);\n const styles = useStyles();\n return (\n <div\n className={classnames(styles.relationBand, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [styles.inactiveRelationBand]: isInactiveRelation\n })}\n >\n <div className={styles.toolbar}>\n <SmallIconButton icon={ArrowBackIcon} size={'S'} onClick={() => onNavigateBack()} />\n <Typography variant={'subtitle2'} display={'inline'}>\n {i18n.text('Back to relationships')}\n </Typography>\n <Spacer />\n <div className={styles.commentsContainer}>\n <CommentsContainer\n uri={connection.relation.relationUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: entity?.uri,\n connection\n })}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n </div>\n <RelationshipMenuButton connection={connection} onDelete={onDelete} disableDelete={readOnly} />\n </div>\n <div className={styles.mainInfo}>\n <EntityInfo entity={entity} />\n <RelationDirection relation={connection.relation} />\n <EntityInfo entity={{...connection.entity.object, dataTenant: connection.entity.dataTenant}} />\n </div>\n <div className={styles.detailsInfo}>\n <div className={styles.directionalLabel}>\n <span className={styles.detailTitle}>{i18n.text('Directional label:')}</span>\n <ExpandedValueTooltip value={connection.relation.relationLabel}>\n <span>{connection.relation.relationLabel}</span>\n </ExpandedValueTooltip>\n </div>\n <div className={styles.relationDate}>\n <span className={styles.detailTitle}>{i18n.text('Start date:')}</span>\n <RelationDate\n value={connection.relation.startDate}\n onChange={(value) => onChangeActivenessDate('startDate', value)}\n readOnly={readOnly}\n />\n </div>\n <div className={styles.relationDate}>\n <span className={styles.detailTitle}>{i18n.text('End date:')}</span>\n <RelationDate\n value={connection.relation.endDate}\n onChange={(value) => onChangeActivenessDate('endDate', value)}\n readOnly={readOnly}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default memo(RelationshipBand);\n","import {ErrorPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {getRequestErrorMessage} from '@reltio/mdm-sdk';\n\nexport const showErrorMessage = (error: unknown) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: getRequestErrorMessage(error, i18n.text('Something went wrong'))\n });\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n detailsView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: 'hidden'\n },\n locked: {\n pointerEvents: 'none'\n },\n resizablePanesWrapper: {\n flexGrow: 1\n },\n pane: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n});\n","import React, {memo, useCallback, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {\n ApiError,\n ApiErrorCode,\n AttributeType,\n Connection,\n deleteActivenessAttribute,\n Entity,\n getRelation,\n Relation,\n updateActivenessAttribute\n} from '@reltio/mdm-sdk';\nimport {\n AttributesTable,\n BasicView,\n CrosswalkDragLayer,\n CrosswalksDisplayProvider,\n ExpandedAttributesProvider,\n ResizablePanes,\n useCrosswalkActions,\n useModifiedEntity,\n useSafePromise\n} from '@reltio/components';\nimport LegendPanel from '../LegendPanel/LegendPanel';\nimport RelationshipBand from '../RelationshipBand/RelationshipBand';\nimport {assocPath, dissocPath, pipe} from 'ramda';\nimport {showErrorMessage} from '../../services/errors';\nimport {useCrosswalksDisplay} from '../../hooks/useCrosswalksDisplay';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport {DndProvider} from 'react-dnd';\n\nimport {useStyles} from './styles';\n\nconst MIN_PANE1_SIZE = 600;\nconst MIN_PANE2_SIZE = 480;\nconst MAX_PANE1_SIZE = -MIN_PANE2_SIZE;\n\ntype Props = {\n entity: Entity;\n connection: Connection;\n visibleColumns?: string[];\n onClose: (error?: ApiError) => void;\n onDeleteConnection: () => void;\n onChangeConnection: (connection: Connection) => void;\n onChangeVisibleColumns: (visibleColumns: string[]) => void;\n readOnly?: boolean;\n};\n\nconst RelationshipDetails = ({\n entity,\n connection,\n visibleColumns,\n onClose,\n onDeleteConnection,\n onChangeConnection,\n onChangeVisibleColumns,\n readOnly\n}: Props) => {\n const styles = useStyles();\n const displayProps = useCrosswalksDisplay();\n const [paneSize, setPaneSize] = useState(MAX_PANE1_SIZE);\n const handlePaneSizeChange = useCallback(({percentageSize}) => setPaneSize(percentageSize), []);\n\n const [selectedAttrTypes, setSelectedAttrTypes] = useState<AttributeType[]>();\n const [isLoading, setIsLoading] = useState(false);\n const relationUri = connection.relation.relationUri;\n\n const safePromise = useSafePromise();\n const onLoad = useCallback(() => setIsLoading(true), []);\n const onLoaded = useCallback(() => setIsLoading(false), []);\n const onDeleteRelation = useCallback(pipe(onDeleteConnection, onLoad), []);\n const [onError, reloadRelation] = useMemo(() => {\n const onError = (error: ApiError) => {\n if (error.errorCode === ApiErrorCode.CROSSWALK_NOT_FOUND) {\n showErrorMessage(error);\n reloadRelation();\n } else if (error.errorCode === ApiErrorCode.OBJECT_NOT_FOUND) {\n onClose(error);\n } else {\n showErrorMessage(error);\n onLoaded();\n }\n };\n const reloadRelation = () => {\n safePromise(getRelation(relationUri))\n .then((newRelation: Relation) => {\n onChangeConnection(assocPath(['relation', 'object'], newRelation, connection));\n onLoaded();\n })\n .catch(onError);\n };\n return [onError, reloadRelation];\n }, [connection, onLoaded, onChangeConnection, onClose]);\n\n const {\n modifiedEntity,\n crosswalksMap,\n newlyCreatedAttributes,\n onPinAttribute,\n onIgnoreAttribute,\n onAddAttribute,\n onEditAttribute,\n onDeleteAttribute\n } = useModifiedEntity({\n entity: connection.relation.object,\n onModify: reloadRelation,\n onError,\n onLoad\n });\n\n const {addCrosswalk, deleteCrosswalk, editCrosswalk} = useCrosswalkActions({\n onSuccess: reloadRelation,\n onError,\n onLoad\n });\n\n const onChangeActivenessDate = useCallback(\n (attributeName: string, value: number) => {\n onLoad();\n const request = value\n ? updateActivenessAttribute({entityUri: relationUri, attributeName, value}).then(() =>\n onChangeConnection(assocPath(['relation', attributeName], value, connection))\n )\n : deleteActivenessAttribute({entityUri: relationUri, attributeName}).then(() =>\n onChangeConnection(dissocPath(['relation', attributeName], connection))\n );\n request.then(onLoaded).catch(onError);\n },\n [connection, onLoad, onLoaded, onError]\n );\n\n return (\n <BasicView className={styles.detailsView}>\n <CrosswalksDisplayProvider {...displayProps}>\n <DndProvider backend={HTML5Backend}>\n <CrosswalkDragLayer />\n <ResizablePanes\n className={classnames(styles.resizablePanesWrapper, {[styles.locked]: isLoading})}\n orientation={'vertical'}\n size={paneSize}\n minSize={MIN_PANE1_SIZE}\n maxSize={MAX_PANE1_SIZE}\n allowResize={true}\n onChange={handlePaneSizeChange}\n >\n <div className={styles.pane}>\n <RelationshipBand\n readOnly={readOnly}\n entity={entity}\n connection={connection}\n onNavigateBack={onClose}\n onDelete={onDeleteRelation}\n onChangeActivenessDate={onChangeActivenessDate}\n />\n <ExpandedAttributesProvider attributeUris={newlyCreatedAttributes}>\n <AttributesTable\n readOnly={readOnly}\n entity={modifiedEntity}\n crosswalksMap={crosswalksMap}\n isLoading={isLoading}\n onPin={onPinAttribute}\n onIgnore={onIgnoreAttribute}\n onEdit={onEditAttribute}\n onAdd={onAddAttribute}\n onDelete={onDeleteAttribute}\n selectedAttributeTypes={selectedAttrTypes}\n onSelectAttributeTypes={setSelectedAttrTypes}\n visibleColumns={visibleColumns}\n onChangeVisibleColumns={onChangeVisibleColumns}\n />\n </ExpandedAttributesProvider>\n </div>\n <LegendPanel\n readOnly={readOnly}\n className={styles.pane}\n relation={connection.relation.object}\n selectedAttributeTypes={selectedAttrTypes}\n onAddCrosswalk={addCrosswalk}\n onDeleteCrosswalk={deleteCrosswalk}\n onEditCrosswalk={editCrosswalk}\n />\n </ResizablePanes>\n </DndProvider>\n </CrosswalksDisplayProvider>\n </BasicView>\n );\n};\n\nexport default memo(RelationshipDetails);\n","import {useCallback, useMemo, useState, useRef} from 'react';\nimport {CrosswalkBase, debounce, eqCrosswalks} from '@reltio/mdm-sdk';\nimport {any, concat} from 'ramda';\n\nexport const useCrosswalksDisplay = () => {\n const [highlightedCrosswalks, setHighlightedCrosswalks] = useState<CrosswalkBase[]>([]);\n const highlightedCrosswalksCache = useRef([]);\n const applyHighlightedCrosswalks = useCallback(\n debounce(() => {\n setHighlightedCrosswalks([...highlightedCrosswalksCache.current]);\n }, 50),\n []\n );\n const cacheHighlightedCrosswalks = useCallback(\n (arr) => {\n highlightedCrosswalksCache.current = arr;\n applyHighlightedCrosswalks(arr);\n },\n [applyHighlightedCrosswalks]\n );\n\n const setCrosswalkHighlighted = useCallback(\n (crosswalk: CrosswalkBase, highlighted: boolean) => {\n if (!crosswalk) return;\n if (highlighted) {\n cacheHighlightedCrosswalks([crosswalk]);\n } else {\n cacheHighlightedCrosswalks([]);\n }\n },\n [cacheHighlightedCrosswalks]\n );\n\n const [focusedCrosswalks, setFocusedCrosswalks] = useState<CrosswalkBase[]>([]);\n const calculateFocusedCrosswalks = (prev: CrosswalkBase[], next: CrosswalkBase[]) =>\n concat(\n prev.filter((prevCrosswalk) => !any(eqCrosswalks(prevCrosswalk), next)),\n next.filter((nextCrosswalk) => !any(eqCrosswalks(nextCrosswalk), prev))\n );\n\n const toggleCrosswalkFocus = useCallback((crosswalk: CrosswalkBase) => {\n if (!crosswalk) return;\n setFocusedCrosswalks((prevValue) => calculateFocusedCrosswalks([crosswalk], prevValue));\n }, []);\n\n return {\n highlightedCrosswalks: useMemo(() => [...highlightedCrosswalks, ...focusedCrosswalks], [\n highlightedCrosswalks,\n focusedCrosswalks\n ]),\n focusedCrosswalks,\n toggleCrosswalkFocus,\n setCrosswalkHighlighted\n };\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n relationshipsView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflowX: 'hidden',\n overflowY: 'auto',\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n display: 'flex',\n flexDirection: 'column'\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n pane: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflow: 'hidden',\n position: 'relative'\n }\n});\n","import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport {Dispatch} from 'redux';\nimport {connect} from 'react-redux';\nimport {\n always,\n andThen,\n both,\n either,\n equals,\n filter,\n identity,\n map,\n otherwise,\n pipe,\n prop,\n propEq,\n update,\n when,\n not\n} from 'ramda';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n ApiError,\n ApiErrorCode,\n checkMetadataPermission,\n CollaborationObjectTypes,\n Connection,\n Entity,\n getEntitiesMapForConnections,\n getInheritancePath,\n getRelationshipsObjectIdsForCollaboration,\n isDataTenantEntity,\n Metadata,\n MetadataPermissions,\n Mode,\n RelationshipsPerspectiveConfig,\n removeRelation,\n TRelationType\n} from '@reltio/mdm-sdk';\nimport {\n BasicTablePagination,\n CollaborationContextProvider,\n EntitiesMapContext,\n LinearLoadIndicator,\n ScreenProfileBand,\n useCollaboration,\n useDidUpdateEffect,\n useRelationsLoader\n} from '@reltio/components';\nimport useSavedState from '../../hooks/useSavedState';\nimport {useRelationshipsTable} from '../../hooks/useRelationshipsTable';\nimport {RelationshipsSavedState} from '../../types';\nimport {DEFAULT_COLUMNS, getColumnsData, ROWS_PER_PAGE_OPTIONS} from './helpers/tableHelpers';\nimport {buildRelationshipsFilter} from './helpers/filtersHelpers';\nimport RelationshipsTableHeader from '../RelationshipsTableHeader/RelationshipsTableHeader';\nimport RelationshipsTable from '../RelationshipsTable/RelationshipsTable';\nimport RelationshipDetails from '../RelationshipDetails/RelationshipDetails';\nimport {showErrorMessage} from '../../services/errors';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationshipsPerspectiveConfig;\n entity: Entity;\n metadata: Metadata;\n connections: Connection[];\n total: number;\n saveState: (state: RelationshipsSavedState) => void;\n getSavedState: () => Promise<RelationshipsSavedState>;\n dispatch: Dispatch;\n};\n\nconst RelationshipsView = ({\n config,\n entity,\n metadata,\n connections,\n total,\n saveState,\n getSavedState,\n dispatch\n}: Props) => {\n const styles = useStyles();\n const tableRef = useRef();\n\n const isDTEntity = isDataTenantEntity(entity);\n\n const [searchByOv, setSearchByOv] = useState(false);\n\n const {type: entityTypeUri} = entity || {};\n const [\n {\n visibleColumns,\n filters,\n page,\n rowsPerPage,\n sorting,\n currentRelationType,\n stateToSave,\n entityTypeOfAppliedSavedState\n },\n {\n changeColumns,\n toggleFilters,\n changeFilter,\n changePage,\n changeRowsPerPage,\n toggleSort,\n changeRelationType,\n saveCurrentState,\n applySavedState\n }\n ] = useRelationshipsTable({\n defaultColumns: DEFAULT_COLUMNS,\n defaultRowsPerPage: ROWS_PER_PAGE_OPTIONS[0],\n defaultSorting: {\n field: DEFAULT_COLUMNS[0],\n order: 'asc'\n }\n });\n\n const isSavedStateApplied = entityTypeOfAppliedSavedState === entityTypeUri;\n\n const {\n isLoading: isSavedStateLoading,\n relationsTableSavedState,\n attributesTableSavedState,\n updateRelationsTableSavedState,\n updateAttributesTableSavedState\n } = useSavedState({\n getSavedState,\n saveState,\n entityTypeUri\n });\n\n const [attributesTableVisibleColumns, setAttributesTableVisibleColumns] = useState<string[]>();\n\n useEffect(() => {\n if (!isSavedStateLoading) {\n applySavedState({savedState: relationsTableSavedState, entityTypeUri});\n }\n }, [isSavedStateLoading, entityTypeUri]); // eslint-disable-line\n\n useEffect(() => {\n if (!isSavedStateLoading) {\n setAttributesTableVisibleColumns(attributesTableSavedState?.visibleColumns);\n }\n }, [isSavedStateLoading]); // eslint-disable-line\n\n useDidUpdateEffect(() => {\n if (isSavedStateApplied) {\n updateRelationsTableSavedState(stateToSave);\n }\n }, [stateToSave]);\n\n const resetPage = () => {\n changePage(0);\n };\n useDidUpdateEffect(resetPage, [entity]);\n\n const [detailedConnectionIndex, setDetailedConnectionIndex] = useState<number>();\n const hideConnectionDetails = useCallback(() => {\n setDetailedConnectionIndex(null);\n }, []);\n\n const relationTypes: TRelationType[] = useMemo(() => {\n const inheritancePath = getInheritancePath(metadata, entityTypeUri);\n const isRelatedToEntityType = ({startObject, endObject}) =>\n inheritancePath.some(either(equals(startObject.objectTypeURI), equals(endObject.objectTypeURI)));\n return metadata.relationTypes.filter(\n both(checkMetadataPermission(MetadataPermissions.READ), isRelatedToEntityType)\n );\n }, [metadata, entityTypeUri]);\n\n const columnsData = useMemo(\n () => getColumnsData(relationTypes, currentRelationType),\n [relationTypes, currentRelationType]\n );\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => columnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, columnsData]\n );\n\n const relationsConfig = useMemo(() => {\n const relations = pipe(\n when(always(currentRelationType), filter(propEq('uri', currentRelationType))),\n map(prop('uri'))\n )(relationTypes);\n return {\n id: config.id,\n content: {\n inRelations: relations,\n outRelations: relations\n }\n };\n }, [config.id, currentRelationType, relationTypes]);\n\n const relationFilter = useMemo(\n () => buildRelationshipsFilter(filters, visibleColumnsData),\n [filters, visibleColumnsData]\n );\n\n const {isLoading: isRelationsLoading, reload: reloadRelations} = useRelationsLoader({\n page,\n rowsPerPage,\n config: relationsConfig,\n entity: isSavedStateApplied ? entity : null,\n filter: relationFilter,\n mode: Mode.Viewing,\n sorting,\n searchByOv\n });\n\n const isLoading = !isSavedStateApplied || isRelationsLoading;\n\n const onSort = useCallback(pipe(toggleSort, saveCurrentState), [toggleSort, saveCurrentState]);\n const onFilter = useCallback(pipe(changeFilter, saveCurrentState), [changeFilter, saveCurrentState]);\n const onToggleFilters = useCallback(pipe(toggleFilters, saveCurrentState), [toggleFilters, saveCurrentState]);\n const onChangeColumns = useCallback(pipe(changeColumns, saveCurrentState), [changeColumns, saveCurrentState]);\n const onRelationTypeChange = useCallback(pipe(changeRelationType, saveCurrentState), [\n changeRelationType,\n saveCurrentState\n ]);\n const onChangeDetailedColumns = useCallback(\n (visibleColumns: string[]) => {\n setAttributesTableVisibleColumns(visibleColumns);\n updateAttributesTableSavedState({visibleColumns});\n },\n [updateAttributesTableSavedState]\n );\n\n const detailedConnection = connections?.[detailedConnectionIndex];\n const onChangeDetailedConnection = useCallback(\n (newConnection: Connection) => {\n dispatch(\n profile.relations.actions.relationsLoaded({\n id: config.id,\n connections: update(detailedConnectionIndex, newConnection, connections),\n total\n })\n );\n },\n [detailedConnection]\n );\n const [objectIds, objectTypes] = useMemo(() => {\n return [getRelationshipsObjectIdsForCollaboration(connections), [CollaborationObjectTypes.RELATION]];\n }, [connections]);\n\n const collaboration = useCollaboration({objectIds, objectTypes, enabled: !isDTEntity});\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const handleError = useCallback(\n (error: ApiError) => {\n showErrorMessage(error);\n if (error.errorCode === ApiErrorCode.OBJECT_NOT_FOUND) {\n reloadRelations();\n }\n },\n [reloadRelations]\n );\n\n const deleteRelation = useCallback(\n (relationUri: string) => {\n pipe(removeRelation, andThen(reloadRelations), otherwise(handleError))(relationUri);\n },\n [reloadRelations, handleError]\n );\n\n const deleteRelationAndCloseDetails = useCallback(() => {\n pipe(\n removeRelation,\n andThen(pipe(hideConnectionDetails, reloadRelations)),\n otherwise((error: ApiError) => {\n if (error.errorCode === ApiErrorCode.OBJECT_NOT_FOUND) {\n hideConnectionDetails();\n }\n handleError(error);\n })\n )(detailedConnection.relation.relationUri);\n }, [detailedConnection, reloadRelations, hideConnectionDetails, handleError]);\n\n const onCloseConnectionDetails = useCallback(\n (error?: ApiError) => {\n if (error) handleError(error);\n hideConnectionDetails();\n },\n [handleError, hideConnectionDetails]\n );\n\n const onToggleSearchByOv = useCallback(() => {\n setSearchByOv(not);\n }, [setSearchByOv]);\n return (\n <CollaborationContextProvider collaboration={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.relationshipsView}>\n <ScreenProfileBand entity={entity} />\n <RelationshipsTableHeader\n total={total}\n filteringEnabled={!!filters}\n onToggleFilters={onToggleFilters}\n columnsData={columnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n relationTypes={relationTypes}\n currentRelationType={currentRelationType}\n onRelationTypeChange={onRelationTypeChange}\n searchByOv={searchByOv}\n onToggleSearchByOv={onToggleSearchByOv}\n />\n <div className={styles.pane}>\n {isLoading && <LinearLoadIndicator />}\n <RelationshipsTable\n readOnly={isDTEntity}\n metadata={metadata}\n connections={connections}\n columnsData={visibleColumnsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n onRowClick={setDetailedConnectionIndex}\n tableRef={tableRef}\n onDelete={deleteRelation}\n />\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n basicTableRef={tableRef}\n />\n </div>\n {detailedConnection && (\n <RelationshipDetails\n readOnly={isDTEntity}\n entity={entity}\n visibleColumns={attributesTableVisibleColumns}\n onChangeVisibleColumns={onChangeDetailedColumns}\n connection={detailedConnection}\n onClose={onCloseConnectionDetails}\n onDeleteConnection={deleteRelationAndCloseDetails}\n onChangeConnection={onChangeDetailedConnection}\n />\n )}\n </div>\n </EntitiesMapContext.Provider>\n </CollaborationContextProvider>\n );\n};\n\nconst mapStateToProps = (state, {config: {id}}) => {\n return {\n entity: mdmModule.selectors.getEntity(state),\n metadata: mdmModule.selectors.getMetadata(state),\n connections: mdmModule.selectors.getConnectionsByViewId(state, id),\n total: mdmModule.selectors.getTotalByViewId(state, id)\n };\n};\n\nexport default connect(mapStateToProps)(RelationshipsView);\n","import {buildColumnsFilter, ColumnFilter} from '@reltio/components';\nimport {FilterBuilder} from '@reltio/mdm-sdk';\nimport {RelationshipsTableColumnData} from '../../../types';\n\nexport const buildRelationshipsFilter = (\n filters: Record<string, ColumnFilter>,\n columnsData: RelationshipsTableColumnData[]\n) => {\n const filtersClause = buildColumnsFilter(columnsData, filters);\n\n return new FilterBuilder().addClause(filtersClause).build();\n};\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\n\nimport MomentUtils from '@date-io/moment';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {ErrorPopup, ViewIdContext, FeaturesContext} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {RelationshipsSavedState} from '../../types';\nimport RelationshipsView from './RelationshipsView';\nimport {promisifyCallback, RelationshipsPerspectiveConfig} from '@reltio/mdm-sdk';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'relationshipsPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: RelationshipsPerspectiveConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n saveState: (state: RelationshipsSavedState) => void;\n getSavedState: (clb: (state: RelationshipsSavedState) => void) => void;\n};\n\nconst RelationshipsPerspective = ({config, store, onResize, saveState, getSavedState}: Props) => {\n const getSavedStatePromisified: () => Promise<RelationshipsSavedState> = useCallback(\n promisifyCallback(getSavedState),\n [getSavedState]\n );\n const featuresContext = useContext(FeaturesContext);\n const showDescription = mdmModule.selectors.getShowAttributeDescription(store.getState());\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\n\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <FeaturesContext.Provider value={features}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize?.(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <RelationshipsView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n )}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </FeaturesContext.Provider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default RelationshipsPerspective;\n","import {RelationshipsView} from '@reltio/relationships';\n\nexport default RelationshipsView;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n"],"names":["MomentUtils","_a","_b","locale","instance","moment","this","yearFormat","yearMonthFormat","dateTime12hFormat","dateTime24hFormat","time12hFormat","time24hFormat","dateFormat","prototype","parse","value","format","date","isValid","isNull","getDiff","comparing","diff","isAfter","isBefore","isAfterDay","isBeforeDay","isBeforeYear","isAfterYear","startOfDay","clone","startOf","endOfDay","endOf","formatString","formatNumber","numberToFormat","getHours","get","addDays","count","subtract","Math","abs","add","setHours","hours","getMinutes","setMinutes","minutes","getSeconds","setSeconds","seconds","getMonth","isSameDay","isSame","isSameMonth","isSameYear","isSameHour","setMonth","month","getMeridiemText","ampm","startOfMonth","endOfMonth","getNextMonth","getPreviousMonth","getMonthArray","monthArray","length","prevMonth","push","getYear","setYear","year","set","mergeDateAndTime","time","getWeekdays","weekdaysShort","isEqual","getWeekArray","start","end","current","nestedWeeks","weekNumber","floor","getYearRange","startDate","endDate","years","getCalendarHeaderText","getYearText","getDatePickerHeaderText","getDateTimePickerHeaderText","getMonthText","getDayText","getHourText","getMinuteText","getSecondText","_interopRequireDefault","exports","_react","_default","default","createElement","d","Fragment","transform","fill","contextSelector","CellRenderer","withContext","TableContext","useStyles","makeStyles","pagination","display","alignItems","justifyContent","height","borderTop","boxShadow","caption","color","fontSize","lineHeight","selectRoot","marginLeft","marginRight","select","textAlign","actions","BasicTablePagination","classes","rowsPerPageOptions","page","onChangePage","rowsPerPage","onChangeRowsPerPage","basicTableRef","labelRowsPerPage","styles","resetScrollbarPosition","useCallback","pathOr","identity","handleChangePage","handleChangeRowsPerPage","TablePagination","root","classnames","component","i18n","labelDisplayedRows","from","to","fromRow","toRow","countRows","pipe","nthArg","getValue","propTypes","PropTypes","React","paper","minHeight","title","padding","fontWeight","letterSpacing","content","contentText","marginBottom","actionButtons","paddingTop","discardButton","open","onCancel","cancelCaption","onDiscard","discardCaption","onSave","saveCaption","disabledSave","Dialog","onClose","paperScrollPaper","DialogTitle","DialogContent","DialogContentText","DialogActions","className","disableSpacing","Button","onClick","disabled","autoFocus","textOverflow","overflow","whiteSpace","borderRadius","flexShrink","entity","size","metadata","useSelector","mdmModule","entityTypeUri","type","entityType","getEntityType","entityTypeColor","getPropWithInheritance","theme","entityTypeLabel","getEntityTypeLabel","ExpandedValueTooltip","placement","Typography","style","backgroundColor","utils","profileBandWrapper","profileBand","inactive","background","inactiveBackground","profileIcon","imageProfileIcon","width","profileInfo","flexDirection","flex","badge","label","palette","text","primary","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","tooltipTitle","formatNumberAsMetric","SmallIconButton","icon","KeyboardArrowLeft","showForDisabled","KeyboardArrowRight","MainSearchProvider","constructor","data","query","sortField","sortOrder","tenant","searchTenant","apiPath","dtssPath","globalSearchRequestOptions","isDT","getQueryFilter","rawFilter","getEntities","filters","options","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","useMemo","getSearchProvider","updateNavigationData","mdmModuleSearch","openEntity","preparedUri","getEntityUriForLink","mdmModuleUi","source","perspectiveId","useEffect","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","min","stepForwardWithCheck","cacheIndex","isExists","clearedCache","stepBackWithCheck","ProfileBandNavigation","mode","isViewMode","useSearchNavigationVisibility","items","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","SettingsIcon","menuItems","slice","cancelButton","historyEvent","profile","aStamp","ActionsHookContext","createContext","displayName","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","nextPageToken","prevComments","uniqBy","catch","getComment","commentId","getCommentRequest","createComment","namedUsers","objectType","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","buildSuggestedIds","wrapInArrayIfNeeded","times","n","useRelationsLoader","sorting","config","relationActivityFilter","searchByOv","isLoading","setIsLoading","activityFilter","globalFilter","lastLoadedTime","safePromise","processContent","getUri","isObject","filterRelation","isAvailableRelationTypeUri","evolve","entityTypes","filterFn","isAvailableEntityTypeUri","inRelations","outRelations","nextEntry","suggested","loadRelations","requestConfig","sortBy","field","returnDates","returnObjects","activeness","relation","ActivityFilter","addGlobalFilterToQuery","undefined","configs","ifElse","i","id","request","cond","Promise","resolve","isDataTenantEntity","getRelationsForDataTenantEntity","T","getRelationsForEntity","connections","isRequestSentRef","useRef","prevMode","usePrevious","Mode","reload","DEFAULT_SAVED_STATE","relationsTable","attributesTable","RELATION_TYPE_COLUMN_ID","ATTRIBUTES_COLUMN_ID","DEFAULT_COLUMNS_DATA","dataTypeDefinition","DataTypes","hideable","filterable","initialWidth","autoResize","sortable","maxAttrsToShow","DEFAULT_COLUMNS","pluck","ALL_TYPES_COLUMNS","ROWS_PER_PAGE_OPTIONS","getColumnIdFromAttrUri","attributeUriToSearchUri","getColumnsDataFromRelationAttributes","attr","description","getAttrDataTypeDefinition","CHANGE_RELATION_TYPE","APPLY_SAVED_STATE","SAVE_CURRENT_STATE","basicTableViewState","changeRelationType","createStandardAction","applySavedState","saveCurrentState","resetPageNumber","assoc","getDefaultVisibleColumnsForCurrentRelationType","currentRelationType","without","intersection","getSavedVisibleColumnsForCurrentRelationType","changeVisibleColumnsForCurrentRelationType","nextVisibleColumns","either","getFiltersFromSavedState","propOr","unless","validateFilterValue","saveVisibleColumnsForCurrentRelationType","visibleColumns","visibleColumnsForRelationTypes","getStateToSave","pick","paddingLeft","paddingRight","selectMenu","textField","maxWidth","onChange","relationTypes","entries","DropDownEditor","displayEmpty","disableUnderline","TextFieldProps","MenuProps","list","header","boxSizing","relationTypeSelector","margin","memo","filteringEnabled","onToggleFilters","columnsData","selectedColumns","onRelationTypeChange","onChangeColumns","onToggleSearchByOv","settingItems","selected","selectable","BasicViewHeader","VerticalDivider","Spacer","SettingsMenu","FilterButton","ColumnsSettings","headCell","rowCell","overflowWrap","inactiveRowCell","opacity","defaultWrapper","paddingBottom","entityCell","entityAvatar","inactiveEntityAvatar","position","border","right","bottom","entityLabel","main","attributesWrapper","commentsContainer","withFilterAtBottom","headCellData","DefaultHeadCellRenderer","DescriptionIcon","isInactiveRelation","currentEntityUri","COMMENTS_CONTAINER_VISIBILITY_AREA","EntityTypeIcon","EntityUriLink","stopPropagation","CommentsContainer","relationUri","createRelatedObjectUris","CollaborationObjectTypes","connection","allowOnlyOneComment","columnData","attributes","attributeTypes","attrTypes","drawLines","DataTypeValue","getAttrPathFromColumnId","split","Infinity","getNestedPathByColumnId","columnId","startsWith","attrPath","getCellValueRenderer","EntityProfileRenderer","AttributesRenderer","DefaultCellValueRenderer","getBasicTableColumnsData","resizable","headCellRenderer","HeadCellRenderer","nestedPath","rowCellValueRenderer","getStaticRowCellHeight","pathEq","cell","attributesCount","defaultGetRowCellHeight","CellValueRenderer","otherProps","menuItem","menuText","buttons","MenuItemWithTooltip","MenuItem","MenuItemRenderer","forwardRef","ref","item","onMenuClose","noop","tooltip","disableDelete","onMenuOpen","onDelete","hasDeletePermission","getRelationType","checkMetadataPermission","MetadataPermissions","canDelete","pendingDeletion","setPendingDeletion","hideDeleteConfirmation","Delete","handleMenuClose","DropDownMenuButton","MoreVertIcon","ConfirmationDialog","substring","tableContainer","zIndex","hoveredRowRightContentWrapper","pointerEvents","menuButtonContainer","top","tooltipAnchor","onSort","onFilter","onRowClick","tableRef","readOnly","tableRowsData","reduce","acc","relationType","relationLabel","object","getOvAttributeValuesByPath","getRelationAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","getDynamicRowCellHeight","changeRowCellHeight","useDynamicRowCellHeight","getRowCellHeight","hoverRowIndex","setHoverRowIndex","renderRowCell","rowValue","rawValue","RowCellAutoSizer","onChangeHeight","isActionsMenuOpen","setIsActionsMenuOpen","handleActionsMenuOpen","handleActionsMenuClose","onRowHover","rowIndex","prevHoverRowIndex","hoveredRowRightContent","BasicTable","fixFirstColumn","rowsData","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","hoverStateEnabled","tableRow","selectedAttributeTypes","onDeleteCrosswalk","onEditCrosswalk","groupCrosswalksByTypesAndSources","buildTableRowsData","expandedSources","setExpandedSources","handleDelete","crosswalkId","handleEdit","event","crosswalksByTypes","SourceCrosswalksRow","expanded","disableEditCrosswalk","checkCanEditCrosswalk","disableDeleteCrosswalk","checkCanDeleteCrosswalk","onEdit","onToggleExpanded","append","borderBottom","hint","alignSelf","hintText","buttonLabel","editor","overflowY","overflowX","ButtonWithTooltip","onAddCrosswalk","openEditor","setOpenEditor","canAdd","checkCanCreateCrosswalk","Add","Info","CrosswalkEditor","onAdd","crosswalk","entityInfo","minWidth","entityLabelContainer","infoIcon","entityTypeBadge","noWrap","LightArrowTooltip","ProfileBand","direction","align","fillOpacity","points","editButton","showEditor","setShowEditor","closeEditor","editedValue","setEditedValue","applyChangesAndClose","formatDate","EditIcon","Popover","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","onKeyUp","onBackdropClick","DateEditor","InputProps","fullWidth","hiddenLabel","Date","valueOf","relationBand","inactiveRelationBand","toolbar","gap","mainInfo","detailsInfo","detailTitle","directionalLabel","relationDate","onNavigateBack","onChangeActivenessDate","ArrowBackIcon","showErrorMessage","ErrorPopup","message","getRequestErrorMessage","detailsView","left","locked","resizablePanesWrapper","flexGrow","pane","onDeleteConnection","onChangeConnection","onChangeVisibleColumns","displayProps","highlightedCrosswalks","setHighlightedCrosswalks","highlightedCrosswalksCache","applyHighlightedCrosswalks","debounce","cacheHighlightedCrosswalks","arr","setCrosswalkHighlighted","highlighted","focusedCrosswalks","setFocusedCrosswalks","toggleCrosswalkFocus","prevValue","calculateFocusedCrosswalks","prev","next","prevCrosswalk","any","eqCrosswalks","nextCrosswalk","useCrosswalksDisplay","paneSize","setPaneSize","handlePaneSizeChange","percentageSize","selectedAttrTypes","setSelectedAttrTypes","onLoad","onLoaded","onDeleteRelation","reloadRelation","errorCode","ApiErrorCode","getRelation","newRelation","modifiedEntity","crosswalksMap","newlyCreatedAttributes","onPinAttribute","onIgnoreAttribute","onAddAttribute","onEditAttribute","onDeleteAttribute","useModifiedEntity","onModify","addCrosswalk","deleteCrosswalk","editCrosswalk","useCrosswalkActions","onSuccess","attributeName","updateActivenessAttribute","deleteActivenessAttribute","BasicView","DndProvider","backend","HTML5Backend","CrosswalkDragLayer","ResizablePanes","orientation","minSize","maxSize","allowResize","attributeUris","AttributesTable","onPin","onIgnore","onSelectAttributeTypes","relationshipsView","fontFamily","connect","saveState","getSavedState","isDTEntity","setSearchByOv","stateToSave","entityTypeOfAppliedSavedState","changeColumns","toggleFilters","changeFilter","changePage","changeRowsPerPage","toggleSort","defaultColumns","defaultSorting","defaultRowsPerPage","initState","useReducer","nextRelationType","savedState","useActions","useRelationshipsTable","isSavedStateApplied","isSavedStateLoading","relationsTableSavedState","attributesTableSavedState","updateRelationsTableSavedState","updateAttributesTableSavedState","setSavedState","changedRelationsState","setRelationsChangedState","useDidUpdateEffect","_","changedState","useSavedState","attributesTableVisibleColumns","setAttributesTableVisibleColumns","detailedConnectionIndex","setDetailedConnectionIndex","hideConnectionDetails","inheritancePath","getInheritancePath","both","startObject","endObject","some","equals","objectTypeURI","find","getReadableAttributesList","updateColumnData","updateFn","getRelationColumnDataType","adjust","updateRelationTypeColumn","getColumnsData","visibleColumnsData","relationsConfig","relations","relationFilter","filtersClause","buildColumnsFilter","FilterBuilder","addClause","build","buildRelationshipsFilter","isRelationsLoading","reloadRelations","onChangeDetailedColumns","detailedConnection","onChangeDetailedConnection","newConnection","update","getRelationshipsObjectIdsForCollaboration","collaboration","entitiesMap","getEntitiesMapForConnections","handleError","deleteRelation","removeRelation","deleteRelationAndCloseDetails","onCloseConnectionDetails","not","CollaborationContext","EntitiesMapContext","ScreenProfileBand","LinearLoadIndicator","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","onResize","getSavedStatePromisified","promisifyCallback","featuresContext","FeaturesContext","showDescription","getState","features","StylesProvider","MuiPickersUtilsProvider","handleHeight","componentWillMount","getDerivedStateFromProps","setState","componentWillReceiveProps","nextProps","prevState","bind","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","name","newApiName","componentDidUpdate","maybeSnapshot","snapshot","call","__suppressDeprecationWarning"],"sourceRoot":""}
|