@reltio/remotes 1.4.1379 → 1.4.1380
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/{6617.css → 1268.css} +1 -1
- package/{6617.css.map → 1268.css.map} +1 -1
- package/{6248.js → 1268.js} +2 -2
- package/{6248.js.map → 1268.js.map} +1 -1
- package/1375.js +1 -1
- package/1375.js.map +1 -1
- package/1409.js +2 -0
- package/1409.js.map +1 -0
- package/162.js +2 -0
- package/162.js.map +1 -0
- package/1746.js +2 -0
- package/1746.js.map +1 -0
- package/2114.js +1 -1
- package/2890.js +1 -1
- package/3540.js +1 -1
- package/3540.js.map +1 -1
- package/3640.js +1 -1
- package/3640.js.map +1 -1
- package/3723.js +3 -0
- package/{3213.js.LICENSE.txt → 3723.js.LICENSE.txt} +0 -0
- package/3723.js.map +1 -0
- package/3760.js +2 -0
- package/3760.js.map +1 -0
- package/4038.js +1 -1
- package/4038.js.map +1 -1
- package/4312.js +2 -0
- package/4312.js.map +1 -0
- package/447.js +1 -1
- package/447.js.map +1 -1
- package/4689.js +1 -1
- package/4889.js +1 -1
- package/4889.js.map +1 -1
- package/5400.js +1 -1
- package/5691.js +1 -1
- package/5691.js.map +1 -1
- package/5709.js +1 -1
- package/5937.js +1 -1
- package/5937.js.map +1 -1
- package/6103.js +1 -1
- package/6877.js +2 -0
- package/6877.js.map +1 -0
- package/7861.js +2 -0
- package/7861.js.map +1 -0
- package/{3786.css → 7880.css} +1 -1
- package/{3786.css.map → 7880.css.map} +1 -1
- package/7880.js +2 -0
- package/7880.js.map +1 -0
- package/8684.css +635 -0
- package/8684.css.map +1 -0
- package/{3405.js → 8684.js} +2 -2
- package/{3405.js.map → 8684.js.map} +1 -1
- package/8782.js +3 -0
- package/{781.js.LICENSE.txt → 8782.js.LICENSE.txt} +0 -0
- package/8782.js.map +1 -0
- package/9043.js +1 -1
- package/9043.js.map +1 -1
- package/9606.js +1 -1
- package/9606.js.map +1 -1
- package/9992.js +2 -0
- package/9992.js.map +1 -0
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
- package/remoteEntry.js.map +1 -1
- package/1178.js +0 -2
- package/1178.js.map +0 -1
- package/1635.js +0 -2
- package/1635.js.map +0 -1
- package/2378.js +0 -2
- package/2378.js.map +0 -1
- package/3213.js +0 -3
- package/3213.js.map +0 -1
- package/3786.js +0 -2
- package/3786.js.map +0 -1
- package/4115.js +0 -2
- package/4115.js.map +0 -1
- package/612.js +0 -2
- package/612.js.map +0 -1
- package/6617.js +0 -2
- package/6617.js.map +0 -1
- package/6892.js +0 -2
- package/6892.js.map +0 -1
- package/6913.js +0 -2
- package/6913.js.map +0 -1
- package/781.js +0 -3
- package/781.js.map +0 -1
- package/8051.js +0 -2
- package/8051.js.map +0 -1
- package/9417.js +0 -2
- package/9417.js.map +0 -1
- package/98.js +0 -2
- package/98.js.map +0 -1
package/9043.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"9043.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/searchProviders/SearchProviderFactory.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/hooks/useSearchNavigation.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/hooks/useCollaboration.ts","webpack://@reltio/remotes/../components/src/hooks/useRelationsLoader.ts","webpack://@reltio/remotes/../components/src/hooks/useUsers.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: 'inset 0 -1px 0 0 rgba(0,114,206,0.06), inset 0 1px 0 0 rgba(0,114,206,0.06);',\n\n '&:after': {\n // IE workaround for minHeight and centering items\n content: '\"\"',\n minHeight: 'inherit',\n fontSize: 0\n }\n },\n inactive: {\n background: theme.inactiveBackground\n },\n profileIcon: {\n marginRight: '12px'\n },\n imageProfileIcon: {\n width: '48px',\n height: '48px'\n },\n profileInfo: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 50%'\n },\n badge: {},\n label: {\n lineHeight: '1.2',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary,\n wordBreak: 'break-word',\n\n '&+ $specialInfo': {\n marginTop: '4px'\n }\n },\n secondaryLabel: {\n display: 'inline-flex',\n color: theme.palette.text.primary,\n marginTop: '2px',\n lineHeight: '16px',\n fontSize: '14px',\n fontWeight: 400,\n\n '&+ $businessCard': {\n marginLeft: '12px'\n }\n },\n businessCard: {\n color: theme.palette.text.secondary,\n display: 'inline-flex',\n fontSize: '14px',\n marginTop: '4px',\n lineHeight: '1.2'\n },\n specialInfo: {\n display: 'flex',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n width: '100%',\n marginTop: '8px'\n },\n entityType: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n entityId: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n}));\n\nexport default useStyles;\n","import React, {ReactNode, useCallback} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {isNil} from 'ramda';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {getLabel, isActiveObject, getBusinessCardAttributesText, getEntityId, isTempUri, Entity} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport EntityAvatar from '../EntityAvatar/EntityAvatar';\nimport EntityTypeBadge from '../EntityTypeBadge/EntityTypeBadge';\n\nimport useStyles from './styles';\n\ntype Props = {\n className?: string;\n entity?: Entity;\n children?: ReactNode;\n classes?: Partial<ReturnType<typeof useStyles>>;\n};\n\nconst ProfileBand = ({className, entity, children, classes}: 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 {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 from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {withTooltip} from '../../HOCs';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\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 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={i18n.text('Go to search results')}\n >\n {formatNumberAsMetric(total, 1000000)}{' '}\n {total === 1 ? i18n.text('Search result') : i18n.text('Search results')}\n </LinkWithTooltip>\n <SmallIconButtonWithTooltip\n size=\"L\"\n icon={KeyboardArrowLeft}\n tooltipTitle={i18n.text('Go to previous profile')}\n onClick={onPrev}\n disabled={isPrevDisabled}\n showForDisabled\n />\n <SmallIconButtonWithTooltip\n size=\"L\"\n icon={KeyboardArrowRight}\n tooltipTitle={i18n.text('Go to 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 {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 {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 {ViewIdContext} from '../../../contexts';\nimport {useSafePromise} from '../../../hooks';\nimport {getSearchProvider} from '../searchProviders/SearchProviderFactory';\nimport {SearchNavigationData, SearchProviderData} from '../types';\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 {uri, index, total, tenant: searchTenant, 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 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 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 {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: ''\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 permanentLink: '',\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 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 ]);\n const isRequestSentRef = useRef<boolean>(false);\n isRequestSentRef.current = false;\n useEffect(() => {\n isRequestSentRef.current = true;\n loadRelations();\n }, [loadRelations]);\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 {useSelector} from 'react-redux';\nimport {getAllUsersForTenant} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\n\nexport const useUsers = () => {\n const [users, setUsers] = useState([]);\n\n const tenant = useSelector(mdm.selectors.getTenant);\n const servicesPath = useSelector(mdm.selectors.getServicesPath);\n\n const onError = (e) => {\n console.warn('Users error', e);\n setUsers([]);\n };\n\n useEffect(() => {\n getAllUsersForTenant({tenant, servicesPath})\n .then(({array}) => setUsers(array))\n .catch(onError);\n }, [tenant, servicesPath]);\n\n return users;\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 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}));\n","import React from 'react';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\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 CollaborationContext,\n EntitiesMapContext,\n LinearLoadIndicator,\n ScreenProfileBand,\n useCollaboration,\n useDidUpdateEffect,\n useRelationsLoader,\n UsersContext,\n useUsers\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 const users = useUsers();\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 <UsersContext.Provider value={users}>\n <CollaborationContext.Provider value={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 </CollaborationContext.Provider>\n </UsersContext.Provider>\n );\n};\n\nconst mapStateToProps = (state, {config: {id}}) => {\n return {\n entity: mdmModule.selectors.getEntity(state),\n metadata: mdmModule.selectors.getMetadata(state),\n connections: mdmModule.selectors.getConnectionsByViewId(state, id),\n total: mdmModule.selectors.getTotalByViewId(state, id)\n };\n};\n\nexport default connect(mapStateToProps)(RelationshipsView);\n","import {buildColumnsFilter, ColumnFilter} from '@reltio/components';\nimport {FilterBuilder} from '@reltio/mdm-sdk';\nimport {RelationshipsTableColumnData} from '../../../types';\n\nexport const buildRelationshipsFilter = (\n filters: Record<string, ColumnFilter>,\n columnsData: RelationshipsTableColumnData[]\n) => {\n const filtersClause = buildColumnsFilter(columnsData, filters);\n\n return new FilterBuilder().addClause(filtersClause).build();\n};\n","import React, {useCallback} from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\n\nimport MomentUtils from '@date-io/moment';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {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\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize?.(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <RelationshipsView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n )}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default 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","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","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","ProfileBandNavigation","safeCheckEntityPromise","useSafePromise","safeRequestTotalPromise","safeRequestEntitiesPromise","index","state","viewId","useContext","ViewIdContext","dispatch","useDispatch","loading","setLoading","useState","searchProvider","useMemo","getSearchProvider","updateNavigationData","mdmModuleSearch","openEntity","preparedUri","getEntityUriForLink","mdmModuleUi","source","perspectiveId","useEffect","requestNextPage","newIndex","newUris","concat","finally","requestPrevPage","min","stepForwardWithCheck","cacheIndex","isExists","clearedCache","splice","stepBackWithCheck","indexOf","useSearchNavigation","mode","isViewMode","useSearchNavigationVisibility","items","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","SettingsIcon","menuItems","slice","cancelButton","historyEvent","profile","aStamp","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","createCommentRequest","prevCommentsMap","status","addCommentToState","editComment","updateCommentRequest","when","propEq","always","updateCommentInState","deleteComment","deleteCommentRequest","c","deleteCommentFromState","updateReplyInState","isDeleteReply","newStatus","action","prevCurrentComment","deleteReply","deleteReplyRequest","editReplyInState","editReply","updateReplyRequest","createReply","createReplyRequest","resolveThread","reOpenThread","clearCurrentComment","getCommentState","commentUri","updateCommentState","newState","prevCollaborationStateMap","pathToCommentState","prevCommentState","path","assocPath","mergeRight","clearCommentState","dissocPath","buildSuggestedIds","wrapInArrayIfNeeded","times","n","useRelationsLoader","sorting","config","relationActivityFilter","searchByOv","isLoading","setIsLoading","activityFilter","globalFilter","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","useUsers","users","setUsers","servicesPath","getAllUsersForTenant","array","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","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","DefaultHeadCellRenderer","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","displayName","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","payload","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","UsersContext","CollaborationContext","EntitiesMapContext","ScreenProfileBand","LinearLoadIndicator","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","onResize","getSavedStatePromisified","promisifyCallback","Provider","StylesProvider","MuiPickersUtilsProvider","handleHeight","componentWillMount","getDerivedStateFromProps","setState","componentWillReceiveProps","nextProps","prevState","bind","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","isReactComponent","Error","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","name","newApiName","componentDidUpdate","maybeSnapshot","snapshot","call","__suppressDeprecationWarning"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"9043.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/icons/Table.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/ColumnsSettings.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/ColumnListItem.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/ColumnsSettingsPopup.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/columnHelpers.js","webpack://@reltio/remotes/../components/src/icons/Filter.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/FilterButton/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/FilterButton/FilterButton.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTablePagination/BasicTablePagination.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/viewState/basicTableViewState.js","webpack://@reltio/remotes/../components/src/components/BasicView/styles.js","webpack://@reltio/remotes/../components/src/components/BasicView/BasicView.tsx","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/ConfirmationDialog.tsx","webpack://@reltio/remotes/../components/src/components/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/searchProviders/SearchProviderFactory.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/hooks/useSearchNavigation.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/Spacer/Spacer.js","webpack://@reltio/remotes/../components/src/components/VerticalDivider/VerticalDivider.js","webpack://@reltio/remotes/../components/src/components/history/ProfileBandHistory/styles.ts","webpack://@reltio/remotes/../components/src/components/history/ProfileBandHistory/ProfileBandHistory.tsx","webpack://@reltio/remotes/../components/src/hooks/useActions.ts","webpack://@reltio/remotes/../components/src/hooks/useCollaboration.ts","webpack://@reltio/remotes/../components/src/hooks/useRelationsLoader.ts","webpack://@reltio/remotes/../components/src/hooks/useUsers.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 React from 'react';\n\nconst SvgTable: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={20} height={18} viewBox=\"0 0 20 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M16 7.24V6h-4v1.24a8.417 8.417 0 00-2 .768V6H6v6h.29a8.497 8.497 0 00-.15.358l-.29.733.29.733.07.176H2c-1.1 0-2-.9-2-2V2C0 .9.9 0 2 0h14c1.1 0 2 .9 2 2v6.008a8.417 8.417 0 00-2-.768zM4 12V6H2v6h2zm0-8V2H2v2h2zm6 0V2H6v2h4zm6 0V2h-4v2h4zm-2 5a6.451 6.451 0 00-6 4.09 6.451 6.451 0 006 4.092 6.451 6.451 0 006-4.091A6.451 6.451 0 0014 9zm0 6.818a2.728 2.728 0 010-5.454 2.728 2.728 0 010 5.454zm0-4.363c-.905 0-1.636.73-1.636 1.636 0 .905.73 1.636 1.636 1.636.905 0 1.636-.73 1.636-1.636 0-.906-.73-1.636-1.636-1.636z\"\n fill=\"#000\"\n fillRule=\"nonzero\"\n stroke=\"none\"\n strokeWidth={1}\n opacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgTable;\n","import React, {useCallback, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {ColumnsDataType} from '../../../../constants';\nimport TableIcon from '../../../../icons/Table';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport {pipe, uniq, pluck, difference, concat} from 'ramda';\n\nimport {ColumnsSettingsPopup} from './ColumnsSettingsPopup';\n\nimport i18n from 'ui-i18n';\nimport {getChildColumns, isColumnSelected} from './columnHelpers';\n\nconst ColumnsSettings = ({columnsData, selectedColumns, onChangeColumns, title, tooltipTitle}) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const openPopup = (event) => setAnchorEl(event.currentTarget);\n const closePopup = () => setAnchorEl(null);\n const handleColumnClick = useCallback(\n (column) => {\n const changedColumns = pipe(getChildColumns, pluck('id'))(column);\n const wasSelected = isColumnSelected(selectedColumns, column);\n onChangeColumns(\n wasSelected\n ? difference(selectedColumns, changedColumns)\n : uniq(concat(selectedColumns, changedColumns))\n );\n },\n [selectedColumns, onChangeColumns]\n );\n return (\n <>\n <SmallIconButtonWithTooltip\n tooltipTitle={tooltipTitle || i18n.text('Show/hide columns')}\n size=\"L\"\n icon={TableIcon}\n onClick={openPopup}\n />\n <ColumnsSettingsPopup\n onColumnClick={handleColumnClick}\n anchorEl={anchorEl}\n columnsData={columnsData}\n onClose={closePopup}\n title={title}\n selectedColumns={selectedColumns}\n />\n </>\n );\n};\n\nColumnsSettings.propTypes = {\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func,\n title: PropTypes.string,\n tooltipTitle: PropTypes.string\n};\n\nexport default ColumnsSettings;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n popup: {\n minWidth: '200px'\n },\n groupItem: {\n backgroundColor: 'rgba(0,0,0,0.04)'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport AttributeListItem from '../../../AttributeListItem/AttributeListItem';\nimport Highlighter from '../../../Highlighter/Highlighter';\n\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst ColumnListItem = ({item, onClick, checked, level, style, isFocused, isGroupItem, hideCheckBox}) => {\n const styles = useStyles();\n return (\n <AttributeListItem\n hideCheckBox={hideCheckBox}\n key={item.id}\n onClick={onClick}\n checked={checked}\n level={level}\n data={item}\n label={<Highlighter text={item.label} highlight={item.filterText} />}\n labelInText={item.label}\n style={style}\n isFocused={isFocused}\n hideIcon={isGroupItem}\n className={classnames({[styles.groupItem]: isGroupItem})}\n />\n );\n};\n\nColumnListItem.propTypes = {\n item: PropTypes.shape({\n label: PropTypes.string,\n filterText: PropTypes.string\n }),\n level: PropTypes.number,\n onClick: PropTypes.func,\n checked: PropTypes.bool,\n style: PropTypes.object,\n isGroupItem: PropTypes.bool,\n isFocused: PropTypes.bool,\n hideCheckBox: PropTypes.bool\n};\n\nexport default ColumnListItem;\n","import React, {useState, useMemo, useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport {pipe} from 'ramda';\n\nimport {getMaxItemWidth, DataTypeDefinition} from '@reltio/mdm-sdk';\n\nimport VirtualGroupedList from '../../../VirtualGroupedList/VirtualGroupedList';\nimport SelectionPopup from '../../../SelectionPopup/SelectionPopup';\nimport {buildColumnItems, isColumnSelected, isGroupColumn} from './columnHelpers';\nimport {flattenGroupedItemsData} from '../../../VirtualGroupedList/helpers';\nimport {useKeyboardNavigation} from '../../../SelectionPopup/helpers';\nimport ColumnListItem from './ColumnListItem';\n\nimport {useStyles} from './styles';\nimport {ListItemProps} from '@material-ui/core/ListItem';\n\ntype Column = {\n id: string;\n label: string;\n};\n\ntype GroupedColumnData =\n | {\n id: string;\n label: string;\n columns: Column[];\n }\n | Column;\n\ntype GroupedColumnList = {\n id: string;\n groupId: string;\n label: string;\n attrType: DataTypeDefinition;\n};\n\ntype Props = {\n anchorEl: HTMLElement;\n onClose: () => void;\n title?: string;\n columnsData: GroupedColumnData[];\n onColumnClick: (column: {id: string}) => void;\n selectedColumns: string[];\n hideCheckBox?: boolean;\n};\n\nconst ITEM_HEIGHT = 32;\nconst MAX_LIST_CONTAINER_HEIGHT = 300;\nconst DEFAULT_MIN_CONTAINER_WIDTH = 308;\nconst CONTAINER_HEADER_HEIGHT = 108;\nconst MIN_CONTAINER_HEIGHT = 140;\n\nexport const ColumnsSettingsPopup = ({\n anchorEl,\n onClose,\n title,\n columnsData,\n onColumnClick,\n selectedColumns,\n hideCheckBox\n}: Props) => {\n const styles = useStyles();\n const [filterText, setFilterText] = useState('');\n const clearFilter = () => setFilterText('');\n const groupedItems = useMemo(() => buildColumnItems(columnsData, filterText), [columnsData, filterText]);\n\n const items = useMemo(() => flattenGroupedItemsData(groupedItems), [groupedItems]);\n const containerWidth: number = getMaxItemWidth('label')(groupedItems) || DEFAULT_MIN_CONTAINER_WIDTH;\n\n const handleSearchOnEnter = useCallback(\n ({item}: {item: {id: string}; groupData: {item: {id: string}}}) => onColumnClick(item),\n [onColumnClick]\n );\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: true,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems: selectedColumns,\n onClose\n });\n const handleClose = useCallback(pipe(onClose, clearFilter), [onClose]);\n\n const renderColumnItem = (\n style: ListItemProps['style'],\n {item, level = 0}: {item: GroupedColumnList; level?: number},\n index: number\n ) => {\n return (\n <ColumnListItem\n hideCheckBox={hideCheckBox}\n style={style}\n item={item}\n level={level}\n isFocused={focusIndex === index}\n checked={isColumnSelected(selectedColumns, item)}\n isGroupItem={isGroupColumn(item)}\n onClick={hideCheckBox ? pipe(onColumnClick, handleClose) : onColumnClick}\n />\n );\n };\n\n const listHeight = Math.min(MAX_LIST_CONTAINER_HEIGHT, ITEM_HEIGHT * items.length);\n const containerHeight = Math.max(MIN_CONTAINER_HEIGHT, listHeight + CONTAINER_HEADER_HEIGHT);\n\n return (\n <SelectionPopup\n className={styles.popup}\n open={!!anchorEl}\n anchorEl={anchorEl}\n onClose={handleClose}\n onSearch={setFilterText}\n title={title || i18n.text('Show/hide columns')}\n containerWidth={containerWidth}\n containerHeight={containerHeight}\n searchInputOnKeyDown={handleKeyDown}\n >\n <VirtualGroupedList\n fixedTitle={false}\n height={listHeight}\n renderItem={renderColumnItem}\n items={items}\n getItemSize={() => ITEM_HEIGHT}\n focusIndex={focusIndex}\n />\n </SelectionPopup>\n );\n};\n","import {assoc, chain, curry, either, filter, has, pipe, propOr, reduce, when} from 'ramda';\nimport {utils} from '@reltio/mdm-sdk';\n\nconst isGroupColumn = (column) => column.id === column.groupId;\nconst isParentToColumn = curry(\n ({id, groupId}, parent) => parent.groupId === groupId && (id === parent.id || id.startsWith(`${parent.id}.`))\n);\nconst isGroupToColumn = curry(({groupId}, group) => groupId === group.id);\nconst isHideableColumn = propOr(true, 'hideable');\n\nconst getColumnRoot = (columns, column) => columns.find(either(isGroupToColumn(column), isParentToColumn(column)));\n\nconst addColumn = (columns, column) => {\n const root = getColumnRoot(columns, column);\n if (root) {\n root.children = addColumn(root.children || [], column);\n return columns;\n } else {\n return columns.concat(column);\n }\n};\n\nconst filterColumnsByLabel = curry(\n (filterText, column) =>\n utils.strings.search(column.label, filterText) || (column.children || []).some(filterColumnsByLabel(filterText))\n);\n\nconst buildColumnsTrees = reduce(\n (acc, columnData) =>\n addColumn(acc, {\n id: columnData.id,\n groupId: columnData.groupId,\n label: columnData.label,\n attrType: columnData.dataTypeDefinition\n }),\n []\n);\n\nconst buildFilteredColumnItems = curry((filterText, columns, level = 0) =>\n pipe(\n filter(filterColumnsByLabel(filterText)),\n chain((column) => {\n const item = {\n item: {...column, filterText},\n level\n };\n const childrenItems = column.children\n ? buildFilteredColumnItems(filterText, column.children, level + 1)\n : [];\n return [item, ...childrenItems];\n })\n )(columns)\n);\n\nconst isGroupedColumnsData = has('columns');\nconst flattenGroupedColumnsData = ({id, label, columns}) => [\n {id, groupId: id, label},\n ...columns.map(assoc('groupId', id))\n];\n\nconst buildColumnItems = (columnsData, filterText) => {\n return pipe(\n chain(when(isGroupedColumnsData, flattenGroupedColumnsData)),\n filter(either(isGroupColumn, isHideableColumn)),\n buildColumnsTrees,\n buildFilteredColumnItems(filterText)\n )(columnsData);\n};\n\nconst getChildColumns = (column) => (column.children ? chain(getChildColumns, column.children) : [column]);\n\nconst isColumnSelected = (selectedColumns, column) => {\n const childColumns = getChildColumns(column);\n const isColumnSelected = (column) => selectedColumns.includes(column.id);\n return isGroupColumn(column) ? childColumns.every(isColumnSelected) : childColumns.some(isColumnSelected);\n};\n\nexport {buildColumnItems, getChildColumns, isGroupColumn, isColumnSelected};\n","import React from 'react';\n\nconst SvgFilter: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={18} height={18} viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M18 2V0H0v2l7 8v8l4-2v-6z\" fill=\"currentColor\" fillRule=\"nonzero\" stroke=\"none\" strokeWidth={1} />\n </svg>\n );\n};\n\nexport default SvgFilter;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n 'filterIcon--enabled': {\n color: theme.palette.primary.main\n },\n closeIcon: {\n position: 'absolute',\n right: '3px',\n bottom: '3px',\n transform: 'scale(0.5)'\n },\n button: {\n padding: '11px'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {IconButton as IconButton} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport FilterIcon from '../../../../icons/Filter';\nimport {useStyles} from './styles';\n\nconst FilterButton = ({enabled, onClick}) => {\n const styles = useStyles();\n\n return (\n <Tooltip title={enabled ? i18n.text('Clear all filters') : i18n.text('Filter')}>\n <IconButton onClick={onClick} classes={{root: styles.button}}>\n {enabled ? (\n <>\n <FilterIcon className={styles['filterIcon--enabled']} />\n <CloseIcon color=\"primary\" className={styles.closeIcon} />\n </>\n ) : (\n <FilterIcon />\n )}\n </IconButton>\n </Tooltip>\n );\n};\n\nFilterButton.propTypes = {\n enabled: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nexport default FilterButton;\n","import {makeStyles} from '@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 {always, assoc, difference, dissoc, evolve, keys, path, when} from 'ramda';\nimport {createStandardAction, toggleSortOrder} from '../../../core';\n\nconst CHANGE_COLUMNS = 'CHANGE_COLUMNS';\nconst TOGGLE_FILTERS = 'TOGGLE_FILTERS';\nconst CHANGE_FILTER = 'CHANGE_FILTER';\nconst TOGGLE_SORT = 'TOGGLE_SORT';\nconst CHANGE_PAGE = 'CHANGE_PAGE';\nconst CHANGE_ROWS_PER_PAGE = 'CHANGE_ROWS_PER_PAGE';\n\nexport const actions = {\n changeColumns: createStandardAction(CHANGE_COLUMNS),\n toggleFilters: createStandardAction(TOGGLE_FILTERS),\n changeFilter: createStandardAction(CHANGE_FILTER),\n toggleSort: createStandardAction(TOGGLE_SORT),\n changePage: createStandardAction(CHANGE_PAGE),\n changeRowsPerPage: createStandardAction(CHANGE_ROWS_PER_PAGE)\n};\n\nexport const changeVisibleColumns = (state, nextVisibleColumns) => {\n const removedColumns = difference(state.visibleColumns, nextVisibleColumns);\n const isRemovedColumn = (columnId) => removedColumns.includes(columnId);\n return evolve(\n {\n visibleColumns: always(nextVisibleColumns),\n sorting: when(\n (sorting = {}) => isRemovedColumn(sorting.field),\n () => {\n const [nextSortField] = nextVisibleColumns;\n return {field: nextSortField, order: 'asc'};\n }\n ),\n filters: (filters) =>\n keys(filters).reduce(\n (acc, columnId) => (isRemovedColumn(columnId) ? dissoc(columnId, acc) : acc),\n filters\n )\n },\n state\n );\n};\n\nexport const reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_COLUMNS: {\n const columnIds = action.payload;\n return changeVisibleColumns(state, columnIds);\n }\n case TOGGLE_FILTERS: {\n const enableFilters = !state.filters;\n return {\n ...state,\n filters: enableFilters ? {} : null,\n page: enableFilters ? state.page : 0\n };\n }\n case CHANGE_FILTER: {\n const {columnId, filter} = action.payload;\n return evolve({filters: filter ? assoc(columnId, filter) : dissoc(columnId), page: always(0)}, state);\n }\n case TOGGLE_SORT: {\n const nextSortField = action.payload;\n const prevSortField = path(['sorting', 'field'], state);\n const prevSortOrder = path(['sorting', 'order'], state);\n return {\n ...state,\n sorting: {\n field: nextSortField,\n order: toggleSortOrder(nextSortField === prevSortField ? prevSortOrder : null)\n },\n page: 0\n };\n }\n case CHANGE_PAGE:\n return {...state, page: action.payload};\n case CHANGE_ROWS_PER_PAGE:\n return {...state, rowsPerPage: action.payload};\n default:\n return state;\n }\n};\n\nexport default {\n reducer,\n actions,\n changeVisibleColumns\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n 'basic-view__paper': {\n display: 'flex',\n flexDirection: 'column',\n ...theme.basicView\n }\n}));\n","import Paper, {PaperProps} from '@material-ui/core/Paper';\nimport PropTypes from 'prop-types';\nimport React, {forwardRef, Ref} from 'react';\nimport {useStyles} from './styles';\n\nconst BasicView = forwardRef<Ref<typeof Paper>, PaperProps>(({children, className, ...otherProps}, ref) => {\n const styles = useStyles();\n return (\n <Paper ref={ref} className={className} classes={{root: styles['basic-view__paper']}} {...otherProps}>\n {children}\n </Paper>\n );\n});\n\nBasicView.displayName = 'BasicView';\n\nBasicView.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n};\n\nexport default BasicView;\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: 'inset 0 -1px 0 0 rgba(0,114,206,0.06), inset 0 1px 0 0 rgba(0,114,206,0.06);',\n\n '&:after': {\n // IE workaround for minHeight and centering items\n content: '\"\"',\n minHeight: 'inherit',\n fontSize: 0\n }\n },\n inactive: {\n background: theme.inactiveBackground\n },\n profileIcon: {\n marginRight: '12px'\n },\n imageProfileIcon: {\n width: '48px',\n height: '48px'\n },\n profileInfo: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 50%'\n },\n badge: {},\n label: {\n lineHeight: '1.2',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary,\n wordBreak: 'break-word',\n\n '&+ $specialInfo': {\n marginTop: '4px'\n }\n },\n secondaryLabel: {\n display: 'inline-flex',\n color: theme.palette.text.primary,\n marginTop: '2px',\n lineHeight: '16px',\n fontSize: '14px',\n fontWeight: 400,\n\n '&+ $businessCard': {\n marginLeft: '12px'\n }\n },\n businessCard: {\n color: theme.palette.text.secondary,\n display: 'inline-flex',\n fontSize: '14px',\n marginTop: '4px',\n lineHeight: '1.2'\n },\n specialInfo: {\n display: 'flex',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n width: '100%',\n marginTop: '8px'\n },\n entityType: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n entityId: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n}));\n\nexport default useStyles;\n","import React, {ReactNode, useCallback} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {isNil} from 'ramda';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {getLabel, isActiveObject, getBusinessCardAttributesText, getEntityId, isTempUri, Entity} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport EntityAvatar from '../EntityAvatar/EntityAvatar';\nimport EntityTypeBadge from '../EntityTypeBadge/EntityTypeBadge';\n\nimport useStyles from './styles';\n\ntype Props = {\n className?: string;\n entity?: Entity;\n children?: ReactNode;\n classes?: Partial<ReturnType<typeof useStyles>>;\n};\n\nconst ProfileBand = ({className, entity, children, classes}: 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 {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 from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Link as Link} from '@material-ui/core';\nimport {withTooltip} from '../../HOCs';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\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 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={i18n.text('Go to search results')}\n >\n {formatNumberAsMetric(total, 1000000)}{' '}\n {total === 1 ? i18n.text('Search result') : i18n.text('Search results')}\n </LinkWithTooltip>\n <SmallIconButtonWithTooltip\n size=\"L\"\n icon={KeyboardArrowLeft}\n tooltipTitle={i18n.text('Go to previous profile')}\n onClick={onPrev}\n disabled={isPrevDisabled}\n showForDisabled\n />\n <SmallIconButtonWithTooltip\n size=\"L\"\n icon={KeyboardArrowRight}\n tooltipTitle={i18n.text('Go to 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 {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 {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 {ViewIdContext} from '../../../contexts';\nimport {useSafePromise} from '../../../hooks';\nimport {getSearchProvider} from '../searchProviders/SearchProviderFactory';\nimport {SearchNavigationData, SearchProviderData} from '../types';\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 {uri, index, total, tenant: searchTenant, 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 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 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 React from 'react';\n\nconst Spacer = () => <div style={{flex: 1}} />;\n\nexport default Spacer;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst VerticalDivider = ({height, margin}) => (\n <div\n style={{\n width: '1px',\n height: `${height}px`,\n borderLeft: '1px solid rgba(0,0,0,0.38)',\n margin: `0 ${margin}px`,\n flexShrink: '0'\n }}\n />\n);\n\nVerticalDivider.propTypes = {\n height: PropTypes.number,\n margin: PropTypes.number\n};\n\nexport default VerticalDivider;\n","import {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 {useMemo} from 'react';\nimport {pipe} from 'ramda';\n\ntype UseActions = ({\n actions,\n dispatch\n}: {\n actions: {\n [key: string]: <T>(payload: T) => {type: string; payload: T};\n };\n dispatch: <T>({type, payload}: {type: string; payload: T}) => void;\n}) => {\n [key in keyof typeof actions]: <T>(payload: T) => void;\n};\n\nexport const useActions: UseActions = ({actions, dispatch}) =>\n useMemo(\n () =>\n Object.entries(actions).reduce((acc, [actionName, actionCreator]) => {\n return {...acc, [actionName]: pipe(actionCreator, dispatch)};\n }, {}),\n [dispatch, actions]\n );\n","import {useCallback, useEffect, 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: ''\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 permanentLink: '',\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 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 ]);\n const isRequestSentRef = useRef<boolean>(false);\n isRequestSentRef.current = false;\n useEffect(() => {\n isRequestSentRef.current = true;\n loadRelations();\n }, [loadRelations]);\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 {useSelector} from 'react-redux';\nimport {getAllUsersForTenant} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\n\nexport const useUsers = () => {\n const [users, setUsers] = useState([]);\n\n const tenant = useSelector(mdm.selectors.getTenant);\n const servicesPath = useSelector(mdm.selectors.getServicesPath);\n\n const onError = (e) => {\n console.warn('Users error', e);\n setUsers([]);\n };\n\n useEffect(() => {\n getAllUsersForTenant({tenant, servicesPath})\n .then(({array}) => setUsers(array))\n .catch(onError);\n }, [tenant, servicesPath]);\n\n return users;\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 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}));\n","import React from 'react';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\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 CollaborationContext,\n EntitiesMapContext,\n LinearLoadIndicator,\n ScreenProfileBand,\n useCollaboration,\n useDidUpdateEffect,\n useRelationsLoader,\n UsersContext,\n useUsers\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 const users = useUsers();\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 <UsersContext.Provider value={users}>\n <CollaborationContext.Provider value={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 </CollaborationContext.Provider>\n </UsersContext.Provider>\n );\n};\n\nconst mapStateToProps = (state, {config: {id}}) => {\n return {\n entity: mdmModule.selectors.getEntity(state),\n metadata: mdmModule.selectors.getMetadata(state),\n connections: mdmModule.selectors.getConnectionsByViewId(state, id),\n total: mdmModule.selectors.getTotalByViewId(state, id)\n };\n};\n\nexport default connect(mapStateToProps)(RelationshipsView);\n","import {buildColumnsFilter, ColumnFilter} from '@reltio/components';\nimport {FilterBuilder} from '@reltio/mdm-sdk';\nimport {RelationshipsTableColumnData} from '../../../types';\n\nexport const buildRelationshipsFilter = (\n filters: Record<string, ColumnFilter>,\n columnsData: RelationshipsTableColumnData[]\n) => {\n const filtersClause = buildColumnsFilter(columnsData, filters);\n\n return new FilterBuilder().addClause(filtersClause).build();\n};\n","import React, {useCallback} from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\n\nimport MomentUtils from '@date-io/moment';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {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\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize?.(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <RelationshipsView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n )}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default 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","props","width","height","viewBox","xmlns","fillRule","stroke","strokeWidth","opacity","ColumnsSettings","columnsData","selectedColumns","onChangeColumns","title","tooltipTitle","anchorEl","setAnchorEl","useState","handleColumnClick","useCallback","column","changedColumns","pipe","getChildColumns","pluck","wasSelected","isColumnSelected","difference","uniq","concat","SmallIconButton","i18n","size","icon","TableIcon","onClick","event","currentTarget","ColumnsSettingsPopup","onColumnClick","onClose","propTypes","ColumnsDataType","PropTypes","useStyles","makeStyles","popup","minWidth","groupItem","backgroundColor","ColumnListItem","item","checked","level","style","isFocused","isGroupItem","hideCheckBox","styles","AttributeListItem","key","id","data","label","Highlighter","text","highlight","filterText","labelInText","hideIcon","className","classnames","setFilterText","groupedItems","useMemo","buildColumnItems","items","flattenGroupedItemsData","containerWidth","getMaxItemWidth","handleSearchOnEnter","focusIndex","handleKeyDown","useKeyboardNavigation","open","onSelectFocusedItem","selectedItems","handleClose","listHeight","min","containerHeight","max","SelectionPopup","onSearch","searchInputOnKeyDown","VirtualGroupedList","fixedTitle","renderItem","index","isGroupColumn","getItemSize","groupId","isParentToColumn","curry","parent","startsWith","isGroupToColumn","group","isHideableColumn","propOr","addColumn","columns","root","find","either","getColumnRoot","children","filterColumnsByLabel","utils","some","buildColumnsTrees","reduce","acc","columnData","attrType","dataTypeDefinition","buildFilteredColumnItems","filter","chain","isGroupedColumnsData","has","flattenGroupedColumnsData","map","assoc","when","childColumns","includes","every","theme","color","palette","primary","main","closeIcon","position","right","bottom","button","padding","FilterButton","enabled","Tooltip","IconButton","classes","Filter","Close","pagination","display","alignItems","justifyContent","borderTop","boxShadow","caption","fontSize","lineHeight","selectRoot","marginLeft","marginRight","select","textAlign","actions","BasicTablePagination","rowsPerPageOptions","page","onChangePage","rowsPerPage","onChangeRowsPerPage","basicTableRef","labelRowsPerPage","resetScrollbarPosition","pathOr","identity","handleChangePage","handleChangeRowsPerPage","TablePagination","component","labelDisplayedRows","from","to","fromRow","toRow","countRows","nthArg","getValue","React","CHANGE_COLUMNS","TOGGLE_FILTERS","CHANGE_FILTER","TOGGLE_SORT","CHANGE_PAGE","CHANGE_ROWS_PER_PAGE","changeColumns","createStandardAction","toggleFilters","changeFilter","toggleSort","changePage","changeRowsPerPage","changeVisibleColumns","state","nextVisibleColumns","removedColumns","visibleColumns","isRemovedColumn","columnId","evolve","always","sorting","field","nextSortField","order","filters","keys","dissoc","reducer","action","type","columnIds","payload","enableFilters","prevSortField","path","prevSortOrder","toggleSortOrder","flexDirection","basicView","BasicView","forwardRef","ref","otherProps","Paper","displayName","paper","minHeight","fontWeight","letterSpacing","content","contentText","marginBottom","actionButtons","paddingTop","discardButton","onCancel","cancelCaption","onDiscard","discardCaption","onSave","saveCaption","disabledSave","Dialog","paperScrollPaper","DialogTitle","DialogContent","DialogContentText","DialogActions","disableSpacing","Button","disabled","autoFocus","textOverflow","overflow","whiteSpace","borderRadius","flexShrink","entity","metadata","useSelector","mdmModule","entityTypeUri","entityType","getEntityType","entityTypeColor","getPropWithInheritance","entityTypeLabel","getEntityTypeLabel","ExpandedValueTooltip","placement","Typography","profileBandWrapper","profileBand","inactive","background","inactiveBackground","profileIcon","imageProfileIcon","profileInfo","flex","badge","wordBreak","marginTop","secondaryLabel","businessCard","secondary","specialInfo","flexWrap","entityId","cursor","textDecoration","showEntityId","handleCopyEntityIdToClipboard","navigator","clipboard","writeText","getEntityId","isNil","getLabel","businessCardText","getBusinessCardAttributesText","isActive","isActiveObject","entityUri","uri","EntityAvatar","avatarClassName","imageClassName","variant","EntityTypeBadge","isTempUri","container","link","LinkWithTooltip","withTooltip","Link","ProfileBandNavigationWidget","total","onPrev","onNext","onSearchResultsClick","isPrevDisabled","isNextDisabled","underline","formatNumberAsMetric","KeyboardArrowLeft","showForDisabled","KeyboardArrowRight","MainSearchProvider","constructor","query","sortField","sortOrder","tenant","searchTenant","apiPath","dtssPath","globalSearchRequestOptions","isDT","getQueryFilter","rawFilter","getEntities","options","requestFilters","requestOptions","sort","scoreEnabled","getFilteredEntitiesFromDataTenant","customerTenant","dataTenant","getFilteredEntities","checkEntity","fieldName","values","offset","then","entities","requestEntities","requestTotal","getTotalFromDataTenant","getTotals","json","GraphSearchProvider","searchBody","allFilters","getGraphSearchEntities","buildFilterQueryString","getGraphSearchCount","getNewUris","cache","prop","reject","ProfileBandNavigation","safeCheckEntityPromise","useSafePromise","safeRequestTotalPromise","safeRequestEntitiesPromise","viewId","useContext","ViewIdContext","dispatch","useDispatch","loading","setLoading","searchProvider","getSearchProvider","updateNavigationData","mdmModuleSearch","openEntity","preparedUri","getEntityUriForLink","mdmModuleUi","source","perspectiveId","useEffect","requestNextPage","newIndex","newUris","finally","requestPrevPage","stepForwardWithCheck","cacheIndex","isExists","clearedCache","splice","stepBackWithCheck","indexOf","useSearchNavigation","mode","isViewMode","useSearchNavigationVisibility","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","SettingsIcon","menuItems","VerticalDivider","margin","borderLeft","slice","cancelButton","historyEvent","profile","aStamp","useActions","Object","entries","actionName","actionCreator","filterReplies","replyId","replies","reply","getUpdatedReplies","comment","changedReplyIndex","findIndex","newReplies","defaultObjectIds","catchErrorInRequest","e","console","error","useCollaboration","objectIds","objectTypes","mdm","collaborationPath","isCollaborationEnabled","pageToken","setPageToken","comments","setComments","commentsMap","setCommentsMap","currentComment","setCurrentComment","sending","setSending","collaborationStateMap","setCollaborationStateMap","addCommentsToCommentsMap","currentCommentsMap","getCommentsCount","shouldResetCommentsMap","onError","warn","getCommentsCountRequest","andThen","fromPairs","otherwise","uris","getComments","relatedObjectUri","getCommentsRequest","nextPageToken","prevComments","uniqBy","catch","getComment","commentId","getCommentRequest","createComment","namedUsers","objectType","relatedObjectUris","objectId","visibility","permanentLink","createCommentRequest","prevCommentsMap","status","addCommentToState","editComment","updateCommentRequest","propEq","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","assocPath","mergeRight","clearCommentState","dissocPath","buildSuggestedIds","wrapInArrayIfNeeded","times","n","useRelationsLoader","config","relationActivityFilter","searchByOv","isLoading","setIsLoading","activityFilter","globalFilter","safePromise","processContent","getUri","isObject","filterRelation","isAvailableRelationTypeUri","entityTypes","filterFn","isAvailableEntityTypeUri","inRelations","outRelations","nextEntry","suggested","loadRelations","requestConfig","sortBy","returnDates","returnObjects","activeness","relation","ActivityFilter","addGlobalFilterToQuery","undefined","configs","ifElse","i","request","cond","Promise","resolve","isDataTenantEntity","getRelationsForDataTenantEntity","T","getRelationsForEntity","connections","isRequestSentRef","useRef","prevMode","usePrevious","Mode","reload","useUsers","users","setUsers","servicesPath","getAllUsersForTenant","array","DEFAULT_SAVED_STATE","relationsTable","attributesTable","RELATION_TYPE_COLUMN_ID","ATTRIBUTES_COLUMN_ID","DEFAULT_COLUMNS_DATA","DataTypes","hideable","filterable","initialWidth","autoResize","sortable","maxAttrsToShow","DEFAULT_COLUMNS","ALL_TYPES_COLUMNS","ROWS_PER_PAGE_OPTIONS","getColumnIdFromAttrUri","attributeUriToSearchUri","getColumnsDataFromRelationAttributes","attr","getAttrDataTypeDefinition","CHANGE_RELATION_TYPE","APPLY_SAVED_STATE","SAVE_CURRENT_STATE","basicTableViewState","changeRelationType","applySavedState","saveCurrentState","resetPageNumber","getDefaultVisibleColumnsForCurrentRelationType","currentRelationType","without","intersection","getSavedVisibleColumnsForCurrentRelationType","changeVisibleColumnsForCurrentRelationType","getFiltersFromSavedState","unless","validateFilterValue","saveVisibleColumnsForCurrentRelationType","visibleColumnsForRelationTypes","getStateToSave","pick","paddingLeft","paddingRight","selectMenu","textField","maxWidth","onChange","relationTypes","DropDownEditor","displayEmpty","disableUnderline","TextFieldProps","MenuProps","list","header","boxSizing","relationTypeSelector","memo","filteringEnabled","onToggleFilters","onRelationTypeChange","onToggleSearchByOv","settingItems","selected","selectable","BasicViewHeader","Spacer","SettingsMenu","headCell","rowCell","overflowWrap","inactiveRowCell","defaultWrapper","paddingBottom","entityCell","entityAvatar","inactiveEntityAvatar","border","entityLabel","attributesWrapper","commentsContainer","withFilterAtBottom","DefaultHeadCellRenderer","isInactiveRelation","currentEntityUri","COMMENTS_CONTAINER_VISIBILITY_AREA","EntityTypeIcon","EntityUriLink","stopPropagation","CommentsContainer","relationUri","createRelatedObjectUris","CollaborationObjectTypes","connection","allowOnlyOneComment","attributes","attributeTypes","attrTypes","drawLines","DataTypeValue","getAttrPathFromColumnId","split","Infinity","getNestedPathByColumnId","attrPath","getCellValueRenderer","EntityProfileRenderer","AttributesRenderer","DefaultCellValueRenderer","getBasicTableColumnsData","resizable","headCellRenderer","HeadCellRenderer","nestedPath","rowCellValueRenderer","getStaticRowCellHeight","pathEq","cell","attributesCount","defaultGetRowCellHeight","CellValueRenderer","menuItem","menuText","buttons","MenuItemWithTooltip","MenuItem","MenuItemRenderer","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","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","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","entityLabelContainer","infoIcon","entityTypeBadge","noWrap","LightArrowTooltip","ProfileBand","direction","align","fillOpacity","points","editButton","showEditor","setShowEditor","closeEditor","editedValue","setEditedValue","applyChangesAndClose","formatDate","EditIcon","Popover","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","DndProvider","backend","HTML5Backend","CrosswalkDragLayer","ResizablePanes","orientation","minSize","maxSize","allowResize","attributeUris","AttributesTable","onPin","onIgnore","onSelectAttributeTypes","relationshipsView","fontFamily","connect","saveState","getSavedState","isDTEntity","setSearchByOv","stateToSave","entityTypeOfAppliedSavedState","defaultColumns","defaultSorting","defaultRowsPerPage","initState","useReducer","nextRelationType","savedState","useRelationshipsTable","isSavedStateApplied","isSavedStateLoading","relationsTableSavedState","attributesTableSavedState","updateRelationsTableSavedState","updateAttributesTableSavedState","setSavedState","changedRelationsState","setRelationsChangedState","useDidUpdateEffect","_","changedState","useSavedState","attributesTableVisibleColumns","setAttributesTableVisibleColumns","detailedConnectionIndex","setDetailedConnectionIndex","hideConnectionDetails","inheritancePath","getInheritancePath","both","startObject","endObject","equals","objectTypeURI","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","UsersContext","CollaborationContext","EntitiesMapContext","ScreenProfileBand","LinearLoadIndicator","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","onResize","getSavedStatePromisified","promisifyCallback","Provider","StylesProvider","MuiPickersUtilsProvider","handleHeight","componentWillMount","getDerivedStateFromProps","setState","componentWillReceiveProps","nextProps","prevState","bind","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","isReactComponent","Error","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","name","newApiName","componentDidUpdate","maybeSnapshot","snapshot","call","__suppressDeprecationWarning"],"sourceRoot":""}
|