@kdcloudjs/table 1.0.0 → 1.0.3

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.
Files changed (178) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +34 -33
  3. package/dist/@kdcloudjs/table.css +1 -1
  4. package/dist/@kdcloudjs/table.css.map +1 -1
  5. package/dist/@kdcloudjs/table.js +6554 -3389
  6. package/dist/@kdcloudjs/table.js.map +1 -1
  7. package/dist/@kdcloudjs/table.min.css +1 -1
  8. package/dist/@kdcloudjs/table.min.js +32 -24
  9. package/dist/@kdcloudjs/table.min.js.map +1 -1
  10. package/es/_utils/hooks.js +1 -2
  11. package/es/_utils/numberUtil.js +3 -4
  12. package/es/locale/locale.js +1 -2
  13. package/es/table/base/calculations.js +3 -4
  14. package/es/table/base/empty.js +2 -2
  15. package/es/table/base/header.d.ts +6 -2
  16. package/es/table/base/header.js +41 -22
  17. package/es/table/base/helpers/SpanManager.js +1 -1
  18. package/es/table/base/helpers/TableDOMUtils.d.ts +3 -0
  19. package/es/table/base/helpers/TableDOMUtils.js +23 -5
  20. package/es/table/base/helpers/getRichVisibleRectsStream.d.ts +23 -0
  21. package/es/table/base/helpers/getRichVisibleRectsStream.js +216 -0
  22. package/es/table/base/html-table.d.ts +3 -1
  23. package/es/table/base/html-table.js +43 -26
  24. package/es/table/base/interfaces.d.ts +1 -0
  25. package/es/table/base/renderTemplates.d.ts +1 -0
  26. package/es/table/base/renderTemplates.js +344 -0
  27. package/es/table/base/styles.d.ts +24 -0
  28. package/es/table/base/styles.js +31 -9
  29. package/es/table/base/table.d.ts +12 -4
  30. package/es/table/base/table.js +183 -136
  31. package/es/table/base/utils.d.ts +6 -3
  32. package/es/table/base/utils.js +27 -6
  33. package/es/table/common-views.js +3 -3
  34. package/es/table/pipeline/features/__test__/treeMode.test.js +2 -1
  35. package/es/table/pipeline/features/autoFill.js +7 -1
  36. package/es/table/pipeline/features/columnDrag.js +168 -59
  37. package/es/table/pipeline/features/columnFilter.js +7 -9
  38. package/es/table/pipeline/features/columnResizeWidth.d.ts +3 -0
  39. package/es/table/pipeline/features/columnResizeWidth.js +11 -4
  40. package/es/table/pipeline/features/contextMenu.js +78 -31
  41. package/es/table/pipeline/features/filter/Filter.js +74 -37
  42. package/es/table/pipeline/features/index.d.ts +1 -0
  43. package/es/table/pipeline/features/index.js +2 -1
  44. package/es/table/pipeline/features/multiSelect.js +83 -79
  45. package/es/table/pipeline/features/rangeSelection.d.ts +10 -0
  46. package/es/table/pipeline/features/rangeSelection.js +231 -0
  47. package/es/table/pipeline/features/rowDetail.js +39 -16
  48. package/es/table/pipeline/features/rowGrouping.js +2 -1
  49. package/es/table/pipeline/features/singleSelect.js +4 -1
  50. package/es/table/pipeline/features/sort.js +2 -3
  51. package/es/table/pipeline/features/treeMode.js +4 -4
  52. package/es/table/pipeline/pipeline.d.ts +8 -0
  53. package/es/table/pipeline/pipeline.js +49 -5
  54. package/es/table/pivot/cross-table/buildCrossTable.js +1 -2
  55. package/es/table/pivot/cross-tree-table/buildCrossTreeTable.js +1 -2
  56. package/es/table/pivot/pivot-utils/builders.js +1 -2
  57. package/es/table/pivot/pivot-utils/convert-utils.js +5 -4
  58. package/es/table/transforms/autoWidth.js +1 -2
  59. package/es/table/transforms/sort.js +1 -2
  60. package/es/table/transforms/treeMode.js +1 -2
  61. package/es/table/utils/applyTransforms.js +1 -3
  62. package/es/table/utils/browserType.d.ts +6 -0
  63. package/es/table/utils/browserType.js +6 -0
  64. package/es/table/utils/buildTree.js +4 -5
  65. package/es/table/utils/collectNodes.js +1 -2
  66. package/es/table/utils/exportTableAsExcel.js +1 -2
  67. package/es/table/utils/getTreeDepth.js +1 -2
  68. package/es/table/utils/groupBy.js +1 -2
  69. package/es/table/utils/index.d.ts +1 -0
  70. package/es/table/utils/index.js +2 -1
  71. package/es/table/utils/layeredSort.js +5 -2
  72. package/es/table/utils/makeRecursiveMapper.js +4 -5
  73. package/es/table/utils/others.d.ts +1 -1
  74. package/es/table/utils/others.js +20 -14
  75. package/es/table/utils/traverseColumn.js +1 -2
  76. package/es/table/utils/tree-data-helpers/StrictTreeDataHelper.js +4 -5
  77. package/es/table/utils/tree-data-helpers/TreeDataHelper.js +4 -5
  78. package/lib/_utils/formatUtil.js +1 -1
  79. package/lib/_utils/hooks.js +2 -4
  80. package/lib/_utils/numberUtil.js +7 -9
  81. package/lib/_utils/usePopper.js +9 -1
  82. package/lib/config-provider/configProvider.js +9 -1
  83. package/lib/config-provider/index.js +5 -5
  84. package/lib/locale/index.js +14 -6
  85. package/lib/locale/locale.js +2 -4
  86. package/lib/table/base/calculations.js +4 -6
  87. package/lib/table/base/empty.js +11 -3
  88. package/lib/table/base/header.d.ts +6 -2
  89. package/lib/table/base/header.js +39 -19
  90. package/lib/table/base/helpers/SpanManager.js +1 -1
  91. package/lib/table/base/helpers/TableDOMUtils.d.ts +3 -0
  92. package/lib/table/base/helpers/TableDOMUtils.js +21 -5
  93. package/lib/table/base/helpers/getRichVisibleRectsStream.d.ts +23 -0
  94. package/lib/table/base/helpers/getRichVisibleRectsStream.js +246 -0
  95. package/lib/table/base/html-table.d.ts +3 -1
  96. package/lib/table/base/html-table.js +44 -26
  97. package/lib/table/base/index.js +4 -4
  98. package/lib/table/base/interfaces.d.ts +1 -0
  99. package/lib/table/base/renderTemplates.d.ts +1 -0
  100. package/lib/table/base/renderTemplates.js +370 -0
  101. package/lib/table/base/styles.d.ts +24 -0
  102. package/lib/table/base/styles.js +42 -13
  103. package/lib/table/base/table.d.ts +12 -4
  104. package/lib/table/base/table.js +191 -137
  105. package/lib/table/base/utils.d.ts +6 -3
  106. package/lib/table/base/utils.js +47 -10
  107. package/lib/table/common-views.js +3 -3
  108. package/lib/table/pipeline/features/__test__/sort.test.js +5 -3
  109. package/lib/table/pipeline/features/__test__/treeMode.test.js +3 -1
  110. package/lib/table/pipeline/features/autoFill.js +9 -2
  111. package/lib/table/pipeline/features/columnDrag.js +168 -59
  112. package/lib/table/pipeline/features/columnFilter.js +6 -9
  113. package/lib/table/pipeline/features/columnResizeWidth.d.ts +3 -0
  114. package/lib/table/pipeline/features/columnResizeWidth.js +21 -5
  115. package/lib/table/pipeline/features/contextMenu.js +89 -32
  116. package/lib/table/pipeline/features/filter/DefaultFilterContent.js +10 -2
  117. package/lib/table/pipeline/features/filter/Filter.js +88 -37
  118. package/lib/table/pipeline/features/filter/FilterPanel.js +10 -2
  119. package/lib/table/pipeline/features/filter/index.js +4 -4
  120. package/lib/table/pipeline/features/index.d.ts +1 -0
  121. package/lib/table/pipeline/features/index.js +37 -27
  122. package/lib/table/pipeline/features/multiSelect.js +79 -75
  123. package/lib/table/pipeline/features/rangeSelection.d.ts +10 -0
  124. package/lib/table/pipeline/features/rangeSelection.js +256 -0
  125. package/lib/table/pipeline/features/rowDetail.js +42 -16
  126. package/lib/table/pipeline/features/rowGrouping.js +3 -1
  127. package/lib/table/pipeline/features/singleSelect.js +4 -1
  128. package/lib/table/pipeline/features/sort.js +2 -4
  129. package/lib/table/pipeline/features/treeMode.js +6 -6
  130. package/lib/table/pipeline/index.js +11 -3
  131. package/lib/table/pipeline/pipeline.d.ts +8 -0
  132. package/lib/table/pipeline/pipeline.js +50 -7
  133. package/lib/table/pivot/cross-table/buildCrossTable.js +1 -3
  134. package/lib/table/pivot/cross-table/index.js +4 -4
  135. package/lib/table/pivot/cross-tree-table/buildCrossTreeTable.js +1 -3
  136. package/lib/table/pivot/pivot-utils/builders.js +2 -4
  137. package/lib/table/pivot/pivot-utils/convert-utils.js +7 -5
  138. package/lib/table/pivot/pivot-utils/index.js +4 -4
  139. package/lib/table/transforms/autoWidth.js +10 -4
  140. package/lib/table/transforms/columnResize.js +10 -2
  141. package/lib/table/transforms/index.js +32 -32
  142. package/lib/table/transforms/sort.js +10 -4
  143. package/lib/table/transforms/treeMode.js +9 -3
  144. package/lib/table/utils/applyTransforms.js +1 -5
  145. package/lib/table/utils/browserType.d.ts +6 -0
  146. package/lib/table/utils/browserType.js +13 -0
  147. package/lib/table/utils/buildTree.js +1 -3
  148. package/lib/table/utils/collectNodes.js +1 -3
  149. package/lib/table/utils/copyToClipboard.js +1 -1
  150. package/lib/table/utils/element.js +3 -3
  151. package/lib/table/utils/exportTableAsExcel.js +1 -3
  152. package/lib/table/utils/getTreeDepth.js +1 -3
  153. package/lib/table/utils/groupBy.js +1 -3
  154. package/lib/table/utils/index.d.ts +1 -0
  155. package/lib/table/utils/index.js +57 -49
  156. package/lib/table/utils/layeredSort.js +6 -2
  157. package/lib/table/utils/makeRecursiveMapper.js +1 -3
  158. package/lib/table/utils/others.d.ts +1 -1
  159. package/lib/table/utils/others.js +23 -18
  160. package/lib/table/utils/traverseColumn.js +1 -3
  161. package/lib/table/utils/tree-data-helpers/StrictTreeDataHelper.js +5 -7
  162. package/lib/table/utils/tree-data-helpers/TreeDataHelper.js +5 -7
  163. package/package.json +7 -2
  164. package/dist/kd-table.css +0 -422
  165. package/dist/kd-table.css.map +0 -1
  166. package/dist/kd-table.js +0 -38578
  167. package/dist/kd-table.js.map +0 -1
  168. package/dist/kd-table.min.css +0 -9
  169. package/dist/kd-table.min.js +0 -208
  170. package/dist/kd-table.min.js.map +0 -1
  171. package/es/table/base/helpers/__test__/visible-part.test.d.ts +0 -1
  172. package/es/table/base/helpers/__test__/visible-part.test.js +0 -28
  173. package/es/table/base/helpers/visible-part.d.ts +0 -23
  174. package/es/table/base/helpers/visible-part.js +0 -58
  175. package/lib/table/base/helpers/__test__/visible-part.test.d.ts +0 -1
  176. package/lib/table/base/helpers/__test__/visible-part.test.js +0 -31
  177. package/lib/table/base/helpers/visible-part.d.ts +0 -23
  178. package/lib/table/base/helpers/visible-part.js +0 -72
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+
3
5
  var _Reflect$construct = require("@babel/runtime-corejs3/core-js-stable/reflect/construct");
