@reltio/components 1.4.2065 → 1.4.2066

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.
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ type Props = {
3
+ enabled?: boolean;
4
+ children: React.ReactNode;
5
+ className?: string;
6
+ style?: React.CSSProperties;
7
+ };
8
+ export declare const LazyRenderer: {
9
+ ({ enabled, ...props }: Props): React.JSX.Element;
10
+ notify(): void;
11
+ };
12
+ export {};
@@ -0,0 +1,64 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import React, { useEffect, useRef, useState } from 'react';
24
+ var CUSTOM_EVENT_NAME = 'notify_lazy_renderer';
25
+ var DEFAULT_STYLE = { height: '20px' };
26
+ var InternalLazyRenderer = function (_a) {
27
+ var children = _a.children, className = _a.className, _b = _a.style, style = _b === void 0 ? DEFAULT_STYLE : _b;
28
+ var _c = useState(false), isVisible = _c[0], setIsVisible = _c[1];
29
+ var placeholderRef = useRef(null);
30
+ useEffect(function () {
31
+ var observer = new IntersectionObserver(function (_a) {
32
+ var entry = _a[0];
33
+ if (entry.isIntersecting) {
34
+ setIsVisible(true);
35
+ observer.disconnect();
36
+ window.removeEventListener(CUSTOM_EVENT_NAME, reobserve);
37
+ }
38
+ }, {
39
+ threshold: 0.1
40
+ });
41
+ if (placeholderRef.current) {
42
+ observer.observe(placeholderRef.current);
43
+ }
44
+ var reobserve = function () {
45
+ if (placeholderRef.current) {
46
+ observer.disconnect();
47
+ observer.observe(placeholderRef.current);
48
+ }
49
+ };
50
+ window.addEventListener(CUSTOM_EVENT_NAME, reobserve);
51
+ return function () {
52
+ observer.disconnect();
53
+ window.removeEventListener(CUSTOM_EVENT_NAME, reobserve);
54
+ };
55
+ }, []);
56
+ return isVisible ? React.createElement(React.Fragment, null, children) : React.createElement("div", { ref: placeholderRef, className: className, style: style });
57
+ };
58
+ export var LazyRenderer = function (_a) {
59
+ var _b = _a.enabled, enabled = _b === void 0 ? true : _b, props = __rest(_a, ["enabled"]);
60
+ return enabled ? React.createElement(InternalLazyRenderer, __assign({}, props)) : React.createElement(React.Fragment, null, props.children);
61
+ };
62
+ LazyRenderer.notify = function () {
63
+ window.dispatchEvent(new Event(CUSTOM_EVENT_NAME));
64
+ };
@@ -0,0 +1 @@
1
+ export { LazyRenderer } from './LazyRenderer';
@@ -0,0 +1 @@
1
+ export { LazyRenderer } from './LazyRenderer';
@@ -24,10 +24,14 @@ import React, { memo } from 'react';
24
24
  import { DataTypes } from '@reltio/mdm-sdk';
25
25
  import { ReadOnlyAttribute } from '../ReadOnlyAttributesFactory';
26
26
  import { ReadOnlyImageAttributesLine } from '../ReadOnlyImageAttributesLine';
27
+ import { LazyRenderer } from '../LazyRenderer';
28
+ var lazyRendererStyle = { height: '18px' };
27
29
  var renderAttributesList = function (_a) {
28
30
  var values = _a.values, valueContainerClassName = _a.valueContainerClassName, props = __rest(_a, ["values", "valueContainerClassName"]);
29
- return (React.createElement(React.Fragment, null, (values || []).map(function (attributeValue) { return (React.createElement("div", { key: attributeValue.uri, className: valueContainerClassName },
30
- React.createElement(ReadOnlyAttribute, __assign({ attributeValue: attributeValue }, props)))); })));
31
+ var enabledLazyRendering = (values === null || values === void 0 ? void 0 : values.length) > 20;
32
+ return (React.createElement(React.Fragment, null, (values || []).map(function (attributeValue) { return (React.createElement(LazyRenderer, { key: attributeValue.uri, className: valueContainerClassName, enabled: enabledLazyRendering, style: lazyRendererStyle },
33
+ React.createElement("div", { className: valueContainerClassName },
34
+ React.createElement(ReadOnlyAttribute, __assign({ attributeValue: attributeValue }, props))))); })));
31
35
  };
