shineout 3.9.6-beta.8 → 3.9.6-beta.9

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/cjs/index.js CHANGED
@@ -522,5 +522,5 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
522
522
  // 此文件由脚本自动生成,请勿直接修改。
523
523
  // This file was generated automatically by a script. Please do not modify it directly.
524
524
  var _default = exports.default = {
525
- version: '3.9.6-beta.8'
525
+ version: '3.9.6-beta.9'
526
526
  };
package/dist/shineout.js CHANGED
@@ -12401,7 +12401,7 @@ var handleStyle = function handleStyle(style) {
12401
12401
  };
12402
12402
  /* harmony default export */ var jss_style_handleStyle = (handleStyle);
12403
12403
  ;// CONCATENATED MODULE: ../shineout-style/src/version.ts
12404
- /* harmony default export */ var version = ('3.9.6-beta.8');
12404
+ /* harmony default export */ var version = ('3.9.6-beta.9');
12405
12405
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
12406
12406
 
12407
12407
 
@@ -66887,6 +66887,32 @@ var useTableRow = function useTableRow(props) {
66887
66887
  }
66888
66888
  setHoverIndex(hoverIndex);
66889
66889
  });
66890
+
66891
+ // 为虚拟滚动场景预计算 checkbox 列的 rowSpan 索引数组(缓存以提升性能)
66892
+ var checkboxRowSpanIndexArray = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () {
66893
+ var columns = props.columns || [];
66894
+ var checkCol = columns.find(function (col) {
66895
+ return col.type === 'checkbox';
66896
+ });
66897
+
66898
+ // 只在虚拟滚动 + checkbox 有 rowSpan 时才需要计算
66899
+ if (!(checkCol !== null && checkCol !== void 0 && checkCol.rowSpan) || !props.rowSpanIndexArray || !props.originData) {
66900
+ return null;
66901
+ }
66902
+ var originData = props.originData;
66903
+ var indexArray = [];
66904
+ for (var i = 0; i < originData.length; i++) {
66905
+ if (indexArray[i] === undefined) {
66906
+ indexArray[i] = i;
66907
+ }
66908
+ // 检查当前行是否应该和下一行合并
66909
+ if (i < originData.length - 1 && checkCol.rowSpan(originData[i], originData[i + 1])) {
66910
+ // 下一行应该指向当前行的起始索引
66911
+ indexArray[i + 1] = indexArray[i];
66912
+ }
66913
+ }
66914
+ return indexArray;
66915
+ }, [props.columns, props.originData, props.rowSpanIndexArray]);
66890
66916
  var rowData = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () {
66891
66917
  var rows = [];
66892
66918
  context.rowSelectMergeStartData = [];
@@ -66897,29 +66923,26 @@ var useTableRow = function useTableRow(props) {
66897
66923
  });
66898
66924
 
66899
66925
  // 计算 rowSelectMergeStartData
66900
- if (checkCol !== null && checkCol !== void 0 && checkCol.rowSpan) {
66901
- // checkbox 列有 rowSpan,需要计算合并起始数据
66902
- if (props.rowSpanIndexArray && props.originData) {
66903
- // 虚拟滚动:使用 rowSpanIndexArray(由 useTableVirtual 预计算)
66904
- var originData = props.originData;
66905
- for (var i = 0; i < data.length; i++) {
66906
- var globalIndex = currentIndex + i;
66907
- var startIndex = props.rowSpanIndexArray[globalIndex];
66908
- context.rowSelectMergeStartData[i] = originData[startIndex] || data[i];
66926
+ if (checkboxRowSpanIndexArray && props.originData) {
66927
+ // 虚拟滚动 + checkbox rowSpan:使用预计算的 checkbox 专属索引数组
66928
+ var originData = props.originData;
66929
+ for (var i = 0; i < data.length; i++) {
66930
+ var globalIndex = currentIndex + i;
66931
+ var startIndex = checkboxRowSpanIndexArray[globalIndex];
66932
+ context.rowSelectMergeStartData[i] = originData[startIndex] || data[i];
66933
+ }
66934
+ } else if (checkCol !== null && checkCol !== void 0 && checkCol.rowSpan) {
66935
+ // 非虚拟滚动 + checkbox 有 rowSpan:基于当前数据计算
66936
+ for (var _i = 0; _i < data.length; _i++) {
66937
+ var currentData = data[_i];
66938
+ // 如果当前行还没有被设置起始数据,说明它是一个新的合并组的起始
66939
+ if (context.rowSelectMergeStartData[_i] === undefined) {
66940
+ context.rowSelectMergeStartData[_i] = currentData;
66909
66941
  }
66910
- } else {
66911
- // 非虚拟滚动:基于当前数据计算
66912
- for (var _i = 0; _i < data.length; _i++) {
66913
- var currentData = data[_i];
66914
- // 如果当前行还没有被设置起始数据,说明它是一个新的合并组的起始
66915
- if (context.rowSelectMergeStartData[_i] === undefined) {
66916
- context.rowSelectMergeStartData[_i] = currentData;
66917
- }
66918
- // 检查当前行是否应该和下一行合并
66919
- if (_i < data.length - 1 && checkCol.rowSpan(currentData, data[_i + 1])) {
66920
- // 下一行应该指向当前行的起始数据
66921
- context.rowSelectMergeStartData[_i + 1] = context.rowSelectMergeStartData[_i];
66922
- }
66942
+ // 检查当前行是否应该和下一行合并
66943
+ if (_i < data.length - 1 && checkCol.rowSpan(currentData, data[_i + 1])) {
66944
+ // 下一行应该指向当前行的起始数据
66945
+ context.rowSelectMergeStartData[_i + 1] = context.rowSelectMergeStartData[_i];
66923
66946
  }
66924
66947
  }
66925
66948
  } else {
@@ -66936,7 +66959,7 @@ var useTableRow = function useTableRow(props) {
66936
66959
  }));
66937
66960
  }
66938
66961
  return rows;
66939
- }, [props.columns, props.data, props.originData, props.rowSpanIndexArray, currentIndex]);
66962
+ }, [props.columns, props.data, props.originData, props.rowSpanIndexArray, currentIndex, checkboxRowSpanIndexArray]);
66940
66963
  return {
66941
66964
  rowData: rowData,
66942
66965
  handleCellHover: handleCellHover,
@@ -74855,7 +74878,7 @@ var upload_interface = __webpack_require__(8821);
74855
74878
 
74856
74879
 
74857
74880
  /* harmony default export */ var src_0 = ({
74858
- version: '3.9.6-beta.8'
74881
+ version: '3.9.6-beta.9'
74859
74882
  });
74860
74883
  }();
74861
74884
  /******/ return __webpack_exports__;