4
6
 
5
7
  var _sliceInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/slice");
@@ -10,9 +12,9 @@ var _Symbol = require("@babel/runtime-corejs3/core-js-stable/symbol");
10
12
 
11
13
  var _getIteratorMethod = require("@babel/runtime-corejs3/core-js/get-iterator-method");
12
14
 
13
- var _getIterator = require("@babel/runtime-corejs3/core-js/get-iterator");
15
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
14
16
 
15
- var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard");
17
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
16
18
 
17
19
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
18
20
 
@@ -21,10 +23,10 @@ Object.defineProperty(exports, "__esModule", {
21
23
  });
22
24
  exports.BaseTable = void 0;
23
25
 
24
- var _flat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/flat"));
25
-
26
26
  var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
27
27
 
28
+ var _flat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/flat"));
29
+
28
30
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
29
31
 
30
32
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
@@ -57,12 +59,12 @@ var _empty = require("./empty");
57
59
 
58
60
  var _header = _interopRequireDefault(require("./header"));
59
61
 
62
+ var _getRichVisibleRectsStream = require("./helpers/getRichVisibleRectsStream");
63
+
60
64
  var _rowHeightManager = require("./helpers/rowHeightManager");
61
65
 
62
66
  var _TableDOMUtils = require("./helpers/TableDOMUtils");
