@semcore/data-table 2.0.0 → 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/lib/cjs/utils.js CHANGED
@@ -3,48 +3,46 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.flattenColumns = flattenColumns;
7
- exports.getFixedStyle = getFixedStyle;
8
- exports.getScrollOffsetValue = getScrollOffsetValue;
6
+ exports.getScrollOffsetValue = exports.getFixedStyle = exports.flattenColumns = void 0;
9
7
 
10
- function getScrollOffsetValue(columns) {
11
- return columns.reduce(function (acc, c) {
12
- if (c.fixed === 'left') {
13
- acc[0] += c.width;
8
+ var getScrollOffsetValue = function getScrollOffsetValue(columns) {
9
+ return columns.reduce(function (acc, column) {
10
+ if (column.fixed === 'left') {
11
+ acc[0] += column.width;
14
12
  }
15
13
 
16
- if (c.fixed === 'right') {
17
- acc[1] += c.width;
14
+ if (column.fixed === 'right') {
15
+ acc[1] += column.width;
18
16
  }
19
17
 
20
18
  return acc;
21
19
  }, [0, 0]);
22
- }
20
+ };
23
21
 
24
- function flattenColumns(columns) {
25
- return columns.reduce(function (acc, c) {
26
- var columns = [c];
27
-
28
- if (c.columns) {
29
- columns = flattenColumns(c.columns);
30
- }
22
+ exports.getScrollOffsetValue = getScrollOffsetValue;
31
23
 
24
+ var flattenColumns = function flattenColumns(columns) {
25
+ return columns.reduce(function (acc, column) {
26
+ var hasNestedColumns = 'columns' in column && column.columns.length > 0;
27
+ var columns = hasNestedColumns ? flattenColumns(column.columns) : [column];
32
28
  acc = acc.concat(columns);
33
29
  return acc;
34
30
  }, []);
35
- }
31
+ };
32
+
33
+ exports.flattenColumns = flattenColumns;
36
34
 
37
- function getFixedStyle(column, columns) {
38
- var side = column.fixed;
35
+ var getFixedStyle = function getFixedStyle(cell, columns) {
36
+ var side = cell.fixed;
39
37
  if (!side) return [undefined, undefined];
40
- var names = column.name.split('/');
38
+ var names = cell.name.split('/');
41
39
  var nameSideMap = {
42
40
  left: names[0],
43
41
  right: names[names.length - 1]
44
42
  };
45
43
  var name = nameSideMap[side];
46
- var index = columns.findIndex(function (c) {
47
- return c.name === name;
44
+ var index = columns.findIndex(function (column) {
45
+ return column.name === name;
48
46
  });
49
47
  if (index === -1) return [undefined, undefined];
50
48
  var startIndexSideMap = {
@@ -57,9 +55,11 @@ function getFixedStyle(column, columns) {
57
55
  };
58
56
  var columnsFixed = columns.slice(startIndexSideMap[side], endIndexSideMap[side]);
59
57
  if (columnsFixed.length < 1) return [side, 0];
60
- var vars = columnsFixed.map(function (c) {
61
- return "var(--".concat(c.name, "_width)");
58
+ var vars = columnsFixed.map(function (column) {
59
+ return "var(--".concat(column.name, "_width)");
62
60
  });
63
61
  return [side, vars.length === 1 ? vars[0] : "calc(".concat(vars.join(' + '), ")")];
64
- }
62
+ };
63
+
64
+ exports.getFixedStyle = getFixedStyle;
65
65
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils.js"],"names":["getScrollOffsetValue","columns","reduce","acc","c","fixed","width","flattenColumns","concat","getFixedStyle","column","side","undefined","names","name","split","nameSideMap","left","right","length","index","findIndex","startIndexSideMap","endIndexSideMap","columnsFixed","slice","vars","map","join"],"mappings":";;;;;;;;;AAAO,SAASA,oBAAT,CAA8BC,OAA9B,EAAuC;AAC5C,SAAOA,OAAO,CAACC,MAAR,CACL,UAACC,GAAD,EAAMC,CAAN,EAAY;AACV,QAAIA,CAAC,CAACC,KAAF,KAAY,MAAhB,EAAwB;AACtBF,MAAAA,GAAG,CAAC,CAAD,CAAH,IAAUC,CAAC,CAACE,KAAZ;AACD;;AACD,QAAIF,CAAC,CAACC,KAAF,KAAY,OAAhB,EAAyB;AACvBF,MAAAA,GAAG,CAAC,CAAD,CAAH,IAAUC,CAAC,CAACE,KAAZ;AACD;;AACD,WAAOH,GAAP;AACD,GATI,EAUL,CAAC,CAAD,EAAI,CAAJ,CAVK,CAAP;AAYD;;AAEM,SAASI,cAAT,CAAwBN,OAAxB,EAAiC;AACtC,SAAOA,OAAO,CAACC,MAAR,CAAe,UAACC,GAAD,EAAMC,CAAN,EAAY;AAChC,QAAIH,OAAO,GAAG,CAACG,CAAD,CAAd;;AACA,QAAIA,CAAC,CAACH,OAAN,EAAe;AACbA,MAAAA,OAAO,GAAGM,cAAc,CAACH,CAAC,CAACH,OAAH,CAAxB;AACD;;AACDE,IAAAA,GAAG,GAAGA,GAAG,CAACK,MAAJ,CAAWP,OAAX,CAAN;AACA,WAAOE,GAAP;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD;;AAEM,SAASM,aAAT,CAAuBC,MAAvB,EAA+BT,OAA/B,EAAwC;AAC7C,MAAMU,IAAI,GAAGD,MAAM,CAACL,KAApB;AACA,MAAI,CAACM,IAAL,EAAW,OAAO,CAACC,SAAD,EAAYA,SAAZ,CAAP;AACX,MAAMC,KAAK,GAAGH,MAAM,CAACI,IAAP,CAAYC,KAAZ,CAAkB,GAAlB,CAAd;AACA,MAAMC,WAAW,GAAG;AAClBC,IAAAA,IAAI,EAAEJ,KAAK,CAAC,CAAD,CADO;AAElBK,IAAAA,KAAK,EAAEL,KAAK,CAACA,KAAK,CAACM,MAAN,GAAe,CAAhB;AAFM,GAApB;AAIA,MAAML,IAAI,GAAGE,WAAW,CAACL,IAAD,CAAxB;AACA,MAAMS,KAAK,GAAGnB,OAAO,CAACoB,SAAR,CAAkB,UAACjB,CAAD;AAAA,WAAOA,CAAC,CAACU,IAAF,KAAWA,IAAlB;AAAA,GAAlB,CAAd;AAEA,MAAIM,KAAK,KAAK,CAAC,CAAf,EAAkB,OAAO,CAACR,SAAD,EAAYA,SAAZ,CAAP;AAElB,MAAMU,iBAAiB,GAAG;AACxBL,IAAAA,IAAI,EAAE,CADkB;AAExBC,IAAAA,KAAK,EAAEE;AAFiB,GAA1B;AAIA,MAAMG,eAAe,GAAG;AACtBN,IAAAA,IAAI,EAAEG,KADgB;AAEtBF,IAAAA,KAAK,EAAEjB,OAAO,CAACkB,MAAR,GAAiB;AAFF,GAAxB;AAIA,MAAMK,YAAY,GAAGvB,OAAO,CAACwB,KAAR,CAAcH,iBAAiB,CAACX,IAAD,CAA/B,EAAuCY,eAAe,CAACZ,IAAD,CAAtD,CAArB;AAEA,MAAIa,YAAY,CAACL,MAAb,GAAsB,CAA1B,EAA6B,OAAO,CAACR,IAAD,EAAO,CAAP,CAAP;AAE7B,MAAMe,IAAI,GAAGF,YAAY,CAACG,GAAb,CAAiB,UAACvB,CAAD;AAAA,2BAAgBA,CAAC,CAACU,IAAlB;AAAA,GAAjB,CAAb;AACA,SAAO,CAACH,IAAD,EAAOe,IAAI,CAACP,MAAL,KAAgB,CAAhB,GAAoBO,IAAI,CAAC,CAAD,CAAxB,kBAAsCA,IAAI,CAACE,IAAL,CAAU,KAAV,CAAtC,MAAP,CAAP;AACD","sourcesContent":["export function getScrollOffsetValue(columns) {\n return columns.reduce(\n (acc, c) => {\n if (c.fixed === 'left') {\n acc[0] += c.width;\n }\n if (c.fixed === 'right') {\n acc[1] += c.width;\n }\n return acc;\n },\n [0, 0],\n );\n}\n\nexport function flattenColumns(columns) {\n return columns.reduce((acc, c) => {\n let columns = [c];\n if (c.columns) {\n columns = flattenColumns(c.columns);\n }\n acc = acc.concat(columns);\n return acc;\n }, []);\n}\n\nexport function getFixedStyle(column, columns) {\n const side = column.fixed;\n if (!side) return [undefined, undefined];\n const names = column.name.split('/');\n const nameSideMap = {\n left: names[0],\n right: names[names.length - 1],\n };\n const name = nameSideMap[side];\n const index = columns.findIndex((c) => c.name === name);\n\n if (index === -1) return [undefined, undefined];\n\n const startIndexSideMap = {\n left: 0,\n right: index,\n };\n const endIndexSideMap = {\n left: index,\n right: columns.length - 1,\n };\n const columnsFixed = columns.slice(startIndexSideMap[side], endIndexSideMap[side]);\n\n if (columnsFixed.length < 1) return [side, 0];\n\n const vars = columnsFixed.map((c) => `var(--${c.name}_width)`);\n return [side, vars.length === 1 ? vars[0] : `calc(${vars.join(' + ')})`];\n}\n"],"file":"utils.js"}
1
+ {"version":3,"sources":["../../src/utils.ts"],"names":["getScrollOffsetValue","columns","reduce","acc","column","fixed","width","flattenColumns","hasNestedColumns","length","concat","getFixedStyle","cell","side","undefined","names","name","split","nameSideMap","left","right","index","findIndex","startIndexSideMap","endIndexSideMap","columnsFixed","slice","vars","map","join"],"mappings":"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","sourcesContent":["import type { Column } from './types';\n\nexport const getScrollOffsetValue = (columns: Column[]) =>\n columns.reduce(\n (acc, column) => {\n if (column.fixed === 'left') {\n acc[0] += column.width;\n }\n if (column.fixed === 'right') {\n acc[1] += column.width;\n }\n return acc;\n },\n [0, 0] as [leftOffset: number, rightOffset: number],\n );\n\nexport const flattenColumns = (columns: Column[]) =>\n columns.reduce((acc, column) => {\n const hasNestedColumns = 'columns' in column && column.columns.length > 0;\n const columns: Column[] = hasNestedColumns ? flattenColumns(column.columns) : [column];\n acc = acc.concat(columns);\n return acc;\n }, [] as Column[]);\n\nexport const getFixedStyle = (\n cell: Pick<Column, 'name' | 'fixed'>,\n columns: Column[],\n): [side: 'left' | 'right', style: string | number] | [side: undefined, style: undefined] => {\n const side = cell.fixed;\n if (!side) return [undefined, undefined];\n const names = cell.name.split('/');\n const nameSideMap = {\n left: names[0],\n right: names[names.length - 1],\n };\n const name = nameSideMap[side];\n const index = columns.findIndex((column) => column.name === name);\n\n if (index === -1) return [undefined, undefined];\n\n const startIndexSideMap = {\n left: 0,\n right: index,\n };\n const endIndexSideMap = {\n left: index,\n right: columns.length - 1,\n };\n const columnsFixed = columns.slice(startIndexSideMap[side], endIndexSideMap[side]);\n\n if (columnsFixed.length < 1) return [side, 0];\n\n const vars = columnsFixed.map((column) => `var(--${column.name}_width)`);\n return [side, vars.length === 1 ? vars[0] : `calc(${vars.join(' + ')})`];\n};\n"],"file":"utils.js"}
package/lib/es6/Body.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
4
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
5
5
  import _createClass from "@babel/runtime/helpers/createClass";
6
6
  import _inherits from "@babel/runtime/helpers/inherits";
@@ -8,13 +8,19 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstruct
8
8
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
9
9
  import { sstyled as _sstyled } from "@semcore/core";
10
10
  import { assignProps as _assignProps } from "@semcore/core";
11
- var _excluded = ["getRowProps"],
12
- _excluded2 = ["getCellProps"];
11
+ var _excluded = ["childrenPropsGetter"],
12
+ _excluded2 = ["childrenPropsGetter"];
13
13
 
14
14
  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; }
15
15
 
16
16
  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) { _defineProperty(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; }
17
17
 
18
+ 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; } } }; }
19
+
20
+ 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); }
21
+
22
+ 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; }
23
+
18
24
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
19
25
 
20
26
  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; } }
@@ -42,12 +48,12 @@ _sstyled.insert(
42
48
  });
