shineout 3.9.6-beta.7 → 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.7'
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.7');
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 = [];
@@ -66895,28 +66921,45 @@ var useTableRow = function useTableRow(props) {
66895
66921
  var checkCol = columns.find(function (col) {
66896
66922
  return col.type === 'checkbox';
66897
66923
  });
66898
- for (var i = data.length - 1; i >= 0; i--) {
66899
- var d = data[i];
66900
- rows.unshift(use_table_row_format(columns, d, rows[0], currentIndex + i).map(function (col) {
66924
+
66925
+ // 计算 rowSelectMergeStartData
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;
66941
+ }
66942
+ // 检查当前行是否应该和下一行合并
66943
+ if (_i < data.length - 1 && checkCol.rowSpan(currentData, data[_i + 1])) {
66944
+ // 下一行应该指向当前行的起始数据
66945
+ context.rowSelectMergeStartData[_i + 1] = context.rowSelectMergeStartData[_i];
66946
+ }
66947
+ }
66948
+ } else {
66949
+ // checkbox 列无 rowSpan,每行都是自己的起始数据
66950
+ for (var _i2 = 0; _i2 < data.length; _i2++) {
66951
+ context.rowSelectMergeStartData[_i2] = data[_i2];
66952
+ }
66953
+ }
66954
+ for (var _i3 = data.length - 1; _i3 >= 0; _i3--) {
66955
+ var d = data[_i3];
66956
+ rows.unshift(use_table_row_format(columns, d, rows[0], currentIndex + _i3).map(function (col) {
66901
66957
  delete col.content;
66902
66958
  return col;
66903
66959
  }));
66904
- {
66905
- //记录合并行合并到的数据需要从0 开始
66906
- var i0 = data.length - 1 - i;
66907
- var d0 = data[i0];
66908
- context.rowSelectMergeStartData[i0] = d0;
66909
- if (i0 > 0 && checkCol && typeof checkCol.rowSpan === 'function') {
66910
- var beforeData = data[i0 - 1];
66911
- if (beforeData !== null && checkCol.rowSpan(beforeData, d0)) {
66912
- var _context$rowSelectMer;
66913
- context.rowSelectMergeStartData[i0] = (_context$rowSelectMer = context.rowSelectMergeStartData[i0 - 1]) !== null && _context$rowSelectMer !== void 0 ? _context$rowSelectMer : beforeData;
66914
- }
66915
- }
66916
- }
66917
66960
  }
66918
66961
  return rows;
66919
- }, [props.columns, props.data]);
66962
+ }, [props.columns, props.data, props.originData, props.rowSpanIndexArray, currentIndex, checkboxRowSpanIndexArray]);
66920
66963
  return {
66921
66964
  rowData: rowData,
66922
66965
  handleCellHover: handleCellHover,
@@ -67161,7 +67204,8 @@ var Tr = function Tr(props) {
67161
67204
  return expandInstance;
67162
67205
  }
67163
67206
  if (col.type === 'checkbox') {
67164
- var selectData = props.selectData || data;
67207
+ // 对于合并行,使用合并起始数据进行选择操作
67208
+ var selectData = props.rowSelectMergeStartData || data;
67165
67209
  var instance = /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
67166
67210
  className: tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.iconWrapper,
67167
67211
  children: props.radio ? /*#__PURE__*/(0,jsx_runtime.jsx)(base_src_radio_radio, {
@@ -67379,7 +67423,9 @@ var Tr = function Tr(props) {
67379
67423
  columns: props.columns,
67380
67424
  data: props.data,
67381
67425
  currentIndex: currentRowIndex,
67382
- hover: hover
67426
+ hover: hover,
67427
+ originData: props.originData,
67428
+ rowSpanIndexArray: props.rowSpanIndexArray
67383
67429
  }),
67384
67430
  rowData = _useTableRow.rowData,
67385
67431
  handleCellHover = _useTableRow.handleCellHover,
@@ -67393,17 +67439,6 @@ var Tr = function Tr(props) {
67393
67439
  var rowIndex = index + currentRowIndex;
67394
67440
  var originKey = getKey(props.keygen, item, rowIndex);
67395
67441
  var trRenderKey = props.loader || (_props$rowEvents = props.rowEvents) !== null && _props$rowEvents !== void 0 && _props$rowEvents.draggable ? originKey : "".concat(originKey, "-").concat(rowIndex);
67396
-
67397
- // 在虚拟列表模式下,使用 virtualRowSpanInfo 来获取正确的选择数据
67398
- var selectData = item;
67399
- if (props.virtualRowSpanInfo && props.fullData) {
67400
- // rowSpanIndexArray[rowIndex] 表示第 rowIndex 行所属合并组的起始行索引
67401
- var selectIndex = props.virtualRowSpanInfo.rowSpanIndexArray[rowIndex];
67402
- selectData = props.fullData[selectIndex];
67403
- } else {
67404
- // 非虚拟列表模式使用原有逻辑
67405
- selectData = rowSelectMergeStartData[index];
67406
- }
67407
67442
  return /*#__PURE__*/(0,jsx_runtime.jsx)(tr, {
67408
67443
  originKey: originKey,
67409
67444
  row: rowData[index],
@@ -67431,11 +67466,9 @@ var Tr = function Tr(props) {
67431
67466
  striped: props.striped,
67432
67467
  radio: props.radio,
67433
67468
  hover: hover,
67434
- isSelect: props.datum.check(selectData),
67435
- selectData: selectData,
67436
- handleCellHover: handleCellHover
67437
- // to update
67438
- ,
67469
+ isSelect: props.datum.check(rowSelectMergeStartData[index]),
67470
+ rowSelectMergeStartData: rowSelectMergeStartData[index],
67471
+ handleCellHover: handleCellHover,
67439
67472
  hoverIndex: hoverIndex,
67440
67473
  rowClickAttr: props.rowClickAttr,
67441
67474
  onRowClick: props.onRowClick,
@@ -68137,7 +68170,7 @@ function Table(props) {
68137
68170
  })
68138
68171
  }));
68139
68172
  if (isRenderVirtualTable) {
68140
- var _props$data3;
68173
+ var _props$data3, _virtualInfo$rowSpanI;
68141
68174
  var showStickyHeader = !props.hideHeader && props.sticky;
68142
68175
  return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
68143
68176
  children: [renderHeadMirrorScroller(), showStickyHeader && /*#__PURE__*/(0,jsx_runtime.jsx)(StickyWrapper, objectSpread2_default()(objectSpread2_default()({}, stickyProps), {}, {
@@ -68168,10 +68201,10 @@ function Table(props) {
68168
68201
  currentRowIndex: virtualInfo.startIndex,
68169
68202
  currentColIndex: currentColIndex,
68170
68203
  data: virtualInfo.data,
68204
+ originData: treeData,
68205
+ rowSpanIndexArray: (_virtualInfo$rowSpanI = virtualInfo.rowSpanInfo) === null || _virtualInfo$rowSpanI === void 0 ? void 0 : _virtualInfo$rowSpanI.rowSpanIndexArray,
68171
68206
  setRowHeight: virtualInfo.setRowHeight,
68172
- scrolling: scrolling,
68173
- virtualRowSpanInfo: virtualInfo.rowSpanInfo,
68174
- fullData: treeData
68207
+ scrolling: scrolling
68175
68208
  }))]
68176
68209
  }), showFoot ? /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
68177
68210
  className: footWrapperClass,
@@ -74845,7 +74878,7 @@ var upload_interface = __webpack_require__(8821);
74845
74878
 
74846
74879
 
74847
74880
  /* harmony default export */ var src_0 = ({
74848
- version: '3.9.6-beta.7'
74881
+ version: '3.9.6-beta.9'
74849
74882
  });
74850
74883
  }();
74851
74884
  /******/ return __webpack_exports__;