63
67
 
64
- var _visiblePart = require("./helpers/visible-part");
65
-
66
68
  var _htmlTable = require("./html-table");
67
69
 
68
70
  var _loading = _interopRequireDefault(require("./loading"));
@@ -75,7 +77,13 @@ var _cssVarsPonyfill = _interopRequireDefault(require("css-vars-ponyfill"));
75
77
 
76
78
  var _utils2 = require("../utils");
77
79
 
78
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof _Symbol === "undefined" || _getIteratorMethod(o) == null) { 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 = _getIterator(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; } } }; }
80
+ var _renderTemplates = _interopRequireDefault(require("./renderTemplates"));
81
+
82
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
83
+
84
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
85
+
86
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || 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; } } }; }
79
87
 
80
88
  function _unsupportedIterableToArray(o, minLen) { var _context2; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty2(_context2 = Object.prototype.toString.call(o)).call(_context2, 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); }
81
89
 
@@ -99,7 +107,6 @@ var cssPolifill = function cssPolifill(_ref) {
99
107
  return;
100
108
  }
101
109
 
102
- var t0 = performance.now();
103
110
  (0, _cssVarsPonyfill.default)({
104
111
  // exclude: 'link[href*="semantic-ui"]',
105
112
  // onlyLegacy: false,
@@ -107,13 +114,7 @@ var cssPolifill = function cssPolifill(_ref) {
107
114
  include: 'style[data-styled]',
108
115
  variables: (0, _extends2.default)({}, _styles.defaultCSSVariables, variables),
109
116
  watch: true,
110
- silent: true,
111
- onComplete: function onComplete() {
112
- var t1 = performance.now();
113
- var time = ((t1 - t0) / 1000).toFixed(2);
114
-
115
- _utils2.console.log("css-vars-ponyfill completed in ".concat(time, " seconds"));
116
- }
117
+ silent: true
117
118
  });
118
119
  };
119
120
 
@@ -142,6 +143,130 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
142
143
  _this.rootSubscription = new _rxjs.Subscription();
143
144
  _this.hasScrollY = false;
144
145
  _this.resizeSubject = new _rxjs.Subject();