32
36
  var ReadOnlyAttributeValuesBlock = function (_a) {
33
37
  var expanded = _a.expanded, LabelRenderer = _a.LabelRenderer, RightSlot = _a.RightSlot, props = __rest(_a, ["expanded", "LabelRenderer", "RightSlot"]);
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ type Props = {
3
+ enabled?: boolean;
4
+ children: React.ReactNode;
5
+ className?: string;
6
+ style?: React.CSSProperties;
7
+ };
8
+ export declare const LazyRenderer: {
9
+ ({ enabled, ...props }: Props): React.JSX.Element;
10
+ notify(): void;
11
+ };
12
+ export {};
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __rest = (this && this.__rest) || function (s, e) {
37
+ var t = {};
38
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
39
+ t[p] = s[p];
40
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
41
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
42
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
43
+ t[p[i]] = s[p[i]];
44
+ }
45
+ return t;
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.LazyRenderer = void 0;
49
+ var react_1 = __importStar(require("react"));
50
+ var CUSTOM_EVENT_NAME = 'notify_lazy_renderer';
51
+ var DEFAULT_STYLE = { height: '20px' };
52
+ var InternalLazyRenderer = function (_a) {
53
+ var children = _a.children, className = _a.className, _b = _a.style, style = _b === void 0 ? DEFAULT_STYLE : _b;
54
+ var _c = (0, react_1.useState)(false), isVisible = _c[0], setIsVisible = _c[1];
55
+ var placeholderRef = (0, react_1.useRef)(null);
56
+ (0, react_1.useEffect)(function () {
57
+ var observer = new IntersectionObserver(function (_a) {
58
+ var entry = _a[0];
59
+ if (entry.isIntersecting) {
60
+ setIsVisible(true);
61
+ observer.disconnect();
62
+ window.removeEventListener(CUSTOM_EVENT_NAME, reobserve);
63
+ }
64
+ }, {
65
+ threshold: 0.1
66
+ });
67
+ if (placeholderRef.current) {
68
+ observer.observe(placeholderRef.current);
69
+ }
70
+ var reobserve = function () {
71
+ if (placeholderRef.current) {
72
+ observer.disconnect();
73
+ observer.observe(placeholderRef.current);
74
+ }
75
+ };
76
+ window.addEventListener(CUSTOM_EVENT_NAME, reobserve);
77
+ return function () {
78
+ observer.disconnect();
79
+ window.removeEventListener(CUSTOM_EVENT_NAME, reobserve);
80
+ };
81
+ }, []);
82
+ return isVisible ? react_1.default.createElement(react_1.default.Fragment, null, children) : react_1.default.createElement("div", { ref: placeholderRef, className: className, style: style });
83
+ };
84
+ var LazyRenderer = function (_a) {
85
+ var _b = _a.enabled, enabled = _b === void 0 ? true : _b, props = __rest(_a, ["enabled"]);
86
+ return enabled ? react_1.default.createElement(InternalLazyRenderer, __assign({}, props)) : react_1.default.createElement(react_1.default.Fragment, null, props.children);
87
+ };
88
+ exports.LazyRenderer = LazyRenderer;
89
+ exports.LazyRenderer.notify = function () {
90
+ window.dispatchEvent(new Event(CUSTOM_EVENT_NAME));
91
+ };
@@ -0,0 +1 @@
1
+ export { LazyRenderer } from './LazyRenderer';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LazyRenderer = void 0;
4
+ var LazyRenderer_1 = require("./LazyRenderer");
5
+ Object.defineProperty(exports, "LazyRenderer", { enumerable: true, get: function () { return LazyRenderer_1.LazyRenderer; } });
@@ -49,10 +49,14 @@ var react_1 = __importStar(require("react"));
49
49
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
50
50
  var ReadOnlyAttributesFactory_1 = require("../ReadOnlyAttributesFactory");
51
51
  var ReadOnlyImageAttributesLine_1 = require("../ReadOnlyImageAttributesLine");
52
+ var LazyRenderer_1 = require("../LazyRenderer");
53
+ var lazyRendererStyle = { height: '18px' };
52
54
  var renderAttributesList = function (_a) {
53
55
  var values = _a.values, valueContainerClassName = _a.valueContainerClassName, props = __rest(_a, ["values", "valueContainerClassName"]);
54
- return (react_1.default.createElement(react_1.default.Fragment, null, (values || []).map(function (attributeValue) { return (react_1.default.createElement("div", { key: attributeValue.uri, className: valueContainerClassName },
55
- react_1.default.createElement(ReadOnlyAttributesFactory_1.ReadOnlyAttribute, __assign({ attributeValue: attributeValue }, props)))); })));
56
+ var enabledLazyRendering = (values === null || values === void 0 ? void 0 : values.length) > 20;
57
+ return (react_1.default.createElement(react_1.default.Fragment, null, (values || []).map(function (attributeValue) { return (react_1.default.createElement(LazyRenderer_1.LazyRenderer, { key: attributeValue.uri, className: valueContainerClassName, enabled: enabledLazyRendering, style: lazyRendererStyle },
58
+ react_1.default.createElement("div", { className: valueContainerClassName },
59
+ react_1.default.createElement(ReadOnlyAttributesFactory_1.ReadOnlyAttribute, __assign({ attributeValue: attributeValue }, props))))); })));
56
60
  };
57
61
  var ReadOnlyAttributeValuesBlock = function (_a) {
58
62
  var expanded = _a.expanded, LabelRenderer = _a.LabelRenderer, RightSlot = _a.RightSlot, props = __rest(_a, ["expanded", "LabelRenderer", "RightSlot"]);
@@ -52,6 +52,7 @@ var MdmModuleContext_1 = require("../../../contexts/MdmModuleContext");
52
52
  var helpers_1 = require("./helpers");
53
53
  var ConfirmEditIgnoredDialog_1 = require("./components/ConfirmEditIgnoredDialog");
54
54
  var CommonRowCellRenderer_1 = require("./components/CommonRowCellRenderer");
55
+ var LazyRenderer_1 = require("../../../LazyRenderer");
55
56
  var styles_1 = require("./styles");
56
57
  var DEFAULT_ROW_HEIGHT = 68;
57
58
  var getIdFromRowValue = function (rowValue) { return rowValue.ovValues.attributeType.uri; };
@@ -59,6 +60,7 @@ var getRowCellKey = function (_a) {
59
60
  var id = _a.columnData.id, cellIndex = _a.cellIndex, rowValue = _a.rowValue;
60
61
  return "".concat(id, "[").concat(getIdFromRowValue(rowValue), "][").concat(cellIndex, "]");
61
62
  };
63
+ var debouncedNotifyLazyRenderer = (0, mdm_sdk_1.debounce)(LazyRenderer_1.LazyRenderer.notify, 0);
62
64
  var AttributesTable = function (_a) {
63
65
  var entity = _a.entity, isLoading = _a.isLoading, crosswalksMap = _a.crosswalksMap, _b = _a.visibleColumns, visibleColumns = _b === void 0 ? helpers_1.DEFAULT_VISIBLE_COLUMNS : _b, onChangeVisibleColumns = _a.onChangeVisibleColumns, readOnly = _a.readOnly, _c = _a.onDelete, onDelete = _c === void 0 ? ramda_1.identity : _c, _d = _a.onPin, onPin = _d === void 0 ? ramda_1.identity : _d, _e = _a.onIgnore, onIgnore = _e === void 0 ? ramda_1.identity : _e, _f = _a.onEdit, onEdit = _f === void 0 ? ramda_1.identity : _f, _g = _a.onAdd, onAdd = _g === void 0 ? ramda_1.identity : _g, emptyTempAttributeUris = _a.emptyTempAttributeUris, selectedAttributeTypes = _a.selectedAttributeTypes, _h = _a.onSelectAttributeTypes, onSelectAttributeTypes = _h === void 0 ? ramda_1.identity : _h, additionalHeaderItems = _a.additionalHeaderItems, className = _a.className, activeSurvivorshipGroupUri = _a.activeSurvivorshipGroupUri, tableRef = _a.tableRef;
64
66
  var styles = (0, styles_1.useStyles)();
@@ -94,6 +96,9 @@ var AttributesTable = function (_a) {
94
96
  var getRowCellHeight = (0, react_1.useCallback)((0, ramda_1.either)(getDynamicRowCellHeight, (0, ramda_1.always)(DEFAULT_ROW_HEIGHT)), [
95
97
  getDynamicRowCellHeight
96
98
  ]);
99
+ (0, react_1.useEffect)(function () {
100
+ debouncedNotifyLazyRenderer();
101
+ }, [getRowCellHeight]);
97
102
  var _m = (0, react_1.useState)(null), pendingDeletion = _m[0], setPendingDeletion = _m[1];
98
103
  var _o = (0, react_1.useState)(null), pendingIgnoredEditing = _o[0], setPendingIgnoredEditing = _o[1];
99
104
  var handleEdit = (0, react_1.useCallback)(function (event) {
@@ -142,7 +147,7 @@ var AttributesTable = function (_a) {
142
147
  react_1.default.createElement(ColumnsSettings_1.ColumnsSettings, { columnsData: helpers_1.COLUMNS_DATA, selectedColumns: visibleColumns, onChangeColumns: onChangeVisibleColumns })),
143
148
  react_1.default.createElement("div", { className: styles.tableContent },
144
149
  isLoading && react_1.default.createElement(LinearLoadIndicator_1.LinearLoadIndicator, null),
145
- react_1.default.createElement(BasicTable_1.BasicTable, { ref: tableRef, fixFirstColumn: true, headRowHeight: 48, defaultColumnWidth: 250, defaultColumnMinWidth: 200, columnsData: visibleColumnsData, dndRowReorderingEnabled: false, dndRowReorderingHandler: handleReorderAttributeTypes, getIdFromRowValue: getIdFromRowValue, rowsData: rowsData, renderRowCell: renderRowCell, getRowCellHeight: getRowCellHeight, context: tableContext })),
150
+ react_1.default.createElement(BasicTable_1.BasicTable, { ref: tableRef, fixFirstColumn: true, headRowHeight: 48, defaultColumnWidth: 250, defaultColumnMinWidth: 200, columnsData: visibleColumnsData, dndRowReorderingEnabled: false, dndRowReorderingHandler: handleReorderAttributeTypes, getIdFromRowValue: getIdFromRowValue, rowsData: rowsData, onScroll: debouncedNotifyLazyRenderer, renderRowCell: renderRowCell, getRowCellHeight: getRowCellHeight, context: tableContext })),
146
151
  react_1.default.createElement(ConfirmDeleteDialog_1.ConfirmDeleteDialog, { open: !!pendingDeletion, onClose: function () { return setPendingDeletion(null); }, onConfirm: handleDelete }),
147
152
  react_1.default.createElement(ConfirmEditIgnoredDialog_1.ConfirmEditIgnoredDialog, { open: !!pendingIgnoredEditing, onClose: function () { return setPendingIgnoredEditing(null); }, onConfirmEditWithIgnore: function () { return pendingIgnoredEditing && onEdit(pendingIgnoredEditing); }, onConfirmEditWithoutIgnore: function () {
148
153
  if (pendingIgnoredEditing)
@@ -28,13 +28,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
28
28
  exports.NestedAttributesRenderer = void 0;
29
29
  var react_1 = __importDefault(require("react"));
30
30
  var InlineNestedAttribute_1 = require("../../../../../InlineNestedAttribute");
31
+ var LazyRenderer_1 = require("../../../../../LazyRenderer");
31
32
  var styles_1 = require("../../styles");
32
33
  var NestedAttributesRenderer = function (_a) {
33
34
  var attributeValues = _a.attributeValues, props = __rest(_a, ["attributeValues"]);
34
35
  var styles = (0, styles_1.useCommonStyles)();
36
+ var enabledLazyRendering = (attributeValues === null || attributeValues === void 0 ? void 0 : attributeValues.length) > 20;
35
37
  var nestedValues = attributeValues === null || attributeValues === void 0 ? void 0 : attributeValues.map(function (attributeValue, i) {
36
- return (react_1.default.createElement("div", { key: attributeValue === null || attributeValue === void 0 ? void 0 : attributeValue.uri, className: styles.basicCell, "data-reltio-id": "value-index-".concat(i) },
37
- react_1.default.createElement(InlineNestedAttribute_1.InlineNestedAttribute, __assign({ attributeValue: attributeValue }, props))));
38
+ return (react_1.default.createElement(LazyRenderer_1.LazyRenderer, { key: attributeValue === null || attributeValue === void 0 ? void 0 : attributeValue.uri, enabled: enabledLazyRendering, className: styles.basicCell },
39
+ react_1.default.createElement("div", { className: styles.basicCell, "data-reltio-id": "value-index-".concat(i) },
40
+ react_1.default.createElement(InlineNestedAttribute_1.InlineNestedAttribute, __assign({ attributeValue: attributeValue }, props)))));
38
41
  });
39
42
  return react_1.default.createElement(react_1.default.Fragment, null, nestedValues);
40
43
  };
@@ -28,13 +28,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
28
28
  exports.ReferenceAttributesRenderer = void 0;
29
29
  var react_1 = __importDefault(require("react"));
30
30
  var InlineReferenceAttribute_1 = require("../../../../../InlineReferenceAttribute");
31
+ var LazyRenderer_1 = require("../../../../../LazyRenderer");
31
32
  var styles_1 = require("../../styles");
32
33
  var ReferenceAttributesRenderer = function (_a) {
33
34
  var attributeValues = _a.attributeValues, crosswalksMap = _a.crosswalksMap, props = __rest(_a, ["attributeValues", "crosswalksMap"]);
34
35
  var styles = (0, styles_1.useCommonStyles)();
36
+ var enabledLazyRendering = (attributeValues === null || attributeValues === void 0 ? void 0 : attributeValues.length) > 20;
35
37
  var referenceValues = attributeValues === null || attributeValues === void 0 ? void 0 : attributeValues.map(function (attributeValue, i) {
36
- return (react_1.default.createElement("div", { key: attributeValue === null || attributeValue === void 0 ? void 0 : attributeValue.uri, className: styles.basicCell, "data-reltio-id": "value-index-".concat(i) },
37
- react_1.default.createElement(InlineReferenceAttribute_1.InlineReferenceAttribute, __assign({ attributeValue: attributeValue, crosswalksMap: crosswalksMap }, props))));
38
+ return (react_1.default.createElement(LazyRenderer_1.LazyRenderer, { key: attributeValue === null || attributeValue === void 0 ? void 0 : attributeValue.uri, enabled: enabledLazyRendering, className: styles.basicCell },
39
+ react_1.default.createElement("div", { className: styles.basicCell, "data-reltio-id": "value-index-".concat(i) },
40
+ react_1.default.createElement(InlineReferenceAttribute_1.InlineReferenceAttribute, __assign({ attributeValue: attributeValue, crosswalksMap: crosswalksMap }, props)))));
38
41
  });
39
42
  return react_1.default.createElement(react_1.default.Fragment, null, referenceValues);
40
43
  };
@@ -261,18 +261,16 @@ var useCollaboration = function (_a) {
261
261
  var clearCurrentComment = (0, react_1.useCallback)(function () {
262
262
  setCurrentComment(null);
263
263
  }, []);
264
- var getCommentState = function (uri, commentUri) { return (0, ramda_1.pathOr)({}, [uri, commentUri], collaborationStateMap); };
265
- var clearCommentState = function (uri, commentUri) {
266
- return setCollaborationStateMap((0, ramda_1.dissocPath)([uri, commentUri]));
267
- };
268
- var updateCommentState = function (uri, commentUri, newState) {
264
+ var getCommentState = (0, react_1.useCallback)(function (uri, commentUri) { return (0, ramda_1.pathOr)({}, [uri, commentUri], collaborationStateMap); }, [collaborationStateMap]);
265
+ var clearCommentState = (0, react_1.useCallback)(function (uri, commentUri) { return setCollaborationStateMap((0, ramda_1.dissocPath)([uri, commentUri])); }, []);
266
+ var updateCommentState = (0, react_1.useCallback)(function (uri, commentUri, newState) {
269
267
  setCollaborationStateMap(function (prevCollaborationStateMap) {
270
268
  var pathToCommentState = [uri, commentUri];
271
269
  var prevCommentState = (0, ramda_1.path)(pathToCommentState, prevCollaborationStateMap);
272
270
  return (0, ramda_1.assocPath)(pathToCommentState, (0, ramda_1.mergeRight)(prevCommentState, newState), prevCollaborationStateMap);
273
271
  });
274
- };
275
- return {
272
+ }, []);
273
+ return (0, react_1.useMemo)(function () { return ({
276
274
  clearCurrentComment: clearCurrentComment,
277
275
  comments: comments,
278
276
  commentsMap: commentsMap,
@@ -295,6 +293,29 @@ var useCollaboration = function (_a) {
295
293
  sending: sending,
296
294
  deleteReply: deleteReply,
297
295
  editReply: editReply
298
- };
296
+ }); }, [
297
+ clearCurrentComment,
298
+ comments,
299
+ commentsMap,
300
+ getCommentState,
301
+ updateCommentState,
302
+ clearCommentState,
303
+ createComment,
304
+ createReply,
305
+ currentComment,
306
+ deleteComment,
307
+ editComment,
308
+ getComment,
309
+ getComments,
310
+ getCommentsCount,
311
+ loading,
312
+ objectTypes,
313
+ pageToken,
314
+ reOpenThread,
315
+ resolveThread,
316
+ sending,
317
+ deleteReply,
318
+ editReply
319
+ ]);
299
320
  };
300
321
  exports.useCollaboration = useCollaboration;
package/cjs/index.d.ts CHANGED
@@ -178,6 +178,7 @@ export { GaugeChart } from './GaugeChart';
178
178
  export { UpSetChart } from './UpSetChart';
179
179
  export { DateRangeSelector } from './DateRangeSelector';
180
180
  export { MetadataTypesSelector } from './MetadataTypesSelector';
181
+ export { LazyRenderer } from './LazyRenderer';
181
182
  export { withTooltip } from './HOCs/withTooltip';
182
183
  export { withAsyncMount } from './HOCs/withAsyncMount';
183
184
  export { withDragHandle } from './HOCs/withDragHandle';
package/cjs/index.js CHANGED
@@ -17,10 +17,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.NestedAttributeEditor = exports.NestedAttribute = exports.MoreAttributesButton = exports.InlineReferenceAttribute = exports.InlineNestedAttribute = exports.InlineImageAttribute = exports.InlineAttributesPager = exports.InfoIcon = exports.EditableImageAttributesLine = exports.FilterButton = exports.FacetViewHeader = exports.ExpandedValueTooltip = exports.EntitySelector = exports.EntityCreator = exports.AttributesPager = exports.AttributesList = exports.EditableAttribute = exports.DropDownMenuButton = exports.DescriptionIcon = exports.DefaultCellValueRenderer = exports.ControlAttributeIcon = exports.ColumnsSettingsPopup = exports.ColumnsSettings = exports.ColorBar = exports.CollapseRowButton = exports.BasicChartsFactory = exports.ChartsFactory = exports.CardinalityMessage = exports.BranchDecorator = exports.BasicViewHeader = exports.BasicViewContent = exports.BasicView = exports.BasicTablePagination = exports.basicTableViewState = exports.BasicTable = exports.BasicAttributeSelector = exports.BarChart = exports.AvatarWithFallback = exports.AutoSizeList = exports.AttributesView = exports.AttributesValuesEditor = exports.AttributesFiltersButton = exports.AttributesFiltersBuilder = exports.AttributesFilterSelector = exports.AttributesErrorsPanel = exports.AttributeListItem = exports.AttributeGroupIcon = exports.ArrowExpandButton = exports.ActionsPanel = exports.ActionButton = void 0;
18
18
  exports.ConnectionEditor = exports.DropDownSelector = exports.ReactSelectOptionWithCheckIcon = exports.ReactSelectMenuWithPopper = exports.ReactSelectMenuList = exports.ReactSelectLoadMoreButton = exports.ReactSelectDropdownIndicatorWithIconButton = exports.ReactSelectDropdownIndicator = exports.Highlighter = exports.HierarchyNodeTitle = exports.HierarchicalAttributeTooltip = exports.HideOnShrink = exports.ExpandableSearchInput = exports.ErrorPopup = exports.ErrorBoundary = exports.EntityUriLink = exports.EntityTypesSelector = exports.EntityTypeIcon = exports.EntityTypeBadge = exports.EntityAvatar = exports.EMPTY_STATE_VARIANTS = exports.EMPTY_STATE_ICONS = exports.EmptyState = exports.Drawer = exports.DataTypeValue = exports.DataTenantBadge = exports.ConnectionRelationTypeSelector = exports.CollaborationItem = exports.ConfirmationDialog = exports.CommentsContainer = exports.ColoredSourceIcon = exports.CollapseButton = exports.TreeChart = exports.TableWithBars = exports.SourceIcon = exports.SmallIconButtonWithTooltip = exports.SmallIconButton = exports.SimpleAttributeEditor = exports.SimpleAttribute = exports.RowCellAutoSizer = exports.RelationTypeSelector = exports.ReferenceAttributeEditor = exports.ReferenceAttribute = exports.ImageAttributesLine = exports.ReadOnlyAttributesPager = exports.ReadOnlyAttributesList = exports.ReadOnlyAttribute = exports.ReadOnlyAttributeValuesBlock = exports.PieChart = exports.OvIcon = void 0;
19
19
  exports.Popper = exports.MultipleInput = exports.ModeSwitcherSelect = exports.ModeSwitcher = exports.TransitiveMatchBlock = exports.SimpleMatchRulesBuilder = exports.SimpleMatchRulesBlock = exports.SimpleMatchRules = exports.MatchRulesBlock = exports.LoadingSpinner = exports.Link = exports.LinearLoadIndicator = exports.ImportButton = exports.ReadableSearchQueryBuilder = exports.ReadableSearchQuery = exports.LogicOperator = exports.TableSkeleton = exports.StepNavigation = exports.TenantLabel = exports.RelevanceScoreBadge = exports.RequiredMark = exports.SettingsMenu = exports.TenantsDropDownSelector = exports.TenantIcon = exports.SourceSystemsSelector = exports.MatchRulesSelector = exports.MultiValueSelector = exports.ProfilesList = exports.NotMatchButton = exports.MergeButton = exports.ProfileMatchCard = exports.ImageGalleryDialog = exports.RelationTypesSelector = exports.ScreenProfileBand = exports.ProfileBandNavigation = exports.EmptyStub = exports.MaskingSwitcher = exports.FileTypeEditor = exports.EmptySearchResult = exports.DropDownEditor = exports.FilterValueEditor = exports.MultiValueChip = exports.TextEditor = exports.DateRangeEditor = exports.NumberEditor = exports.DataTypeValueEditor = exports.DateEditor = exports.ErrorWrapper = exports.ErrorMessage = exports.ConfigureColumnsPopup = void 0;
20
- exports.HistoryDiffContext = exports.AsyncMountContext = exports.MdmModuleProvider = exports.withTableContext = exports.withFilterAtBottom = exports.withPercents = exports.withContext = exports.withDateRangeSelector = exports.withDragHandle = exports.withAsyncMount = exports.withTooltip = exports.MetadataTypesSelector = exports.DateRangeSelector = exports.UpSetChart = exports.GaugeChart = exports.RelationEditor = exports.ReltioMap = exports.Marginator = exports.LightArrowTooltip = exports.ScrollableTabs = exports.VirtualGroupedList = exports.ViewMoreToggle = exports.VerticalHeadingsTable = exports.VerticalDivider = exports.AttributeTitle = exports.Spacer = exports.SimpleDropDownSelector = exports.SidePanelContentHeader = exports.SidePanel = exports.SidePanelEmptyState = exports.SideButtonsPanel = exports.SelectorWithOnlyOptionAutoSelect = exports.SelectionPopup = exports.WhiteSearchInput = exports.SearchInput = exports.ProfileResizablePanes = exports.ResizablePanes = exports.ReltioGridLayout = exports.RCTreeSwitchRenderer = exports.RCTreeLevelLines = exports.RCTree = exports.reactSortableTreeHelpers = exports.ReactSortableTree = exports.MultiSelect = exports.QueryBuilderRowsGroup = exports.QueryBuilderRow = exports.ProfileCard = exports.ProfileBand = exports.PotentialMatchReviewCard = exports.PopupWithArrow = void 0;
21
- exports.ReloadDataProvider = exports.useAttributeValueConfigPermissions = exports.ConfigPermissionsContextProvider = exports.ConfigPermissionsContext = exports.useActionsHook = exports.ActionsHookProvider = exports.PageRequestsAbortingContext = exports.DependentLookupAutopopulationContext = exports.FeaturesContext = exports.LabelsContext = exports.UrlGeneratorsContext = exports.isHighlightedAttributeType = exports.isHighlightedErrorType = exports.ScrollType = exports.ScrollToElementProvider = exports.ScrollToElementContext = exports.SearchValueContext = exports.InterceptHandlersContext = exports.HighlightedValuesContext = exports.SnackbarContext = exports.SearchFiltersContext = exports.useReloadFacet = exports.ReloadFacetProvider = exports.useReloadAllFacets = exports.SandboxAPIContext = exports.EntityContext = exports.RelatedObjectUrisContext = exports.WorkflowTasksContext = exports.useEntityLoadingIndication = exports.EntityLoadingIndicationProvider = exports.EntityMarkerContext = exports.useAttributeExpanded = exports.ExpandedAttributesProvider = exports.useHighlightedCrosswalks = exports.useCrosswalkHighlight = exports.useCrosswalkFocus = exports.useCrosswalkColor = exports.CrosswalksDisplayProvider = exports.EntitiesMapContext = exports.IdContext = exports.ProfilePerspectiveViewContext = exports.usePerspectivesSettings = exports.PerspectivesSettingsContext = exports.PivotingAttributeContext = exports.UsersContext = exports.InitialCollaborationContextValue = exports.CollaborationContextProvider = exports.CollaborationContext = exports.BlockImageGalleryDialogContext = exports.PopupBoundariesContext = void 0;
22
- exports.useMaskedAttribute = exports.useKeyboardNavigation = exports.useDynamicRowCellHeight = exports.useClickableStyle = exports.BasicTableCellRenderer = exports.useBasicTableCellRenderer = exports.useHiddenAttributes = exports.useSavedSearchesRequest = exports.useRequestDCRReview = exports.useAutoFocus = exports.useExpandInvalidRelations = exports.useLayoutResetter = exports.useIsMountedRef = exports.useSnackbar = exports.useSavedStateForEntityType = exports.useReadableSearchState = exports.useEditableConnection = exports.useCustomScripts = exports.useMarkAsNotMatchRequest = exports.useMergeAllRequest = exports.usePagingSimulator = exports.useMatchesLoader = exports.useConfigPermissions = exports.useWhyDidYouUpdate = exports.useUsers = exports.useSavedState = exports.useSafePromise = exports.useRunOnceAfterValueInitialization = exports.useRelationsLoader = exports.useRelationTypeSelector = exports.usePrevious = exports.useDidUpdateEffect = exports.useCommentsEntitiesMap = exports.useCollaboration = exports.useAsyncMount = exports.useAPI = exports.useActions = exports.useMatchesColumnsData = exports.useScrollToAttributeError = exports.ThemeProvider = exports.ProfileTablesContext = exports.HiddenAttributesContext = exports.BasicTableContext = exports.BasicTableRowCollapseContext = exports.useDeleteUnmaskedAttributeForRelation = exports.useUnmaskedAttributeValue = exports.useUnmaskAttributeValue = exports.useMaskAttributeValue = exports.MaskedAttributesProvider = exports.useReloadData = void 0;
23
- exports.mockComputedStyles = exports.FakeMouseEvent = exports.rerenderWrapper = exports.mockElementSizes = exports.fixClicksOnResizablePanes = exports.mockBasicTableSizing = exports.getMuiIconsByName = exports.getMuiIconByName = exports.deepFreeze = exports.awaitMockPromises = exports.TestStylesProvider = exports.TestPerspectivesSettingsProvider = exports.getAttributeSelectorItems = exports.mergeClasses = exports.isControlOrCommandPressed = exports.getValue = exports.getChecked = exports.showErrorMessage = exports.showDefaultErrorMessage = exports.enrichDataWithPercents = exports.defaultRenderRowCell = exports.defaultGetRowCellHeight = exports.columnFilterToMdmFilter = exports.buildColumnsSizeById = exports.buildColumnsFilter = exports.useDndBasicTableScrollModifier = exports.useDynamicYAxisWidth = exports.useFilterAutoFocus = exports.useSegmentationRequest = exports.resolveMarkers = exports.useMarkers = void 0;
20
+ exports.AsyncMountContext = exports.MdmModuleProvider = exports.withTableContext = exports.withFilterAtBottom = exports.withPercents = exports.withContext = exports.withDateRangeSelector = exports.withDragHandle = exports.withAsyncMount = exports.withTooltip = exports.LazyRenderer = exports.MetadataTypesSelector = exports.DateRangeSelector = exports.UpSetChart = exports.GaugeChart = exports.RelationEditor = exports.ReltioMap = exports.Marginator = exports.LightArrowTooltip = exports.ScrollableTabs = exports.VirtualGroupedList = exports.ViewMoreToggle = exports.VerticalHeadingsTable = exports.VerticalDivider = exports.AttributeTitle = exports.Spacer = exports.SimpleDropDownSelector = exports.SidePanelContentHeader = exports.SidePanel = exports.SidePanelEmptyState = exports.SideButtonsPanel = exports.SelectorWithOnlyOptionAutoSelect = exports.SelectionPopup = exports.WhiteSearchInput = exports.SearchInput = exports.ProfileResizablePanes = exports.ResizablePanes = exports.ReltioGridLayout = exports.RCTreeSwitchRenderer = exports.RCTreeLevelLines = exports.RCTree = exports.reactSortableTreeHelpers = exports.ReactSortableTree = exports.MultiSelect = exports.QueryBuilderRowsGroup = exports.QueryBuilderRow = exports.ProfileCard = exports.ProfileBand = exports.PotentialMatchReviewCard = exports.PopupWithArrow = void 0;
21
+ exports.useAttributeValueConfigPermissions = exports.ConfigPermissionsContextProvider = exports.ConfigPermissionsContext = exports.useActionsHook = exports.ActionsHookProvider = exports.PageRequestsAbortingContext = exports.DependentLookupAutopopulationContext = exports.FeaturesContext = exports.LabelsContext = exports.UrlGeneratorsContext = exports.isHighlightedAttributeType = exports.isHighlightedErrorType = exports.ScrollType = exports.ScrollToElementProvider = exports.ScrollToElementContext = exports.SearchValueContext = exports.InterceptHandlersContext = exports.HighlightedValuesContext = exports.SnackbarContext = exports.SearchFiltersContext = exports.useReloadFacet = exports.ReloadFacetProvider = exports.useReloadAllFacets = exports.SandboxAPIContext = exports.EntityContext = exports.RelatedObjectUrisContext = exports.WorkflowTasksContext = exports.useEntityLoadingIndication = exports.EntityLoadingIndicationProvider = exports.EntityMarkerContext = exports.useAttributeExpanded = exports.ExpandedAttributesProvider = exports.useHighlightedCrosswalks = exports.useCrosswalkHighlight = exports.useCrosswalkFocus = exports.useCrosswalkColor = exports.CrosswalksDisplayProvider = exports.EntitiesMapContext = exports.IdContext = exports.ProfilePerspectiveViewContext = exports.usePerspectivesSettings = exports.PerspectivesSettingsContext = exports.PivotingAttributeContext = exports.UsersContext = exports.InitialCollaborationContextValue = exports.CollaborationContextProvider = exports.CollaborationContext = exports.BlockImageGalleryDialogContext = exports.PopupBoundariesContext = exports.HistoryDiffContext = void 0;
22
+ exports.useKeyboardNavigation = exports.useDynamicRowCellHeight = exports.useClickableStyle = exports.BasicTableCellRenderer = exports.useBasicTableCellRenderer = exports.useHiddenAttributes = exports.useSavedSearchesRequest = exports.useRequestDCRReview = exports.useAutoFocus = exports.useExpandInvalidRelations = exports.useLayoutResetter = exports.useIsMountedRef = exports.useSnackbar = exports.useSavedStateForEntityType = exports.useReadableSearchState = exports.useEditableConnection = exports.useCustomScripts = exports.useMarkAsNotMatchRequest = exports.useMergeAllRequest = exports.usePagingSimulator = exports.useMatchesLoader = exports.useConfigPermissions = exports.useWhyDidYouUpdate = exports.useUsers = exports.useSavedState = exports.useSafePromise = exports.useRunOnceAfterValueInitialization = exports.useRelationsLoader = exports.useRelationTypeSelector = exports.usePrevious = exports.useDidUpdateEffect = exports.useCommentsEntitiesMap = exports.useCollaboration = exports.useAsyncMount = exports.useAPI = exports.useActions = exports.useMatchesColumnsData = exports.useScrollToAttributeError = exports.ThemeProvider = exports.ProfileTablesContext = exports.HiddenAttributesContext = exports.BasicTableContext = exports.BasicTableRowCollapseContext = exports.useDeleteUnmaskedAttributeForRelation = exports.useUnmaskedAttributeValue = exports.useUnmaskAttributeValue = exports.useMaskAttributeValue = exports.MaskedAttributesProvider = exports.useReloadData = exports.ReloadDataProvider = void 0;
23
+ exports.mockComputedStyles = exports.FakeMouseEvent = exports.rerenderWrapper = exports.mockElementSizes = exports.fixClicksOnResizablePanes = exports.mockBasicTableSizing = exports.getMuiIconsByName = exports.getMuiIconByName = exports.deepFreeze = exports.awaitMockPromises = exports.TestStylesProvider = exports.TestPerspectivesSettingsProvider = exports.getAttributeSelectorItems = exports.mergeClasses = exports.isControlOrCommandPressed = exports.getValue = exports.getChecked = exports.showErrorMessage = exports.showDefaultErrorMessage = exports.enrichDataWithPercents = exports.defaultRenderRowCell = exports.defaultGetRowCellHeight = exports.columnFilterToMdmFilter = exports.buildColumnsSizeById = exports.buildColumnsFilter = exports.useDndBasicTableScrollModifier = exports.useDynamicYAxisWidth = exports.useFilterAutoFocus = exports.useSegmentationRequest = exports.resolveMarkers = exports.useMarkers = exports.useMaskedAttribute = void 0;
24
24
  // components
25
25
  var ActionButton_1 = require("./ActionButton");
26
26
  Object.defineProperty(exports, "ActionButton", { enumerable: true, get: function () { return ActionButton_1.ActionButton; } });
@@ -391,6 +391,8 @@ var DateRangeSelector_1 = require("./DateRangeSelector");
391
391
  Object.defineProperty(exports, "DateRangeSelector", { enumerable: true, get: function () { return DateRangeSelector_1.DateRangeSelector; } });
392
392
  var MetadataTypesSelector_1 = require("./MetadataTypesSelector");
393
393
  Object.defineProperty(exports, "MetadataTypesSelector", { enumerable: true, get: function () { return MetadataTypesSelector_1.MetadataTypesSelector; } });
394
+ var LazyRenderer_1 = require("./LazyRenderer");
395
+ Object.defineProperty(exports, "LazyRenderer", { enumerable: true, get: function () { return LazyRenderer_1.LazyRenderer; } });
394
396
  // HOCs
395
397
  var withTooltip_1 = require("./HOCs/withTooltip");
396
398
  Object.defineProperty(exports, "withTooltip", { enumerable: true, get: function () { return withTooltip_1.withTooltip; } });
@@ -13,7 +13,7 @@ import React, { memo, useCallback, useEffect, useMemo, useState } from 'react';
13
13
  import classnames from 'classnames';
14
14
  import i18n from 'ui-i18n';
15
15
  import { always, either, filter, isNil, keys, map, pipe, without, identity, both, move } from 'ramda';
16
- import { findAttributeTypeByUri, isReadableAttribute, makeAttrTypeUri } from '@reltio/mdm-sdk';
16
+ import { debounce, findAttributeTypeByUri, isReadableAttribute, makeAttrTypeUri } from '@reltio/mdm-sdk';
17
17
  import { BasicTable } from '../../../BasicTable';
18
18
  import { ColumnsSettings } from '../../../ColumnsSettings';
19
19
  import { useDynamicRowCellHeight } from '../../../hooks/useDynamicRowCellHeight';
@@ -24,6 +24,7 @@ import { useMdmMetadata } from '../../../contexts/MdmModuleContext';
24
24
  import { COLUMNS_DATA, DEFAULT_VISIBLE_COLUMNS, getBasicTableColumnsData, getBasicTableRowsData } from './helpers';
25
25
  import { ConfirmEditIgnoredDialog } from './components/ConfirmEditIgnoredDialog';
26
26
  import { CommonRowCellRenderer } from './components/CommonRowCellRenderer';
27
+ import { LazyRenderer } from '../../../LazyRenderer';
27
28
  import { useStyles } from './styles';
28
29
  var DEFAULT_ROW_HEIGHT = 68;
29
30
  var getIdFromRowValue = function (rowValue) { return rowValue.ovValues.attributeType.uri; };
@@ -31,6 +32,7 @@ var getRowCellKey = function (_a) {
31
32
  var id = _a.columnData.id, cellIndex = _a.cellIndex, rowValue = _a.rowValue;
32
33
  return "".concat(id, "[").concat(getIdFromRowValue(rowValue), "][").concat(cellIndex, "]");
33
34
  };
35
+ var debouncedNotifyLazyRenderer = debounce(LazyRenderer.notify, 0);
34
36
  var AttributesTable = function (_a) {
35
37
  var entity = _a.entity, isLoading = _a.isLoading, crosswalksMap = _a.crosswalksMap, _b = _a.visibleColumns, visibleColumns = _b === void 0 ? DEFAULT_VISIBLE_COLUMNS : _b, onChangeVisibleColumns = _a.onChangeVisibleColumns, readOnly = _a.readOnly, _c = _a.onDelete, onDelete = _c === void 0 ? identity : _c, _d = _a.onPin, onPin = _d === void 0 ? identity : _d, _e = _a.onIgnore, onIgnore = _e === void 0 ? identity : _e, _f = _a.onEdit, onEdit = _f === void 0 ? identity : _f, _g = _a.onAdd, onAdd = _g === void 0 ? identity : _g, emptyTempAttributeUris = _a.emptyTempAttributeUris, selectedAttributeTypes = _a.selectedAttributeTypes, _h = _a.onSelectAttributeTypes, onSelectAttributeTypes = _h === void 0 ? identity : _h, additionalHeaderItems = _a.additionalHeaderItems, className = _a.className, activeSurvivorshipGroupUri = _a.activeSurvivorshipGroupUri, tableRef = _a.tableRef;
36
38
  var styles = useStyles();
@@ -66,6 +68,9 @@ var AttributesTable = function (_a) {
66
68
  var getRowCellHeight = useCallback(either(getDynamicRowCellHeight, always(DEFAULT_ROW_HEIGHT)), [
67
69
  getDynamicRowCellHeight
68
70
  ]);
71
+ useEffect(function () {
72
+ debouncedNotifyLazyRenderer();
73
+ }, [getRowCellHeight]);
69
74
  var _m = useState(null), pendingDeletion = _m[0], setPendingDeletion = _m[1];
70
75
  var _o = useState(null), pendingIgnoredEditing = _o[0], setPendingIgnoredEditing = _o[1];
71
76
  var handleEdit = useCallback(function (event) {
@@ -114,7 +119,7 @@ var AttributesTable = function (_a) {
114
119
  React.createElement(ColumnsSettings, { columnsData: COLUMNS_DATA, selectedColumns: visibleColumns, onChangeColumns: onChangeVisibleColumns })),
115
120
  React.createElement("div", { className: styles.tableContent },
116
121
  isLoading && React.createElement(LinearLoadIndicator, null),
117
- React.createElement(BasicTable, { ref: tableRef, fixFirstColumn: true, headRowHeight: 48, defaultColumnWidth: 250, defaultColumnMinWidth: 200, columnsData: visibleColumnsData, dndRowReorderingEnabled: false, dndRowReorderingHandler: handleReorderAttributeTypes, getIdFromRowValue: getIdFromRowValue, rowsData: rowsData, renderRowCell: renderRowCell, getRowCellHeight: getRowCellHeight, context: tableContext })),
122
+ React.createElement(BasicTable, { ref: tableRef, fixFirstColumn: true, headRowHeight: 48, defaultColumnWidth: 250, defaultColumnMinWidth: 200, columnsData: visibleColumnsData, dndRowReorderingEnabled: false, dndRowReorderingHandler: handleReorderAttributeTypes, getIdFromRowValue: getIdFromRowValue, rowsData: rowsData, onScroll: debouncedNotifyLazyRenderer, renderRowCell: renderRowCell, getRowCellHeight: getRowCellHeight, context: tableContext })),
118
123
  React.createElement(ConfirmDeleteDialog, { open: !!pendingDeletion, onClose: function () { return setPendingDeletion(null); }, onConfirm: handleDelete }),
119
124
  React.createElement(ConfirmEditIgnoredDialog, { open: !!pendingIgnoredEditing, onClose: function () { return setPendingIgnoredEditing(null); }, onConfirmEditWithIgnore: function () { return pendingIgnoredEditing && onEdit(pendingIgnoredEditing); }, onConfirmEditWithoutIgnore: function () {
120
125
  if (pendingIgnoredEditing)
@@ -22,13 +22,16 @@ var __rest = (this && this.__rest) || function (s, e) {
22
22
  };
23
23
  import React from 'react';
24
24
  import { InlineNestedAttribute } from '../../../../../InlineNestedAttribute';
25
+ import { LazyRenderer } from '../../../../../LazyRenderer';
25
26
  import { useCommonStyles } from '../../styles';
26
27
  export var NestedAttributesRenderer = function (_a) {
27
28
  var attributeValues = _a.attributeValues, props = __rest(_a, ["attributeValues"]);
28
29
  var styles = useCommonStyles();
30
+ var enabledLazyRendering = (attributeValues === null || attributeValues === void 0 ? void 0 : attributeValues.length) > 20;
29
31
  var nestedValues = attributeValues === null || attributeValues === void 0 ? void 0 : attributeValues.map(function (attributeValue, i) {
30
- return (React.createElement("div", { key: attributeValue === null || attributeValue === void 0 ? void 0 : attributeValue.uri, className: styles.basicCell, "data-reltio-id": "value-index-".concat(i) },
31
- React.createElement(InlineNestedAttribute, __assign({ attributeValue: attributeValue }, props))));
32
+ return (React.createElement(LazyRenderer, { key: attributeValue === null || attributeValue === void 0 ? void 0 : attributeValue.uri, enabled: enabledLazyRendering, className: styles.basicCell },
33
+ React.createElement("div", { className: styles.basicCell, "data-reltio-id": "value-index-".concat(i) },
34
+ React.createElement(InlineNestedAttribute, __assign({ attributeValue: attributeValue }, props)))));
32
35
  });
33
36
  return React.createElement(React.Fragment, null, nestedValues);
34
37
  };
@@ -22,13 +22,16 @@ var __rest = (this && this.__rest) || function (s, e) {
22
22
  };
23
23
  import React from 'react';
24
24
  import { InlineReferenceAttribute } from '../../../../../InlineReferenceAttribute';
25
+ import { LazyRenderer } from '../../../../../LazyRenderer';
25
26
  import { useCommonStyles } from '../../styles';
26
27
  export var ReferenceAttributesRenderer = function (_a) {
27
28
  var attributeValues = _a.attributeValues, crosswalksMap = _a.crosswalksMap, props = __rest(_a, ["attributeValues", "crosswalksMap"]);
28
29
  var styles = useCommonStyles();
30
+ var enabledLazyRendering = (attributeValues === null || attributeValues === void 0 ? void 0 : attributeValues.length) > 20;
29
31
  var referenceValues = attributeValues === null || attributeValues === void 0 ? void 0 : attributeValues.map(function (attributeValue, i) {
30
- return (React.createElement("div", { key: attributeValue === null || attributeValue === void 0 ? void 0 : attributeValue.uri, className: styles.basicCell, "data-reltio-id": "value-index-".concat(i) },
31
- React.createElement(InlineReferenceAttribute, __assign({ attributeValue: attributeValue, crosswalksMap: crosswalksMap }, props))));
32
+ return (React.createElement(LazyRenderer, { key: attributeValue === null || attributeValue === void 0 ? void 0 : attributeValue.uri, enabled: enabledLazyRendering, className: styles.basicCell },
33
+ React.createElement("div", { className: styles.basicCell, "data-reltio-id": "value-index-".concat(i) },
34
+ React.createElement(InlineReferenceAttribute, __assign({ attributeValue: attributeValue, crosswalksMap: crosswalksMap }, props)))));
32
35
  });
33
36
  return React.createElement(React.Fragment, null, referenceValues);
34
37
  };
@@ -18,7 +18,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
18
18
  }
19
19
  return to.concat(ar || Array.prototype.slice.call(from));
20
20
  };
21
- import { useCallback, useEffect, useState } from 'react';
21
+ import { useCallback, useEffect, useState, useMemo } from 'react';
22
22
  import { andThen, fromPairs, map, otherwise, pipe, props, uniqBy, prop, propEq, when, always, assocPath, dissocPath, path, pathOr, mergeRight } from 'ramda';
23
23
  import { createComment as createCommentRequest, createReply as createReplyRequest, getComment as getCommentRequest, getCommentsCount as getCommentsCountRequest, updateComment as updateCommentRequest, updateReply as updateReplyRequest, deleteComment as deleteCommentRequest, deleteReply as deleteReplyRequest, getComments as getCommentsRequest, isTempUri } from '@reltio/mdm-sdk';
24
24
  import { useMdmCollaborationPath, useMdmEntity, useMdmIsCollaborationEnabled, useMdmTenant } from '../../contexts/MdmModuleContext';
@@ -258,18 +258,16 @@ export var useCollaboration = function (_a) {
258
258
  var clearCurrentComment = useCallback(function () {
259
259
  setCurrentComment(null);
260
260
  }, []);
261
- var getCommentState = function (uri, commentUri) { return pathOr({}, [uri, commentUri], collaborationStateMap); };
262
- var clearCommentState = function (uri, commentUri) {
263
- return setCollaborationStateMap(dissocPath([uri, commentUri]));
264
- };
265
- var updateCommentState = function (uri, commentUri, newState) {
261
+ var getCommentState = useCallback(function (uri, commentUri) { return pathOr({}, [uri, commentUri], collaborationStateMap); }, [collaborationStateMap]);
262
+ var clearCommentState = useCallback(function (uri, commentUri) { return setCollaborationStateMap(dissocPath([uri, commentUri])); }, []);
263
+ var updateCommentState = useCallback(function (uri, commentUri, newState) {
266
264
  setCollaborationStateMap(function (prevCollaborationStateMap) {
267
265
  var pathToCommentState = [uri, commentUri];
268
266
  var prevCommentState = path(pathToCommentState, prevCollaborationStateMap);
269
267
  return assocPath(pathToCommentState, mergeRight(prevCommentState, newState), prevCollaborationStateMap);
270
268
  });
271
- };
272
- return {
269
+ }, []);
270
+ return useMemo(function () { return ({
273
271
  clearCurrentComment: clearCurrentComment,
274
272
  comments: comments,
275
273
  commentsMap: commentsMap,
@@ -292,5 +290,28 @@ export var useCollaboration = function (_a) {
292
290
  sending: sending,
293
291
  deleteReply: deleteReply,
294
292
  editReply: editReply
295
- };
293
+ }); }, [
294
+ clearCurrentComment,
295
+ comments,
296
+ commentsMap,
297
+ getCommentState,
298
+ updateCommentState,
299
+ clearCommentState,
300
+ createComment,
301
+ createReply,
302
+ currentComment,
303
+ deleteComment,
304
+ editComment,
305
+ getComment,
306
+ getComments,
307
+ getCommentsCount,
308
+ loading,
309
+ objectTypes,
310
+ pageToken,
311
+ reOpenThread,
312
+ resolveThread,
313
+ sending,
314
+ deleteReply,
315
+ editReply
316
+ ]);
296
317
  };
package/index.d.ts CHANGED
@@ -178,6 +178,7 @@ export { GaugeChart } from './GaugeChart';
178
178
  export { UpSetChart } from './UpSetChart';
179
179
  export { DateRangeSelector } from './DateRangeSelector';
180
180
  export { MetadataTypesSelector } from './MetadataTypesSelector';
181
+ export { LazyRenderer } from './LazyRenderer';
181
182
  export { withTooltip } from './HOCs/withTooltip';
182
183
  export { withAsyncMount } from './HOCs/withAsyncMount';
183
184
  export { withDragHandle } from './HOCs/withDragHandle';
package/index.js CHANGED
@@ -179,6 +179,7 @@ export { GaugeChart } from './GaugeChart';
179
179
  export { UpSetChart } from './UpSetChart';
180
180
  export { DateRangeSelector } from './DateRangeSelector';
181
181
  export { MetadataTypesSelector } from './MetadataTypesSelector';
182
+ export { LazyRenderer } from './LazyRenderer';
182
183
  // HOCs
183
184
  export { withTooltip } from './HOCs/withTooltip';
184
185
  export { withAsyncMount } from './HOCs/withAsyncMount';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.2065",
3
+ "version": "1.4.2066",
4
4
  "license": "SEE LICENSE IN LICENSE FILE",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./index.js",