@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.
@@ -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;;;;;;;;;wBAuPC;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;aAAE;8BApId,MAAM;oCA4LD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCAvJxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;qCAqNvB,MAAM;gCA3CE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;kCA9GpD,MAAM,0BAAyB,qBAAqB;;;;;;oBA2DjD;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE;0BApId,MAAM;gCA4LD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCAvJxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;iCAqNvB,MAAM;4BA3CE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;8BA9GpD,MAAM,0BAAyB,qBAAqB;;CA8X9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
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 = Object.assign({}, (0, _immer.current)(draft), vals);
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;AAGrD,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;;;;;;;oBAqLpC,MAAM;mBACP,MAAM;WACd,MAAM;gBACD,MAAM;kBACJ,OAAO;;0BAzFuB,MAAM,UAAU,MAAM;0BAxBtB,MAAM,QAAQ,MAAM;2BAqJnB,MAAM,aAAa,MAAM,IAAI;qCAoBnB,MAAM;mCAWR,MAAM,GAAG,MAAM;CAyFnE,CAAC;AAEF,eAAe,eAAe,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 _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
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
- 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; } }
18
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
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 rowSpanInfos = (0, _react.useMemo)(function () {
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
- return _rowSpanInfos.map(function (_rowSpanInfo) {
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 (rowSpanInfos) {
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 (rowSpanInfos[k] <= i && k > i) {
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;;;;;;;;;wBAuPC;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;aAAE;8BApId,MAAM;oCA4LD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCAvJxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;qCAqNvB,MAAM;gCA3CE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;kCA9GpD,MAAM,0BAAyB,qBAAqB;;;;;;oBA2DjD;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE;0BApId,MAAM;gCA4LD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCAvJxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;iCAqNvB,MAAM;4BA3CE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;8BA9GpD,MAAM,0BAAyB,qBAAqB;;CA8X9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
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 = Object.assign({}, current(draft), vals);
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;AAGrD,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;;;;;;;oBAqLpC,MAAM;mBACP,MAAM;WACd,MAAM;gBACD,MAAM;kBACJ,OAAO;;0BAzFuB,MAAM,UAAU,MAAM;0BAxBtB,MAAM,QAAQ,MAAM;2BAqJnB,MAAM,aAAa,MAAM,IAAI;qCAoBnB,MAAM;mCAWR,MAAM,GAAG,MAAM;CAyFnE,CAAC;AAEF,eAAe,eAAe,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 _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
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 rowSpanInfos = useMemo(function () {
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
- return _rowSpanInfos.map(function (_rowSpanInfo) {
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 (rowSpanInfos) {
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 (rowSpanInfos[k] <= i && k > i) {
184
+ if (rowSpanInfo.rowSpanIndexArray[k] <= i && k > i) {
157
185
  siblingsIndexs.push(k);
158
186
  }
159
187
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheinx/hooks",
3
- "version": "3.5.3-beta.1",
3
+ "version": "3.5.3-beta.3",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",