@sheinx/hooks 3.5.3-beta.2 → 3.5.3-beta.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-table-virtual.d.ts","sourceRoot":"","sources":["use-table-virtual.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-table-virtual.d.ts","sourceRoot":"","sources":["use-table-virtual.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAYrD,UAAU,oBAAoB;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CAC3C;AACD,QAAA,MAAM,eAAe,UAAW,oBAAoB;;;;;;;oBAkMpC,MAAM;mBACP,MAAM;WACd,MAAM;gBACD,MAAM;kBACJ,OAAO;;0BA/FuB,MAAM,UAAU,MAAM;0BAxBtB,MAAM,QAAQ,MAAM;2BA2JnB,MAAM,aAAa,MAAM,IAAI;qCAoBnB,MAAM;mCAWR,MAAM,GAAG,MAAM;CAyFnE,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -6,16 +6,34 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _usePersistFn = require("../../common/use-persist-fn");
|
|
8
8
|
var _react = require("react");
|
|
9
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
10
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
11
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
12
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
9
13
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
10
14
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
11
15
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
12
16
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
13
|
-
function
|
|
14
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
17
|
+
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; } } }; }
|
|
15
18
|
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); }
|
|
16
19
|
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; }
|
|
17
|
-
|
|
18
|
-
function
|
|
20
|
+
// 找出最大的连续数字的个数
|
|
21
|
+
function getMaxRowSpanLength(input) {
|
|
22
|
+
var map = new Map();
|
|
23
|
+
var _iterator = _createForOfIteratorHelper(input),
|
|
24
|
+
_step;
|
|
25
|
+
try {
|
|
26
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
27
|
+
var num = _step.value;
|
|
28
|
+
map.set(num, (map.get(num) || 0) + 1);
|
|
29
|
+
}
|
|
30
|
+
} catch (err) {
|
|
31
|
+
_iterator.e(err);
|
|
32
|
+
} finally {
|
|
33
|
+
_iterator.f();
|
|
34
|
+
}
|
|
35
|
+
return Math.max.apply(Math, _toConsumableArray(Array.from(map.values())));
|
|
36
|
+
}
|
|
19
37
|
var MAX_ROW_SPAN = 200;
|
|
20
38
|
var useTableVirtual = function useTableVirtual(props) {
|
|
21
39
|
var _useState = (0, _react.useState)(0),
|
|
@@ -40,11 +58,11 @@ var useTableVirtual = function useTableVirtual(props) {
|
|
|
40
58
|
setOffsetY = _useState10[1];
|
|
41
59
|
var rowsInView = props.rowsInView === 0 ? props.data.length : props.rowsInView;
|
|
42
60
|
var sleft = props.scrollLeft !== undefined ? props.scrollLeft : innerLeft;
|
|
43
|
-
var
|
|
61
|
+
var rowSpanInfo = (0, _react.useMemo)(function () {
|
|
44
62
|
var rowSpanColumns = props.columns.filter(function (col) {
|
|
45
63
|
return typeof col.rowSpan === 'function';
|
|
46
64
|
});
|
|
47
|
-
if (rowSpanColumns.length === 0) return;
|
|
65
|
+
if (rowSpanColumns.length === 0) return null;
|
|
48
66
|
var _rowSpanInfos = [];
|
|
49
67
|
var totalLength = props.data.length;
|
|
50
68
|
var _loop = function _loop(i) {
|
|
@@ -85,12 +103,17 @@ var useTableVirtual = function useTableVirtual(props) {
|
|
|
85
103
|
}
|
|
86
104
|
}
|
|
87
105
|
}
|
|
88
|
-
|
|
106
|
+
var resultArr = _rowSpanInfos.map(function (_rowSpanInfo) {
|
|
89
107
|
var startIndexs = _rowSpanInfo.map(function (arr) {
|
|
90
108
|
return arr[0];
|
|
91
109
|
});
|
|
92
110
|
return Math.min.apply(Math, _toConsumableArray(startIndexs));
|
|
93
111
|
});
|
|
112
|
+
var maxRowSpan = getMaxRowSpanLength(resultArr);
|
|
113
|
+
return maxRowSpan > 1 ? {
|
|
114
|
+
rowSpanIndexArray: resultArr,
|
|
115
|
+
maxRowSpan: maxRowSpan
|
|
116
|
+
} : null;
|
|
94
117
|
}, [props.data, props.columns]);
|
|
95
118
|
var _useRef = (0, _react.useRef)({
|
|
96
119
|
cachedHeight: [],
|
|
@@ -151,15 +174,20 @@ var useTableVirtual = function useTableVirtual(props) {
|
|
|
151
174
|
var currentIndex = 0;
|
|
152
175
|
var top = 0;
|
|
153
176
|
var maxIndex = Math.max(props.data.length - rowsInView, 0);
|
|
177
|
+
var maxRowSpanLenth = 0;
|
|
178
|
+
if (rowSpanInfo) {
|
|
179
|
+
maxRowSpanLenth = Math.min(rowSpanInfo.rowSpanIndexArray.length,
|
|
180
|
+
// 根据data计算出实际需要的最大合并行数(rowSpanInfo.maxRowSpan),当rowSpanInfo.maxRowSpan大于外部传的rowsInView时,使用rowSpanInfo.maxRowSpan
|
|
181
|
+
Math.max(rowSpanInfo.maxRowSpan, props.rowsInView > MAX_ROW_SPAN ? props.rowsInView : props.rowsInView || MAX_ROW_SPAN));
|
|
182
|
+
}
|
|
154
183
|
for (var i = 0; i <= maxIndex; i++) {
|
|
155
184
|
context.rowSpanRows = 0;
|
|
156
185
|
sum += context.cachedHeight[i] || props.rowHeight;
|
|
157
186
|
var rowSpanHeight = 0;
|
|
158
|
-
if (
|
|
159
|
-
var maxRowSpanLenth = Math.min(rowSpanInfos.length, props.rowsInView > MAX_ROW_SPAN ? props.rowsInView : props.rowsInView || MAX_ROW_SPAN);
|
|
187
|
+
if (rowSpanInfo) {
|
|
160
188
|
var siblingsIndexs = [];
|
|
161
189
|
for (var k = 0; k < maxRowSpanLenth; k++) {
|
|
162
|
-
if (
|
|
190
|
+
if (rowSpanInfo.rowSpanIndexArray[k] <= i && k > i) {
|
|
163
191
|
siblingsIndexs.push(k);
|
|
164
192
|
}
|
|
165
193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-table-virtual.d.ts","sourceRoot":"","sources":["use-table-virtual.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-table-virtual.d.ts","sourceRoot":"","sources":["use-table-virtual.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAYrD,UAAU,oBAAoB;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CAC3C;AACD,QAAA,MAAM,eAAe,UAAW,oBAAoB;;;;;;;oBAkMpC,MAAM;mBACP,MAAM;WACd,MAAM;gBACD,MAAM;kBACJ,OAAO;;0BA/FuB,MAAM,UAAU,MAAM;0BAxBtB,MAAM,QAAQ,MAAM;2BA2JnB,MAAM,aAAa,MAAM,IAAI;qCAoBnB,MAAM;mCAWR,MAAM,GAAG,MAAM;CAyFnE,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1,15 +1,33 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
4
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
1
5
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
6
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
7
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
4
8
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
5
|
-
function
|
|
6
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
|
+
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; } } }; }
|
|
7
10
|
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); }
|
|
8
11
|
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; }
|
|
9
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
10
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
11
12
|
import { usePersistFn } from "../../common/use-persist-fn";
|
|
12
13
|
import { useState, useRef, useEffect, useMemo } from 'react';
|
|
14
|
+
// 找出最大的连续数字的个数
|
|
15
|
+
function getMaxRowSpanLength(input) {
|
|
16
|
+
var map = new Map();
|
|
17
|
+
var _iterator = _createForOfIteratorHelper(input),
|
|
18
|
+
_step;
|
|
19
|
+
try {
|
|
20
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
21
|
+
var num = _step.value;
|
|
22
|
+
map.set(num, (map.get(num) || 0) + 1);
|
|
23
|
+
}
|
|
24
|
+
} catch (err) {
|
|
25
|
+
_iterator.e(err);
|
|
26
|
+
} finally {
|
|
27
|
+
_iterator.f();
|
|
28
|
+
}
|
|
29
|
+
return Math.max.apply(Math, _toConsumableArray(Array.from(map.values())));
|
|
30
|
+
}
|
|
13
31
|
var MAX_ROW_SPAN = 200;
|
|
14
32
|
var useTableVirtual = function useTableVirtual(props) {
|
|
15
33
|
var _useState = useState(0),
|
|
@@ -34,11 +52,11 @@ var useTableVirtual = function useTableVirtual(props) {
|
|
|
34
52
|
setOffsetY = _useState10[1];
|
|
35
53
|
var rowsInView = props.rowsInView === 0 ? props.data.length : props.rowsInView;
|
|
36
54
|
var sleft = props.scrollLeft !== undefined ? props.scrollLeft : innerLeft;
|
|
37
|
-
var
|
|
55
|
+
var rowSpanInfo = useMemo(function () {
|
|
38
56
|
var rowSpanColumns = props.columns.filter(function (col) {
|
|
39
57
|
return typeof col.rowSpan === 'function';
|
|
40
58
|
});
|
|
41
|
-
if (rowSpanColumns.length === 0) return;
|
|
59
|
+
if (rowSpanColumns.length === 0) return null;
|
|
42
60
|
var _rowSpanInfos = [];
|
|
43
61
|
var totalLength = props.data.length;
|
|
44
62
|
var _loop = function _loop(i) {
|
|
@@ -79,12 +97,17 @@ var useTableVirtual = function useTableVirtual(props) {
|
|
|
79
97
|
}
|
|
80
98
|
}
|
|
81
99
|
}
|
|
82
|
-
|
|
100
|
+
var resultArr = _rowSpanInfos.map(function (_rowSpanInfo) {
|
|
83
101
|
var startIndexs = _rowSpanInfo.map(function (arr) {
|
|
84
102
|
return arr[0];
|
|
85
103
|
});
|
|
86
104
|
return Math.min.apply(Math, _toConsumableArray(startIndexs));
|
|
87
105
|
});
|
|
106
|
+
var maxRowSpan = getMaxRowSpanLength(resultArr);
|
|
107
|
+
return maxRowSpan > 1 ? {
|
|
108
|
+
rowSpanIndexArray: resultArr,
|
|
109
|
+
maxRowSpan: maxRowSpan
|
|
110
|
+
} : null;
|
|
88
111
|
}, [props.data, props.columns]);
|
|
89
112
|
var _useRef = useRef({
|
|
90
113
|
cachedHeight: [],
|
|
@@ -145,15 +168,20 @@ var useTableVirtual = function useTableVirtual(props) {
|
|
|
145
168
|
var currentIndex = 0;
|
|
146
169
|
var top = 0;
|
|
147
170
|
var maxIndex = Math.max(props.data.length - rowsInView, 0);
|
|
171
|
+
var maxRowSpanLenth = 0;
|
|
172
|
+
if (rowSpanInfo) {
|
|
173
|
+
maxRowSpanLenth = Math.min(rowSpanInfo.rowSpanIndexArray.length,
|
|
174
|
+
// 根据data计算出实际需要的最大合并行数(rowSpanInfo.maxRowSpan),当rowSpanInfo.maxRowSpan大于外部传的rowsInView时,使用rowSpanInfo.maxRowSpan
|
|
175
|
+
Math.max(rowSpanInfo.maxRowSpan, props.rowsInView > MAX_ROW_SPAN ? props.rowsInView : props.rowsInView || MAX_ROW_SPAN));
|
|
176
|
+
}
|
|
148
177
|
for (var i = 0; i <= maxIndex; i++) {
|
|
149
178
|
context.rowSpanRows = 0;
|
|
150
179
|
sum += context.cachedHeight[i] || props.rowHeight;
|
|
151
180
|
var rowSpanHeight = 0;
|
|
152
|
-
if (
|
|
153
|
-
var maxRowSpanLenth = Math.min(rowSpanInfos.length, props.rowsInView > MAX_ROW_SPAN ? props.rowsInView : props.rowsInView || MAX_ROW_SPAN);
|
|
181
|
+
if (rowSpanInfo) {
|
|
154
182
|
var siblingsIndexs = [];
|
|
155
183
|
for (var k = 0; k < maxRowSpanLenth; k++) {
|
|
156
|
-
if (
|
|
184
|
+
if (rowSpanInfo.rowSpanIndexArray[k] <= i && k > i) {
|
|
157
185
|
siblingsIndexs.push(k);
|
|
158
186
|
}
|
|
159
187
|
}
|