@semcore/data-table 3.7.29 → 3.8.0

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 CHANGED
@@ -2,24 +2,20 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
- ## [3.7.29] - 2023-03-28
5
+ ## [3.8.0] - 2023-03-31
6
6
 
7
7
  ### Changed
8
8
 
9
- - Version patch update due to children dependencies update (`@semcore/utils` [3.49.1 ~> 3.50.0]).
10
-
11
- ## [3.7.19] - 2023-03-01
9
+ - Changed the presentation of the sort icon. Now it always runs into the text.
12
10
 
13
- ## [3.7.18] - 2023-02-24
11
+ ## [3.7.29] - 2023-03-28
14
12
 
15
13
  ### Changed
16
14
 
17
- - Version patch update due to children dependencies update (`@semcore/icon` [3.12.0 ~> 3.13.0]).
15
+ - Version patch update due to children dependencies update (`@semcore/utils` [3.49.1 ~> 3.50.0]).
18
16
 
19
17
  ## [3.7.17] - 2023-02-22
20
18
 
21
- ## [3.7.16] - 2023-02-20
22
-
23
19
  ### Fixed
24
20
 
25
21
  - Fixed empty table body with virtual scroll enabled displays unexpected "0".
@@ -32,10 +28,6 @@ CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangel
32
28
 
33
29
  ## [3.7.13] - 2023-02-13
34
30
 
35
- ## [3.7.12] - 2023-02-09
36
-
37
- ## [3.7.11] - 2023-01-27
38
-
39
31
  ### Fixed
40
32
 
41
33
  - Fixed view of cells when using cell grouping and columns at the same time.
package/lib/cjs/Body.js CHANGED
@@ -1,94 +1,56 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = void 0;
11
-
12
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
-
14
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
15
-
16
11
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
17
-
18
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
-
20
13
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
21
-
22
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
23
-
24
15
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
25
-
26
16
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
27
-
28
17
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
29
-
30
18
  var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
31
-
32
19
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
33
-
34
20
  var _core = require("@semcore/core");
35
-
36
21
  var _react = _interopRequireDefault(require("react"));
37
-
38
22
  var _flexBox = require("@semcore/flex-box");
39
-
40
23
  var _scrollArea = _interopRequireDefault(require("@semcore/scroll-area"));
41
-
42
24
  var _utils = require("./utils");
43
-
44
25
  var _assignProps2 = _interopRequireWildcard(require("@semcore/utils/lib/assignProps"));
45
-
46
26
  var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-polyfill"));
47
-
48
27
  var _rafTrottle = _interopRequireDefault(require("@semcore/utils/lib/rafTrottle"));
49
-
50
28
  var _excluded = ["childrenPropsGetter"],
51
- _excluded2 = ["childrenPropsGetter"];
52
-
29
+ _excluded2 = ["childrenPropsGetter"];
53
30
  /*__reshadow-styles__:"./style/scroll-area.shadow.css"*/
