@semcore/data-table 1.5.3 → 2.1.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,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.1.0] - 2022-04-07
6
+
7
+ ### Changed
8
+
9
+ - Internal enhances, rewritten from js to ts, render algorithmic performance increased.
10
+
11
+ ## [2.0.0] - 2022-04-06
12
+
13
+ ### Fixed
14
+
15
+ - Fixed uninitialized columns width from fixed size to equal flex-boxes.
16
+
17
+ ## [1.5.4] - 2022-03-21
18
+
19
+ ### Changed
20
+
21
+ - Version patch update due to children dependencies update (`@semcore/icon` [2.19.4 ~> 2.20.0]).
22
+
5
23
  ## [1.5.3] - 2022-03-14
6
24
 
7
25
  ### Changed
package/lib/cjs/Body.js CHANGED
@@ -9,10 +9,10 @@ exports["default"] = void 0;
9
9
 
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
 
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
13
 
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
16
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
17
 
18
18
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -35,13 +35,19 @@ var _utils = require("./utils");
35
35
 
36
36
  var _assignProps2 = _interopRequireDefault(require("@semcore/utils/lib/assignProps"));
37
37
 
38
- var _excluded = ["getRowProps"],
39
- _excluded2 = ["getCellProps"];
38
+ var _excluded = ["childrenPropsGetter"],
39
+ _excluded2 = ["childrenPropsGetter"];
40
40
 
41
41
  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
42
 
43
43
  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
44
 
45
+ 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; } } }; }
46
+
47
+ 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); }
48
+
49
+ 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; }
50
+
45
51
  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
52
 
47
53
  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; } }
@@ -60,13 +66,14 @@ _core.sstyled.insert(
60
66
  "--left": "--left_1jfuf14",
61
67
  "--right": "--right_1jfuf14"
62
68
  });
69
+ var testEnv = process.env.NODE_ENV === 'test';
63
70
 
64
- function getCellsByColumn(row) {
65
- return row.reduce(function (acc, cell) {
66
- acc[cell.name] = acc[cell.name] ? Array.isArray(acc[cell.name]) ? acc[cell.name].concat(cell.data) : [acc[cell.name], cell.data] : cell.data;
67
- return acc;
68
- }, {});
69
- }
71
+ var getCellsByColumn = function getCellsByColumn(cells) {
72
+ var flattenCells = cells.flat(20);
73
+ return Object.fromEntries(flattenCells.map(function (cell) {
74
+ return [cell.name, cell.data];
75
+ }));
76
+ };
70
77
 