146
+
147
+ _this.getRowNodeListByEvent = function (e) {
148
+ var nodeList = null;
149
+ var rowIndex = e.currentTarget.dataset.rowindex;
150
+
151
+ if (rowIndex !== undefined) {
152
+ var _this$domHelper = _this.domHelper,
153
+ tableBody = _this$domHelper.tableBody,
154
+ tableFooter = _this$domHelper.tableFooter;
155
+ var targetParent = tableBody.contains(e.currentTarget) ? tableBody : tableFooter;
156
+ nodeList = targetParent.querySelectorAll("tr[data-rowindex=\"".concat(rowIndex, "\"]"));
157
+ }
158
+
159
+ return nodeList;
160
+ };
161
+
162
+ _this.handleRowMouseEnter = function (e) {
163
+ var nodeList = _this.getRowNodeListByEvent(e);
164
+
165
+ nodeList && nodeList.forEach(function (node) {
166
+ node.classList.add('row-hover');
167
+ });
168
+ };
169
+
170
+ _this.handleRowMouseLeave = function (e) {
171
+ var nodeList = _this.getRowNodeListByEvent(e);
172
+
173
+ nodeList && nodeList.forEach(function (node) {
174
+ node.classList.remove('row-hover');
175
+ });
176
+ };
177
+
178
+ _this.renderTableBody = function (info) {
179
+ // console.log('render body')
180
+ var _this$props = _this.props,
181
+ dataSource = _this$props.dataSource,
182
+ getRowProps = _this$props.getRowProps,
183
+ primaryKey = _this$props.primaryKey,
184
+ isLoading = _this$props.isLoading,
185
+ emptyCellHeight = _this$props.emptyCellHeight,
186
+ footerDataSource = _this$props.footerDataSource;
187
+ var tableBodyClassName = (0, _classnames.default)(_styles.Classes.tableBody, _styles.Classes.horizontalScrollContainer); // 低版本Edge浏览器下也会出现双滚动条,这里设置overflow: 'hidden',先去掉edge的方向键控制滚动条的功能
188
+
189
+ var virtualStyle = _utils2.browserType.isIE || _utils2.browserType.isEdge ? {
190
+ overflow: 'hidden'
191
+ } : {};
192
+
193
+ if (dataSource.length === 0) {
194
+ var _this$props2 = _this.props,
195
+ components = _this$props2.components,
196
+ emptyContent = _this$props2.emptyContent;
197
+ var EmptyContent = components.EmptyContent;
198
+
199
+ if (EmptyContent == null && emptyContent != null) {
200
+ warnPropsDotEmptyContentIsDeprecated();
201
+
202
+ EmptyContent = function EmptyContent() {
203
+ return emptyContent;
204
+ };
205
+ }
206
+
207
+ return /*#__PURE__*/_react.default.createElement("div", {
208
+ className: (0, _classnames.default)(tableBodyClassName, 'empty')
209
+ }, /*#__PURE__*/_react.default.createElement("div", {
210
+ className: _styles.Classes.virtual,
211
+ style: virtualStyle
212
+ }, /*#__PURE__*/_react.default.createElement(_empty.EmptyHtmlTable, {
213
+ descriptors: info.visible,
214
+ isLoading: isLoading,
215
+ EmptyContent: EmptyContent,
216
+ emptyCellHeight: emptyCellHeight
217
+ })));
218
+ }
219
+
220
+ var _info$verticalRenderR = info.verticalRenderRange,
221
+ topIndex = _info$verticalRenderR.topIndex,
222
+ bottomBlank = _info$verticalRenderR.bottomBlank,
223
+ topBlank = _info$verticalRenderR.topBlank,
224
+ bottomIndex = _info$verticalRenderR.bottomIndex;
225
+ var renderBody = (0, _renderTemplates.default)('body');
226
+
227
+ if (typeof renderBody === 'function') {
228
+ return renderBody(info, _this.props, {
229
+ rowProps: {
230
+ onMouseEnter: _this.handleRowMouseEnter,
231
+ onMouseLeave: _this.handleRowMouseLeave
232
+ },
233
+ hasScrollY: _this.hasScrollY
234
+ });
235
+ }
236
+
237
+ return /*#__PURE__*/_react.default.createElement("div", {
238
+ className: tableBodyClassName
239
+ }, /*#__PURE__*/_react.default.createElement("div", {
240
+ className: _styles.Classes.virtual,
241
+ style: virtualStyle
242
+ }, topBlank > 0 && /*#__PURE__*/_react.default.createElement("div", {
243
+ key: "top-blank",
244
+ className: (0, _classnames.default)(_styles.Classes.virtualBlank, 'top'),
245
+ style: {
246
+ height: topBlank
247
+ }
248
+ }), /*#__PURE__*/_react.default.createElement(_htmlTable.HtmlTable, {
249
+ tbodyHtmlTag: "tbody",
250
+ getRowProps: getRowProps,
251
+ primaryKey: primaryKey,
252
+ data: (0, _slice.default)(dataSource).call(dataSource, topIndex, bottomIndex),
253
+ hasScrollY: _this.hasScrollY,
254
+ horizontalRenderInfo: info,
255
+ verticalRenderInfo: {
256
+ first: 0,
257
+ offset: topIndex,
258
+ limit: bottomIndex,
259
+ last: dataSource.length - 1
260
+ }
261
+ }), bottomBlank > 0 && /*#__PURE__*/_react.default.createElement("div", {
262
+ key: "bottom-blank",
263
+ className: (0, _classnames.default)(_styles.Classes.virtualBlank, 'bottom'),
264
+ style: {
265
+ height: bottomBlank
266
+ }
267
+ })));
268
+ };
269
+
145
270
  _this.state = {
146
271
  hasScroll: true,
147
272
  hasScrollY: true,
@@ -173,10 +298,10 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
173
298
  value: function updateStickyScroll() {
174
299
  var _a, _b;
175
300
 
176
- var _this$domHelper = this.domHelper,
177
- stickyScroll = _this$domHelper.stickyScroll,
178
- artTable = _this$domHelper.artTable,
179
- stickyScrollItem = _this$domHelper.stickyScrollItem;
301
+ var _this$domHelper2 = this.domHelper,
302
+ stickyScroll = _this$domHelper2.stickyScroll,
303
+ artTable = _this$domHelper2.artTable,
304
+ stickyScrollItem = _this$domHelper2.stickyScrollItem;
180
305
  var _lastHasScrollY = this.hasScrollY;
181
306
 
182
307
  if (!artTable) {
@@ -207,7 +332,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
207
332
  }
208
333
  }
209
334
 
210
- if (this.domHelper.tableElement.offsetHeight > this.domHelper.tableBody.offsetHeight) {
335
+ if (this.domHelper.virtual.offsetHeight > this.domHelper.tableBody.offsetHeight) {
211
336
  // if (!this.state.hasScroll) {
212
337
  // this.setState({
213
338
  // hasScrollY: true
@@ -215,7 +340,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
215
340
  // }
216
341
  this.hasScrollY = true;
217
342
  } else {
218
- stickyScroll.style.marginRight = "".concat(stickyScrollHeight, "px"); // this.setState({
343
+ stickyScroll.style.paddingRight = "".concat(stickyScrollHeight, "px"); // this.setState({
219
344
  // hasScrollY: false
220
345
  // })
221
346
 
@@ -232,9 +357,14 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
232
357
  }, {
233
358
  key: "renderTableHeader",
234
359
  value: function renderTableHeader(info) {
235
- var _this$props = this.props,
236
- stickyTop = _this$props.stickyTop,
237
- hasHeader = _this$props.hasHeader; // console.log('render header')
360
+ var _this$props3 = this.props,
361
+ stickyTop = _this$props3.stickyTop,
362
+ hasHeader = _this$props3.hasHeader;
363
+ var renderHeader = (0, _renderTemplates.default)('header');
364
+
365
+ if (typeof renderHeader === 'function') {
366
+ return renderHeader(info, this.props);
367
+ }
238
368
 
239
369
  return /*#__PURE__*/_react.default.createElement("div", {
240
370
  className: (0, _classnames.default)(_styles.Classes.tableHeader, 'no-scrollbar'),
@@ -244,6 +374,11 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
244
374
  }
245
375
  }, /*#__PURE__*/_react.default.createElement(_header.default, {
246
376
  info: info
377
+ }), /*#__PURE__*/_react.default.createElement("div", {
378
+ className: _styles.Classes.verticalScrollPlaceholder,
379
+ style: this.hasScrollY ? {
380
+ width: (0, _utils.getScrollbarSize)().width
381
+ } : undefined
247
382
  }));
248
383
  }
249
384
  }, {
@@ -308,80 +443,6 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
308
443
  return (0, _rowHeightManager.getFullRenderRange)(rowCount);
309
444
  }
310
445
  }
