@kdcloudjs/table 1.2.0-canary.6 → 1.2.0-canary.6-hotfix.2
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/LICENSE +568 -568
- package/README.md +111 -111
- package/dist/@kdcloudjs/table.css +1 -1
- package/dist/@kdcloudjs/table.js +1877 -3363
- package/dist/@kdcloudjs/table.js.map +1 -1
- package/dist/@kdcloudjs/table.min.css +1 -1
- package/dist/@kdcloudjs/table.min.js +16 -16
- package/dist/@kdcloudjs/table.min.js.map +1 -1
- package/dist/kd-ui-complete.less +777 -777
- package/es/_utils/arrayUtil.js +0 -3
- package/es/_utils/devwarning.js +0 -1
- package/es/_utils/formatUtil.js +35 -96
- package/es/_utils/hooks.js +18 -42
- package/es/_utils/index.js +0 -2
- package/es/_utils/numberUtil.js +32 -55
- package/es/_utils/omit.js +0 -2
- package/es/_utils/type.js +0 -2
- package/es/_utils/usePopper.js +74 -137
- package/es/config-provider/compDefaultProps.js +0 -1
- package/es/config-provider/configProvider.js +2 -7
- package/es/config-provider/defaultConfig.js +0 -1
- package/es/index.js +0 -2
- package/es/locale/locale.js +5 -43
- package/es/style/color/colors.less +1 -1
- package/es/style/core/index.less +1 -1
- package/es/style/core/motion/other.less +27 -27
- package/es/style/core/motion/slide.less +53 -53
- package/es/style/core/motion.less +1 -1
- package/es/style/core/reset.less +185 -185
- package/es/style/index.less +1 -1
- package/es/style/mixins/index.less +18 -18
- package/es/style/mixins/overlay.less +21 -21
- package/es/style/mixins/reset.less +12 -12
- package/es/style/themes/default.less +445 -445
- package/es/table/base/calculations.js +22 -72
- package/es/table/base/colgroup.js +0 -1
- package/es/table/base/empty.js +4 -4
- package/es/table/base/header.d.ts +2 -1
- package/es/table/base/header.js +17 -68
- package/es/table/base/helpers/SpanManager.js +3 -9
- package/es/table/base/helpers/TableDOMUtils.js +3 -26
- package/es/table/base/helpers/__test__/SpanManager.test.js +2 -2
- package/es/table/base/helpers/__test__/TableDOMUtils.test.js +0 -1
- package/es/table/base/helpers/getRichVisibleRectsStream.js +11 -44
- package/es/table/base/helpers/rowHeightManager.js +0 -28
- package/es/table/base/html-table.js +15 -36
- package/es/table/base/loading.js +6 -8
- package/es/table/base/renderTemplates.js +50 -54
- package/es/table/base/styles.js +1 -10
- package/es/table/base/table.js +116 -189
- package/es/table/base/utils.js +14 -54
- package/es/table/common-views.js +0 -7
- package/es/table/internals.js +0 -13
- package/es/table/pipeline/features/autoFill.js +11 -38
- package/es/table/pipeline/features/autoRowSpan.js +1 -14
- package/es/table/pipeline/features/colGroupExtendable.js +4 -19
- package/es/table/pipeline/features/columnDrag.js +41 -95
- package/es/table/pipeline/features/columnFilter.js +11 -44
- package/es/table/pipeline/features/columnHover.js +1 -7
- package/es/table/pipeline/features/columnRangeHover.js +1 -8
- package/es/table/pipeline/features/columnResizeWidth.js +11 -37
- package/es/table/pipeline/features/contextMenu.js +18 -89
- package/es/table/pipeline/features/filter/DefaultFilterContent.js +10 -25
- package/es/table/pipeline/features/filter/DefaultFilterIcon.js +1 -1
- package/es/table/pipeline/features/filter/Filter.js +25 -48
- package/es/table/pipeline/features/filter/FilterPanel.js +11 -25
- package/es/table/pipeline/features/filter/util.js +0 -4
- package/es/table/pipeline/features/footerDataSource.js +0 -3
- package/es/table/pipeline/features/mergeCellHover.js +0 -1
- package/es/table/pipeline/features/multiSelect.js +15 -57
- package/es/table/pipeline/features/rangeSelection.js +63 -142
- package/es/table/pipeline/features/rowDetail.js +2 -41
- package/es/table/pipeline/features/rowGrouping.js +2 -35
- package/es/table/pipeline/features/singleSelect.js +0 -24
- package/es/table/pipeline/features/sort.js +29 -79
- package/es/table/pipeline/features/tips.js +0 -6
- package/es/table/pipeline/features/treeMode.js +9 -43
- package/es/table/pipeline/features/treeSelect.js +0 -26
- package/es/table/pipeline/pipeline.js +9 -49
- package/es/table/pivot/cross-table/buildCrossTable.js +15 -64
- package/es/table/pivot/cross-table/cross-table.js +22 -28
- package/es/table/pivot/cross-tree-table/buildCrossTreeTable.js +14 -47
- package/es/table/pivot/cross-tree-table/cross-tree-table.js +28 -50
- package/es/table/pivot/pivot-utils/buildDrillTree.js +10 -23
- package/es/table/pivot/pivot-utils/builders.js +31 -71
- package/es/table/pivot/pivot-utils/convert-utils.js +13 -39
- package/es/table/pivot/pivot-utils/simpleEncode.js +0 -1
- package/es/table/style/index.less +1 -1
- package/es/table/transforms/autoRowSpan.js +1 -15
- package/es/table/transforms/autoWidth.js +10 -32
- package/es/table/transforms/buildTree.js +1 -2
- package/es/table/transforms/columnHover.js +9 -15
- package/es/table/transforms/columnRangeHover.js +12 -19
- package/es/table/transforms/columnResize.js +15 -37
- package/es/table/transforms/flatten.js +0 -3
- package/es/table/transforms/orderField.js +0 -3
- package/es/table/transforms/sort.js +36 -88
- package/es/table/transforms/tips.js +1 -6
- package/es/table/transforms/treeMode.js +30 -69
- package/es/table/transforms/visible.js +0 -2
- package/es/table/use/useResizeObserver.js +1 -4
- package/es/table/utils/applyTransforms.js +0 -1
- package/es/table/utils/buildTree.js +4 -19
- package/es/table/utils/collectNodes.js +1 -10
- package/es/table/utils/console.js +0 -14
- package/es/table/utils/copyToClipboard.js +0 -4
- package/es/table/utils/element.js +14 -41
- package/es/table/utils/exportTableAsExcel.js +4 -40
- package/es/table/utils/getTreeDepth.js +1 -9
- package/es/table/utils/groupBy.js +1 -10
- package/es/table/utils/layeredFilter.js +0 -4
- package/es/table/utils/layeredSort.js +0 -5
- package/es/table/utils/makeRecursiveMapper.js +1 -12
- package/es/table/utils/mergeCellProps.js +6 -13
- package/es/table/utils/others.js +3 -16
- package/es/table/utils/proto.js +2 -30
- package/es/table/utils/smartCompare.js +4 -12
- package/es/table/utils/traverseColumn.js +2 -15
- package/es/table/utils/tree-data-helpers/StrictTreeDataHelper.js +1 -22
- package/es/table/utils/tree-data-helpers/TreeDataHelper.js +15 -69
- package/lib/_utils/arrayUtil.js +0 -5
- package/lib/_utils/devwarning.js +0 -5
- package/lib/_utils/formatUtil.js +35 -100
- package/lib/_utils/hooks.js +18 -53
- package/lib/_utils/index.js +0 -6
- package/lib/_utils/numberUtil.js +32 -63
- package/lib/_utils/omit.js +0 -5
- package/lib/_utils/react-children.js +0 -5
- package/lib/_utils/type.js +0 -6
- package/lib/_utils/usePopper.js +74 -158
- package/lib/config-provider/ConfigContext.js +1 -4
- package/lib/config-provider/compDefaultProps.js +0 -1
- package/lib/config-provider/configProvider.js +3 -18
- package/lib/config-provider/defaultConfig.js +0 -5
- package/lib/config-provider/index.js +0 -6
- package/lib/index.js +2 -8
- package/lib/locale/index.js +0 -7
- package/lib/locale/locale.js +5 -57
- package/lib/style/color/colors.less +1 -1
- package/lib/style/components.less +1 -1
- package/lib/style/core/index.less +1 -1
- package/lib/style/core/motion/other.less +27 -27
- package/lib/style/core/motion/slide.less +53 -53
- package/lib/style/core/motion.less +1 -1
- package/lib/style/core/reset.less +185 -185
- package/lib/style/index.less +1 -1
- package/lib/style/mixins/index.less +18 -18
- package/lib/style/mixins/overlay.less +21 -21
- package/lib/style/mixins/reset.less +12 -12
- package/lib/style/themes/default.less +445 -445
- package/lib/table/base/calculations.js +22 -83
- package/lib/table/base/colgroup.js +0 -5
- package/lib/table/base/empty.js +4 -16
- package/lib/table/base/header.d.ts +2 -1
- package/lib/table/base/header.js +17 -78
- package/lib/table/base/helpers/SpanManager.js +3 -11
- package/lib/table/base/helpers/TableDOMUtils.js +1 -26
- package/lib/table/base/helpers/__test__/SpanManager.test.js +2 -4
- package/lib/table/base/helpers/__test__/TableDOMUtils.test.js +0 -5
- package/lib/table/base/helpers/__test__/rowHeightManager.test.js +0 -1
- package/lib/table/base/helpers/getRichVisibleRectsStream.js +11 -62
- package/lib/table/base/helpers/rowHeightManager.js +0 -33
- package/lib/table/base/html-table.js +15 -46
- package/lib/table/base/index.js +0 -2
- package/lib/table/base/loading.js +6 -12
- package/lib/table/base/renderTemplates.js +51 -68
- package/lib/table/base/styles.js +1 -22
- package/lib/table/base/table.js +116 -222
- package/lib/table/base/utils.js +14 -89
- package/lib/table/common-views.js +0 -16
- package/lib/table/index.js +0 -13
- package/lib/table/internals.js +0 -14
- package/lib/table/pipeline/features/autoFill.js +11 -45
- package/lib/table/pipeline/features/autoRowSpan.js +1 -19
- package/lib/table/pipeline/features/buildTree.js +0 -2
- package/lib/table/pipeline/features/colGroupExtendable.js +4 -32
- package/lib/table/pipeline/features/columnDrag.js +41 -101
- package/lib/table/pipeline/features/columnFilter.js +11 -58
- package/lib/table/pipeline/features/columnHover.js +1 -11
- package/lib/table/pipeline/features/columnRangeHover.js +1 -13
- package/lib/table/pipeline/features/columnResizeWidth.js +11 -53
- package/lib/table/pipeline/features/contextMenu.js +18 -113
- package/lib/table/pipeline/features/filter/DefaultFilterContent.js +10 -43
- package/lib/table/pipeline/features/filter/DefaultFilterIcon.js +1 -4
- package/lib/table/pipeline/features/filter/Filter.js +25 -70
- package/lib/table/pipeline/features/filter/FilterPanel.js +11 -40
- package/lib/table/pipeline/features/filter/index.js +0 -5
- package/lib/table/pipeline/features/filter/util.js +0 -7
- package/lib/table/pipeline/features/footerDataSource.js +0 -10
- package/lib/table/pipeline/features/index.js +0 -22
- package/lib/table/pipeline/features/mergeCellHover.js +0 -5
- package/lib/table/pipeline/features/multiSelect.js +15 -70
- package/lib/table/pipeline/features/rangeSelection.js +63 -159
- package/lib/table/pipeline/features/rowDetail.js +2 -65
- package/lib/table/pipeline/features/rowGrouping.js +2 -55
- package/lib/table/pipeline/features/singleSelect.js +0 -33
- package/lib/table/pipeline/features/sort.js +29 -99
- package/lib/table/pipeline/features/tips.js +0 -15
- package/lib/table/pipeline/features/treeMode.js +9 -64
- package/lib/table/pipeline/features/treeSelect.js +0 -34
- package/lib/table/pipeline/index.js +0 -8
- package/lib/table/pipeline/pipeline.js +9 -58
- package/lib/table/pivot/cross-table/buildCrossTable.js +15 -75
- package/lib/table/pivot/cross-table/cross-table.js +22 -36
- package/lib/table/pivot/cross-table/index.js +0 -4
- package/lib/table/pivot/cross-tree-table/buildCrossTreeTable.js +14 -60
- package/lib/table/pivot/cross-tree-table/cross-tree-table.js +28 -60
- package/lib/table/pivot/cross-tree-table/index.js +0 -3
- package/lib/table/pivot/pivot-utils/buildDrillTree.js +10 -29
- package/lib/table/pivot/pivot-utils/builders.js +31 -82
- package/lib/table/pivot/pivot-utils/convert-utils.js +13 -57
- package/lib/table/pivot/pivot-utils/index.js +0 -7
- package/lib/table/pivot/pivot-utils/simpleEncode.js +0 -2
- package/lib/table/style/css.js +0 -1
- package/lib/table/style/index.js +0 -1
- package/lib/table/style/index.less +1 -1
- package/lib/table/transforms/autoRowSpan.js +1 -21
- package/lib/table/transforms/autoWidth.js +10 -53
- package/lib/table/transforms/buildTree.js +1 -4
- package/lib/table/transforms/columnHover.js +9 -22
- package/lib/table/transforms/columnRangeHover.js +12 -27
- package/lib/table/transforms/columnResize.js +15 -56
- package/lib/table/transforms/flatten.js +0 -5
- package/lib/table/transforms/index.js +0 -12
- package/lib/table/transforms/orderField.js +0 -7
- package/lib/table/transforms/sort.js +36 -112
- package/lib/table/transforms/tips.js +1 -16
- package/lib/table/transforms/treeMode.js +30 -96
- package/lib/table/transforms/visible.js +0 -7
- package/lib/table/transforms/warnTransformsDeprecated.js +0 -4
- package/lib/table/use/useResizeObserver.js +1 -8
- package/lib/table/utils/applyTransforms.js +0 -2
- package/lib/table/utils/buildTree.js +4 -30
- package/lib/table/utils/collectNodes.js +1 -15
- package/lib/table/utils/console.js +0 -16
- package/lib/table/utils/copyToClipboard.js +0 -6
- package/lib/table/utils/element.js +14 -46
- package/lib/table/utils/exportTableAsExcel.js +4 -49
- package/lib/table/utils/getTreeDepth.js +1 -14
- package/lib/table/utils/groupBy.js +1 -14
- package/lib/table/utils/index.js +0 -20
- package/lib/table/utils/isGroupColumn.js +0 -3
- package/lib/table/utils/isLeafNode.js +0 -1
- package/lib/table/utils/layeredFilter.js +0 -10
- package/lib/table/utils/layeredSort.js +0 -10
- package/lib/table/utils/makeRecursiveMapper.js +1 -21
- package/lib/table/utils/mergeCellProps.js +6 -17
- package/lib/table/utils/others.js +3 -31
- package/lib/table/utils/proto.js +2 -33
- package/lib/table/utils/smartCompare.js +4 -13
- package/lib/table/utils/traverseColumn.js +2 -22
- package/lib/table/utils/tree-data-helpers/StrictTreeDataHelper.js +1 -30
- package/lib/table/utils/tree-data-helpers/TreeDataHelper.js +15 -82
- package/package.json +219 -218
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
11
|
-
|
|
12
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass"));
|
|
15
|
-
|
|
16
11
|
/** 在表格的单元格的渲染过程中,先渲染的单元格的 colSpan/rowSpan 会影响到后续单元格是否被渲染
|
|
17
12
|
* `SpanManager` 会在内部维护一份状态来记录最近渲染单元格的 colSpan/rowSpan,
|
|
18
13
|
* 方便后续的单元格快速判断 "是否需要跳过渲染" */
|
|
@@ -21,15 +16,14 @@ var SpanManager = /*#__PURE__*/function () {
|
|
|
21
16
|
(0, _classCallCheck2.default)(this, SpanManager);
|
|
22
17
|
this.rects = [];
|
|
23
18
|
}
|
|
24
|
-
|
|
25
19
|
(0, _createClass2.default)(SpanManager, [{
|
|
26
20
|
key: "testSkip",
|
|
27
21
|
value: function testSkip(rowIndex, colIndex) {
|
|
28
22
|
return this.rects.some(function (_ref) {
|
|
29
23
|
var left = _ref.left,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
right = _ref.right,
|
|
25
|
+
top = _ref.top,
|
|
26
|
+
bottom = _ref.bottom;
|
|
33
27
|
return left <= colIndex && colIndex < right && top <= rowIndex && rowIndex < bottom;
|
|
34
28
|
});
|
|
35
29
|
}
|
|
@@ -37,7 +31,6 @@ var SpanManager = /*#__PURE__*/function () {
|
|
|
37
31
|
key: "stripUpwards",
|
|
38
32
|
value: function stripUpwards(rowIndex) {
|
|
39
33
|
var _context;
|
|
40
|
-
|
|
41
34
|
this.rects = (0, _filter.default)(_context = this.rects).call(_context, function (rect) {
|
|
42
35
|
return rect.bottom > rowIndex;
|
|
43
36
|
});
|
|
@@ -55,5 +48,4 @@ var SpanManager = /*#__PURE__*/function () {
|
|
|
55
48
|
}]);
|
|
56
49
|
return SpanManager;
|
|
57
50
|
}();
|
|
58
|
-
|
|
59
51
|
exports.default = SpanManager;
|
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.TableDOMHelper = void 0;
|
|
9
|
-
|
|
10
8
|
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
11
|
-
|
|
12
9
|
var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
|
|
13
|
-
|
|
14
10
|
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
15
|
-
|
|
16
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
|
|
17
|
-
|
|
18
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass"));
|
|
19
|
-
|
|
20
13
|
var _styles = require("../styles");
|
|
21
|
-
|
|
22
14
|
// 表格 DOM 结构
|
|
23
15
|
// div.art-table-wrapper
|
|
24
16
|
// └── div.art-loading-wrapper
|
|
@@ -59,35 +51,26 @@ var _styles = require("../styles");
|
|
|
59
51
|
var TableDOMHelper = /*#__PURE__*/function () {
|
|
60
52
|
function TableDOMHelper(artTableWrapper) {
|
|
61
53
|
var _this = this,
|
|
62
|
-
|
|
63
|
-
|
|
54
|
+
_context2;
|
|
64
55
|
(0, _classCallCheck2.default)(this, TableDOMHelper);
|
|
65
|
-
|
|
66
56
|
this.getRowNodeListByEvent = function (e) {
|
|
67
57
|
var nodeList = null;
|
|
68
58
|
var rowIndex = e.currentTarget.dataset.rowindex;
|
|
69
|
-
|
|
70
59
|
if (rowIndex !== undefined) {
|
|
71
60
|
var targetParent = _this.tableBody.contains(e.currentTarget) ? _this.tableBody : _this.tableFooter;
|
|
72
61
|
nodeList = targetParent.querySelectorAll("tr[data-rowindex=\"".concat(rowIndex, "\"]"));
|
|
73
62
|
}
|
|
74
|
-
|
|
75
63
|
return nodeList;
|
|
76
64
|
};
|
|
77
|
-
|
|
78
65
|
this.getInRangeRowByCellEvent = function (e) {
|
|
79
66
|
var _context;
|
|
80
|
-
|
|
81
67
|
var _a;
|
|
82
|
-
|
|
83
68
|
var getParentNode = function getParentNode(ele, target) {
|
|
84
69
|
if (ele.parentNode.nodeName === target) {
|
|
85
70
|
return ele.parentNode;
|
|
86
71
|
}
|
|
87
|
-
|
|
88
72
|
return getParentNode(ele.parentNode, target);
|
|
89
73
|
};
|
|
90
|
-
|
|
91
74
|
e = e instanceof Array ? e[0] : e;
|
|
92
75
|
var curCell = e === null || e === void 0 ? void 0 : e.currentTarget;
|
|
93
76
|
var curRow = getParentNode(curCell, 'TR');
|
|
@@ -95,7 +78,6 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
95
78
|
var rows = (_a = getParentNode(curCell, 'TABLE')) === null || _a === void 0 ? void 0 : _a.rows;
|
|
96
79
|
return (0, _slice.default)(_context = (0, _from.default)(rows)).call(_context, curRow.rowIndex, curRow.rowIndex + curRowSpan);
|
|
97
80
|
};
|
|
98
|
-
|
|
99
81
|
this.artTableWrapper = artTableWrapper;
|
|
100
82
|
this.artTable = artTableWrapper.querySelector(".".concat(_styles.Classes.artTable));
|
|
101
83
|
this.tableHeader = this.artTable.querySelector(".".concat(_styles.Classes.tableHeader));
|
|
@@ -109,7 +91,6 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
109
91
|
this.stickyScroll = artTableWrapper.querySelector(stickyScrollSelector);
|
|
110
92
|
this.stickyScrollItem = this.stickyScroll.querySelector(".".concat(_styles.Classes.stickyScrollItem));
|
|
111
93
|
}
|
|
112
|
-
|
|
113
94
|
(0, _createClass2.default)(TableDOMHelper, [{
|
|
114
95
|
key: "getVirtualTop",
|
|
115
96
|
value: function getVirtualTop() {
|
|
@@ -119,7 +100,6 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
119
100
|
key: "getTableRows",
|
|
120
101
|
value: function getTableRows() {
|
|
121
102
|
var _context3;
|
|
122
|
-
|
|
123
103
|
var tbody = this.artTable.querySelector((0, _concat.default)(_context3 = ".".concat(_styles.Classes.tableBody, " .")).call(_context3, _styles.Classes.virtual, " table tbody"));
|
|
124
104
|
return tbody.childNodes;
|
|
125
105
|
}
|
|
@@ -127,14 +107,12 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
127
107
|
key: "getTableBodyHtmlTable",
|
|
128
108
|
value: function getTableBodyHtmlTable() {
|
|
129
109
|
var _context4;
|
|
130
|
-
|
|
131
110
|
return this.artTable.querySelector((0, _concat.default)(_context4 = ".".concat(_styles.Classes.tableBody, " .")).call(_context4, _styles.Classes.virtual, " table"));
|
|
132
111
|
}
|
|
133
112
|
}, {
|
|
134
113
|
key: "getLeftLockShadow",
|
|
135
114
|
value: function getLeftLockShadow() {
|
|
136
115
|
var _context5;
|
|
137
|
-
|
|
138
116
|
var selector = (0, _concat.default)(_context5 = ".".concat(_styles.Classes.lockShadowMask, " .")).call(_context5, _styles.Classes.leftLockShadow);
|
|
139
117
|
var allLeftLockShadow = this.artTable.querySelectorAll(selector);
|
|
140
118
|
return allLeftLockShadow[allLeftLockShadow.length - 1]; // 当table-body、table-footer嵌套多层表格时,需要查找最后一个,否则会查找到嵌套表格的
|
|
@@ -143,7 +121,6 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
143
121
|
key: "getRightLockShadow",
|
|
144
122
|
value: function getRightLockShadow() {
|
|
145
123
|
var _context6;
|
|
146
|
-
|
|
147
124
|
var selector = (0, _concat.default)(_context6 = ".".concat(_styles.Classes.lockShadowMask, " .")).call(_context6, _styles.Classes.rightLockShadow);
|
|
148
125
|
var allRightLockShadow = this.artTable.querySelectorAll(selector);
|
|
149
126
|
return allRightLockShadow[allRightLockShadow.length - 1]; // 当table-body、table-footer嵌套多层表格时,需要查找最后一个,否则会查找到嵌套表格的
|
|
@@ -157,7 +134,6 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
157
134
|
key: "getRowTop",
|
|
158
135
|
value: function getRowTop(rowIndex) {
|
|
159
136
|
var _context7, _context8;
|
|
160
|
-
|
|
161
137
|
if (rowIndex === 0) return 0;
|
|
162
138
|
var selector = (0, _concat.default)(_context7 = (0, _concat.default)(_context8 = ".".concat(_styles.Classes.tableBody, " .")).call(_context8, _styles.Classes.tableRow, "[data-rowindex=\"")).call(_context7, rowIndex, "\"]");
|
|
163
139
|
var row = this.artTable.querySelector(selector);
|
|
@@ -168,5 +144,4 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
168
144
|
}]);
|
|
169
145
|
return TableDOMHelper;
|
|
170
146
|
}();
|
|
171
|
-
|
|
172
147
|
exports.TableDOMHelper = TableDOMHelper;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _SpanManager = _interopRequireDefault(require("../SpanManager"));
|
|
6
|
-
|
|
7
5
|
var NAME = 'SpanManager';
|
|
8
6
|
describe("".concat(NAME), function () {
|
|
9
7
|
var spanManager = new _SpanManager.default();
|
|
@@ -13,8 +11,8 @@ describe("".concat(NAME), function () {
|
|
|
13
11
|
});
|
|
14
12
|
it('test skip', function () {
|
|
15
13
|
// 第二行,第一列跳过渲染
|
|
16
|
-
expect(spanManager.testSkip(1, 0)).toBe(true);
|
|
17
|
-
|
|
14
|
+
expect(spanManager.testSkip(1, 0)).toBe(true);
|
|
15
|
+
// 第四行,第一列不跳过渲染
|
|
18
16
|
expect(spanManager.testSkip(3, 0)).toBe(false);
|
|
19
17
|
});
|
|
20
18
|
it('strip upwards span info', function () {
|
|
@@ -1,20 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
6
|
-
|
|
7
5
|
var _styles = require("../../styles");
|
|
8
|
-
|
|
9
6
|
var _TableDOMUtils = require("../TableDOMUtils");
|
|
10
|
-
|
|
11
7
|
var NAME = 'TableDOMUtils';
|
|
12
8
|
describe("".concat(NAME), function () {
|
|
13
9
|
var tableDOMHelper;
|
|
14
10
|
var container;
|
|
15
11
|
beforeAll(function () {
|
|
16
12
|
var _context, _context2, _context3, _context4, _context5, _context6, _context7, _context8, _context9, _context10, _context11, _context12, _context13, _context14, _context15, _context16, _context17;
|
|
17
|
-
|
|
18
13
|
container = document.createElement('div');
|
|
19
14
|
container.innerHTML = (0, _concat.default)(_context = (0, _concat.default)(_context2 = (0, _concat.default)(_context3 = (0, _concat.default)(_context4 = (0, _concat.default)(_context5 = (0, _concat.default)(_context6 = (0, _concat.default)(_context7 = (0, _concat.default)(_context8 = (0, _concat.default)(_context9 = (0, _concat.default)(_context10 = (0, _concat.default)(_context11 = (0, _concat.default)(_context12 = (0, _concat.default)(_context13 = (0, _concat.default)(_context14 = (0, _concat.default)(_context15 = (0, _concat.default)(_context16 = (0, _concat.default)(_context17 = "<div class='".concat(_styles.Classes.artTableWrapper, "'>\n <div class='")).call(_context17, _styles.Classes.loadingWrapper, "'>\n <div class='")).call(_context16, _styles.Classes.loadingIndicatorWrapper, "'>\n <div class='")).call(_context15, _styles.Classes.loadingIndicator, "'></div>\n </div> \n <div class='")).call(_context14, _styles.Classes.loadingContentWrapper, "'>\n <div class='")).call(_context13, _styles.Classes.artTable, "'>\n <div class='")).call(_context12, _styles.Classes.tableHeader, "'>\n \n </div>\n <div class='")).call(_context11, _styles.Classes.tableBody, "'>\n <div class='")).call(_context10, _styles.Classes.virtual, "'>\n <div class='")).call(_context9, _styles.Classes.virtualBlank, " top'></div>\n <table></table>\n <div class='")).call(_context8, _styles.Classes.virtualBlank, " bottom'></div>\n </div> \n </div>\n <div class='")).call(_context7, _styles.Classes.tableFooter, "'>\n </div>\n <div class='")).call(_context6, _styles.Classes.lockShadowMask, "'>\n <div class='")).call(_context5, _styles.Classes.leftLockShadow, "'></div>\n </div>\n <div class='")).call(_context4, _styles.Classes.lockShadowMask, "'>\n <div class='")).call(_context3, _styles.Classes.rightLockShadow, "'></div>\n </div>\n </div>\n <div class='")).call(_context2, _styles.Classes.stickyScroll, "'>\n <div class='")).call(_context, _styles.Classes.stickyScrollItem, "'></div>\n </div>\n </div> \n </div> \n </div>");
|
|
20
15
|
tableDOMHelper = new _TableDOMUtils.TableDOMHelper(container.querySelector(".".concat(_styles.Classes.artTableWrapper)));
|
|
@@ -1,90 +1,60 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
|
4
|
-
|
|
5
4
|
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
|
6
|
-
|
|
7
5
|
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
8
|
-
|
|
9
6
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
10
|
-
|
|
11
7
|
Object.defineProperty(exports, "__esModule", {
|
|
12
8
|
value: true
|
|
13
9
|
});
|
|
14
10
|
exports.getRichVisibleRectsStream = getRichVisibleRectsStream;
|
|
15
|
-
|
|
16
11
|
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
17
|
-
|
|
18
12
|
var _getNodeName = _interopRequireDefault(require("@popperjs/core/lib/dom-utils/getNodeName"));
|
|
19
|
-
|
|
20
13
|
var _getOffsetParent = _interopRequireDefault(require("@popperjs/core/lib/dom-utils/getOffsetParent"));
|
|
21
|
-
|
|
22
14
|
var _getParentNode = _interopRequireDefault(require("@popperjs/core/lib/dom-utils/getParentNode"));
|
|
23
|
-
|
|
24
15
|
var _getWindow = _interopRequireDefault(require("@popperjs/core/lib/dom-utils/getWindow"));
|
|
25
|
-
|
|
26
16
|
var _getWindowScroll = _interopRequireDefault(require("@popperjs/core/lib/dom-utils/getWindowScroll"));
|
|
27
|
-
|
|
28
17
|
var _instanceOf = require("@popperjs/core/lib/dom-utils/instanceOf");
|
|
29
|
-
|
|
30
18
|
var _isScrollParent = _interopRequireDefault(require("@popperjs/core/lib/dom-utils/isScrollParent"));
|
|
31
|
-
|
|
32
19
|
var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-polyfill"));
|
|
33
|
-
|
|
34
20
|
var _rxjs = require("rxjs");
|
|
35
|
-
|
|
36
21
|
var op = _interopRequireWildcard(require("rxjs/operators"));
|
|
37
|
-
|
|
38
22
|
var _utils = require("../utils");
|
|
39
|
-
|
|
40
23
|
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); }
|
|
41
|
-
|
|
42
24
|
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; }
|
|
43
|
-
|
|
44
25
|
function isWindow(arg) {
|
|
45
26
|
return arg.toString() === '[object Window]' || arg.toString() === '[object global]';
|
|
46
27
|
}
|
|
47
|
-
|
|
48
28
|
function isBody(arg) {
|
|
49
29
|
return (0, _getNodeName.default)(arg) === 'body';
|
|
50
30
|
}
|
|
51
|
-
|
|
52
31
|
function isHtml(arg) {
|
|
53
32
|
return (0, _getNodeName.default)(arg) === 'html';
|
|
54
33
|
}
|
|
55
|
-
|
|
56
34
|
function isHtmlOrBody(arg) {
|
|
57
35
|
return isHtml(arg) || isBody(arg);
|
|
58
|
-
}
|
|
36
|
+
}
|
|
37
|
+
// 计算从 start(子元素)到 stop(祖先元素)之间所有元素的 scrollTop 或 scrollLeft 的和
|
|
59
38
|
// 注意 start 和 stop 都是 INCLUSIVE 的,即两者的 scrollTop 或 scrollLeft 都会统计在内
|
|
60
|
-
|
|
61
|
-
|
|
62
39
|
function accumulateScrollOffset(start, stop, scrollOffsetKey) {
|
|
63
40
|
var result = 0;
|
|
64
41
|
var elem = start;
|
|
65
|
-
|
|
66
42
|
while (elem != null) {
|
|
67
43
|
result += elem[scrollOffsetKey];
|
|
68
|
-
|
|
69
44
|
if (elem === stop || isWindow(stop) && isHtmlOrBody(elem)) {
|
|
70
45
|
break;
|
|
71
46
|
}
|
|
72
|
-
|
|
73
47
|
elem = elem.parentElement;
|
|
74
48
|
}
|
|
75
|
-
|
|
76
49
|
if (isWindow(stop)) {
|
|
77
50
|
result += (0, _getWindowScroll.default)(elem)[scrollOffsetKey];
|
|
78
51
|
}
|
|
79
|
-
|
|
80
52
|
return result;
|
|
81
53
|
}
|
|
82
54
|
/**
|
|
83
55
|
* 获取 target 相对于 base 的布局大小和相对位置。
|
|
84
56
|
* 注意该方法会考虑滚动所带来的影响
|
|
85
57
|
*/
|
|
86
|
-
|
|
87
|
-
|
|
88
58
|
function getRelativeLayoutRect(base, target) {
|
|
89
59
|
if (isWindow(target) || isHtmlOrBody(target)) {
|
|
90
60
|
return {
|
|
@@ -94,27 +64,22 @@ function getRelativeLayoutRect(base, target) {
|
|
|
94
64
|
bottom: window.innerHeight
|
|
95
65
|
};
|
|
96
66
|
}
|
|
97
|
-
|
|
98
67
|
var deltaX = 0;
|
|
99
68
|
var deltaY = 0;
|
|
100
69
|
var elem = target;
|
|
101
|
-
|
|
102
70
|
while (elem != null && elem != base) {
|
|
103
71
|
deltaY += elem.offsetTop;
|
|
104
72
|
deltaX += elem.offsetLeft;
|
|
105
73
|
var offsetParent = (0, _getOffsetParent.default)(elem);
|
|
106
74
|
deltaY -= accumulateScrollOffset(elem.parentElement, offsetParent, 'scrollTop');
|
|
107
75
|
deltaX -= accumulateScrollOffset(elem.parentElement, offsetParent, 'scrollLeft');
|
|
108
|
-
|
|
109
76
|
if (isWindow(offsetParent)) {
|
|
110
77
|
break;
|
|
111
78
|
}
|
|
112
|
-
|
|
113
79
|
deltaY += offsetParent.clientTop;
|
|
114
80
|
deltaX += offsetParent.clientLeft;
|
|
115
81
|
elem = offsetParent;
|
|
116
82
|
}
|
|
117
|
-
|
|
118
83
|
return {
|
|
119
84
|
top: deltaY,
|
|
120
85
|
bottom: deltaY + target.offsetHeight,
|
|
@@ -122,51 +87,40 @@ function getRelativeLayoutRect(base, target) {
|
|
|
122
87
|
right: deltaX + target.offsetWidth
|
|
123
88
|
};
|
|
124
89
|
}
|
|
125
|
-
|
|
126
90
|
function findCommonOffsetAncestor(target, scrollParent) {
|
|
127
91
|
if (isWindow(scrollParent)) {
|
|
128
92
|
return scrollParent;
|
|
129
93
|
}
|
|
130
|
-
|
|
131
94
|
var offsetParents = listOffsetParents(target);
|
|
132
|
-
|
|
133
95
|
if ((0, _includes.default)(offsetParents).call(offsetParents, scrollParent)) {
|
|
134
96
|
return scrollParent;
|
|
135
97
|
}
|
|
136
|
-
|
|
137
98
|
return (0, _getOffsetParent.default)(scrollParent);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
|
|
99
|
+
}
|
|
100
|
+
// 列出 target 元素上层的所有 offset parents
|
|
141
101
|
function listOffsetParents(target) {
|
|
142
102
|
var result = [];
|
|
143
103
|
var elem = target;
|
|
144
|
-
|
|
145
104
|
while (true) {
|
|
146
105
|
if (isWindow(elem)) {
|
|
147
106
|
break;
|
|
148
107
|
}
|
|
149
|
-
|
|
150
108
|
elem = (0, _getOffsetParent.default)(elem);
|
|
151
109
|
result.push(elem);
|
|
152
110
|
}
|
|
153
|
-
|
|
154
111
|
return result;
|
|
155
112
|
}
|
|
156
|
-
|
|
157
113
|
function fromScrollEvent(element) {
|
|
158
114
|
return (0, _rxjs.fromEvent)(element, 'scroll', {
|
|
159
115
|
passive: true
|
|
160
116
|
});
|
|
161
117
|
}
|
|
162
|
-
|
|
163
118
|
function fromResizeEvent(element) {
|
|
164
119
|
if (isWindow(element)) {
|
|
165
120
|
return (0, _rxjs.fromEvent)(element, 'resize', {
|
|
166
121
|
passive: true
|
|
167
122
|
});
|
|
168
123
|
}
|
|
169
|
-
|
|
170
124
|
return new _rxjs.Observable(function (subscriber) {
|
|
171
125
|
var resizeObserver = new _resizeObserverPolyfill.default(function (entries) {
|
|
172
126
|
subscriber.next(entries);
|
|
@@ -177,29 +131,24 @@ function fromResizeEvent(element) {
|
|
|
177
131
|
};
|
|
178
132
|
});
|
|
179
133
|
}
|
|
180
|
-
|
|
181
134
|
function getScrollParent(elem) {
|
|
182
135
|
var _context;
|
|
183
|
-
|
|
184
136
|
if ((0, _includes.default)(_context = ['html', 'body', '#document']).call(_context, (0, _getNodeName.default)(elem))) {
|
|
185
137
|
return (0, _getWindow.default)(elem);
|
|
186
138
|
}
|
|
187
|
-
|
|
188
139
|
if ((0, _instanceOf.isHTMLElement)(elem) && (0, _isScrollParent.default)(elem)) {
|
|
189
140
|
return elem;
|
|
190
141
|
}
|
|
191
|
-
|
|
192
142
|
return getScrollParent((0, _getParentNode.default)(elem));
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
|
|
143
|
+
}
|
|
144
|
+
// 获取 target 相对于「它的滚动父元素」的可见部分的大小与位置
|
|
196
145
|
function getRichVisibleRectsStream(target, structureMayChange$, virtualDebugLabel) {
|
|
197
146
|
return structureMayChange$.pipe(op.startWith('init'), op.map(function () {
|
|
198
147
|
// target 的第一个滚动父元素,我们认为这就是虚拟滚动发生的地方
|
|
199
148
|
// 即虚拟滚动不考虑「更上层元素发生滚动」的情况
|
|
200
149
|
// 直接从父元素开始查找,防止自身设置overflow属性导致是同一个元素
|
|
201
|
-
var scrollParent = getScrollParent((0, _getParentNode.default)(target));
|
|
202
|
-
|
|
150
|
+
var scrollParent = getScrollParent((0, _getParentNode.default)(target));
|
|
151
|
+
// target 和 scrollParent 的共同 offset 祖先,作为布局尺寸计算时的参照元素
|
|
203
152
|
var commonOffsetAncestor = findCommonOffsetAncestor(target, scrollParent);
|
|
204
153
|
return {
|
|
205
154
|
scrollParent: scrollParent,
|
|
@@ -211,7 +160,7 @@ function getRichVisibleRectsStream(target, structureMayChange$, virtualDebugLabe
|
|
|
211
160
|
}
|
|
212
161
|
}), op.switchMap(function (_ref) {
|
|
213
162
|
var scrollParent = _ref.scrollParent,
|
|
214
|
-
|
|
163
|
+
commonOffsetAncestor = _ref.commonOffsetAncestor;
|
|
215
164
|
var events$ = (0, _rxjs.merge)(fromScrollEvent(scrollParent), fromResizeEvent(scrollParent), fromResizeEvent(target));
|
|
216
165
|
return events$.pipe(op.map(function (event) {
|
|
217
166
|
return {
|
|
@@ -221,8 +170,8 @@ function getRichVisibleRectsStream(target, structureMayChange$, virtualDebugLabe
|
|
|
221
170
|
};
|
|
222
171
|
}), op.map(function (_ref2) {
|
|
223
172
|
var event = _ref2.event,
|
|
224
|
-
|
|
225
|
-
|
|
173
|
+
scrollParentRect = _ref2.scrollParentRect,
|
|
174
|
+
targetRect = _ref2.targetRect;
|
|
226
175
|
return {
|
|
227
176
|
event: event,
|
|
228
177
|
targetRect: targetRect,
|
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.getFullRenderRange = getFullRenderRange;
|
|
9
8
|
exports.makeRowHeightManager = makeRowHeightManager;
|
|
10
|
-
|
|
11
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
12
|
-
|
|
13
10
|
var _fill = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/fill"));
|
|
14
|
-
|
|
15
11
|
var _utils = require("../utils");
|
|
16
|
-
|
|
17
12
|
function getFullRenderRange(rowCount) {
|
|
18
13
|
return {
|
|
19
14
|
topIndex: 0,
|
|
@@ -22,17 +17,13 @@ function getFullRenderRange(rowCount) {
|
|
|
22
17
|
bottomBlank: 0
|
|
23
18
|
};
|
|
24
19
|
}
|
|
25
|
-
|
|
26
20
|
function makeRowHeightManager(initRowCount, estimatedRowHeight) {
|
|
27
21
|
var _context;
|
|
28
|
-
|
|
29
22
|
var cache = (0, _fill.default)(_context = new Array(initRowCount)).call(_context, estimatedRowHeight);
|
|
30
|
-
|
|
31
23
|
function getRenderRange(offset, maxRenderHeight, rowCount) {
|
|
32
24
|
if (cache.length !== rowCount) {
|
|
33
25
|
setRowCount(rowCount);
|
|
34
26
|
}
|
|
35
|
-
|
|
36
27
|
if (maxRenderHeight <= 0) {
|
|
37
28
|
// maxRenderHeight <= 0 说明表格目前在 viewport 之外
|
|
38
29
|
if (offset <= 0) {
|
|
@@ -46,7 +37,6 @@ function makeRowHeightManager(initRowCount, estimatedRowHeight) {
|
|
|
46
37
|
// 表格与 viewport 相交
|
|
47
38
|
return getRenderRangeWhenInView();
|
|
48
39
|
}
|
|
49
|
-
|
|
50
40
|
function getRenderRangeWhenBelowView() {
|
|
51
41
|
var start = {
|
|
52
42
|
topIndex: 0,
|
|
@@ -55,22 +45,18 @@ function makeRowHeightManager(initRowCount, estimatedRowHeight) {
|
|
|
55
45
|
var end = getEnd(0, start);
|
|
56
46
|
return (0, _extends2.default)((0, _extends2.default)({}, start), end);
|
|
57
47
|
}
|
|
58
|
-
|
|
59
48
|
function getRenderRangeWhenAboveView() {
|
|
60
49
|
var totalSize = getEstimatedTotalSize(rowCount);
|
|
61
50
|
var start = getStart(totalSize);
|
|
62
51
|
var end = getEnd(totalSize, start);
|
|
63
52
|
return (0, _extends2.default)((0, _extends2.default)({}, start), end);
|
|
64
53
|
}
|
|
65
|
-
|
|
66
54
|
function getRenderRangeWhenInView() {
|
|
67
55
|
var start = getStart(offset);
|
|
68
56
|
var end = getEnd(offset + maxRenderHeight, start);
|
|
69
57
|
return (0, _extends2.default)((0, _extends2.default)({}, start), end);
|
|
70
58
|
}
|
|
71
59
|
/** 获取虚拟滚动在 开始位置上的信息 */
|
|
72
|
-
|
|
73
|
-
|
|
74
60
|
function getStart(offset) {
|
|
75
61
|
if (cache.length === 0) {
|
|
76
62
|
return {
|
|
@@ -78,73 +64,56 @@ function makeRowHeightManager(initRowCount, estimatedRowHeight) {
|
|
|
78
64
|
topBlank: 0
|
|
79
65
|
};
|
|
80
66
|
}
|
|
81
|
-
|
|
82
67
|
var topIndex = 0;
|
|
83
68
|
var topBlank = 0;
|
|
84
|
-
|
|
85
69
|
while (topIndex < cache.length) {
|
|
86
70
|
var h = cache[topIndex];
|
|
87
|
-
|
|
88
71
|
if (topBlank + h >= offset) {
|
|
89
72
|
break;
|
|
90
73
|
}
|
|
91
|
-
|
|
92
74
|
topBlank += h;
|
|
93
75
|
topIndex += 1;
|
|
94
76
|
}
|
|
95
|
-
|
|
96
77
|
return overscanUpwards(topIndex, topBlank);
|
|
97
78
|
}
|
|
98
|
-
|
|
99
79
|
function overscanUpwards(topIndex, topBlank) {
|
|
100
80
|
var overscanSize = 0;
|
|
101
81
|
var overscanCount = 0;
|
|
102
|
-
|
|
103
82
|
while (overscanCount < topIndex && overscanSize < _utils.OVERSCAN_SIZE) {
|
|
104
83
|
overscanCount += 1;
|
|
105
84
|
overscanSize += cache[topIndex - overscanCount];
|
|
106
85
|
}
|
|
107
|
-
|
|
108
86
|
return {
|
|
109
87
|
topIndex: topIndex - overscanCount,
|
|
110
88
|
topBlank: topBlank - overscanSize
|
|
111
89
|
};
|
|
112
90
|
}
|
|
113
91
|
/** 获取虚拟滚动 在结束位置上的信息 */
|
|
114
|
-
|
|
115
|
-
|
|
116
92
|
function getEnd(endOffset, startInfo) {
|
|
117
93
|
var bottomIndex = startInfo.topIndex;
|
|
118
94
|
var offset = startInfo.topBlank;
|
|
119
|
-
|
|
120
95
|
while (bottomIndex < rowCount && offset < endOffset) {
|
|
121
96
|
offset += cache[bottomIndex];
|
|
122
97
|
bottomIndex += 1;
|
|
123
98
|
}
|
|
124
|
-
|
|
125
99
|
var bottomBlank = getEstimatedTotalSize(rowCount) - offset;
|
|
126
100
|
return overscanDownwards(bottomIndex, bottomBlank);
|
|
127
101
|
}
|
|
128
|
-
|
|
129
102
|
function overscanDownwards(bottomIndex, bottomBlank) {
|
|
130
103
|
var overscanSize = 0;
|
|
131
104
|
var overscanCount = 0;
|
|
132
|
-
|
|
133
105
|
while (overscanCount < rowCount - bottomIndex && overscanSize < _utils.OVERSCAN_SIZE) {
|
|
134
106
|
overscanSize += cache[bottomIndex + overscanCount];
|
|
135
107
|
overscanCount += 1;
|
|
136
108
|
}
|
|
137
|
-
|
|
138
109
|
return {
|
|
139
110
|
bottomIndex: bottomIndex + overscanCount,
|
|
140
111
|
bottomBlank: bottomBlank - overscanSize
|
|
141
112
|
};
|
|
142
113
|
}
|
|
143
|
-
|
|
144
114
|
function getEstimatedTotalSize(rowCount) {
|
|
145
115
|
return (0, _utils.sum)(cache) + (rowCount - cache.length) * estimatedRowHeight;
|
|
146
116
|
}
|
|
147
|
-
|
|
148
117
|
function setRowCount(count) {
|
|
149
118
|
// 将 cache 的长度设置为 count
|
|
150
119
|
if (count < cache.length) {
|
|
@@ -156,11 +125,9 @@ function makeRowHeightManager(initRowCount, estimatedRowHeight) {
|
|
|
156
125
|
}
|
|
157
126
|
}
|
|
158
127
|
}
|
|
159
|
-
|
|
160
128
|
function updateRow(index, offset, size) {
|
|
161
129
|
cache[index] = size;
|
|
162
130
|
}
|
|
163
|
-
|
|
164
131
|
return {
|
|
165
132
|
getRenderRange: getRenderRange,
|
|
166
133
|
updateRow: updateRow,
|