@sheinx/hooks 3.10.2-beta.6 → 3.10.2-beta.8

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-list-select-multiple.d.ts","sourceRoot":"","sources":["use-list-select-multiple.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMtE,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;sDA0NK;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;;;;4BA9NzB,GAAG;;qCAqRqB,MAAM;;CAoC5D,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"use-list-select-multiple.d.ts","sourceRoot":"","sources":["use-list-select-multiple.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMtE,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;sDA0NK;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;;;;4BA9NzB,GAAG;;qCAqRqB,MAAM;;CAuC5D,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -300,6 +300,10 @@ var useListSelectMultiple = function useListSelectMultiple(props) {
300
300
  if (checkedNum === validateNum) return true;
301
301
  return 'indeterminate';
302
302
  });
303
+
304
+ // TODO: Object.values(props) 作为 deps 是反模式,value/prediction 等变化都会使 datum 引用失效。
305
+ // 精确依赖应为 [props.data](方法均为 usePersistFn,引用稳定)。
306
+ // 待 Tbody/Tr 加 React.memo 后一起改,届时 datum 引用稳定才能真正减少 re-render。
303
307
  var func = (0, _react.useMemo)(function () {
304
308
  return {
305
309
  add: add,
@@ -1 +1 @@
1
- {"version":3,"file":"use-list-select.d.ts","sourceRoot":"","sources":["use-list-select.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIrE,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8ClB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"use-list-select.d.ts","sourceRoot":"","sources":["use-list-select.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIrE,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDlB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -43,6 +43,9 @@ var useListSelect = function useListSelect(props) {
43
43
  overwrite: true
44
44
  });
45
45
  });
46
+
47
+ // TODO: Object.values(props) 作为 deps 是反模式。精确依赖应为 [datum, multiple]。
48
+ // 待 Tbody/Tr 加 React.memo 后一起改。
46
49
  var result = (0, _react.useMemo)(function () {
47
50
  if (!multiple) {
48
51
  return _objectSpread(_objectSpread({}, datum), {}, {
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-filter.d.ts","sourceRoot":"","sources":["use-table-filter.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,mBAAmB,CAAC,IAAI,GAAG,GAAG,CAC7C,SAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjF,OAAO,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;CACnC;AACD,MAAM,WAAW,UAAU,CAAC,CAAC;IAE3B,KAAK,CAAC,EAAE,GAAG,CAAA;IACX,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;CAC5C;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,QAAA,MAAM,cAAc;;;;gCA+BH,YAAY,SAAS,GAAG;CAyDxC,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"use-table-filter.d.ts","sourceRoot":"","sources":["use-table-filter.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,mBAAmB,CAAC,IAAI,GAAG,GAAG,CAC7C,SAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjF,OAAO,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;CACnC;AACD,MAAM,WAAW,UAAU,CAAC,CAAC;IAE3B,KAAK,CAAC,EAAE,GAAG,CAAA;IACX,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;CAC5C;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,QAAA,MAAM,cAAc;;;;gCA+BH,YAAY,SAAS,GAAG;CA2DxC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -80,9 +80,14 @@ var useTableFilter = function useTableFilter(props) {
80
80
 
81
81
  // 根据columns生成filterInfo
82
82
  (0, _react.useEffect)(function () {
83
+ var _props$columns2;
84
+ // 没有任何 filter 列时跳过,避免无谓的 setFilterInfo 触发 re-render
85
+ if (!((_props$columns2 = props.columns) !== null && _props$columns2 !== void 0 && _props$columns2.some(function (col) {
86
+ return col.filter;
87
+ }))) return;
83
88
  setFilterInfo(function (prev) {
84
- var _props$columns2;
85
- var _filterInfo = props === null || props === void 0 || (_props$columns2 = props.columns) === null || _props$columns2 === void 0 ? void 0 : _props$columns2.reduce(function (acc, column, index) {
89
+ var _props$columns3;
90
+ var _filterInfo = props === null || props === void 0 || (_props$columns3 = props.columns) === null || _props$columns3 === void 0 ? void 0 : _props$columns3.reduce(function (acc, column, index) {
86
91
  var _prev$get2, _column$filter;
87
92
  if (!column.filter) return acc;
88
93
  var columnKey = typeof column.render === 'string' ? column.render : String(index);
@@ -95,7 +100,8 @@ var useTableFilter = function useTableFilter(props) {
95
100
  }, new Map());
96
101
  return _filterInfo || new Map();
97
102
  });
98
- }, [props.columns]);
103
+ }, [props.columns]); // eslint-disable-line react-hooks/exhaustive-deps
104
+
99
105
  return {
100
106
  filterInfo: filterInfo,
101
107
  setFilterInfo: setFilterInfo,
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-layout.d.ts","sourceRoot":"","sources":["use-table-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAK3E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA0CrE,MAAM,WAAW,mBACf,SAAQ,IAAI,CACV,cAAc,CAAC,GAAG,CAAC,EACnB,MAAM,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,OAAO,CAC7E;IACD,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,cAAc,UAAW,mBAAmB;;;;;;;;;yBA8DX,MAAM,UAAU,MAAM;;;;;;;;+BA+TZ,MAAM,SAAS,MAAM;CAgBrE,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"use-table-layout.d.ts","sourceRoot":"","sources":["use-table-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAK3E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA0CrE,MAAM,WAAW,mBACf,SAAQ,IAAI,CACV,cAAc,CAAC,GAAG,CAAC,EACnB,MAAM,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,OAAO,CAC7E;IACD,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,cAAc,UAAW,mBAAmB;;;;;;;;;yBA8DX,MAAM,UAAU,MAAM;;;;;;;;+BAiUZ,MAAM,SAAS,MAAM;CAmBrE,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -347,6 +347,7 @@ var useTableLayout = function useTableLayout(props) {
347
347
  }
348
348
 
349
349
  // 直接操作 DOM classList,不触发 React re-render
350
+ // JSS 生成的 className 可能包含多个空格分隔的类名,classList.toggle 只接受单个 token
350
351
  var classes = floatClassRef.current;
351
352
  var el = (_props$tableElRef = props.tableElRef) === null || _props$tableElRef === void 0 ? void 0 : _props$tableElRef.current;
352
353
  if (!classes || !el) return;
@@ -354,7 +355,9 @@ var useTableLayout = function useTableLayout(props) {
354
355
  var l = left > min;
355
356
  if (l !== floatLeftRef.current) {
356
357
  floatLeftRef.current = l;
357
- el.classList.toggle(classes.left, l);
358
+ classes.left.forEach(function (cls) {
359
+ return el.classList.toggle(cls, l);
360
+ });
358
361
  }
359
362
  }
360
363
  if (hasFixedRight) {
@@ -362,7 +365,9 @@ var useTableLayout = function useTableLayout(props) {
362
365
  var r = max - left > 1;
363
366
  if (r !== floatRightRef.current) {
364
367
  floatRightRef.current = r;
365
- el.classList.toggle(classes.right, r);
368
+ classes.right.forEach(function (cls) {
369
+ return el.classList.toggle(cls, r);
370
+ });
366
371
  }
367
372
  }
368
373
  });
@@ -488,10 +493,11 @@ var useTableLayout = function useTableLayout(props) {
488
493
  }
489
494
 
490
495
  // 注册 float class name,由 table.tsx 初始化时调用
496
+ // 预拆分空格分隔的类名,避免 checkFloat 高频路径重复 split
491
497
  var registerFloatClass = (0, _usePersistFn.default)(function (left, right) {
492
498
  floatClassRef.current = {
493
- left: left,
494
- right: right
499
+ left: left.split(/\s+/).filter(Boolean),
500
+ right: right.split(/\s+/).filter(Boolean)
495
501
  };
496
502
  });
497
503
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"use-list-select-multiple.d.ts","sourceRoot":"","sources":["use-list-select-multiple.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMtE,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;sDA0NK;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;;;;4BA9NzB,GAAG;;qCAqRqB,MAAM;;CAoC5D,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"use-list-select-multiple.d.ts","sourceRoot":"","sources":["use-list-select-multiple.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMtE,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;sDA0NK;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;;;;4BA9NzB,GAAG;;qCAqRqB,MAAM;;CAuC5D,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -290,6 +290,10 @@ var useListSelectMultiple = function useListSelectMultiple(props) {
290
290
  if (checkedNum === validateNum) return true;
291
291
  return 'indeterminate';
292
292
  });
293
+
294
+ // TODO: Object.values(props) 作为 deps 是反模式,value/prediction 等变化都会使 datum 引用失效。
295
+ // 精确依赖应为 [props.data](方法均为 usePersistFn,引用稳定)。
296
+ // 待 Tbody/Tr 加 React.memo 后一起改,届时 datum 引用稳定才能真正减少 re-render。
293
297
  var func = useMemo(function () {
294
298
  return {
295
299
  add: add,
@@ -1 +1 @@
1
- {"version":3,"file":"use-list-select.d.ts","sourceRoot":"","sources":["use-list-select.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIrE,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8ClB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"use-list-select.d.ts","sourceRoot":"","sources":["use-list-select.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIrE,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDlB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -36,6 +36,9 @@ var useListSelect = function useListSelect(props) {
36
36
  overwrite: true
37
37
  });
38
38
  });
39
+
40
+ // TODO: Object.values(props) 作为 deps 是反模式。精确依赖应为 [datum, multiple]。
41
+ // 待 Tbody/Tr 加 React.memo 后一起改。
39
42
  var result = useMemo(function () {
40
43
  if (!multiple) {
41
44
  return _objectSpread(_objectSpread({}, datum), {}, {
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-filter.d.ts","sourceRoot":"","sources":["use-table-filter.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,mBAAmB,CAAC,IAAI,GAAG,GAAG,CAC7C,SAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjF,OAAO,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;CACnC;AACD,MAAM,WAAW,UAAU,CAAC,CAAC;IAE3B,KAAK,CAAC,EAAE,GAAG,CAAA;IACX,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;CAC5C;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,QAAA,MAAM,cAAc;;;;gCA+BH,YAAY,SAAS,GAAG;CAyDxC,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"use-table-filter.d.ts","sourceRoot":"","sources":["use-table-filter.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,mBAAmB,CAAC,IAAI,GAAG,GAAG,CAC7C,SAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjF,OAAO,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;CACnC;AACD,MAAM,WAAW,UAAU,CAAC,CAAC;IAE3B,KAAK,CAAC,EAAE,GAAG,CAAA;IACX,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;CAC5C;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,QAAA,MAAM,cAAc;;;;gCA+BH,YAAY,SAAS,GAAG;CA2DxC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -73,9 +73,14 @@ var useTableFilter = function useTableFilter(props) {
73
73
 
74
74
  // 根据columns生成filterInfo
75
75
  useEffect(function () {
76
+ var _props$columns2;
77
+ // 没有任何 filter 列时跳过,避免无谓的 setFilterInfo 触发 re-render
78
+ if (!((_props$columns2 = props.columns) !== null && _props$columns2 !== void 0 && _props$columns2.some(function (col) {
79
+ return col.filter;
80
+ }))) return;
76
81
  setFilterInfo(function (prev) {
77
- var _props$columns2;
78
- var _filterInfo = props === null || props === void 0 || (_props$columns2 = props.columns) === null || _props$columns2 === void 0 ? void 0 : _props$columns2.reduce(function (acc, column, index) {
82
+ var _props$columns3;
83
+ var _filterInfo = props === null || props === void 0 || (_props$columns3 = props.columns) === null || _props$columns3 === void 0 ? void 0 : _props$columns3.reduce(function (acc, column, index) {
79
84
  var _prev$get2, _column$filter;
80
85
  if (!column.filter) return acc;
81
86
  var columnKey = typeof column.render === 'string' ? column.render : String(index);
@@ -88,7 +93,8 @@ var useTableFilter = function useTableFilter(props) {
88
93
  }, new Map());
89
94
  return _filterInfo || new Map();
90
95
  });
91
- }, [props.columns]);
96
+ }, [props.columns]); // eslint-disable-line react-hooks/exhaustive-deps
97
+
92
98
  return {
93
99
  filterInfo: filterInfo,
94
100
  setFilterInfo: setFilterInfo,
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-layout.d.ts","sourceRoot":"","sources":["use-table-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAK3E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA0CrE,MAAM,WAAW,mBACf,SAAQ,IAAI,CACV,cAAc,CAAC,GAAG,CAAC,EACnB,MAAM,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,OAAO,CAC7E;IACD,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,cAAc,UAAW,mBAAmB;;;;;;;;;yBA8DX,MAAM,UAAU,MAAM;;;;;;;;+BA+TZ,MAAM,SAAS,MAAM;CAgBrE,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"use-table-layout.d.ts","sourceRoot":"","sources":["use-table-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAK3E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA0CrE,MAAM,WAAW,mBACf,SAAQ,IAAI,CACV,cAAc,CAAC,GAAG,CAAC,EACnB,MAAM,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,OAAO,CAC7E;IACD,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,cAAc,UAAW,mBAAmB;;;;;;;;;yBA8DX,MAAM,UAAU,MAAM;;;;;;;;+BAiUZ,MAAM,SAAS,MAAM;CAmBrE,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -338,6 +338,7 @@ var useTableLayout = function useTableLayout(props) {
338
338
  }
339
339
 
340
340
  // 直接操作 DOM classList,不触发 React re-render
341
+ // JSS 生成的 className 可能包含多个空格分隔的类名,classList.toggle 只接受单个 token
341
342
  var classes = floatClassRef.current;
342
343
  var el = (_props$tableElRef = props.tableElRef) === null || _props$tableElRef === void 0 ? void 0 : _props$tableElRef.current;
343
344
  if (!classes || !el) return;
@@ -345,7 +346,9 @@ var useTableLayout = function useTableLayout(props) {
345
346
  var l = left > min;
346
347
  if (l !== floatLeftRef.current) {
347
348
  floatLeftRef.current = l;
348
- el.classList.toggle(classes.left, l);
349
+ classes.left.forEach(function (cls) {
350
+ return el.classList.toggle(cls, l);
351
+ });
349
352
  }
350
353
  }
351
354
  if (hasFixedRight) {
@@ -353,7 +356,9 @@ var useTableLayout = function useTableLayout(props) {
353
356
  var r = max - left > 1;
354
357
  if (r !== floatRightRef.current) {
355
358
  floatRightRef.current = r;
356
- el.classList.toggle(classes.right, r);
359
+ classes.right.forEach(function (cls) {
360
+ return el.classList.toggle(cls, r);
361
+ });
357
362
  }
358
363
  }
359
364
  });
@@ -479,10 +484,11 @@ var useTableLayout = function useTableLayout(props) {
479
484
  }
480
485
 
481
486
  // 注册 float class name,由 table.tsx 初始化时调用
487
+ // 预拆分空格分隔的类名,避免 checkFloat 高频路径重复 split
482
488
  var registerFloatClass = usePersistFn(function (left, right) {
483
489
  floatClassRef.current = {
484
- left: left,
485
- right: right
490
+ left: left.split(/\s+/).filter(Boolean),
491
+ right: right.split(/\s+/).filter(Boolean)
486
492
  };
487
493
  });
488
494
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheinx/hooks",
3
- "version": "3.10.2-beta.6",
3
+ "version": "3.10.2-beta.8",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",