311
- }, {
312
- key: "renderTableBody",
313
- value: function renderTableBody(info) {
314
- // console.log('render body')
315
- var _this$props2 = this.props,
316
- dataSource = _this$props2.dataSource,
317
- getRowProps = _this$props2.getRowProps,
318
- primaryKey = _this$props2.primaryKey,
319
- isLoading = _this$props2.isLoading,
320
- emptyCellHeight = _this$props2.emptyCellHeight,
321
- footerDataSource = _this$props2.footerDataSource;
322
- var tableBodyClassName = (0, _classnames.default)(_styles.Classes.tableBody, _styles.Classes.horizontalScrollContainer);
323
-
324
- if (dataSource.length === 0) {
325
- var _this$props3 = this.props,
326
- components = _this$props3.components,
327
- emptyContent = _this$props3.emptyContent;
328
- var EmptyContent = components.EmptyContent;
329
-
330
- if (EmptyContent == null && emptyContent != null) {
331
- warnPropsDotEmptyContentIsDeprecated();
332
-
333
- EmptyContent = function EmptyContent() {
334
- return emptyContent;
335
- };
336
- }
337
-
338
- return /*#__PURE__*/_react.default.createElement("div", {
339
- className: (0, _classnames.default)(tableBodyClassName, 'empty')
340
- }, /*#__PURE__*/_react.default.createElement("div", {
341
- className: _styles.Classes.virtual
342
- }, /*#__PURE__*/_react.default.createElement(_empty.EmptyHtmlTable, {
343
- descriptors: info.visible,
344
- isLoading: isLoading,
345
- EmptyContent: EmptyContent,
346
- emptyCellHeight: emptyCellHeight
347
- })));
348
- }
349
-
350
- var _info$verticalRenderR = info.verticalRenderRange,
351
- topIndex = _info$verticalRenderR.topIndex,
352
- bottomBlank = _info$verticalRenderR.bottomBlank,
353
- topBlank = _info$verticalRenderR.topBlank,
354
- bottomIndex = _info$verticalRenderR.bottomIndex;
355
- return /*#__PURE__*/_react.default.createElement("div", {
356
- className: tableBodyClassName
357
- }, /*#__PURE__*/_react.default.createElement("div", {
358
- className: _styles.Classes.virtual
359
- }, topBlank > 0 && /*#__PURE__*/_react.default.createElement("div", {
360
- key: "top-blank",
361
- className: (0, _classnames.default)(_styles.Classes.virtualBlank, 'top'),
362
- style: {
363
- height: topBlank
364
- }
365
- }), /*#__PURE__*/_react.default.createElement(_htmlTable.HtmlTable, {
366
- tbodyHtmlTag: "tbody",
367
- getRowProps: getRowProps,
368
- primaryKey: primaryKey,
369
- data: (0, _slice.default)(dataSource).call(dataSource, topIndex, bottomIndex),
370
- horizontalRenderInfo: info,
371
- verticalRenderInfo: {
372
- first: 0,
373
- offset: topIndex,
374
- limit: bottomIndex,
375
- last: dataSource.length - 1
376
- }
377
- }), bottomBlank > 0 && /*#__PURE__*/_react.default.createElement("div", {
378
- key: "bottom-blank",
379
- className: (0, _classnames.default)(_styles.Classes.virtualBlank, 'bottom'),
380
- style: {
381
- height: bottomBlank
382
- }
383
- })));
384
- }
385
446
  }, {
386
447
  key: "renderTableFooter",
387
448
  value: function renderTableFooter(info) {
@@ -392,6 +453,17 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
392
453
  getRowProps = _this$props4.getRowProps,
393
454
  primaryKey = _this$props4.primaryKey,
394
455
  stickyBottom = _this$props4.stickyBottom;
456
+ var renderFooter = (0, _renderTemplates.default)('footer');
457
+
458
+ if (typeof renderFooter === 'function') {
459
+ return renderFooter(info, this.props, {
460
+ rowProps: {
461
+ onMouseEnter: this.handleRowMouseEnter,
462
+ onMouseLeave: this.handleRowMouseLeave
463
+ }
464
+ });
465
+ }
466
+
395
467
  return /*#__PURE__*/_react.default.createElement("div", {
396
468
  className: (0, _classnames.default)(_styles.Classes.tableFooter, _styles.Classes.horizontalScrollContainer),
397
469
  style: {
@@ -409,6 +481,12 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
409
481
  last: footerDataSource.length - 1,
410
482
  limit: Infinity
411
483
  }
484
+ }), /*#__PURE__*/_react.default.createElement("div", {
485
+ className: _styles.Classes.verticalScrollPlaceholder,
486
+ style: this.hasScrollY ? {
487
+ width: (0, _utils.getScrollbarSize)().width,
488
+ visibility: 'initial'
489
+ } : undefined
412
490
  }));
413
491
  }