71
78
  var Body = /*#__PURE__*/function (_Component) {
72
79
  (0, _inherits2["default"])(Body, _Component);
@@ -79,39 +86,57 @@ var Body = /*#__PURE__*/function (_Component) {
79
86
  }
80
87
 
81
88
  (0, _createClass2["default"])(Body, [{
82
- key: "renderRows",
83
- value: function renderRows(rows) {
84
- var _this = this;
89
+ key: "renderRow",
90
+ value: function renderRow(cells, index) {
91
+ var _ref2;
85
92
 
86
93
  var SRow = _flexBox.Box;
87
94
  var _this$asProps = this.asProps,
88
95
  styles = _this$asProps.styles,
89
- $propsRow = _this$asProps.$propsRow;
90
- return rows.map(function (row, index) {
91
- var _ref2;
92
-
93
- var cellsByColumn = row._row || getCellsByColumn(row);
94
- var props = $propsRow.reduce(function (acc, _ref5) {
95
- var _ref5$getRowProps = _ref5.getRowProps,
96
- getRowProps = _ref5$getRowProps === void 0 ? function (p) {
96
+ rowPropsLayers = _this$asProps.rowPropsLayers;
97
+ var cellsByColumn = cells.flatRowData || getCellsByColumn(cells);
98
+ var props = {
99
+ children: this.renderCells(cells, cellsByColumn, index),
100
+ theme: undefined,
101
+ active: undefined
102
+ };
103
+
104
+ var _iterator = _createForOfIteratorHelper(rowPropsLayers),
105
+ _step;
106
+
107
+ try {
108
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
109
+ var rowPropsLayer = _step.value;
110
+ var _rowPropsLayer$childr = rowPropsLayer.childrenPropsGetter,
111
+ childrenPropsGetter = _rowPropsLayer$childr === void 0 ? function (p) {
97
112
  return p;
98
- } : _ref5$getRowProps,
99
- other = (0, _objectWithoutProperties2["default"])(_ref5, _excluded);
100
- var propsRow = (0, _assignProps2["default"])(other, acc);
101
- return (0, _assignProps2["default"])(getRowProps(propsRow, cellsByColumn, index), propsRow);
102
- }, {
103
- children: _this.renderCells(row, cellsByColumn, index)
104
- });
105
- return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SRow, _ref2.cn("SRow", _objectSpread({
106
- "key": index,
107
- "theme": props.theme,
108
- "active": props.active
109
- }, props)));
113
+ } : _rowPropsLayer$childr,
114
+ other = (0, _objectWithoutProperties2["default"])(rowPropsLayer, _excluded);
115
+ var propsRow = (0, _assignProps2["default"])(other, props);
116
+ props = (0, _assignProps2["default"])(childrenPropsGetter(propsRow, cellsByColumn, index), propsRow);
117
+ }
118
+ } catch (err) {
119
+ _iterator.e(err);
120
+ } finally {
121
+ _iterator.f();
122
+ }
123
+
124
+ return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SRow, _ref2.cn("SRow", _objectSpread({
125
+ "key": index
126
+ }, props)));
127
+ }
128
+ }, {
129
+ key: "renderRows",
130
+ value: function renderRows(rows) {
131
+ var _this = this;
132
+
133
+ return rows.map(function (cells, index) {
134
+ return _this.renderRow(cells, index);
110
135
  });
111
136
  }
112
137
  }, {
113
138
  key: "renderCells",
114
- value: function renderCells(row, cellsByColumn, index) {
139
+ value: function renderCells(cells, cellsByColumn, index) {
115
140
  var _this2 = this;
116
141
 
117
142
  var SCell = _flexBox.Flex;
@@ -119,11 +144,11 @@ var Body = /*#__PURE__*/function (_Component) {
119
144
  styles = _this$asProps2.styles,
120
145
  columns = _this$asProps2.columns,
121
146
  use = _this$asProps2.use;
122
- return row.reduce(function (acc, cell) {
147
+ return cells.map(function (cell) {
123
148
  if (Array.isArray(cell)) {
124
- acc = acc.concat( /*#__PURE__*/_react["default"].createElement("div", null, _this2.renderRows(cell)));
149
+ return /*#__PURE__*/_react["default"].createElement("div", null, _this2.renderRows(cell));
125
150
  } else {
126
- var _ref3, _column$props, _style;
151
+ var _ref3, _column$props, _props;
127
152
 
128
153
  var column = columns.find(function (c) {
129
154
  return c.name === cell.name;
@@ -134,39 +159,54 @@ var Body = /*#__PURE__*/function (_Component) {
134
159
  name = _getFixedStyle2[0],
135
160
  value = _getFixedStyle2[1];
136
161
 
137
- var vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(function (n) {
138
- return "var(".concat(n, ")");
162
+ var vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(function (name) {
163
+ return "var(".concat(name, ")");
139
164
  });
140
- var props = (cell.rendersCell || []).reduce(function (acc, _ref6) {
141
- var _ref6$getCellProps = _ref6.getCellProps,
142
- getCellProps = _ref6$getCellProps === void 0 ? function (p) {
143
- return p;
144
- } : _ref6$getCellProps,
145
- other = (0, _objectWithoutProperties2["default"])(_ref6, _excluded2);
146
- var propsCell = (0, _assignProps2["default"])(other, acc);
147
- return (0, _assignProps2["default"])(getCellProps(propsCell, cellsByColumn, index), propsCell);
148
- }, {
165
+ var props = (_props = {
149
166
  name: cell.name,
150
- children: cell.data,
151
- justifyContent: column === null || column === void 0 ? void 0 : (_column$props = column.props) === null || _column$props === void 0 ? void 0 : _column$props.justifyContent,
152
- style: (_style = {}, (0, _defineProperty2["default"])(_style, name, value), (0, _defineProperty2["default"])(_style, "width", vars.length === 1 ? vars[0] : "calc(".concat(vars.join(' + '), ")")), _style)
153
- });
154
- acc.push((_ref3 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SCell, _ref3.cn("SCell", _objectSpread(_objectSpread({
167
+ children: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, cell.data)
168
+ }, (0, _defineProperty2["default"])(_props, 'data-data', JSON.stringify(cell.data)), (0, _defineProperty2["default"])(_props, "justifyContent", column === null || column === void 0 ? void 0 : (_column$props = column.props) === null || _column$props === void 0 ? void 0 : _column$props.justifyContent), (0, _defineProperty2["default"])(_props, "style", {
169
+ width: vars.length === 1 ? vars[0] : "calc(".concat(vars.join(' + '), ")")
170
+ }), _props);
171
+
172
+ if (name !== undefined && value !== undefined) {
173
+ props.style[name] = value;
174
+ }
175
+
176
+ var _iterator2 = _createForOfIteratorHelper(cell.cellPropsLayers || []),
177
+ _step2;
178
+
179
+ try {
180
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
181
+ var cellPropLayer = _step2.value;
182
+ var _cellPropLayer$childr = cellPropLayer.childrenPropsGetter,
183
+ childrenPropsGetter = _cellPropLayer$childr === void 0 ? function (p) {
184
+ return p;
185
+ } : _cellPropLayer$childr,
186
+ other = (0, _objectWithoutProperties2["default"])(cellPropLayer, _excluded2);
187
+ var propsCell = (0, _assignProps2["default"])(other, props);
188
+ props = (0, _assignProps2["default"])(childrenPropsGetter(propsCell, cellsByColumn, index), propsCell);
189
+ }
190
+ } catch (err) {
191
+ _iterator2.e(err);
192
+ } finally {
193
+ _iterator2.f();
194
+ }
195
+
196
+ return _ref3 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SCell, _ref3.cn("SCell", _objectSpread(_objectSpread({
155
197
  "key": cell.name
156
198
  }, props), {}, {
157
199
  "fixed": cell.fixed,
158
200
  "theme": props.theme,
159
201
  "use": use
160
- })))));
202
+ })));
161
203
  }
162
-
163
- return acc;
164
204
  }, []);
165
205
  }
166
206
  }, {
167
207
  key: "render",
168
208
  value: function render() {
169
- var _ref = this ? this.asProps : arguments[0],
209
+ var _ref = this.asProps,
170
210
  _ref4;
171
211
 
172
212
  var SBody = _flexBox.Box;
@@ -177,11 +217,12 @@ var Body = /*#__PURE__*/function (_Component) {
177
217
  styles = _this$asProps3.styles,
178
218
  rows = _this$asProps3.rows,
179
219
  columns = _this$asProps3.columns,
180
- $scrollRef = _this$asProps3.$scrollRef,
181
- onResize = _this$asProps3.onResize;
182
- var initializeColumns = !!columns.reduce(function (acc, c) {
183
- return acc + c.width;
184
- }, 0);
220
+ onResize = _this$asProps3.onResize,
221
+ $scrollRef = _this$asProps3.$scrollRef;
222
+ var columnsInitialized = columns.reduce(function (sum, _ref5) {
223
+ var width = _ref5.width;
224
+ return sum + width;
225
+ }, 0) > 0 || testEnv;
185
226
 
186
227
  var _getScrollOffsetValue = (0, _utils.getScrollOffsetValue)(columns),
187
228
  _getScrollOffsetValue2 = (0, _slicedToArray2["default"])(_getScrollOffsetValue, 2),
@@ -197,7 +238,7 @@ var Body = /*#__PURE__*/function (_Component) {
197
238
  "onResize": onResize
198
239
  }), /*#__PURE__*/_react["default"].createElement(_scrollArea["default"].Container, {
199
240
  ref: $scrollRef
200
- }, /*#__PURE__*/_react["default"].createElement(SBody, _ref4.cn("SBody", _objectSpread({}, (0, _core.assignProps)({}, _ref))), initializeColumns ? this.renderRows(rows) : null)), /*#__PURE__*/_react["default"].createElement(SScrollAreaBar, _ref4.cn("SScrollAreaBar", {
241
+ }, /*#__PURE__*/_react["default"].createElement(SBody, _ref4.cn("SBody", _objectSpread({}, (0, _core.assignProps)({}, _ref))), columnsInitialized ? this.renderRows(rows) : null)), /*#__PURE__*/_react["default"].createElement(SScrollAreaBar, _ref4.cn("SScrollAreaBar", {
201
242
  "orientation": "horizontal",
202
243
  "left": "".concat(offsetLeftSum, "px"),
203
244
  "right": "".concat(offsetRightSum, "px"),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Body.jsx"],"names":["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","initializeColumns","width","offsetLeftSum","offsetRightSum","offsetSum","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\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 initializeColumns = !!columns.reduce((acc, c) => acc + c.width, 0);\n\n const [offsetLeftSum, offsetRightSum] = getScrollOffsetValue(columns);\n const offsetSum = offsetLeftSum + offsetRightSum;\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}>{initializeColumns ? 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","index","SRow","Box","asProps","styles","rowPropsLayers","cellsByColumn","flatRowData","props","children","renderCells","theme","undefined","active","rowPropsLayer","childrenPropsGetter","p","other","propsRow","rows","renderRow","SCell","Flex","columns","use","Array","isArray","renderRows","column","find","c","value","vars","cssVar","JSON","stringify","justifyContent","width","length","join","style","cellPropsLayers","cellPropLayer","propsCell","fixed","SBody","SBodyWrapper","SScrollAreaBar","ScrollArea","Bar","Children","onResize","$scrollRef","columnsInitialized","reduce","sum","offsetLeftSum","offsetRightSum","offsetSum","scrollStyles","origin","Component"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AADA;;AAEA;;AACA;;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAMA,OAAO,GAAGC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,MAAzC;;AAEA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAiC;AACxD,MAAMC,YAAY,GAAGD,KAAK,CAACE,IAAN,CAAW,EAAX,CAArB;AACA,SAAOC,MAAM,CAACC,WAAP,CAAmBH,YAAY,CAACI,GAAb,CAAiB,UAACC,IAAD;AAAA,WAAU,CAACA,IAAI,CAACC,IAAN,EAAYD,IAAI,CAACE,IAAjB,CAAV;AAAA,GAAjB,CAAnB,CAAP;AACD,CAHD;;IAcMC,I;;;;;;;;;;;;WACJ,mBAAUT,KAAV,EAA8BU,KAA9B,EAA6C;AAAA;;AAC3C,UAAMC,IAAI,GAAGC,YAAb;AACA,0BAAmC,KAAKC,OAAxC;AAAA,UAAQC,MAAR,iBAAQA,MAAR;AAAA,UAAgBC,cAAhB,iBAAgBA,cAAhB;AAEA,UAAMC,aAAa,GAAGhB,KAAK,CAACiB,WAAN,IAAqBlB,gBAAgB,CAACC,KAAD,CAA3D;AAEA,UAAIkB,KAAK,GAAG;AACVC,QAAAA,QAAQ,EAAE,KAAKC,WAAL,CAAiBpB,KAAjB,EAAwBgB,aAAxB,EAAuCN,KAAvC,CADA;AAEVW,QAAAA,KAAK,EAAEC,SAFG;AAGVC,QAAAA,MAAM,EAAED;AAHE,OAAZ;;AAN2C,iDAYfP,cAZe;AAAA;;AAAA;AAY3C,4DAA4C;AAAA,cAAjCS,aAAiC;AAC1C,sCAAqDA,aAArD,CAAQC,mBAAR;AAAA,cAAQA,mBAAR,sCAA8B,UAACC,CAAD;AAAA,mBAAOA,CAAP;AAAA,WAA9B;AAAA,cAA2CC,KAA3C,6CAAqDH,aAArD;AACA,cAAMI,QAAQ,GAAG,8BAAYD,KAAZ,EAAmBT,KAAnB,CAAjB;AACAA,UAAAA,KAAK,GAAG,8BAAYO,mBAAmB,CAACG,QAAD,EAAWZ,aAAX,EAA0BN,KAA1B,CAA/B,EAAiEkB,QAAjE,CAAR;AACD;AAhB0C;AAAA;AAAA;AAAA;AAAA;;AAkB3C,qBAAO,mBAAQd,MAAR,CAAP,eAAuB,gCAAC,IAAD;AAAA,eAAWJ;AAAX,SAAsBQ,KAAtB,GAAvB;AACD;;;WAED,oBAAWW,IAAX,EAAgC;AAAA;;AAC9B,aAAOA,IAAI,CAACxB,GAAL,CAAS,UAACL,KAAD,EAAQU,KAAR;AAAA,eAAkB,KAAI,CAACoB,SAAL,CAAe9B,KAAf,EAAsBU,KAAtB,CAAlB;AAAA,OAAT,CAAP;AACD;;;WAED,qBAAYV,KAAZ,EAAgCgB,aAAhC,EAAwDN,KAAxD,EAAuE;AAAA;;AACrE,UAAMqB,KAAK,GAAGC,aAAd;AACA,2BAAiC,KAAKnB,OAAtC;AAAA,UAAQC,MAAR,kBAAQA,MAAR;AAAA,UAAgBmB,OAAhB,kBAAgBA,OAAhB;AAAA,UAAyBC,GAAzB,kBAAyBA,GAAzB;AACA,aAAOlC,KAAK,CAACK,GAAN,CAAU,UAACC,IAAD,EAAU;AACzB,YAAI6B,KAAK,CAACC,OAAN,CAAc9B,IAAd,CAAJ,EAAyB;AACvB,8BAAO,6CAAM,MAAI,CAAC+B,UAAL,CAAgB/B,IAAhB,CAAN,CAAP;AACD,SAFD,MAEO;AAAA;;AACL,cAAMgC,MAAM,GAAGL,OAAO,CAACM,IAAR,CAAa,UAACC,CAAD;AAAA,mBAAOA,CAAC,CAACjC,IAAF,KAAWD,IAAI,CAACC,IAAvB;AAAA,WAAb,CAAf;;AACA,+BAAsB,0BAAcD,IAAd,EAAoB2B,OAApB,CAAtB;AAAA;AAAA,cAAO1B,IAAP;AAAA,cAAakC,KAAb;;AACA,cAAMC,IAAI,GAAG,CAACP,KAAK,CAACC,OAAN,CAAc9B,IAAI,CAACqC,MAAnB,IAA6BrC,IAAI,CAACqC,MAAlC,GAA2C,CAACrC,IAAI,CAACqC,MAAN,CAA5C,EAA2DtC,GAA3D,CACX,UAACE,IAAD;AAAA,iCAAiBA,IAAjB;AAAA,WADW,CAAb;AASA,cAAIW,KAAgB;AAClBX,YAAAA,IAAI,EAAED,IAAI,CAACC,IADO;AAElBY,YAAAA,QAAQ,eAAE,kEAAGb,IAAI,CAACE,IAAR;AAFQ,sDAGjB,WAHiB,EAGHoC,IAAI,CAACC,SAAL,CAAevC,IAAI,CAACE,IAApB,CAHG,8DAIF8B,MAJE,aAIFA,MAJE,wCAIFA,MAAM,CAAEpB,KAJN,kDAIF,cAAe4B,cAJb,qDAKX;AACLC,YAAAA,KAAK,EAAEL,IAAI,CAACM,MAAL,KAAgB,CAAhB,GAAoBN,IAAI,CAAC,CAAD,CAAxB,kBAAsCA,IAAI,CAACO,IAAL,CAAU,KAAV,CAAtC;AADF,WALW,UAApB;;AASA,cAAI1C,IAAI,KAAKe,SAAT,IAAsBmB,KAAK,KAAKnB,SAApC,EAA+C;AAC7CJ,YAAAA,KAAK,CAACgC,KAAN,CAAY3C,IAAZ,IAAoBkC,KAApB;AACD;;AAvBI,sDAyBuBnC,IAAI,CAAC6C,eAAL,IAAwB,EAzB/C;AAAA;;AAAA;AAyBL,mEAAwD;AAAA,kBAA7CC,aAA6C;AACtD,0CAAqDA,aAArD,CAAQ3B,mBAAR;AAAA,kBAAQA,mBAAR,sCAA8B,UAACC,CAAD;AAAA,uBAAOA,CAAP;AAAA,eAA9B;AAAA,kBAA2CC,KAA3C,6CAAqDyB,aAArD;AACA,kBAAMC,SAAS,GAAG,8BAAY1B,KAAZ,EAAmBT,KAAnB,CAAlB;AACAA,cAAAA,KAAK,GAAG,8BAAYO,mBAAmB,CAAC4B,SAAD,EAAYrC,aAAZ,EAA2BN,KAA3B,CAA/B,EAAkE2C,SAAlE,CAAR;AACD;AA7BI;AAAA;AAAA;AAAA;AAAA;;AA+BL,yBAAO,mBAAQvC,MAAR,CAAP,eACE,gCAAC,KAAD;AAAA,mBAAYR,IAAI,CAACC;AAAjB,aAA2BW,KAA3B;AAAA,qBAAyCZ,IAAI,CAACgD,KAA9C;AAAA,qBAA4DpC,KAAK,CAACG,KAAlE;AAAA,mBAA8Ea;AAA9E,cADF;AAGD;AACF,OAtCM,EAsCJ,EAtCI,CAAP;AAuCD;;;WAED,kBAAS;AAAA;AAAA;;AACP,UAAMqB,KAAK,GAoBY3C,YApBvB;AACA,UAAM4C,YAAY,GAAG5C,YAArB;AACA,UAAM6C,cAAc,GAAGC,uBAAWC,GAAlC;AACA,2BAAkE,KAAK9C,OAAvE;AAAA,UAAQ+C,QAAR,kBAAQA,QAAR;AAAA,UAAkB9C,MAAlB,kBAAkBA,MAAlB;AAAA,UAA0Be,IAA1B,kBAA0BA,IAA1B;AAAA,UAAgCI,OAAhC,kBAAgCA,OAAhC;AAAA,UAAyC4B,QAAzC,kBAAyCA,QAAzC;AAAA,UAAmDC,UAAnD,kBAAmDA,UAAnD;AAEA,UAAMC,kBAAkB,GAAG9B,OAAO,CAAC+B,MAAR,CAAe,UAACC,GAAD;AAAA,YAAQlB,KAAR,SAAQA,KAAR;AAAA,eAAoBkB,GAAG,GAAGlB,KAA1B;AAAA,OAAf,EAAgD,CAAhD,IAAqD,CAArD,IAA0DpD,OAArF;;AAEA,kCAAwC,iCAAqBsC,OAArB,CAAxC;AAAA;AAAA,UAAOiC,aAAP;AAAA,UAAsBC,cAAtB;;AACA,UAAMC,SAAS,GAAGF,aAAa,GAAGC,cAAlC;AAEA,qBAAO,mBAAQrD,MAAR,CAAP,eACE,gCAAC,YAAD,6CACE,gCAAC,sBAAD;AAAA;AAAA,kBAEUuD,YAFV;AAAA,8BAGeH,aAHf;AAAA,+BAIgBC,cAJhB;AAAA,oBAKYN;AALZ,uBAOE,gCAAC,sBAAD,CAAY,SAAZ;AAAsB,QAAA,GAAG,EAAEC;AAA3B,sBACE,gCAAC,KAAD,0EAAqBC,kBAAkB,GAAG,KAAK1B,UAAL,CAAgBR,IAAhB,CAAH,GAA2B,IAAlE,CADF,CAPF,eAUE,gCAAC,cAAD;AAAA,uBACc,YADd;AAAA,0BAEWqC,aAFX;AAAA,2BAGYC,cAHZ;AAAA,+BAIgBC,SAJhB;AAAA,SAVF,eAgBE,gCAAC,cAAD;AAAA,uBAA4B;AAA5B,SAhBF,CADF,EAmBGR,QAAQ,CAACU,MAnBZ,CADF;AAuBD;;;EAxGgBC,e;;eA2GJ9D,I","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 from '@semcore/utils/lib/assignProps';\nimport type ResizeObserverCallback from 'resize-observer-polyfill';\n\nimport scrollStyles from './style/scroll-area.shadow.css';\nimport syncScroll from '@semcore/utils/lib/syncScroll';\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};\n\nclass Body extends Component<AsProps> {\n renderRow(cells: NestedCells, index: number) {\n const SRow = Box;\n const { styles, rowPropsLayers } = this.asProps;\n\n const cellsByColumn = cells.flatRowData || getCellsByColumn(cells);\n\n let props = {\n children: this.renderCells(cells, cellsByColumn, index),\n theme: undefined,\n active: undefined,\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, cellsByColumn, index), propsRow);\n }\n\n return sstyled(styles)(<SRow key={index} {...props} />);\n }\n\n renderRows(rows: NestedCells[]) {\n return rows.map((cells, index) => this.renderRow(cells, index));\n }\n\n renderCells(cells: NestedCells, cellsByColumn: 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 ['data-data']: JSON.stringify(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, cellsByColumn, 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 render() {\n const SBody = Root;\n const SBodyWrapper = Box;\n const SScrollAreaBar = ScrollArea.Bar;\n const { Children, styles, rows, columns, onResize, $scrollRef } = 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 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"}