54
- var scrollStyles = (
55
- /*__reshadow_css_start__*/
56
- _core.sstyled.insert(
57
- /*__inner_css_start__*/
58
- ".___SShadowHorizontal_cog1g_gg_:before{left:var(--left_cog1g)!important}.___SShadowHorizontal_cog1g_gg_:after{right:var(--right_cog1g)!important}.___SContainer_cog1g_gg_.__disabledScroll_cog1g_gg_{overflow:visible}"
59
- /*__inner_css_end__*/
60
- , "cog1g_gg_")
61
- /*__reshadow_css_end__*/
62
- , {
63
- "__SShadowHorizontal": "___SShadowHorizontal_cog1g_gg_",
64
- "--left": "--left_cog1g",
65
- "--right": "--right_cog1g",
66
- "__SContainer": "___SContainer_cog1g_gg_",
67
- "_disabledScroll": "__disabledScroll_cog1g_gg_"
31
+ var scrollStyles = ( /*__reshadow_css_start__*/_core.sstyled.insert( /*__inner_css_start__*/".___SShadowHorizontal_hmn2a_gg_:before{left:var(--left_hmn2a)!important}.___SShadowHorizontal_hmn2a_gg_:after{right:var(--right_hmn2a)!important}.___SContainer_hmn2a_gg_.__disabledScroll_hmn2a_gg_{overflow:visible}" /*__inner_css_end__*/, "hmn2a_gg_") /*__reshadow_css_end__*/, {
32
+ "__SShadowHorizontal": "___SShadowHorizontal_hmn2a_gg_",
33
+ "--left": "--left_hmn2a",
34
+ "--right": "--right_hmn2a",
35
+ "__SContainer": "___SContainer_hmn2a_gg_",
36
+ "_disabledScroll": "__disabledScroll_hmn2a_gg_"
68
37
  });
69
38
  var testEnv = process.env.NODE_ENV === 'test';
70
-
71
39
  var getCellsByColumn = function getCellsByColumn(cells) {
72
40
  var flattenCells = cells.flat(20);
73
41
  return Object.fromEntries(flattenCells.map(function (cell) {
74
42
  return [cell.name, cell.data];
75
43
  }));
76
44
  };
77
-
78
45
  var Body = /*#__PURE__*/function (_Component) {
79
46
  (0, _inherits2["default"])(Body, _Component);
80
-
81
47
  var _super = (0, _createSuper2["default"])(Body);
82
-
83
48
  function Body() {
84
49
  var _this;
85
-
86
50
  (0, _classCallCheck2["default"])(this, Body);
87
-
88
51
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
89
52
  args[_key] = arguments[_key];
90
53
  }
91
-
92
54
  _this = _super.call.apply(_super, [this].concat(args));
93
55
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
94
56
  rowHeight: undefined,
@@ -105,7 +67,6 @@ var Body = /*#__PURE__*/function (_Component) {
105
67
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleFirstRowResize", (0, _rafTrottle["default"])(function (entries) {
106
68
  var contentRect = entries[0].contentRect;
107
69
  var height = contentRect.height;
108
-
109
70
  _this.setState(function (oldState) {
110
71
  if (oldState.rowHeight === height) return oldState;
111
72
  return {
@@ -118,7 +79,6 @@ var Body = /*#__PURE__*/function (_Component) {
118
79
  if (!virtualScroll) return;
119
80
  var contentRect = entries[0].contentRect;
120
81
  var height = contentRect.height;
121
-
122
82
  _this.setState(function (oldState) {
123
83
  if (oldState.scrollAreaHeight === height) return oldState;
124
84
  return {
@@ -128,9 +88,8 @@ var Body = /*#__PURE__*/function (_Component) {
128
88
  }));
129
89
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleScrollAreaScroll", function (event) {
130
90
  var _ref6 = event.target,
131
- scrollTop = _ref6.scrollTop;
91
+ scrollTop = _ref6.scrollTop;
132
92
  var virtualScroll = _this.asProps.virtualScroll;
133
-
134
93
  if (virtualScroll) {
135
94
  _this.setState(function (oldState) {
136
95
  if (oldState.scrollOffset === scrollTop) return oldState;
@@ -144,26 +103,22 @@ var Body = /*#__PURE__*/function (_Component) {
144
103
  if (!_this.firstRowRef.current) return;
145
104
  if (!_this.asProps.virtualScroll) return;
146
105
  _this.firstRowResizeObserver = new _resizeObserverPolyfill["default"](_this.handleFirstRowResize);
147
-
148
106
  _this.firstRowResizeObserver.observe(_this.firstRowRef.current);
149
107
  });
150
108
  return _this;
151
109
  }
152
-
153
110
  (0, _createClass2["default"])(Body, [{
154
111
  key: "renderCells",
155
112
  value: function renderCells(cells, rowData, index) {
156
113
  var _this2 = this;
157
-
158
114
  var SCell = _flexBox.Flex;
159
115
  var _this$asProps = this.asProps,
160
- styles = _this$asProps.styles,
161
- columns = _this$asProps.columns,
162
- use = _this$asProps.use;
116
+ styles = _this$asProps.styles,
117
+ columns = _this$asProps.columns,
118
+ use = _this$asProps.use;
163
119
  return cells.map(function (cell) {
164
120
  if (Array.isArray(cell)) {
165
121
  var _ref2;
166
-
167
122
  var SGroupCell = 'div';
168
123
  return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SGroupCell, _ref2.cn("SGroupCell", {
169
124
  "role": "rowgroup",
@@ -171,7 +126,6 @@ var Body = /*#__PURE__*/function (_Component) {
171
126
  }), _this2.renderRows(cell));
172
127
  } else {
173
128
  var _ref3, _column$props, _column$props2;
174
-
175
129
  var nameParts = cell.name.split('/');
176
130
  var firstName = nameParts[0];
177
131
  var lastName = nameParts[nameParts.length - 1];
@@ -184,12 +138,10 @@ var Body = /*#__PURE__*/function (_Component) {
184
138
  var column = columns.find(function (c) {
185
139
  return c.name === cell.name;
186
140
  });
187
-
188
141
  var _getFixedStyle = (0, _utils.getFixedStyle)(cell, columns),
189
- _getFixedStyle2 = (0, _slicedToArray2["default"])(_getFixedStyle, 2),
190
- name = _getFixedStyle2[0],
191
- value = _getFixedStyle2[1];
192
-
142
+ _getFixedStyle2 = (0, _slicedToArray2["default"])(_getFixedStyle, 2),
143
+ name = _getFixedStyle2[0],
144
+ value = _getFixedStyle2[1];
193
145
  var vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(function (name) {
194
146
  return "var(".concat(name, ")");
195
147
  });
@@ -204,22 +156,19 @@ var Body = /*#__PURE__*/function (_Component) {
204
156
  width: vars.length === 1 ? vars[0] : "calc(".concat(vars.join(' + '), ")")
205
157
  }
206
158
  };
207
-
208
159
  if (name !== undefined && value !== undefined) {
209
160
  props.style[name] = value;
210
161
  }
211
-
212
162
  var _iterator = (0, _createForOfIteratorHelper2["default"])(cell.cellPropsLayers || []),
213
- _step;
214
-
163
+ _step;
215
164
  try {
216
165
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
217
166
  var cellPropLayer = _step.value;
218
167
  var _cellPropLayer$childr = cellPropLayer.childrenPropsGetter,
219
- childrenPropsGetter = _cellPropLayer$childr === void 0 ? function (p) {
220
- return p;
221
- } : _cellPropLayer$childr,
222
- other = (0, _objectWithoutProperties2["default"])(cellPropLayer, _excluded);
168
+ childrenPropsGetter = _cellPropLayer$childr === void 0 ? function (p) {
169
+ return p;
170
+ } : _cellPropLayer$childr,
171
+ other = (0, _objectWithoutProperties2["default"])(cellPropLayer, _excluded);
223
172
  var propsCell = (0, _assignProps2["default"])(other, props);
224
173
  props = (0, _assignProps2["default"])(childrenPropsGetter(propsCell, rowData, index), propsCell);
225
174
  }
@@ -228,7 +177,6 @@ var Body = /*#__PURE__*/function (_Component) {
228
177
  } finally {
229
178
  _iterator.f();
230
179
  }
231
-
232
180
  return _ref3 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SCell, _ref3.cn("SCell", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
233
181
  "key": cell.name,
234
182
  "role": "cell"
@@ -246,16 +194,15 @@ var Body = /*#__PURE__*/function (_Component) {
246
194
  key: "renderRow",
247
195
  value: function renderRow(cells, _ref7) {
248
196
  var _ref4;
249
-
250
197
  var dataIndex = _ref7.dataIndex,
251
- topOffset = _ref7.topOffset,
252
- nested = _ref7.nested;
198
+ topOffset = _ref7.topOffset,
199
+ nested = _ref7.nested;
253
200
  var SRow = _flexBox.Box;
254
201
  var _this$asProps2 = this.asProps,
255
- styles = _this$asProps2.styles,
256
- rowPropsLayers = _this$asProps2.rowPropsLayers,
257
- uniqueKey = _this$asProps2.uniqueKey,
258
- virtualScroll = _this$asProps2.virtualScroll;
202
+ styles = _this$asProps2.styles,
203
+ rowPropsLayers = _this$asProps2.rowPropsLayers,
204
+ uniqueKey = _this$asProps2.uniqueKey,
205
+ virtualScroll = _this$asProps2.virtualScroll;
259
206
  var rowHeightFromProps = (0, _typeof2["default"])(virtualScroll) === 'object' && (virtualScroll === null || virtualScroll === void 0 ? void 0 : virtualScroll.rowHeight);
260
207
  var rowData = cells.flatRowData || getCellsByColumn(cells);
261
208
  var key = rowData[uniqueKey] ? String(rowData[uniqueKey]) : "row_".concat(dataIndex);
@@ -270,18 +217,16 @@ var Body = /*#__PURE__*/function (_Component) {
270
217
  key: key,
271
218
  'aria-rowindex': dataIndex + 1
272
219
  };
273
-
274
220
  var _iterator2 = (0, _createForOfIteratorHelper2["default"])(rowPropsLayers),
275
- _step2;
276
-
221
+ _step2;
277
222
  try {
278
223
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
279
224
  var rowPropsLayer = _step2.value;
280
225
  var _rowPropsLayer$childr = rowPropsLayer.childrenPropsGetter,
281
- childrenPropsGetter = _rowPropsLayer$childr === void 0 ? function (p) {
282
- return p;
283
- } : _rowPropsLayer$childr,
284
- other = (0, _objectWithoutProperties2["default"])(rowPropsLayer, _excluded2);
226
+ childrenPropsGetter = _rowPropsLayer$childr === void 0 ? function (p) {
227
+ return p;
228
+ } : _rowPropsLayer$childr,
229
+ other = (0, _objectWithoutProperties2["default"])(rowPropsLayer, _excluded2);
285
230
  var propsRow = (0, _assignProps2["default"])(other, props);
286
231
  props = (0, _assignProps2["default"])(childrenPropsGetter(propsRow, rowData, dataIndex), propsRow);
287
232
  }
@@ -290,7 +235,6 @@ var Body = /*#__PURE__*/function (_Component) {
290
235
  } finally {
291
236
  _iterator2.f();
292
237
  }
293
-
294
238
  return _ref4 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SRow, _ref4.cn("SRow", (0, _objectSpread2["default"])({
295
239
  "role": "row"
296
240
  }, props)));
@@ -299,7 +243,6 @@ var Body = /*#__PURE__*/function (_Component) {
299
243
  key: "renderRows",
300
244
  value: function renderRows(rows) {
301
245
  var _this3 = this;
302
-
303
246
  return rows.map(function (cells, dataIndex) {
304
247
  return _this3.renderRow(cells, {
305
248
  dataIndex: dataIndex,
@@ -311,13 +254,12 @@ var Body = /*#__PURE__*/function (_Component) {
311
254
  key: "renderVirtualizedRows",
312
255
  value: function renderVirtualizedRows(rows) {
313
256
  var _ref8,
314
- _this4 = this;
315
-
257
+ _this4 = this;
316
258
  if (rows.length === 0) return [];
317
259
  var virtualScroll = this.asProps.virtualScroll;
318
260
  var _this$state = this.state,
319
- scrollOffset = _this$state.scrollOffset,
320
- scrollAreaHeight = _this$state.scrollAreaHeight;
261
+ scrollOffset = _this$state.scrollOffset,
262
+ scrollAreaHeight = _this$state.scrollAreaHeight;
321
263
  var rowHeight = this.getRowHeight();
322
264
  var tollerance = (_ref8 = (0, _typeof2["default"])(virtualScroll) === 'object' ? virtualScroll === null || virtualScroll === void 0 ? void 0 : virtualScroll.tollerance : 2) !== null && _ref8 !== void 0 ? _ref8 : 2;
323
265
  var startIndex = Math.max(Math.floor(scrollOffset / rowHeight) - tollerance, 0);
@@ -337,15 +279,13 @@ var Body = /*#__PURE__*/function (_Component) {
337
279
  topOffset: rowHeight * (startIndex + index)
338
280
  };
339
281
  });
340
-
341
282
  if (needToMeasureFirstRowHeight && startIndex !== 0) {
342
283
  processedVisibleRows.unshift(firstRow);
343
284
  }
344
-
345
285
  return processedVisibleRows.map(function (_ref9) {
346
286
  var cells = _ref9.cells,
347
- dataIndex = _ref9.dataIndex,
348
- topOffset = _ref9.topOffset;
287
+ dataIndex = _ref9.dataIndex,
288
+ topOffset = _ref9.topOffset;
349
289
  return _this4.renderRow(cells, {
350
290
  dataIndex: dataIndex,
351
291
  topOffset: topOffset,
@@ -357,50 +297,44 @@ var Body = /*#__PURE__*/function (_Component) {
357
297
  key: "componentWillUnmount",
358
298
  value: function componentWillUnmount() {
359
299
  var _this$firstRowResizeO;
360
-
361
300
  (_this$firstRowResizeO = this.firstRowResizeObserver) === null || _this$firstRowResizeO === void 0 ? void 0 : _this$firstRowResizeO.disconnect();
362
301
  }
363
302
  }, {
364
303
  key: "render",
365
304
  value: function render() {
366
305
  var _ref = this.asProps,
367
- _ref5,
368
- _this5 = this;
369
-
306
+ _ref5,
307
+ _this5 = this;
370
308
  var SBody = _flexBox.Box;
371
309
  var SBodyWrapper = _flexBox.Box;
372
310
  var SScrollAreaBar = _scrollArea["default"].Bar;
373
311
  var SHeightHold = _flexBox.Box;
374
312
  var _this$asProps3 = this.asProps,
375
- Children = _this$asProps3.Children,
376
- styles = _this$asProps3.styles,
377
- rows = _this$asProps3.rows,
378
- columns = _this$asProps3.columns,
379
- $scrollRef = _this$asProps3.$scrollRef,
380
- virtualScroll = _this$asProps3.virtualScroll,
381
- onResize = _this$asProps3.onResize,
382
- onScroll = _this$asProps3.onScroll,
383
- disabledScroll = _this$asProps3.disabledScroll;
313
+ Children = _this$asProps3.Children,
314
+ styles = _this$asProps3.styles,
315
+ rows = _this$asProps3.rows,
316
+ columns = _this$asProps3.columns,
317
+ $scrollRef = _this$asProps3.$scrollRef,
318
+ virtualScroll = _this$asProps3.virtualScroll,
319
+ onResize = _this$asProps3.onResize,
320
+ onScroll = _this$asProps3.onScroll,
321
+ disabledScroll = _this$asProps3.disabledScroll;
384
322
  var columnsInitialized = columns.reduce(function (sum, _ref10) {
385
323
  var width = _ref10.width;
386
324
  return sum + width;
387
325
  }, 0) > 0 || testEnv;
388
-
389
326
  var _getScrollOffsetValue = (0, _utils.getScrollOffsetValue)(columns),
390
- _getScrollOffsetValue2 = (0, _slicedToArray2["default"])(_getScrollOffsetValue, 2),
391
- offsetLeftSum = _getScrollOffsetValue2[0],
392
- offsetRightSum = _getScrollOffsetValue2[1];
393
-
327
+ _getScrollOffsetValue2 = (0, _slicedToArray2["default"])(_getScrollOffsetValue, 2),
328
+ offsetLeftSum = _getScrollOffsetValue2[0],
329
+ offsetRightSum = _getScrollOffsetValue2[1];
394
330
  var offsetSum = offsetLeftSum + offsetRightSum;
395
331
  var rowHeight = this.getRowHeight();
396
332
  var holdHeight = rowHeight !== undefined && virtualScroll ? rowHeight * rows.length : undefined;
397
-
398
333
  if (virtualScroll && columnsInitialized && !rowHeight) {
399
334
  new Promise(function () {
400
335
  return _this5.setupRowSizeObserver();
401
336
  });
402
337
  }
403
-
404
338
  return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SBodyWrapper, _ref5.cn("SBodyWrapper", {}), /*#__PURE__*/_react["default"].createElement(_scrollArea["default"], _ref5.cn("ScrollArea", {
405
339
  "shadow": true,
406
340
  "styles": scrollStyles,
@@ -428,7 +362,6 @@ var Body = /*#__PURE__*/function (_Component) {
428
362
  }]);
429
363
  return Body;
430
364
  }(_core.Component);
431
-
432
365
  var _default = Body;
433
366
  exports["default"] = _default;
434
367
  //# sourceMappingURL=Body.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Body.js","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","trottle","entries","contentRect","height","setState","oldState","event","target","scrollTop","firstRowRef","current","firstRowResizeObserver","ResizeObserver","handleFirstRowResize","observe","rowData","index","SCell","Flex","styles","columns","use","Array","isArray","SGroupCell","sstyled","renderRows","nameParts","split","firstName","lastName","length","firstColumn","find","c","lastColumn","column","getFixedStyle","value","vars","cssVar","props","children","justifyContent","alignItems","borderLeft","borderRight","style","width","join","cellPropsLayers","cellPropLayer","childrenPropsGetter","p","other","propsCell","assignProps","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","onScroll","disabledScroll","columnsInitialized","reduce","sum","getScrollOffsetValue","offsetLeftSum","offsetRightSum","offsetSum","holdHeight","Promise","setupRowSizeObserver","scrollStyles","callAllEventHandlers","handleScrollAreaResize","handleScrollAreaScroll","renderVirtualizedRows","origin","Component"],"sources":["../../src/Body.tsx"],"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 onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;\n rowPropsLayers: PropsLayer[];\n use: 'primary' | 'secondary';\n uniqueKey: string;\n virtualScroll?: boolean | { tollerance?: number; rowHeight?: number };\n disabledScroll?: boolean;\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 const SGroupCell = 'div';\n return sstyled(styles)(\n <SGroupCell role=\"rowgroup\" data-ui-name=\"group-cell\">\n {this.renderRows(cell as NestedCells[])}\n </SGroupCell>,\n );\n } else {\n const nameParts = cell.name.split('/');\n const firstName = nameParts[0];\n const lastName = nameParts[nameParts.length - 1];\n const firstColumn = columns.find((c) => c.name === firstName);\n const lastColumn = columns.find((c) => c.name === lastName);\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 alignItems: column?.props?.alignItems,\n borderLeft: firstColumn?.borderLeft,\n borderRight: lastColumn?.borderRight,\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\n key={cell.name}\n role=\"cell\"\n {...props}\n fixed={cell.fixed}\n theme={props.theme}\n use={use}\n borderLeft={props.borderLeft}\n borderRight={props.borderRight}\n />,\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 'aria-rowindex': dataIndex + 1,\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 role=\"row\" {...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 {\n Children,\n styles,\n rows,\n columns,\n $scrollRef,\n virtualScroll,\n onResize,\n onScroll,\n disabledScroll,\n } = 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={callAllEventHandlers(onScroll, this.handleScrollAreaScroll)}\n >\n <ScrollArea.Container ref={$scrollRef} disabledScroll={disabledScroll}>\n <SBody render={Box} role=\"rowgroup\">\n {holdHeight ? <SHeightHold hMin={holdHeight} aria-hidden={true} /> : null}\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"],"mappings":"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"}
1
+ {"version":3,"file":"Body.js","names":["_core","require","_react","_interopRequireDefault","_flexBox","_scrollArea","_utils","_assignProps2","_interopRequireWildcard","_resizeObserverPolyfill","_rafTrottle","_excluded","_excluded2","scrollStyles","sstyled","insert","testEnv","process","env","NODE_ENV","getCellsByColumn","cells","flattenCells","flat","Object","fromEntries","map","cell","name","data","Body","_Component","_inherits2","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty2","_assertThisInitialized2","rowHeight","undefined","scrollAreaHeight","scrollOffset","React","createRef","virtualScroll","asProps","rowHeightFromProps","_typeof2","state","trottle","entries","contentRect","height","setState","oldState","event","_ref6","target","scrollTop","firstRowRef","current","firstRowResizeObserver","ResizeObserver","handleFirstRowResize","observe","_createClass2","key","value","renderCells","rowData","index","_this2","SCell","Flex","_this$asProps","styles","columns","use","isArray","_ref2","SGroupCell","createElement","cn","renderRows","_ref3","_column$props","_column$props2","nameParts","split","firstName","lastName","firstColumn","find","c","lastColumn","column","_getFixedStyle","getFixedStyle","_getFixedStyle2","_slicedToArray2","vars","cssVar","props","children","Fragment","justifyContent","alignItems","borderLeft","borderRight","style","width","join","_iterator","_createForOfIteratorHelper2","cellPropsLayers","_step","s","n","done","cellPropLayer","_cellPropLayer$childr","childrenPropsGetter","p","other","_objectWithoutProperties2","propsCell","assignProps","err","e","f","_objectSpread2","fixed","theme","renderRow","_ref7","_ref4","dataIndex","topOffset","nested","SRow","Box","_this$asProps2","rowPropsLayers","uniqueKey","flatRowData","String","needToMeasureHeight","active","positioned","top","ref","_iterator2","_step2","rowPropsLayer","_rowPropsLayer$childr","propsRow","rows","_this3","renderVirtualizedRows","_ref8","_this4","_this$state","getRowHeight","tollerance","startIndex","Math","max","floor","lastIndex","min","ceil","needToMeasureFirstRowHeight","firstRow","visibleRows","slice","processedVisibleRows","unshift","_ref9","componentWillUnmount","_this$firstRowResizeO","disconnect","render","_ref","_ref5","_this5","SBody","SBodyWrapper","SScrollAreaBar","ScrollArea","Bar","SHeightHold","_this$asProps3","Children","$scrollRef","onResize","onScroll","disabledScroll","columnsInitialized","reduce","sum","_ref10","_getScrollOffsetValue","getScrollOffsetValue","_getScrollOffsetValue2","offsetLeftSum","offsetRightSum","offsetSum","holdHeight","Promise","setupRowSizeObserver","callAllEventHandlers","handleScrollAreaResize","handleScrollAreaScroll","Container","origin","Component","_default","exports"],"sources":["../../src/Body.tsx"],"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 onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;\n rowPropsLayers: PropsLayer[];\n use: 'primary' | 'secondary';\n uniqueKey: string;\n virtualScroll?: boolean | { tollerance?: number; rowHeight?: number };\n disabledScroll?: boolean;\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 const SGroupCell = 'div';\n return sstyled(styles)(\n <SGroupCell role=\"rowgroup\" data-ui-name=\"group-cell\">\n {this.renderRows(cell as NestedCells[])}\n </SGroupCell>,\n );\n } else {\n const nameParts = cell.name.split('/');\n const firstName = nameParts[0];\n const lastName = nameParts[nameParts.length - 1];\n const firstColumn = columns.find((c) => c.name === firstName);\n const lastColumn = columns.find((c) => c.name === lastName);\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 alignItems: column?.props?.alignItems,\n borderLeft: firstColumn?.borderLeft,\n borderRight: lastColumn?.borderRight,\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\n key={cell.name}\n role=\"cell\"\n {...props}\n fixed={cell.fixed}\n theme={props.theme}\n use={use}\n borderLeft={props.borderLeft}\n borderRight={props.borderRight}\n />,\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 'aria-rowindex': dataIndex + 1,\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 role=\"row\" {...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 {\n Children,\n styles,\n rows,\n columns,\n $scrollRef,\n virtualScroll,\n onResize,\n onScroll,\n disabledScroll,\n } = 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={callAllEventHandlers(onScroll, this.handleScrollAreaScroll)}\n >\n <ScrollArea.Container ref={$scrollRef} disabledScroll={disabledScroll}>\n <SBody render={Box} role=\"rowgroup\">\n {holdHeight ? <SHeightHold hMin={holdHeight} aria-hidden={true} /> : null}\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"],"mappings":"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"}