414
492
  }, {
@@ -477,7 +555,8 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
477
555
  'has-header': hasHeader,
478
556
  'sticky-header': isStickyHeader !== null && isStickyHeader !== void 0 ? isStickyHeader : isStickyHead,
479
557
  'has-footer': footerDataSource.length > 0,
480
- 'sticky-footer': isStickyFooter
558
+ 'sticky-footer': isStickyFooter,
559
+ 'ie-polyfill-wrapper': _utils2.browserType.isIE
481
560
  }, className);
482
561
  var artTableWrapperProps = (0, _defineProperty2.default)({
483
562
  className: artTableWrapperClassName,
@@ -494,7 +573,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
494
573
  }, {
495
574
  key: "componentDidMount",
496
575
  value: function componentDidMount() {
497
- var _a, _b; // console.log('did mount start')
576
+ var _a, _b, _c, _d; // console.log('did mount start')
498
577
  // console.log('update dom helper start')
499
578
 
500
579
 
@@ -512,6 +591,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
512
591
  enableCSSVariables: enableCSSVariables
513
592
  });
514
593
  (_b = (_a = this.props).setTableWidth) === null || _b === void 0 ? void 0 : _b.call(_a, this.domHelper.tableBody.clientWidth);
594
+ (_d = (_c = this.props).setTableDomHelper) === null || _d === void 0 ? void 0 : _d.call(_c, this.domHelper);
515
595
  }
516
596
  }, {
517
597
  key: "componentDidUpdate",
@@ -544,7 +624,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
544
624
  var currentHasFooter = this.props.footerDataSource.length > 0;
545
625
 
546
626
  if (!prevHasFooter && currentHasFooter) {
547
- this.domHelper.tableFooter.scrollLeft = this.domHelper.tableBody.scrollLeft;
627
+ (0, _utils.getTableScrollFooterDOM)(this.domHelper).scrollLeft = this.domHelper.tableBody.scrollLeft;
548
628
  }
549
629
  }
550
630
  }