43
49
  var testEnv = process.env.NODE_ENV === 'test';
44
50
 
45
- function getCellsByColumn(row) {
46
- return row.reduce(function (acc, cell) {
47
- acc[cell.name] = acc[cell.name] ? Array.isArray(acc[cell.name]) ? acc[cell.name].concat(cell.data) : [acc[cell.name], cell.data] : cell.data;
48
- return acc;
49
- }, {});
50
- }
51
+ var getCellsByColumn = function getCellsByColumn(cells) {
52
+ var flattenCells = cells.flat(20);
53
+ return Object.fromEntries(flattenCells.map(function (cell) {
54
+ return [cell.name, cell.data];
55
+ }));
56
+ };
51
57
 
52
58
  var Body = /*#__PURE__*/function (_Component) {
53
59
  _inherits(Body, _Component);
@@ -61,40 +67,59 @@ var Body = /*#__PURE__*/function (_Component) {
61
67
  }
62
68
 
63
69
  _createClass(Body, [{
64
- key: "renderRows",
65
- value: function renderRows(rows) {
66
- var _this = this;
70
+ key: "renderRow",
71
+ value: function renderRow(cells, index) {
72
+ var _ref2;
67
73
 
68
74
  var SRow = Box;
69
75
  var _this$asProps = this.asProps,
70
76
  styles = _this$asProps.styles,
71
- $propsRow = _this$asProps.$propsRow;
72
- return rows.map(function (row, index) {
73
- var _ref2;
74
-
75
- var cellsByColumn = row._row || getCellsByColumn(row);
76
- var props = $propsRow.reduce(function (acc, _ref5) {
77
- var _ref5$getRowProps = _ref5.getRowProps,
78
- getRowProps = _ref5$getRowProps === void 0 ? function (p) {
77
+ rowPropsLayers = _this$asProps.rowPropsLayers;
78
+ var cellsByColumn = cells.flatRowData || getCellsByColumn(cells);
79
+ var props = {
80
+ children: this.renderCells(cells, cellsByColumn, index),
81
+ theme: undefined,
82
+ active: undefined
83
+ };
84
+
85
+ var _iterator = _createForOfIteratorHelper(rowPropsLayers),
86
+ _step;
87
+
88
+ try {
89
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
90
+ var rowPropsLayer = _step.value;
91
+
92
+ var _rowPropsLayer$childr = rowPropsLayer.childrenPropsGetter,
93
+ childrenPropsGetter = _rowPropsLayer$childr === void 0 ? function (p) {
79
94
  return p;
80
- } : _ref5$getRowProps,
81
- other = _objectWithoutProperties(_ref5, _excluded);
82
-
83
- var propsRow = assignProps(other, acc);
84
- return assignProps(getRowProps(propsRow, cellsByColumn, index), propsRow);
85
- }, {
86
- children: _this.renderCells(row, cellsByColumn, index)
87
- });
88
- return _ref2 = sstyled(styles), /*#__PURE__*/React.createElement(SRow, _ref2.cn("SRow", _objectSpread({
89
- "key": index,
90
- "theme": props.theme,
91
- "active": props.active
92
- }, props)));
95
+ } : _rowPropsLayer$childr,
96
+ other = _objectWithoutProperties(rowPropsLayer, _excluded);
97
+
98
+ var propsRow = assignProps(other, props);
99
+ props = assignProps(childrenPropsGetter(propsRow, cellsByColumn, index), propsRow);
100
+ }
101
+ } catch (err) {
102
+ _iterator.e(err);
103
+ } finally {
104
+ _iterator.f();
105
+ }
106
+
107
+ return _ref2 = sstyled(styles), /*#__PURE__*/React.createElement(SRow, _ref2.cn("SRow", _objectSpread({
108
+ "key": index
109
+ }, props)));
110
+ }
111
+ }, {
112
+ key: "renderRows",
113
+ value: function renderRows(rows) {
114
+ var _this = this;
115
+
116
+ return rows.map(function (cells, index) {
117
+ return _this.renderRow(cells, index);
93
118
  });
94
119
  }
95
120
  }, {
96
121
  key: "renderCells",
97
- value: function renderCells(row, cellsByColumn, index) {
122
+ value: function renderCells(cells, cellsByColumn, index) {
98
123
  var _this2 = this;
99
124
 
100
125
  var SCell = Flex;
@@ -102,11 +127,11 @@ var Body = /*#__PURE__*/function (_Component) {
102
127
  styles = _this$asProps2.styles,
103
128
  columns = _this$asProps2.columns,
104
129
  use = _this$asProps2.use;
105
- return row.reduce(function (acc, cell) {
130
+ return cells.map(function (cell) {
106
131
  if (Array.isArray(cell)) {
107
- acc = acc.concat( /*#__PURE__*/React.createElement("div", null, _this2.renderRows(cell)));
132
+ return /*#__PURE__*/React.createElement("div", null, _this2.renderRows(cell));
108
133
  } else {
109
- var _ref3, _column$props, _style;
134
+ var _ref3, _column$props, _props;
110
135
 
111
136
  var column = columns.find(function (c) {
112
137
  return c.name === cell.name;
@@ -117,34 +142,50 @@ var Body = /*#__PURE__*/function (_Component) {
117
142
  name = _getFixedStyle2[0],
118
143
  value = _getFixedStyle2[1];
119
144
 
120
- var vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(function (n) {
121
- return "var(".concat(n, ")");
145
+ var vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(function (name) {
146
+ return "var(".concat(name, ")");
122
147
  });
123
- var props = (cell.rendersCell || []).reduce(function (acc, _ref6) {
124
- var _ref6$getCellProps = _ref6.getCellProps,
125
- getCellProps = _ref6$getCellProps === void 0 ? function (p) {
126
- return p;
127
- } : _ref6$getCellProps,
128
- other = _objectWithoutProperties(_ref6, _excluded2);
129
-
130
- var propsCell = assignProps(other, acc);
131
- return assignProps(getCellProps(propsCell, cellsByColumn, index), propsCell);
132
- }, {
148
+ var props = (_props = {
133
149
  name: cell.name,
134
- children: cell.data,
135
- justifyContent: column === null || column === void 0 ? void 0 : (_column$props = column.props) === null || _column$props === void 0 ? void 0 : _column$props.justifyContent,
136
- style: (_style = {}, _defineProperty(_style, name, value), _defineProperty(_style, "width", vars.length === 1 ? vars[0] : "calc(".concat(vars.join(' + '), ")")), _style)
137
- });
138
- acc.push((_ref3 = sstyled(styles), /*#__PURE__*/React.createElement(SCell, _ref3.cn("SCell", _objectSpread(_objectSpread({
150
+ children: /*#__PURE__*/React.createElement(React.Fragment, null, cell.data)
151
+ }, _defineProperty(_props, 'data-data', JSON.stringify(cell.data)), _defineProperty(_props, "justifyContent", column === null || column === void 0 ? void 0 : (_column$props = column.props) === null || _column$props === void 0 ? void 0 : _column$props.justifyContent), _defineProperty(_props, "style", {
152
+ width: vars.length === 1 ? vars[0] : "calc(".concat(vars.join(' + '), ")")
153
+ }), _props);
154
+
155
+ if (name !== undefined && value !== undefined) {
156
+ props.style[name] = value;
157
+ }
158
+
159
+ var _iterator2 = _createForOfIteratorHelper(cell.cellPropsLayers || []),
160
+ _step2;
161
+
162
+ try {
163
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
164
+ var cellPropLayer = _step2.value;
165
+
166
+ var _cellPropLayer$childr = cellPropLayer.childrenPropsGetter,
167
+ childrenPropsGetter = _cellPropLayer$childr === void 0 ? function (p) {
168
+ return p;
169
+ } : _cellPropLayer$childr,
170
+ other = _objectWithoutProperties(cellPropLayer, _excluded2);
171
+
172
+ var propsCell = assignProps(other, props);
173
+ props = assignProps(childrenPropsGetter(propsCell, cellsByColumn, index), propsCell);
174
+ }
175
+ } catch (err) {
176
+ _iterator2.e(err);
177
+ } finally {
178
+ _iterator2.f();
179
+ }
180
+
181
+ return _ref3 = sstyled(styles), /*#__PURE__*/React.createElement(SCell, _ref3.cn("SCell", _objectSpread(_objectSpread({
139
182
  "key": cell.name
140
183
  }, props), {}, {
141
184
  "fixed": cell.fixed,
142
185
  "theme": props.theme,
143
186
  "use": use
144
- })))));
187
+ })));
145
188
  }
146
-
147
- return acc;
148
189
  }, []);
149
190
  }
150
191
  }, {
@@ -161,8 +202,12 @@ var Body = /*#__PURE__*/function (_Component) {
161
202
  styles = _this$asProps3.styles,
162
203
  rows = _this$asProps3.rows,
163
204
  columns = _this$asProps3.columns,
164
- $scrollRef = _this$asProps3.$scrollRef,
165
- onResize = _this$asProps3.onResize;
205
+ onResize = _this$asProps3.onResize,
206
+ $scrollRef = _this$asProps3.$scrollRef;
207
+ var columnsInitialized = columns.reduce(function (sum, _ref5) {
208
+ var width = _ref5.width;
209
+ return sum + width;
210
+ }, 0) > 0 || testEnv;
166
211
 
167
212
  var _getScrollOffsetValue = getScrollOffsetValue(columns),
168
213
  _getScrollOffsetValue2 = _slicedToArray(_getScrollOffsetValue, 2),
@@ -170,10 +215,6 @@ var Body = /*#__PURE__*/function (_Component) {
170
215
  offsetRightSum = _getScrollOffsetValue2[1];
171
216
 
172
217
  var offsetSum = offsetLeftSum + offsetRightSum;
173
- var columnsInitialized = columns.reduce(function (sum, _ref7) {
174
- var width = _ref7.width;
175
- return sum + width;
176
- }, 0) > 0 || testEnv;
177
218
  return _ref4 = sstyled(styles), /*#__PURE__*/React.createElement(SBodyWrapper, _ref4.cn("SBodyWrapper", {}), /*#__PURE__*/React.createElement(ScrollArea, _ref4.cn("ScrollArea", {
178
219
  "shadow": true,
179
220
  "styles": scrollStyles,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Body.jsx"],"names":["React","Component","sstyled","Root","Box","Flex","ScrollArea","getFixedStyle","getScrollOffsetValue","assignProps","testEnv","process","env","NODE_ENV","getCellsByColumn","row","reduce","acc","cell","name","Array","isArray","concat","data","Body","rows","SRow","asProps","styles","$propsRow","map","index","cellsByColumn","_row","props","getRowProps","p","other","propsRow","children","renderCells","theme","active","SCell","columns","use","renderRows","column","find","c","value","vars","cssVar","n","rendersCell","getCellProps","propsCell","justifyContent","style","length","join","push","fixed","SBody","SBodyWrapper","SScrollAreaBar","Bar","Children","$scrollRef","onResize","offsetLeftSum","offsetRightSum","offsetSum","columnsInitialized","sum","width","scrollStyles","origin"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,SAAT,EAAoBC,OAApB,EAA6BC,IAA7B,QAAyC,eAAzC;AACA,SAASC,GAAT,EAAcC,IAAd,QAA0B,mBAA1B;AACA,OAAOC,UAAP,MAAuB,sBAAvB;AACA,SAASC,aAAT,EAAwBC,oBAAxB,QAAoD,SAApD;AACA,OAAOC,WAAP,MAAwB,gCAAxB;;;;;;;;;;;;;;;;AAIA,IAAMC,OAAO,GAAGC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,MAAzC;;AAEA,SAASC,gBAAT,CAA0BC,GAA1B,EAA+B;AAC7B,SAAOA,GAAG,CAACC,MAAJ,CAAW,UAACC,GAAD,EAAMC,IAAN,EAAe;AAC/BD,IAAAA,GAAG,CAACC,IAAI,CAACC,IAAN,CAAH,GAAiBF,GAAG,CAACC,IAAI,CAACC,IAAN,CAAH,GACbC,KAAK,CAACC,OAAN,CAAcJ,GAAG,CAACC,IAAI,CAACC,IAAN,CAAjB,IACEF,GAAG,CAACC,IAAI,CAACC,IAAN,CAAH,CAAeG,MAAf,CAAsBJ,IAAI,CAACK,IAA3B,CADF,GAEE,CAACN,GAAG,CAACC,IAAI,CAACC,IAAN,CAAJ,EAAiBD,IAAI,CAACK,IAAtB,CAHW,GAIbL,IAAI,CAACK,IAJT;AAKA,WAAON,GAAP;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD;;IAEKO,I;;;;;;;;;;;;;WACJ,oBAAWC,IAAX,EAAiB;AAAA;;AACf,UAAMC,IAAI,GAAGtB,GAAb;AACA,0BAA8B,KAAKuB,OAAnC;AAAA,UAAQC,MAAR,iBAAQA,MAAR;AAAA,UAAgBC,SAAhB,iBAAgBA,SAAhB;AAEA,aAAOJ,IAAI,CAACK,GAAL,CAAS,UAACf,GAAD,EAAMgB,KAAN,EAAgB;AAAA;;AAC9B,YAAMC,aAAa,GAAGjB,GAAG,CAACkB,IAAJ,IAAYnB,gBAAgB,CAACC,GAAD,CAAlD;AACA,YAAMmB,KAAK,GAAGL,SAAS,CAACb,MAAV,CACZ,UAACC,GAAD,SAA+C;AAAA,wCAAvCkB,WAAuC;AAAA,cAAvCA,WAAuC,kCAAzB,UAACC,CAAD;AAAA,mBAAOA,CAAP;AAAA,WAAyB;AAAA,cAAZC,KAAY;;AAC7C,cAAMC,QAAQ,GAAG7B,WAAW,CAAC4B,KAAD,EAAQpB,GAAR,CAA5B;AACA,iBAAOR,WAAW,CAAC0B,WAAW,CAACG,QAAD,EAAWN,aAAX,EAA0BD,KAA1B,CAAZ,EAA8CO,QAA9C,CAAlB;AACD,SAJW,EAKZ;AACEC,UAAAA,QAAQ,EAAE,KAAI,CAACC,WAAL,CAAiBzB,GAAjB,EAAsBiB,aAAtB,EAAqCD,KAArC;AADZ,SALY,CAAd;AASA,uBAAO7B,OAAO,CAAC0B,MAAD,CAAd,eACE,oBAAC,IAAD;AAAA,iBAAWG,KAAX;AAAA,mBAAyBG,KAAK,CAACO,KAA/B;AAAA,oBAA8CP,KAAK,CAACQ;AAApD,WAAgER,KAAhE,GADF;AAGD,OAdM,CAAP;AAeD;;;WAED,qBAAYnB,GAAZ,EAAiBiB,aAAjB,EAAgCD,KAAhC,EAAuC;AAAA;;AACrC,UAAMY,KAAK,GAAGtC,IAAd;AACA,2BAAiC,KAAKsB,OAAtC;AAAA,UAAQC,MAAR,kBAAQA,MAAR;AAAA,UAAgBgB,OAAhB,kBAAgBA,OAAhB;AAAA,UAAyBC,GAAzB,kBAAyBA,GAAzB;AACA,aAAO9B,GAAG,CAACC,MAAJ,CAAW,UAACC,GAAD,EAAMC,IAAN,EAAe;AAC/B,YAAIE,KAAK,CAACC,OAAN,CAAcH,IAAd,CAAJ,EAAyB;AACvBD,UAAAA,GAAG,GAAGA,GAAG,CAACK,MAAJ,eAAW,iCAAM,MAAI,CAACwB,UAAL,CAAgB5B,IAAhB,CAAN,CAAX,CAAN;AACD,SAFD,MAEO;AAAA;;AACL,cAAM6B,MAAM,GAAGH,OAAO,CAACI,IAAR,CAAa,UAACC,CAAD;AAAA,mBAAOA,CAAC,CAAC9B,IAAF,KAAWD,IAAI,CAACC,IAAvB;AAAA,WAAb,CAAf;;AACA,+BAAsBZ,aAAa,CAACW,IAAD,EAAO0B,OAAP,CAAnC;AAAA;AAAA,cAAOzB,IAAP;AAAA,cAAa+B,KAAb;;AACA,cAAMC,IAAI,GAAG,CAAC/B,KAAK,CAACC,OAAN,CAAcH,IAAI,CAACkC,MAAnB,IAA6BlC,IAAI,CAACkC,MAAlC,GAA2C,CAAClC,IAAI,CAACkC,MAAN,CAA5C,EAA2DtB,GAA3D,CACX,UAACuB,CAAD;AAAA,iCAAcA,CAAd;AAAA,WADW,CAAb;AAGA,cAAMnB,KAAK,GAAG,CAAChB,IAAI,CAACoC,WAAL,IAAoB,EAArB,EAAyBtC,MAAzB,CACZ,UAACC,GAAD,SAAgD;AAAA,2CAAxCsC,YAAwC;AAAA,gBAAxCA,YAAwC,mCAAzB,UAACnB,CAAD;AAAA,qBAAOA,CAAP;AAAA,aAAyB;AAAA,gBAAZC,KAAY;;AAC9C,gBAAMmB,SAAS,GAAG/C,WAAW,CAAC4B,KAAD,EAAQpB,GAAR,CAA7B;AACA,mBAAOR,WAAW,CAAC8C,YAAY,CAACC,SAAD,EAAYxB,aAAZ,EAA2BD,KAA3B,CAAb,EAAgDyB,SAAhD,CAAlB;AACD,WAJW,EAKZ;AACErC,YAAAA,IAAI,EAAED,IAAI,CAACC,IADb;AAEEoB,YAAAA,QAAQ,EAAErB,IAAI,CAACK,IAFjB;AAGEkC,YAAAA,cAAc,EAAEV,MAAF,aAAEA,MAAF,wCAAEA,MAAM,CAAEb,KAAV,kDAAE,cAAeuB,cAHjC;AAIEC,YAAAA,KAAK,wCACFvC,IADE,EACK+B,KADL,oCAEIC,IAAI,CAACQ,MAAL,KAAgB,CAAhB,GAAoBR,IAAI,CAAC,CAAD,CAAxB,kBAAsCA,IAAI,CAACS,IAAL,CAAU,KAAV,CAAtC,MAFJ;AAJP,WALY,CAAd;AAgBA3C,UAAAA,GAAG,CAAC4C,IAAJ,UACE3D,OAAO,CAAC0B,MAAD,CADT,eAEI,oBAAC,KAAD;AAAA,mBAAYV,IAAI,CAACC;AAAjB,aAA2Be,KAA3B;AAAA,qBAAyChB,IAAI,CAAC4C,KAA9C;AAAA,qBAA4D5B,KAAK,CAACO,KAAlE;AAAA,mBAA8EI;AAA9E,cAFJ;AAKD;;AACD,eAAO5B,GAAP;AACD,OAhCM,EAgCJ,EAhCI,CAAP;AAiCD;;;WAED,kBAAS;AAAA;AAAA;;AACP,UAAM8C,KAAK,GAmBY3D,GAnBvB;AACA,UAAM4D,YAAY,GAAG5D,GAArB;AACA,UAAM6D,cAAc,GAAG3D,UAAU,CAAC4D,GAAlC;AACA,2BAAkE,KAAKvC,OAAvE;AAAA,UAAQwC,QAAR,kBAAQA,QAAR;AAAA,UAAkBvC,MAAlB,kBAAkBA,MAAlB;AAAA,UAA0BH,IAA1B,kBAA0BA,IAA1B;AAAA,UAAgCmB,OAAhC,kBAAgCA,OAAhC;AAAA,UAAyCwB,UAAzC,kBAAyCA,UAAzC;AAAA,UAAqDC,QAArD,kBAAqDA,QAArD;;AAEA,kCAAwC7D,oBAAoB,CAACoC,OAAD,CAA5D;AAAA;AAAA,UAAO0B,aAAP;AAAA,UAAsBC,cAAtB;;AACA,UAAMC,SAAS,GAAGF,aAAa,GAAGC,cAAlC;AACA,UAAME,kBAAkB,GAAG7B,OAAO,CAAC5B,MAAR,CAAe,UAAC0D,GAAD;AAAA,YAAQC,KAAR,SAAQA,KAAR;AAAA,eAAoBD,GAAG,GAAGC,KAA1B;AAAA,OAAf,EAAgD,CAAhD,IAAqD,CAArD,IAA0DjE,OAArF;AAEA,qBAAOR,OAAO,CAAC0B,MAAD,CAAd,eACE,oBAAC,YAAD,6CACE,oBAAC,UAAD;AAAA;AAAA,kBAEUgD,YAFV;AAAA,8BAGeN,aAHf;AAAA,+BAIgBC,cAJhB;AAAA,oBAKYF;AALZ,uBAOE,oBAAC,UAAD,CAAY,SAAZ;AAAsB,QAAA,GAAG,EAAED;AAA3B,sBACE,oBAAC,KAAD,gEAAqBK,kBAAkB,GAAG,KAAK3B,UAAL,CAAgBrB,IAAhB,CAAH,GAA2B,IAAlE,CADF,CAPF,eAUE,oBAAC,cAAD;AAAA,uBACc,YADd;AAAA,0BAEW6C,aAFX;AAAA,2BAGYC,cAHZ;AAAA,+BAIgBC,SAJhB;AAAA,SAVF,eAgBE,oBAAC,cAAD;AAAA,uBAA4B;AAA5B,SAhBF,CADF,EAmBGL,QAAQ,CAACU,MAnBZ,CADF;AAuBD;;;;EA7FgB5E,S;;AAgGnB,eAAeuB,IAAf","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":["React","Component","sstyled","Root","Box","Flex","ScrollArea","getFixedStyle","getScrollOffsetValue","assignProps","testEnv","process","env","NODE_ENV","getCellsByColumn","cells","flattenCells","flat","Object","fromEntries","map","cell","name","data","Body","index","SRow","asProps","styles","rowPropsLayers","cellsByColumn","flatRowData","props","children","renderCells","theme","undefined","active","rowPropsLayer","childrenPropsGetter","p","other","propsRow","rows","renderRow","SCell","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","Bar","Children","onResize","$scrollRef","columnsInitialized","reduce","sum","offsetLeftSum","offsetRightSum","offsetSum","scrollStyles","origin"],"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 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"}