@sheinx/hooks 3.5.3-beta.1 → 3.5.3-beta.3
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/components/use-form/use-form.d.ts.map +1 -1
- package/cjs/components/use-form/use-form.js +4 -2
- package/cjs/components/use-table/use-table-virtual.d.ts.map +1 -1
- package/cjs/components/use-table/use-table-virtual.js +38 -10
- package/esm/components/use-form/use-form.d.ts.map +1 -1
- package/esm/components/use-form/use-form.js +4 -2
- package/esm/components/use-table/use-table-virtual.d.ts.map +1 -1
- package/esm/components/use-table/use-table-virtual.js +38 -10
- package/package.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AA8BA,OAAO,EAEL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAGhB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;
|
1
|
+
{"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AA8BA,OAAO,EAEL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAGhB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAsPC;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;aAAE;8BAnId,MAAM;oCA6LD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCAxJxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;qCAsNvB,MAAM;gCA3CE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;kCAhHpD,MAAM,0BAAyB,qBAAqB;;;;;;oBA2DjD;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE;0BAnId,MAAM;gCA6LD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCAxJxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;iCAsNvB,MAAM;4BA3CE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;8BAhHpD,MAAM,0BAAyB,qBAAqB;;CAgY9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
@@ -264,9 +264,11 @@ var useForm = function useForm(props) {
|
|
264
264
|
onChange(function (draft) {
|
265
265
|
var values = Object.keys(vals);
|
266
266
|
// 针对 name 为数组模式,如 datepicker 的 name={['startTime', 'endTime']} 时,前者校验可能需要依赖后者,因此需要提前将后者数据整合至 draft 用于多字段整合校验
|
267
|
-
var nextDraft =
|
267
|
+
var nextDraft = (0, _immer.current)(draft);
|
268
|
+
values.forEach(function (key) {
|
269
|
+
(0, _utils.deepSet)(nextDraft, key, vals[key], deepSetOptions);
|
270
|
+
});
|
268
271
|
values.forEach(function (key) {
|
269
|
-
(0, _utils.deepSet)(draft, key, vals[key], deepSetOptions);
|
270
272
|
if (option.validate) {
|
271
273
|
var _context$validateMap$;
|
272
274
|
(_context$validateMap$ = context.validateMap[key]) === null || _context$validateMap$ === void 0 || _context$validateMap$.forEach(function (validate) {
|
@@ -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-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AA8BA,OAAO,EAEL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAGhB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;
|
1
|
+
{"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AA8BA,OAAO,EAEL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAGhB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAsPC;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;aAAE;8BAnId,MAAM;oCA6LD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCAxJxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;qCAsNvB,MAAM;gCA3CE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;kCAhHpD,MAAM,0BAAyB,qBAAqB;;;;;;oBA2DjD;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE;0BAnId,MAAM;gCA6LD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCAxJxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;iCAsNvB,MAAM;4BA3CE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;8BAhHpD,MAAM,0BAAyB,qBAAqB;;CAgY9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
@@ -255,9 +255,11 @@ var useForm = function useForm(props) {
|
|
255
255
|
onChange(function (draft) {
|
256
256
|
var values = Object.keys(vals);
|
257
257
|
// 针对 name 为数组模式,如 datepicker 的 name={['startTime', 'endTime']} 时,前者校验可能需要依赖后者,因此需要提前将后者数据整合至 draft 用于多字段整合校验
|
258
|
-
var nextDraft =
|
258
|
+
var nextDraft = current(draft);
|
259
|
+
values.forEach(function (key) {
|
260
|
+
deepSet(nextDraft, key, vals[key], deepSetOptions);
|
261
|
+
});
|
259
262
|
values.forEach(function (key) {
|
260
|
-
deepSet(draft, key, vals[key], deepSetOptions);
|
261
263
|
if (option.validate) {
|
262
264
|
var _context$validateMap$;
|
263
265
|
(_context$validateMap$ = context.validateMap[key]) === null || _context$validateMap$ === void 0 || _context$validateMap$.forEach(function (validate) {
|
@@ -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
|
}
|