@semcore/data-table 2.0.0 → 2.2.1
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/CHANGELOG.md +18 -0
- package/lib/cjs/Body.js +277 -78
- package/lib/cjs/Body.js.map +1 -1
- package/lib/cjs/DataTable.js +194 -159
- package/lib/cjs/DataTable.js.map +1 -1
- package/lib/cjs/Head.js +15 -8
- package/lib/cjs/Head.js.map +1 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/style/data-table.shadow.css +11 -0
- package/lib/cjs/types.js +4 -0
- package/lib/cjs/types.js.map +1 -0
- package/lib/cjs/utils.js +26 -26
- package/lib/cjs/utils.js.map +1 -1
- package/lib/es6/Body.js +277 -78
- package/lib/es6/Body.js.map +1 -1
- package/lib/es6/DataTable.js +196 -157
- package/lib/es6/DataTable.js.map +1 -1
- package/lib/es6/Head.js +16 -8
- package/lib/es6/Head.js.map +1 -1
- package/lib/es6/index.js.map +1 -1
- package/lib/es6/style/data-table.shadow.css +11 -0
- package/lib/es6/types.js +2 -0
- package/lib/es6/types.js.map +1 -0
- package/lib/es6/utils.js +20 -24
- package/lib/es6/utils.js.map +1 -1
- package/package.json +3 -2
- package/src/Body.tsx +257 -0
- package/src/DataTable.tsx +443 -0
- package/src/{Head.jsx → Head.tsx} +29 -11
- package/src/{index.js → index.ts} +0 -0
- package/src/style/data-table.shadow.css +11 -0
- package/src/types.ts +53 -0
- package/src/utils.ts +55 -0
- package/lib/types/index.d.ts +0 -99
- package/src/Body.jsx +0 -119
- package/src/DataTable.jsx +0 -283
- package/src/index.d.ts +0 -99
- package/src/utils.js +0 -54
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
|
|
4
4
|
|
|
5
|
+
## [2.2.1] - 2022-04-21
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Version patch update due to children dependencies update (`@semcore/scroll-area` [3.6.4 ~> 3.7.0]).
|
|
10
|
+
|
|
11
|
+
## [2.2.0] - 2022-04-14
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- Virtual scroll support.
|
|
16
|
+
|
|
17
|
+
## [2.1.0] - 2022-04-07
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- Internal enhances, rewritten from js to ts, render algorithmic performance increased.
|
|
22
|
+
|
|
5
23
|
## [2.0.0] - 2022-04-06
|
|
6
24
|
|
|
7
25
|
### Fixed
|
package/lib/cjs/Body.js
CHANGED
|
@@ -2,27 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
+
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
5
7
|
Object.defineProperty(exports, "__esModule", {
|
|
6
8
|
value: true
|
|
7
9
|
});
|
|
8
10
|
exports["default"] = void 0;
|
|
9
11
|
|
|
12
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
|
+
|
|
10
14
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
15
|
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
16
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
15
17
|
|
|
16
18
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
19
|
|
|
18
20
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
19
21
|
|
|
22
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
23
|
+
|
|
20
24
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
25
|
|
|
22
26
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
27
|
|
|
24
28
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
29
|
|
|
30
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
31
|
+
|
|
26
32
|
var _core = require("@semcore/core");
|
|
27
33
|
|
|
28
34
|
var _react = _interopRequireDefault(require("react"));
|
|
@@ -33,15 +39,29 @@ var _scrollArea = _interopRequireDefault(require("@semcore/scroll-area"));
|
|
|
33
39
|
|
|
34
40
|
var _utils = require("./utils");
|
|
35
41
|
|
|
36
|
-
var _assignProps2 =
|
|
42
|
+
var _assignProps2 = _interopRequireWildcard(require("@semcore/utils/lib/assignProps"));
|
|
37
43
|
|
|
38
|
-
var
|
|
39
|
-
|
|
44
|
+
var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-polyfill"));
|
|
45
|
+
|
|
46
|
+
var _rafTrottle = _interopRequireDefault(require("@semcore/utils/lib/rafTrottle"));
|
|
47
|
+
|
|
48
|
+
var _excluded = ["childrenPropsGetter"],
|
|
49
|
+
_excluded2 = ["childrenPropsGetter"];
|
|
50
|
+
|
|
51
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
52
|
+
|
|
53
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
40
54
|
|
|
41
55
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
42
56
|
|
|
43
57
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
44
58
|
|
|
59
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
60
|
+
|
|
61
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
62
|
+
|
|
63
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
64
|
+
|
|
45
65
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
46
66
|
|
|
47
67
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
@@ -62,12 +82,12 @@ _core.sstyled.insert(
|
|
|
62
82
|
});
|
|
63
83
|
var testEnv = process.env.NODE_ENV === 'test';
|
|
64
84
|
|
|
65
|
-
function getCellsByColumn(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return
|
|
69
|
-
}
|
|
70
|
-
}
|
|
85
|
+
var getCellsByColumn = function getCellsByColumn(cells) {
|
|
86
|
+
var flattenCells = cells.flat(20);
|
|
87
|
+
return Object.fromEntries(flattenCells.map(function (cell) {
|
|
88
|
+
return [cell.name, cell.data];
|
|
89
|
+
}));
|
|
90
|
+
};
|
|
71
91
|
|
|
72
92
|
var Body = /*#__PURE__*/function (_Component) {
|
|
73
93
|
(0, _inherits2["default"])(Body, _Component);
|
|
@@ -75,56 +95,90 @@ var Body = /*#__PURE__*/function (_Component) {
|
|
|
75
95
|
var _super = _createSuper(Body);
|
|
76
96
|
|
|
77
97
|
function Body() {
|
|
98
|
+
var _this;
|
|
99
|
+
|
|
78
100
|
(0, _classCallCheck2["default"])(this, Body);
|
|
79
|
-
return _super.apply(this, arguments);
|
|
80
|
-
}
|
|
81
101
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
var _this = this;
|
|
102
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
103
|
+
args[_key] = arguments[_key];
|
|
104
|
+
}
|
|
86
105
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
return
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
"active": props.active
|
|
110
|
-
}, props)));
|
|
106
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
107
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
108
|
+
rowHeight: undefined,
|
|
109
|
+
scrollAreaHeight: undefined,
|
|
110
|
+
scrollOffset: 0
|
|
111
|
+
});
|
|
112
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "firstRowRef", _react["default"].createRef());
|
|
113
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "firstRowResizeObserver", null);
|
|
114
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getRowHeight", function () {
|
|
115
|
+
var virtualScroll = _this.asProps.virtualScroll;
|
|
116
|
+
var rowHeightFromProps = (0, _typeof2["default"])(virtualScroll) === 'object' && virtualScroll?.rowHeight;
|
|
117
|
+
return rowHeightFromProps || _this.state.rowHeight;
|
|
118
|
+
});
|
|
119
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleFirstRowResize", (0, _rafTrottle["default"])(function (entries) {
|
|
120
|
+
var contentRect = entries[0].contentRect;
|
|
121
|
+
var height = contentRect.height;
|
|
122
|
+
|
|
123
|
+
_this.setState(function (oldState) {
|
|
124
|
+
if (oldState.rowHeight === height) return oldState;
|
|
125
|
+
return {
|
|
126
|
+
rowHeight: height
|
|
127
|
+
};
|
|
111
128
|
});
|
|
112
|
-
}
|
|
113
|
-
|
|
129
|
+
}));
|
|
130
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleScrollAreaResize", (0, _rafTrottle["default"])(function (entries) {
|
|
131
|
+
var virtualScroll = _this.asProps.virtualScroll;
|
|
132
|
+
if (!virtualScroll) return;
|
|
133
|
+
var contentRect = entries[0].contentRect;
|
|
134
|
+
var height = contentRect.height;
|
|
135
|
+
|
|
136
|
+
_this.setState(function (oldState) {
|
|
137
|
+
if (oldState.scrollAreaHeight === height) return oldState;
|
|
138
|
+
return {
|
|
139
|
+
scrollAreaHeight: height
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
}));
|
|
143
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleScrollAreaScroll", function (event) {
|
|
144
|
+
var _ref5 = event.target,
|
|
145
|
+
scrollTop = _ref5.scrollTop;
|
|
146
|
+
var virtualScroll = _this.asProps.virtualScroll;
|
|
147
|
+
|
|
148
|
+
if (virtualScroll) {
|
|
149
|
+
_this.setState(function (oldState) {
|
|
150
|
+
if (oldState.scrollOffset === scrollTop) return oldState;
|
|
151
|
+
return {
|
|
152
|
+
scrollOffset: scrollTop
|
|
153
|
+
};
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setupRowSizeObserver", function () {
|
|
158
|
+
if (!_this.firstRowRef.current) return;
|
|
159
|
+
if (!_this.asProps.virtualScroll) return;
|
|
160
|
+
_this.firstRowResizeObserver = new _resizeObserverPolyfill["default"](_this.handleFirstRowResize);
|
|
161
|
+
|
|
162
|
+
_this.firstRowResizeObserver.observe(_this.firstRowRef.current);
|
|
163
|
+
});
|
|
164
|
+
return _this;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
(0, _createClass2["default"])(Body, [{
|
|
114
168
|
key: "renderCells",
|
|
115
|
-
value: function renderCells(
|
|
169
|
+
value: function renderCells(cells, rowData, index) {
|
|
116
170
|
var _this2 = this;
|
|
117
171
|
|
|
118
172
|
var SCell = _flexBox.Flex;
|
|
119
|
-
var _this$
|
|
120
|
-
styles = _this$
|
|
121
|
-
columns = _this$
|
|
122
|
-
use = _this$
|
|
123
|
-
return
|
|
173
|
+
var _this$asProps = this.asProps,
|
|
174
|
+
styles = _this$asProps.styles,
|
|
175
|
+
columns = _this$asProps.columns,
|
|
176
|
+
use = _this$asProps.use;
|
|
177
|
+
return cells.map(function (cell) {
|
|
124
178
|
if (Array.isArray(cell)) {
|
|
125
|
-
|
|
179
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, _this2.renderRows(cell));
|
|
126
180
|
} else {
|
|
127
|
-
var
|
|
181
|
+
var _ref2;
|
|
128
182
|
|
|
129
183
|
var column = columns.find(function (c) {
|
|
130
184
|
return c.name === cell.name;
|
|
@@ -135,51 +189,187 @@ var Body = /*#__PURE__*/function (_Component) {
|
|
|
135
189
|
name = _getFixedStyle2[0],
|
|
136
190
|
value = _getFixedStyle2[1];
|
|
137
191
|
|
|
138
|
-
var vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(function (
|
|
139
|
-
return "var(".concat(
|
|
192
|
+
var vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(function (name) {
|
|
193
|
+
return "var(".concat(name, ")");
|
|
140
194
|
});
|
|
141
|
-
var props =
|
|
142
|
-
var _ref6$getCellProps = _ref6.getCellProps,
|
|
143
|
-
getCellProps = _ref6$getCellProps === void 0 ? function (p) {
|
|
144
|
-
return p;
|
|
145
|
-
} : _ref6$getCellProps,
|
|
146
|
-
other = (0, _objectWithoutProperties2["default"])(_ref6, _excluded2);
|
|
147
|
-
var propsCell = (0, _assignProps2["default"])(other, acc);
|
|
148
|
-
return (0, _assignProps2["default"])(getCellProps(propsCell, cellsByColumn, index), propsCell);
|
|
149
|
-
}, {
|
|
195
|
+
var props = {
|
|
150
196
|
name: cell.name,
|
|
151
|
-
children: cell.data,
|
|
152
|
-
justifyContent: column
|
|
153
|
-
style:
|
|
154
|
-
|
|
155
|
-
|
|
197
|
+
children: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, cell.data),
|
|
198
|
+
justifyContent: column?.props?.justifyContent,
|
|
199
|
+
style: {
|
|
200
|
+
width: vars.length === 1 ? vars[0] : "calc(".concat(vars.join(' + '), ")")
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
if (name !== undefined && value !== undefined) {
|
|
205
|
+
props.style[name] = value;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
var _iterator = _createForOfIteratorHelper(cell.cellPropsLayers || []),
|
|
209
|
+
_step;
|
|
210
|
+
|
|
211
|
+
try {
|
|
212
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
213
|
+
var cellPropLayer = _step.value;
|
|
214
|
+
var _cellPropLayer$childr = cellPropLayer.childrenPropsGetter,
|
|
215
|
+
childrenPropsGetter = _cellPropLayer$childr === void 0 ? function (p) {
|
|
216
|
+
return p;
|
|
217
|
+
} : _cellPropLayer$childr,
|
|
218
|
+
other = (0, _objectWithoutProperties2["default"])(cellPropLayer, _excluded);
|
|
219
|
+
var propsCell = (0, _assignProps2["default"])(other, props);
|
|
220
|
+
props = (0, _assignProps2["default"])(childrenPropsGetter(propsCell, rowData, index), propsCell);
|
|
221
|
+
}
|
|
222
|
+
} catch (err) {
|
|
223
|
+
_iterator.e(err);
|
|
224
|
+
} finally {
|
|
225
|
+
_iterator.f();
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SCell, _ref2.cn("SCell", _objectSpread(_objectSpread({
|
|
156
229
|
"key": cell.name
|
|
157
230
|
}, props), {}, {
|
|
158
231
|
"fixed": cell.fixed,
|
|
159
232
|
"theme": props.theme,
|
|
160
233
|
"use": use
|
|
161
|
-
})))
|
|
234
|
+
})));
|
|
162
235
|
}
|
|
163
|
-
|
|
164
|
-
return acc;
|
|
165
236
|
}, []);
|
|
166
237
|
}
|
|
238
|
+
}, {
|
|
239
|
+
key: "renderRow",
|
|
240
|
+
value: function renderRow(cells, _ref6) {
|
|
241
|
+
var _ref3;
|
|
242
|
+
|
|
243
|
+
var dataIndex = _ref6.dataIndex,
|
|
244
|
+
topOffset = _ref6.topOffset,
|
|
245
|
+
nested = _ref6.nested;
|
|
246
|
+
var SRow = _flexBox.Box;
|
|
247
|
+
var _this$asProps2 = this.asProps,
|
|
248
|
+
styles = _this$asProps2.styles,
|
|
249
|
+
rowPropsLayers = _this$asProps2.rowPropsLayers,
|
|
250
|
+
uniqueKey = _this$asProps2.uniqueKey,
|
|
251
|
+
virtualScroll = _this$asProps2.virtualScroll;
|
|
252
|
+
var rowHeightFromProps = (0, _typeof2["default"])(virtualScroll) === 'object' && virtualScroll?.rowHeight;
|
|
253
|
+
var rowData = cells.flatRowData || getCellsByColumn(cells);
|
|
254
|
+
var key = rowData[uniqueKey] ? String(rowData[uniqueKey]) : "row_".concat(dataIndex);
|
|
255
|
+
var needToMeasureHeight = dataIndex === 0 && !nested && !rowHeightFromProps;
|
|
256
|
+
var props = {
|
|
257
|
+
children: this.renderCells(cells, rowData, dataIndex),
|
|
258
|
+
theme: undefined,
|
|
259
|
+
active: undefined,
|
|
260
|
+
positioned: topOffset !== undefined,
|
|
261
|
+
top: topOffset,
|
|
262
|
+
ref: needToMeasureHeight ? this.firstRowRef : undefined,
|
|
263
|
+
key: key
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
var _iterator2 = _createForOfIteratorHelper(rowPropsLayers),
|
|
267
|
+
_step2;
|
|
268
|
+
|
|
269
|
+
try {
|
|
270
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
271
|
+
var rowPropsLayer = _step2.value;
|
|
272
|
+
var _rowPropsLayer$childr = rowPropsLayer.childrenPropsGetter,
|
|
273
|
+
childrenPropsGetter = _rowPropsLayer$childr === void 0 ? function (p) {
|
|
274
|
+
return p;
|
|
275
|
+
} : _rowPropsLayer$childr,
|
|
276
|
+
other = (0, _objectWithoutProperties2["default"])(rowPropsLayer, _excluded2);
|
|
277
|
+
var propsRow = (0, _assignProps2["default"])(other, props);
|
|
278
|
+
props = (0, _assignProps2["default"])(childrenPropsGetter(propsRow, rowData, dataIndex), propsRow);
|
|
279
|
+
}
|
|
280
|
+
} catch (err) {
|
|
281
|
+
_iterator2.e(err);
|
|
282
|
+
} finally {
|
|
283
|
+
_iterator2.f();
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
return _ref3 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SRow, _ref3.cn("SRow", _objectSpread({}, props)));
|
|
287
|
+
}
|
|
288
|
+
}, {
|
|
289
|
+
key: "renderRows",
|
|
290
|
+
value: function renderRows(rows) {
|
|
291
|
+
var _this3 = this;
|
|
292
|
+
|
|
293
|
+
return rows.map(function (cells, dataIndex) {
|
|
294
|
+
return _this3.renderRow(cells, {
|
|
295
|
+
dataIndex: dataIndex,
|
|
296
|
+
nested: false
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}, {
|
|
301
|
+
key: "renderVirtualizedRows",
|
|
302
|
+
value: function renderVirtualizedRows(rows) {
|
|
303
|
+
var _this4 = this;
|
|
304
|
+
|
|
305
|
+
if (rows.length === 0) return [];
|
|
306
|
+
var virtualScroll = this.asProps.virtualScroll;
|
|
307
|
+
var _this$state = this.state,
|
|
308
|
+
scrollOffset = _this$state.scrollOffset,
|
|
309
|
+
scrollAreaHeight = _this$state.scrollAreaHeight;
|
|
310
|
+
var rowHeight = this.getRowHeight();
|
|
311
|
+
var tollerance = ((0, _typeof2["default"])(virtualScroll) === 'object' ? virtualScroll?.tollerance : 2) ?? 2;
|
|
312
|
+
var startIndex = Math.max(Math.floor(scrollOffset / rowHeight) - tollerance, 0);
|
|
313
|
+
var lastIndex = Math.min(Math.ceil((scrollOffset + scrollAreaHeight) / rowHeight) + tollerance, rows.length);
|
|
314
|
+
var rowHeightFromProps = (0, _typeof2["default"])(virtualScroll) === 'object' && virtualScroll?.rowHeight;
|
|
315
|
+
var needToMeasureFirstRowHeight = !rowHeightFromProps;
|
|
316
|
+
var firstRow = {
|
|
317
|
+
cells: rows[0],
|
|
318
|
+
dataIndex: 0,
|
|
319
|
+
topOffset: 0
|
|
320
|
+
};
|
|
321
|
+
var visibleRows = rowHeight !== undefined ? rows.slice(startIndex, lastIndex) : [];
|
|
322
|
+
var processedVisibleRows = visibleRows.map(function (cells, index) {
|
|
323
|
+
return {
|
|
324
|
+
cells: cells,
|
|
325
|
+
dataIndex: startIndex + index,
|
|
326
|
+
topOffset: rowHeight * (startIndex + index)
|
|
327
|
+
};
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
if (needToMeasureFirstRowHeight && startIndex !== 0) {
|
|
331
|
+
processedVisibleRows.unshift(firstRow);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
return processedVisibleRows.map(function (_ref7) {
|
|
335
|
+
var cells = _ref7.cells,
|
|
336
|
+
dataIndex = _ref7.dataIndex,
|
|
337
|
+
topOffset = _ref7.topOffset;
|
|
338
|
+
return _this4.renderRow(cells, {
|
|
339
|
+
dataIndex: dataIndex,
|
|
340
|
+
topOffset: topOffset,
|
|
341
|
+
nested: false
|
|
342
|
+
});
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
}, {
|
|
346
|
+
key: "componentWillUnmount",
|
|
347
|
+
value: function componentWillUnmount() {
|
|
348
|
+
this.firstRowResizeObserver?.disconnect();
|
|
349
|
+
}
|
|
167
350
|
}, {
|
|
168
351
|
key: "render",
|
|
169
352
|
value: function render() {
|
|
170
353
|
var _ref = this.asProps,
|
|
171
|
-
_ref4
|
|
354
|
+
_ref4,
|
|
355
|
+
_this5 = this;
|
|
172
356
|
|
|
173
357
|
var SBody = _flexBox.Box;
|
|
174
358
|
var SBodyWrapper = _flexBox.Box;
|
|
175
359
|
var SScrollAreaBar = _scrollArea["default"].Bar;
|
|
360
|
+
var SHeightHold = _flexBox.Box;
|
|
176
361
|
var _this$asProps3 = this.asProps,
|
|
177
362
|
Children = _this$asProps3.Children,
|
|
178
363
|
styles = _this$asProps3.styles,
|
|
179
364
|
rows = _this$asProps3.rows,
|
|
180
365
|
columns = _this$asProps3.columns,
|
|
181
366
|
$scrollRef = _this$asProps3.$scrollRef,
|
|
367
|
+
virtualScroll = _this$asProps3.virtualScroll,
|
|
182
368
|
onResize = _this$asProps3.onResize;
|
|
369
|
+
var columnsInitialized = columns.reduce(function (sum, _ref8) {
|
|
370
|
+
var width = _ref8.width;
|
|
371
|
+
return sum + width;
|
|
372
|
+
}, 0) > 0 || testEnv;
|
|
183
373
|
|
|
184
374
|
var _getScrollOffsetValue = (0, _utils.getScrollOffsetValue)(columns),
|
|
185
375
|
_getScrollOffsetValue2 = (0, _slicedToArray2["default"])(_getScrollOffsetValue, 2),
|
|
@@ -187,19 +377,28 @@ var Body = /*#__PURE__*/function (_Component) {
|
|
|
187
377
|
offsetRightSum = _getScrollOffsetValue2[1];
|
|
188
378
|
|
|
189
379
|
var offsetSum = offsetLeftSum + offsetRightSum;
|
|
190
|
-
var
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
380
|
+
var rowHeight = this.getRowHeight();
|
|
381
|
+
var holdHeight = rowHeight !== undefined && virtualScroll ? rowHeight * rows.length : undefined;
|
|
382
|
+
|
|
383
|
+
if (virtualScroll && columnsInitialized && !rowHeight) {
|
|
384
|
+
new Promise(function () {
|
|
385
|
+
return _this5.setupRowSizeObserver();
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
|
|
194
389
|
return _ref4 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SBodyWrapper, _ref4.cn("SBodyWrapper", {}), /*#__PURE__*/_react["default"].createElement(_scrollArea["default"], _ref4.cn("ScrollArea", {
|
|
195
390
|
"shadow": true,
|
|
196
391
|
"styles": scrollStyles,
|
|
197
392
|
"use:left": "".concat(offsetLeftSum, "px"),
|
|
198
393
|
"use:right": "".concat(offsetRightSum, "px"),
|
|
199
|
-
"onResize": onResize
|
|
394
|
+
"onResize": (0, _assignProps2.callAllEventHandlers)(onResize, this.handleScrollAreaResize),
|
|
395
|
+
"onScroll": this.handleScrollAreaScroll
|
|
200
396
|
}), /*#__PURE__*/_react["default"].createElement(_scrollArea["default"].Container, {
|
|
201
397
|
ref: $scrollRef
|
|
202
|
-
}, /*#__PURE__*/_react["default"].createElement(SBody, _ref4.cn("SBody", _objectSpread({}, (0, _core.assignProps)({}, _ref))),
|
|
398
|
+
}, /*#__PURE__*/_react["default"].createElement(SBody, _ref4.cn("SBody", _objectSpread({}, (0, _core.assignProps)({}, _ref))), holdHeight && /*#__PURE__*/_react["default"].createElement(SHeightHold, _ref4.cn("SHeightHold", {
|
|
399
|
+
"hMin": holdHeight,
|
|
400
|
+
"aria-hidden": true
|
|
401
|
+
})), columnsInitialized && !virtualScroll ? this.renderRows(rows) : null, columnsInitialized && virtualScroll ? this.renderVirtualizedRows(rows) : null)), /*#__PURE__*/_react["default"].createElement(SScrollAreaBar, _ref4.cn("SScrollAreaBar", {
|
|
203
402
|
"orientation": "horizontal",
|
|
204
403
|
"left": "".concat(offsetLeftSum, "px"),
|
|
205
404
|
"right": "".concat(offsetRightSum, "px"),
|
package/lib/cjs/Body.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Body.jsx"],"names":["testEnv","process","env","NODE_ENV","getCellsByColumn","row","reduce","acc","cell","name","Array","isArray","concat","data","Body","rows","SRow","Box","asProps","styles","$propsRow","map","index","cellsByColumn","_row","props","getRowProps","p","other","propsRow","children","renderCells","theme","active","SCell","Flex","columns","use","renderRows","column","find","c","value","vars","cssVar","n","rendersCell","getCellProps","propsCell","justifyContent","style","length","join","push","fixed","SBody","SBodyWrapper","SScrollAreaBar","ScrollArea","Bar","Children","$scrollRef","onResize","offsetLeftSum","offsetRightSum","offsetSum","columnsInitialized","sum","width","scrollStyles","origin","Component"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Component, sstyled, Root } from '@semcore/core';\nimport { Box, Flex } from '@semcore/flex-box';\nimport ScrollArea from '@semcore/scroll-area';\nimport { getFixedStyle, getScrollOffsetValue } from './utils';\nimport assignProps from '@semcore/utils/lib/assignProps';\n\nimport scrollStyles from './style/scroll-area.shadow.css';\n\nconst testEnv = process.env.NODE_ENV === 'test';\n\nfunction getCellsByColumn(row) {\n return row.reduce((acc, cell) => {\n acc[cell.name] = acc[cell.name]\n ? Array.isArray(acc[cell.name])\n ? acc[cell.name].concat(cell.data)\n : [acc[cell.name], cell.data]\n : cell.data;\n return acc;\n }, {});\n}\n\nclass Body extends Component {\n renderRows(rows) {\n const SRow = Box;\n const { styles, $propsRow } = this.asProps;\n\n return rows.map((row, index) => {\n const cellsByColumn = row._row || getCellsByColumn(row);\n const props = $propsRow.reduce(\n (acc, { getRowProps = (p) => p, ...other }) => {\n const propsRow = assignProps(other, acc);\n return assignProps(getRowProps(propsRow, cellsByColumn, index), propsRow);\n },\n {\n children: this.renderCells(row, cellsByColumn, index),\n },\n );\n return sstyled(styles)(\n <SRow key={index} theme={props.theme} active={props.active} {...props} />,\n );\n });\n }\n\n renderCells(row, cellsByColumn, index) {\n const SCell = Flex;\n const { styles, columns, use } = this.asProps;\n return row.reduce((acc, cell) => {\n if (Array.isArray(cell)) {\n acc = acc.concat(<div>{this.renderRows(cell)}</div>);\n } else {\n const column = columns.find((c) => c.name === cell.name);\n const [name, value] = getFixedStyle(cell, columns);\n const vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(\n (n) => `var(${n})`,\n );\n const props = (cell.rendersCell || []).reduce(\n (acc, { getCellProps = (p) => p, ...other }) => {\n const propsCell = assignProps(other, acc);\n return assignProps(getCellProps(propsCell, cellsByColumn, index), propsCell);\n },\n {\n name: cell.name,\n children: cell.data,\n justifyContent: column?.props?.justifyContent,\n style: {\n [name]: value,\n width: vars.length === 1 ? vars[0] : `calc(${vars.join(' + ')})`,\n },\n },\n );\n\n acc.push(\n sstyled(styles)(\n <SCell key={cell.name} {...props} fixed={cell.fixed} theme={props.theme} use={use} />,\n ),\n );\n }\n return acc;\n }, []);\n }\n\n render() {\n const SBody = Root;\n const SBodyWrapper = Box;\n const SScrollAreaBar = ScrollArea.Bar;\n const { Children, styles, rows, columns, $scrollRef, onResize } = this.asProps;\n\n const [offsetLeftSum, offsetRightSum] = getScrollOffsetValue(columns);\n const offsetSum = offsetLeftSum + offsetRightSum;\n const columnsInitialized = columns.reduce((sum, { width }) => sum + width, 0) > 0 || testEnv;\n\n return sstyled(styles)(\n <SBodyWrapper>\n <ScrollArea\n shadow\n styles={scrollStyles}\n use:left={`${offsetLeftSum}px`}\n use:right={`${offsetRightSum}px`}\n onResize={onResize}\n >\n <ScrollArea.Container ref={$scrollRef}>\n <SBody render={Box}>{columnsInitialized ? this.renderRows(rows) : null}</SBody>\n </ScrollArea.Container>\n <SScrollAreaBar\n orientation=\"horizontal\"\n left={`${offsetLeftSum}px`}\n right={`${offsetRightSum}px`}\n offsetSum={`${offsetSum}px`}\n />\n <SScrollAreaBar orientation=\"vertical\" />\n </ScrollArea>\n {Children.origin}\n </SBodyWrapper>,\n );\n }\n}\n\nexport default Body;\n"],"file":"Body.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/Body.tsx"],"names":["testEnv","process","env","NODE_ENV","getCellsByColumn","cells","flattenCells","flat","Object","fromEntries","map","cell","name","data","Body","rowHeight","undefined","scrollAreaHeight","scrollOffset","React","createRef","virtualScroll","asProps","rowHeightFromProps","state","entries","contentRect","height","setState","oldState","event","target","scrollTop","firstRowRef","current","firstRowResizeObserver","ResizeObserver","handleFirstRowResize","observe","rowData","index","SCell","Flex","styles","columns","use","Array","isArray","renderRows","column","find","c","value","vars","cssVar","props","children","justifyContent","style","width","length","join","cellPropsLayers","cellPropLayer","childrenPropsGetter","p","other","propsCell","fixed","theme","dataIndex","topOffset","nested","SRow","Box","rowPropsLayers","uniqueKey","flatRowData","key","String","needToMeasureHeight","renderCells","active","positioned","top","ref","rowPropsLayer","propsRow","rows","renderRow","getRowHeight","tollerance","startIndex","Math","max","floor","lastIndex","min","ceil","needToMeasureFirstRowHeight","firstRow","visibleRows","slice","processedVisibleRows","unshift","disconnect","SBody","SBodyWrapper","SScrollAreaBar","ScrollArea","Bar","SHeightHold","Children","$scrollRef","onResize","columnsInitialized","reduce","sum","offsetLeftSum","offsetRightSum","offsetSum","holdHeight","Promise","setupRowSizeObserver","scrollStyles","handleScrollAreaResize","handleScrollAreaScroll","renderVirtualizedRows","origin","Component"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Component, sstyled, Root } from '@semcore/core';\nimport { Box, Flex, IBoxProps } from '@semcore/flex-box';\nimport ScrollArea from '@semcore/scroll-area';\nimport { getFixedStyle, getScrollOffsetValue } from './utils';\nimport { RowData, Column, NestedCells, PropsLayer, Cell } from './types';\nimport assignProps, { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport scrollStyles from './style/scroll-area.shadow.css';\nimport syncScroll from '@semcore/utils/lib/syncScroll';\nimport trottle from '@semcore/utils/lib/rafTrottle';\n\nconst testEnv = process.env.NODE_ENV === 'test';\n\nconst getCellsByColumn = (cells: NestedCells): RowData => {\n const flattenCells = cells.flat(20) as Cell[];\n return Object.fromEntries(flattenCells.map((cell) => [cell.name, cell.data]));\n};\n\ntype AsProps = {\n rows: NestedCells[];\n columns: Column[];\n $scrollRef: ReturnType<ReturnType<typeof syncScroll>>;\n onResize: ResizeObserverCallback;\n rowPropsLayers: PropsLayer[];\n use: 'primary' | 'secondary';\n uniqueKey: string;\n virtualScroll?: boolean | { tollerance?: number; rowHeight?: number };\n};\n\ntype State = {\n rowHeight: number | undefined;\n scrollAreaHeight: undefined | number;\n scrollOffset: number;\n};\n\nclass Body extends Component<AsProps, State> {\n state: State = {\n rowHeight: undefined,\n scrollAreaHeight: undefined,\n scrollOffset: 0,\n };\n\n firstRowRef = React.createRef<HTMLElement>();\n firstRowResizeObserver: ResizeObserver | null = null;\n\n getRowHeight = () => {\n const { virtualScroll } = this.asProps;\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n return rowHeightFromProps || this.state.rowHeight;\n };\n\n renderCells(cells: NestedCells, rowData: RowData, index: number) {\n const SCell = Flex;\n const { styles, columns, use } = this.asProps;\n return cells.map((cell) => {\n if (Array.isArray(cell)) {\n return <div>{this.renderRows(cell as NestedCells[])}</div>;\n } else {\n const column = columns.find((c) => c.name === cell.name);\n const [name, value] = getFixedStyle(cell, columns);\n const vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(\n (name) => `var(${name})`,\n );\n type CellProps = IBoxProps & {\n name: string;\n children: React.ReactNode;\n style: React.CSSProperties;\n };\n\n let props: CellProps = {\n name: cell.name,\n children: <>{cell.data}</>,\n justifyContent: column?.props?.justifyContent,\n style: {\n width: vars.length === 1 ? vars[0] : `calc(${vars.join(' + ')})`,\n },\n };\n if (name !== undefined && value !== undefined) {\n props.style[name] = value;\n }\n\n for (const cellPropLayer of cell.cellPropsLayers || []) {\n const { childrenPropsGetter = (p) => p, ...other } = cellPropLayer;\n const propsCell = assignProps(other, props);\n props = assignProps(childrenPropsGetter(propsCell, rowData, index), propsCell);\n }\n\n return sstyled(styles)(\n <SCell key={cell.name} {...props} fixed={cell.fixed} theme={props.theme} use={use} />,\n ) as React.ReactElement;\n }\n }, [] as React.ReactElement[]);\n }\n\n renderRow(\n cells: NestedCells,\n { dataIndex, topOffset, nested }: { dataIndex: number; topOffset?: number; nested: boolean },\n ) {\n const SRow = Box;\n const { styles, rowPropsLayers, uniqueKey, virtualScroll } = this.asProps;\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n\n const rowData = cells.flatRowData || getCellsByColumn(cells);\n const key = rowData[uniqueKey] ? String(rowData[uniqueKey]) : `row_${dataIndex}`;\n const needToMeasureHeight = dataIndex === 0 && !nested && !rowHeightFromProps;\n\n let props = {\n children: this.renderCells(cells, rowData, dataIndex),\n theme: undefined,\n active: undefined,\n positioned: topOffset !== undefined,\n top: topOffset,\n ref: needToMeasureHeight ? this.firstRowRef : undefined,\n key,\n };\n\n for (const rowPropsLayer of rowPropsLayers) {\n const { childrenPropsGetter = (p) => p, ...other } = rowPropsLayer;\n const propsRow = assignProps(other, props);\n props = assignProps(childrenPropsGetter(propsRow, rowData, dataIndex), propsRow);\n }\n\n return sstyled(styles)(<SRow {...props} />);\n }\n\n renderRows(rows: NestedCells[]) {\n return rows.map((cells, dataIndex) => this.renderRow(cells, { dataIndex, nested: false }));\n }\n\n renderVirtualizedRows(rows: NestedCells[]) {\n if (rows.length === 0) return [];\n\n const { virtualScroll } = this.asProps;\n const { scrollOffset, scrollAreaHeight } = this.state;\n const rowHeight = this.getRowHeight();\n\n const tollerance = (typeof virtualScroll === 'object' ? virtualScroll?.tollerance : 2) ?? 2;\n const startIndex = Math.max(Math.floor(scrollOffset / rowHeight!) - tollerance, 0);\n const lastIndex = Math.min(\n Math.ceil((scrollOffset + scrollAreaHeight!) / rowHeight!) + tollerance,\n rows.length,\n );\n\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n const needToMeasureFirstRowHeight = !rowHeightFromProps;\n\n const firstRow = { cells: rows[0], dataIndex: 0, topOffset: 0 };\n const visibleRows = rowHeight !== undefined ? rows.slice(startIndex, lastIndex) : [];\n const processedVisibleRows = visibleRows.map((cells, index) => ({\n cells,\n dataIndex: startIndex + index,\n topOffset: rowHeight! * (startIndex + index),\n }));\n if (needToMeasureFirstRowHeight && startIndex !== 0) {\n processedVisibleRows.unshift(firstRow);\n }\n\n return processedVisibleRows.map(({ cells, dataIndex, topOffset }) =>\n this.renderRow(cells, { dataIndex, topOffset, nested: false }),\n );\n }\n\n handleFirstRowResize = trottle((entries: ResizeObserverEntry[]) => {\n const { contentRect } = entries[0];\n const { height } = contentRect;\n this.setState((oldState: State) => {\n if (oldState.rowHeight === height) return oldState;\n return { rowHeight: height };\n });\n });\n\n handleScrollAreaResize = trottle((entries: ResizeObserverEntry[]) => {\n const { virtualScroll } = this.asProps;\n if (!virtualScroll) return;\n const { contentRect } = entries[0];\n const { height } = contentRect;\n this.setState((oldState: State) => {\n if (oldState.scrollAreaHeight === height) return oldState;\n return { scrollAreaHeight: height };\n });\n });\n\n handleScrollAreaScroll = (event: React.SyntheticEvent<HTMLElement>) => {\n const { scrollTop } = event.target as HTMLElement;\n const { virtualScroll } = this.asProps;\n if (virtualScroll) {\n this.setState((oldState: State) => {\n if (oldState.scrollOffset === scrollTop) return oldState;\n return { scrollOffset: scrollTop };\n });\n }\n };\n\n setupRowSizeObserver = () => {\n if (!this.firstRowRef.current) return;\n if (!this.asProps.virtualScroll) return;\n this.firstRowResizeObserver = new ResizeObserver(this.handleFirstRowResize);\n this.firstRowResizeObserver.observe(this.firstRowRef.current);\n };\n\n componentWillUnmount() {\n this.firstRowResizeObserver?.disconnect();\n }\n\n render() {\n const SBody = Root;\n const SBodyWrapper = Box;\n const SScrollAreaBar = ScrollArea.Bar;\n const SHeightHold = Box;\n const { Children, styles, rows, columns, $scrollRef, virtualScroll, onResize } = this.asProps;\n\n const columnsInitialized = columns.reduce((sum, { width }) => sum + width, 0) > 0 || testEnv;\n\n const [offsetLeftSum, offsetRightSum] = getScrollOffsetValue(columns);\n const offsetSum = offsetLeftSum + offsetRightSum;\n\n const rowHeight = this.getRowHeight();\n const holdHeight =\n rowHeight !== undefined && virtualScroll ? rowHeight * rows.length : undefined;\n\n if (virtualScroll && columnsInitialized && !rowHeight) {\n new Promise(() => this.setupRowSizeObserver());\n }\n\n return sstyled(styles)(\n <SBodyWrapper>\n <ScrollArea\n shadow\n styles={scrollStyles}\n use:left={`${offsetLeftSum}px`}\n use:right={`${offsetRightSum}px`}\n onResize={callAllEventHandlers(onResize, this.handleScrollAreaResize)}\n onScroll={this.handleScrollAreaScroll}\n >\n <ScrollArea.Container ref={$scrollRef}>\n <SBody render={Box}>\n {holdHeight && <SHeightHold hMin={holdHeight} aria-hidden={true} />}\n {columnsInitialized && !virtualScroll ? this.renderRows(rows) : null}\n {columnsInitialized && virtualScroll ? this.renderVirtualizedRows(rows) : null}\n </SBody>\n </ScrollArea.Container>\n <SScrollAreaBar\n orientation=\"horizontal\"\n left={`${offsetLeftSum}px`}\n right={`${offsetRightSum}px`}\n offsetSum={`${offsetSum}px`}\n />\n <SScrollAreaBar orientation=\"vertical\" />\n </ScrollArea>\n {Children.origin}\n </SBodyWrapper>,\n );\n }\n}\n\nexport default Body;\n"],"file":"Body.js"}
|