@@ -553,11 +633,9 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
553
633
  value: function initSubscriptions() {
554
634
  var _this2 = this;
555
635
 
556
- var _this$domHelper2 = this.domHelper,
557
- tableHeader = _this$domHelper2.tableHeader,
558
- virtual = _this$domHelper2.virtual,
559
- tableFooter = _this$domHelper2.tableFooter,
560
- stickyScroll = _this$domHelper2.stickyScroll;
636
+ var _this$domHelper3 = this.domHelper,
637
+ virtual = _this$domHelper3.virtual,
638
+ stickyScroll = _this$domHelper3.stickyScroll;
561
639
  this.rootSubscription.add(_utils.throttledWindowResize$.subscribe(function () {
562
640
  _this2.updateStickyScroll();
563
641
 
@@ -575,36 +653,12 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
575
653
 
576
654
  this.resizeObserver = (0, _utils.addResizeObserver)(this.domHelper.artTableWrapper, handleTableWrapperResize); // 滚动同步
577
655
 
578
- this.rootSubscription.add((0, _utils.syncScrollLeft)([tableHeader, virtual, tableFooter, stickyScroll], function (scrollLeft) {
656
+ this.rootSubscription.add((0, _utils.syncScrollLeft)([(0, _utils.getTableScrollHeaderDOM)(this.domHelper), virtual, (0, _utils.getTableScrollFooterDOM)(this.domHelper), stickyScroll], function (scrollLeft) {
579
657
  _this2.syncHorizontalScroll(scrollLeft);
580
- })); // 表格所处的 flowRoot / BFC
581
-
582
- var resolvedFlowRoot$ = this.props$.pipe(op.map(function (props) {
583
- return props.flowRoot;
584
- }), op.switchMap(function (flowRoot) {
585
- var wrapper = _this2.domHelper.tableBody;
586
-
587
- if (flowRoot === 'auto') {
588
- var computedStyle = getComputedStyle(wrapper);
589
- return (0, _rxjs.of)(computedStyle.overflowY !== 'visible' ? wrapper : window);
590
- } else if (flowRoot === 'self') {
591
- return (0, _rxjs.of)(wrapper);
592
- } else {
593
- if (typeof flowRoot === 'function') {
594
- // 在一些情况下 flowRoot 需要在父组件 didMount 时才会准备好
595
- // 故这里使用 animationFrameScheduler 等下一个动画帧
596
- return (0, _rxjs.timer)(0, _rxjs.animationFrameScheduler).pipe(op.map(flowRoot));
597
- } else {
598
- return (0, _rxjs.of)(flowRoot);
599
- }
600
- }
601
- }), op.distinctUntilChanged()); // 表格在 flowRoot 中的可见部分
602
-
603
- var visiblePart$ = resolvedFlowRoot$.pipe(op.switchMap(function (resolvedFlowRoot) {
604
- return (0, _visiblePart.getVisiblePartObservable)(_this2.domHelper.virtual, resolvedFlowRoot);
605
- })); // 每当可见部分发生变化的时候,调整 loading icon 的未知(如果 loading icon 存在的话)
658
+ }));
659
+ var richVisibleRects$ = (0, _getRichVisibleRectsStream.getRichVisibleRectsStream)(this.domHelper.virtual, this.props$.pipe(op.skip(1), op.mapTo('structure-may-change')), this.props.virtualDebugLabel).pipe(op.shareReplay()); // 每当可见部分发生变化的时候,调整 loading icon 的未知(如果 loading icon 存在的话)
606
660
 
607
- this.rootSubscription.add((0, _rxjs.combineLatest)([visiblePart$.pipe(op.map(function (p) {
661
+ this.rootSubscription.add((0, _rxjs.combineLatest)([richVisibleRects$.pipe(op.map(function (p) {
608
662
  return p.clipRect;
609
663
  }), op.distinctUntilChanged(_utils.shallowEqual)), this.props$.pipe(op.startWith(null), op.pairwise(), op.filter(function (_ref2) {
610
664
  var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
@@ -622,12 +676,13 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
622
676
  return;
623
677
  }
624
678
 
625
- var height = clipRect.bottom - clipRect.top;
679
+ var height = clipRect.bottom - clipRect.top; // fixme 这里的定位在有些特殊情况下可能会出错 see #132
680
+
626
681
  loadingIndicator.style.top = "".concat(height / 2, "px");
627
682
  loadingIndicator.style.marginTop = "".concat(height / 2, "px");
628
683
  })); // 每当可见部分发生变化的时候,如果开启了虚拟滚动,则重新触发 render
629
684
 
630
- this.rootSubscription.add(visiblePart$.pipe(op.filter(function () {
685
+ this.rootSubscription.add(richVisibleRects$.pipe(op.filter(function () {
631
686
  var _this2$lastInfo$useVi = _this2.lastInfo.useVirtual,
632
687
  horizontal = _this2$lastInfo$useVi.horizontal,
633
688
  vertical = _this2$lastInfo$useVi.vertical;
@@ -767,7 +822,6 @@ BaseTable.defaultProps = {
767
822
  components: {},
768
823
  getTableProps: _rxjs.noop,
769
824
  getRowProps: _rxjs.noop,
770
- flowRoot: 'auto',
771
825
  dataSource: [],
772
826
  useOuterBorder: true
773
827
  };
@@ -1,5 +1,7 @@
1
+ import React from 'react';
1
2
  import { Subscription } from 'rxjs';
2
3
  import ResizeObserver from 'resize-observer-polyfill';
4
+ import { TableDOMHelper } from './helpers/TableDOMUtils';
3
5
  /** styled-components 类库的版本,ali-react-table 同时支持 v3 和 v5 */
4
6
  export declare const STYLED_VERSION: string;
5
7
  export declare const STYLED_REF_PROP: string;
@@ -29,8 +31,9 @@ export declare function syncScrollLeft(elements: HTMLElement[], callback: (scrol
29
31
  * Performs equality by iterating through keys on an object and returning false
30
32
  * when any key has values which are not strictly equal between the arguments.
31
33
  * Returns true when the values of all keys are strictly equal.
32
- *
33
- * 这个函数是从 facebook 某个官方库中复制过来的
34
34
  */
35
- export declare function shallowEqual(objA: any, objB: any): boolean;
35
+ export declare function shallowEqual<T>(objA: T, objB: T): boolean;
36
+ export declare function composeRowPropsGetter(getRowProps: (record: any, rowIndex: number) => React.HTMLAttributes<HTMLTableRowElement>, pendingRowProps?: React.HTMLAttributes<HTMLTableRowElement>): (record: any, rowIndex: number) => React.HTMLAttributes<HTMLTableRowElement>;
37
+ export declare function getTableScrollHeaderDOM(domHelper: TableDOMHelper): HTMLDivElement;
38
+ export declare function getTableScrollFooterDOM(domHelper: TableDOMHelper): HTMLDivElement;
36
39
  export {};
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _typeof3 = require("@babel/runtime-corejs3/helpers/typeof");
4
+
3
5
  var _mapInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/map");
4
6
 
5
7
  var _sliceInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/slice");
@@ -10,20 +12,24 @@ var _Symbol = require("@babel/runtime-corejs3/core-js-stable/symbol");
10
12
 
11
13
  var _getIteratorMethod = require("@babel/runtime-corejs3/core-js/get-iterator-method");
12
14
 
13
- var _getIterator = require("@babel/runtime-corejs3/core-js/get-iterator");
15
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
14
16
 
15
- var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard");
17
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
16
18
 
17
19
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
18
20
 
19
21
  Object.defineProperty(exports, "__esModule", {
20
22
  value: true
21
23
  });
22
- exports.sum = sum;
24
+ exports.addResizeObserver = exports.STYLED_VERSION = exports.STYLED_REF_PROP = exports.OVERSCAN_SIZE = exports.AUTO_VIRTUAL_THRESHOLD = void 0;
25
+ exports.composeRowPropsGetter = composeRowPropsGetter;
23
26
  exports.getScrollbarSize = getScrollbarSize;
24
- exports.syncScrollLeft = syncScrollLeft;
27
+ exports.getTableScrollFooterDOM = getTableScrollFooterDOM;
28
+ exports.getTableScrollHeaderDOM = getTableScrollHeaderDOM;
25
29
  exports.shallowEqual = shallowEqual;
26
- exports.addResizeObserver = exports.throttledWindowResize$ = exports.AUTO_VIRTUAL_THRESHOLD = exports.OVERSCAN_SIZE = exports.STYLED_REF_PROP = exports.STYLED_VERSION = void 0;
30
+ exports.sum = sum;
31
+ exports.syncScrollLeft = syncScrollLeft;
32
+ exports.throttledWindowResize$ = void 0;
27
33
 
28
34
  var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
29
35
 
@@ -43,7 +49,15 @@ var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-po
43
49
 
44
50
  var styledComponents = _interopRequireWildcard(require("styled-components"));
45
51
 
46
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof _Symbol === "undefined" || _getIteratorMethod(o) == null) { 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 = _getIterator(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; } } }; }
52
+ var _mergeCellProps = _interopRequireDefault(require("../utils/mergeCellProps"));
53
+
54
+ var _utils = require("../utils");
55
+
56
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
57
+
58
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
59
+
60
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || 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; } } }; }
47
61
 
48
62
  function _unsupportedIterableToArray(o, minLen) { var _context; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 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); }
49
63
 
@@ -69,7 +83,9 @@ function sum(arr) {
69
83
 
70
84
 
71
85
  var throttledWindowResize$ = (0, _rxjs.defer)(function () {
72
- return (0, _rxjs.fromEvent)(window, 'resize').pipe((0, _operators.throttleTime)(150, _rxjs.asyncScheduler, {
86
+ return (0, _rxjs.fromEvent)(window, 'resize', {
87
+ passive: true
88
+ }).pipe((0, _operators.throttleTime)(150, _rxjs.asyncScheduler, {
73
89
  leading: true,
74
90
  trailing: true
75
91
  }));
@@ -202,12 +218,12 @@ function syncScrollLeft(elements, callback) {
202
218
  * Performs equality by iterating through keys on an object and returning false
203
219
  * when any key has values which are not strictly equal between the arguments.
204
220
  * Returns true when the values of all keys are strictly equal.
205
- *
206
- * 这个函数是从 facebook 某个官方库中复制过来的
207
221
  */
208
222
 
209
223
 
210
224
  function shallowEqual(objA, objB) {
225
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
226
+
211
227
  if ((0, _is.default)(objA, objB)) {
212
228
  return true;
213
229
  }
@@ -225,10 +241,31 @@ function shallowEqual(objA, objB) {
225
241
 
226
242
 
227
243
  for (var i = 0; i < keysA.length; i++) {
228
- if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !(0, _is.default)(objA[keysA[i]], objB[keysA[i]])) {
244
+ if (!hasOwnProperty.call(objB, keysA[i]) || !(0, _is.default)(objA[keysA[i]], objB[keysA[i]])) {
229
245
  return false;
230
246
  }
231
247
  }
232
248
 
233
249
  return true;
250
+ } // todo: 抽出mergeRowProps
251
+
252
+
253
+ function composeRowPropsGetter(getRowProps, pendingRowProps) {
254
+ var keys = (0, _keys.default)(pendingRowProps);
255
+
256
+ if (keys.length) {
257
+ return function (row, rowIndex) {
258
+ return (0, _mergeCellProps.default)(getRowProps(row, rowIndex), pendingRowProps);
259
+ };
260
+ }
261
+
262
+ return getRowProps;
263
+ }
264
+
265
+ function getTableScrollHeaderDOM(domHelper) {
266
+ return _utils.browserType.isIE ? domHelper.tableHeaderMain : domHelper.tableHeader;
267
+ }
268
+
269
+ function getTableScrollFooterDOM(domHelper) {
270
+ return _utils.browserType.isIE ? domHelper.tableFooterMain : domHelper.tableFooter;
234
271
  }