shineout 3.10.3-beta.2 → 3.10.3-beta.3
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 +1 -1
- package/dist/shineout.js +94 -22
- package/dist/shineout.js.map +1 -1
- package/dist/shineout.min.js +1 -1
- package/dist/shineout.min.js.map +1 -1
- package/esm/index.js +1 -1
- package/package.json +5 -5
package/cjs/index.js
CHANGED
|
@@ -545,5 +545,5 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
545
545
|
// 此文件由脚本自动生成,请勿直接修改。
|
|
546
546
|
// This file was generated automatically by a script. Please do not modify it directly.
|
|
547
547
|
var _default = exports.default = {
|
|
548
|
-
version: '3.10.3-beta.
|
|
548
|
+
version: '3.10.3-beta.3'
|
|
549
549
|
};
|
package/dist/shineout.js
CHANGED
|
@@ -13736,7 +13736,7 @@ var handleStyle = function handleStyle(style) {
|
|
|
13736
13736
|
};
|
|
13737
13737
|
/* harmony default export */ var jss_style_handleStyle = (handleStyle);
|
|
13738
13738
|
;// CONCATENATED MODULE: ../shineout-style/src/version.ts
|
|
13739
|
-
/* harmony default export */ var version = ('3.10.3-beta.
|
|
13739
|
+
/* harmony default export */ var version = ('3.10.3-beta.3');
|
|
13740
13740
|
;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
|
|
13741
13741
|
|
|
13742
13742
|
|
|
@@ -67345,6 +67345,13 @@ function useScrollbarWidth() {
|
|
|
67345
67345
|
|
|
67346
67346
|
|
|
67347
67347
|
|
|
67348
|
+
|
|
67349
|
+
// 逐列浅比较:业务常见写法 columns.map(c => ({ ...c })) 每次都会产生新对象,但内容(含 render 引用)不变
|
|
67350
|
+
var isColumnsShallowEqual = function isColumnsShallowEqual(a, b) {
|
|
67351
|
+
return a.length === b.length && a.every(function (c, i) {
|
|
67352
|
+
return shallow_equal(c, b[i]);
|
|
67353
|
+
});
|
|
67354
|
+
};
|
|
67348
67355
|
var getHideExpandCol = function getHideExpandCol() {
|
|
67349
67356
|
var cols = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
67350
67357
|
var expandCol = cols.find(function (col) {
|
|
@@ -67380,6 +67387,8 @@ var useColumns = function useColumns(props) {
|
|
|
67380
67387
|
var _useRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)({
|
|
67381
67388
|
cachedColumns: null,
|
|
67382
67389
|
oldColumns: null,
|
|
67390
|
+
oldShowCheckbox: undefined,
|
|
67391
|
+
columnsSnapshot: null,
|
|
67383
67392
|
groupLevel: 0,
|
|
67384
67393
|
expandHideCol: null
|
|
67385
67394
|
}),
|
|
@@ -67391,6 +67400,11 @@ var useColumns = function useColumns(props) {
|
|
|
67391
67400
|
if (columnsA === context.oldColumns) {
|
|
67392
67401
|
return context.cachedColumns;
|
|
67393
67402
|
}
|
|
67403
|
+
if (props.reuseEqualColumns && context.columnsSnapshot && context.cachedColumns && context.oldShowCheckbox === props.showCheckbox && isColumnsShallowEqual(columnsA, context.columnsSnapshot)) {
|
|
67404
|
+
context.oldColumns = columnsA;
|
|
67405
|
+
return context.cachedColumns;
|
|
67406
|
+
}
|
|
67407
|
+
context.oldShowCheckbox = props.showCheckbox;
|
|
67394
67408
|
context.expandHideCol = getHideExpandCol(columnsA);
|
|
67395
67409
|
var columns = columnsA.filter(function (c) {
|
|
67396
67410
|
return typeof_default()(c) === 'object';
|
|
@@ -67426,6 +67440,10 @@ var useColumns = function useColumns(props) {
|
|
|
67426
67440
|
});
|
|
67427
67441
|
});
|
|
67428
67442
|
context.oldColumns = columnsA;
|
|
67443
|
+
// 与快照比较而非与旧数组比较:列对象被原地修改时旧数组里也是同一个对象,比较不出差异
|
|
67444
|
+
context.columnsSnapshot = props.reuseEqualColumns ? columnsA.map(function (c) {
|
|
67445
|
+
return c && typeof_default()(c) === 'object' ? objectSpread2_default()({}, c) : c;
|
|
67446
|
+
}) : null;
|
|
67429
67447
|
return context.cachedColumns;
|
|
67430
67448
|
});
|
|
67431
67449
|
var columns = getColumns(propsColumns) || [];
|
|
@@ -70044,10 +70062,10 @@ function Td(props) {
|
|
|
70044
70062
|
|
|
70045
70063
|
var tr_toNum = toNum;
|
|
70046
70064
|
var Tr = function Tr(props) {
|
|
70047
|
-
var _props$
|
|
70065
|
+
var _props$rowClassName;
|
|
70048
70066
|
var treeFunc = props.treeFunc,
|
|
70049
|
-
|
|
70050
|
-
|
|
70067
|
+
tableClasses = props.tableClasses,
|
|
70068
|
+
preventClasses = props.preventClasses;
|
|
70051
70069
|
var trRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null);
|
|
70052
70070
|
var expandRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null);
|
|
70053
70071
|
var config = useConfig();
|
|
@@ -70094,9 +70112,14 @@ var Tr = function Tr(props) {
|
|
|
70094
70112
|
}
|
|
70095
70113
|
});
|
|
70096
70114
|
(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(setVirtualRowHeight, [props.expanded, props.rowIndex, props.bodyScrollWidth, props.resizeFlag]);
|
|
70115
|
+
|
|
70116
|
+
// 行高只在虚拟列表下需要上报(setRowHeight 仅由虚拟列表传入),
|
|
70117
|
+
// 非虚拟场景(sticky-only / 普通表格)不再为每一行创建 ResizeObserver,
|
|
70118
|
+
// 避免数据切换时批量 observe/disconnect 以及 RO 首次回调带来的布局读取(计入 INP presentation delay)
|
|
70119
|
+
var shouldObserveRowHeight = !!props.setRowHeight && !props.strictRowHeight;
|
|
70097
70120
|
(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () {
|
|
70098
70121
|
// 祖先元素不可见时(display: none)
|
|
70099
|
-
if (
|
|
70122
|
+
if (!shouldObserveRowHeight || !trRef.current || !trRef.current.offsetParent) return;
|
|
70100
70123
|
var cancelObserver = addResizeObserver(trRef.current, setVirtualRowHeight, {
|
|
70101
70124
|
direction: 'y',
|
|
70102
70125
|
lazy: true
|
|
@@ -70104,7 +70127,7 @@ var Tr = function Tr(props) {
|
|
|
70104
70127
|
return function () {
|
|
70105
70128
|
cancelObserver();
|
|
70106
70129
|
};
|
|
70107
|
-
}, []);
|
|
70130
|
+
}, [shouldObserveRowHeight]);
|
|
70108
70131
|
var _useState = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false),
|
|
70109
70132
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
70110
70133
|
isExpandLoading = _useState2[0],
|
|
@@ -70352,7 +70375,6 @@ var Tr = function Tr(props) {
|
|
|
70352
70375
|
}
|
|
70353
70376
|
}
|
|
70354
70377
|
};
|
|
70355
|
-
var preventClasses = [jssStyle === null || jssStyle === void 0 || (_jssStyle$input = jssStyle.input) === null || _jssStyle$input === void 0 ? void 0 : _jssStyle$input.call(jssStyle).wrapper, jssStyle === null || jssStyle === void 0 || (_jssStyle$select = jssStyle.select) === null || _jssStyle$select === void 0 ? void 0 : _jssStyle$select.call(jssStyle).wrapper, jssStyle === null || jssStyle === void 0 || (_jssStyle$datePicker = jssStyle.datePicker) === null || _jssStyle$datePicker === void 0 ? void 0 : _jssStyle$datePicker.call(jssStyle).wrapper, jssStyle === null || jssStyle === void 0 || (_jssStyle$treeSelect = jssStyle.treeSelect) === null || _jssStyle$treeSelect === void 0 ? void 0 : _jssStyle$treeSelect.call(jssStyle).wrapper, jssStyle === null || jssStyle === void 0 || (_jssStyle$switch = jssStyle.switch) === null || _jssStyle$switch === void 0 ? void 0 : _jssStyle$switch.call(jssStyle).wrapper, jssStyle === null || jssStyle === void 0 || (_jssStyle$checkbox = jssStyle.checkbox) === null || _jssStyle$checkbox === void 0 ? void 0 : _jssStyle$checkbox.call(jssStyle).wrapper, jssStyle === null || jssStyle === void 0 || (_jssStyle$radio = jssStyle.radio) === null || _jssStyle$radio === void 0 ? void 0 : _jssStyle$radio.call(jssStyle).wrapper, jssStyle === null || jssStyle === void 0 || (_jssStyle$cascader = jssStyle.cascader) === null || _jssStyle$cascader === void 0 ? void 0 : _jssStyle$cascader.call(jssStyle).wrapper];
|
|
70356
70378
|
var isNotExpandableElement = function isNotExpandableElement(el) {
|
|
70357
70379
|
var tagName = el.tagName;
|
|
70358
70380
|
if (tagName === 'TD' || tagName === 'TR') return false;
|
|
@@ -70445,13 +70467,48 @@ var Tr = function Tr(props) {
|
|
|
70445
70467
|
})), renderExpand()]
|
|
70446
70468
|
});
|
|
70447
70469
|
};
|
|
70448
|
-
|
|
70470
|
+
|
|
70471
|
+
// 行级 memo(rowMemo)比较时跳过的 props:
|
|
70472
|
+
// - datum / treeFunc / handleCellHover / handleExpandClick:内部方法均为 usePersistFn,引用变化不影响渲染结果
|
|
70473
|
+
// (选中、禁用、展开状态已经以 isSelect / disabled / expanded / treeExpandLevel 的形式单独下发)
|
|
70474
|
+
// - row / hoverIndex / 语义化样式:引用每次都可能变化,下面按内容单独比较
|
|
70475
|
+
// - treeExpandLevel:随 data 每次重建,非树形表格不会读取;树形表格下单独按引用比较
|
|
70476
|
+
var MEMO_SKIP_KEYS = ['datum', 'treeFunc', 'handleCellHover', 'handleExpandClick', 'row', 'hoverIndex', 'bodyRowSemStyle', 'bodyCellSemStyle', 'treeExpandLevel'];
|
|
70477
|
+
|
|
70478
|
+
// rowData 在 data 变化时会整体重算(如懒加载追加数据),按单元格内容比较,避免未变化的行被连带重渲染
|
|
70479
|
+
var isSameRowCells = function isSameRowCells(prev, next) {
|
|
70480
|
+
if (prev === next) return true;
|
|
70481
|
+
if (prev.length !== next.length) return false;
|
|
70482
|
+
return prev.every(function (cell, i) {
|
|
70483
|
+
var nextCell = next[i];
|
|
70484
|
+
if (!cell || !nextCell) return cell === nextCell;
|
|
70485
|
+
return cell.data === nextCell.data && cell.colSpan === nextCell.colSpan && cell.rowSpan === nextCell.rowSpan;
|
|
70486
|
+
});
|
|
70487
|
+
};
|
|
70488
|
+
var isSameHover = function isSameHover(prev, next) {
|
|
70489
|
+
if (prev.hoverIndex === next.hoverIndex || !next.hover) return true;
|
|
70490
|
+
// 存在跨行单元格时 hover 态取决于后续行,保守处理为需要更新
|
|
70491
|
+
if (next.row.some(function (cell) {
|
|
70492
|
+
return cell && cell.rowSpan > 1;
|
|
70493
|
+
})) return false;
|
|
70494
|
+
return prev.hoverIndex.has(prev.rowIndex) === next.hoverIndex.has(next.rowIndex);
|
|
70495
|
+
};
|
|
70496
|
+
|
|
70497
|
+
// 未开启 rowMemo 时始终返回 false,行为与不做 memo 完全一致
|
|
70498
|
+
var isTrPropsEqual = function isTrPropsEqual(prev, next) {
|
|
70499
|
+
if (!prev.rowMemo || !next.rowMemo) return false;
|
|
70500
|
+
return shallow_equal_shallowEqual(prev, next, {
|
|
70501
|
+
skip: MEMO_SKIP_KEYS
|
|
70502
|
+
}) && (!next.treeColumnsName || prev.treeExpandLevel === next.treeExpandLevel) && isSameRowCells(prev.row, next.row) && isSameHover(prev, next) && shallow_equal_shallowEqual(prev.bodyRowSemStyle, next.bodyRowSemStyle) && shallow_equal_shallowEqual(prev.bodyCellSemStyle, next.bodyCellSemStyle);
|
|
70503
|
+
};
|
|
70504
|
+
/* harmony default export */ var tr = (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(Tr, isTrPropsEqual));
|
|
70449
70505
|
;// CONCATENATED MODULE: ../base/src/table/tbody.tsx
|
|
70450
70506
|
|
|
70451
70507
|
|
|
70452
70508
|
|
|
70453
70509
|
|
|
70454
70510
|
/* harmony default export */ var tbody = (function (props) {
|
|
70511
|
+
var _jssStyle$table, _jssStyle$input, _jssStyle$select, _jssStyle$datePicker, _jssStyle$treeSelect, _jssStyle$switch, _jssStyle$checkbox, _jssStyle$radio, _jssStyle$cascader;
|
|
70455
70512
|
var _props$columns = props.columns,
|
|
70456
70513
|
columns = _props$columns === void 0 ? [] : _props$columns,
|
|
70457
70514
|
_props$currentRowInde = props.currentRowIndex,
|
|
@@ -70481,6 +70538,23 @@ var Tr = function Tr(props) {
|
|
|
70481
70538
|
var expandCol = props.expandHideCol || columns.find(function (col) {
|
|
70482
70539
|
return col.type === 'expand' || col.type === 'row-expand';
|
|
70483
70540
|
});
|
|
70541
|
+
|
|
70542
|
+
// 样式 hook 在 Tbody 统一调用一次再下发给 Tr,
|
|
70543
|
+
// 避免每一行都执行 9 次 react-jss useStyles(每次都带 useLayoutEffect/useEffect),行数多时开销明显
|
|
70544
|
+
var jssStyle = props.jssStyle;
|
|
70545
|
+
var tableClasses = jssStyle === null || jssStyle === void 0 || (_jssStyle$table = jssStyle.table) === null || _jssStyle$table === void 0 ? void 0 : _jssStyle$table.call(jssStyle);
|
|
70546
|
+
var inputWrapper = jssStyle === null || jssStyle === void 0 || (_jssStyle$input = jssStyle.input) === null || _jssStyle$input === void 0 ? void 0 : _jssStyle$input.call(jssStyle).wrapper;
|
|
70547
|
+
var selectWrapper = jssStyle === null || jssStyle === void 0 || (_jssStyle$select = jssStyle.select) === null || _jssStyle$select === void 0 ? void 0 : _jssStyle$select.call(jssStyle).wrapper;
|
|
70548
|
+
var datePickerWrapper = jssStyle === null || jssStyle === void 0 || (_jssStyle$datePicker = jssStyle.datePicker) === null || _jssStyle$datePicker === void 0 ? void 0 : _jssStyle$datePicker.call(jssStyle).wrapper;
|
|
70549
|
+
var treeSelectWrapper = jssStyle === null || jssStyle === void 0 || (_jssStyle$treeSelect = jssStyle.treeSelect) === null || _jssStyle$treeSelect === void 0 ? void 0 : _jssStyle$treeSelect.call(jssStyle).wrapper;
|
|
70550
|
+
var switchWrapper = jssStyle === null || jssStyle === void 0 || (_jssStyle$switch = jssStyle.switch) === null || _jssStyle$switch === void 0 ? void 0 : _jssStyle$switch.call(jssStyle).wrapper;
|
|
70551
|
+
var checkboxWrapper = jssStyle === null || jssStyle === void 0 || (_jssStyle$checkbox = jssStyle.checkbox) === null || _jssStyle$checkbox === void 0 ? void 0 : _jssStyle$checkbox.call(jssStyle).wrapper;
|
|
70552
|
+
var radioWrapper = jssStyle === null || jssStyle === void 0 || (_jssStyle$radio = jssStyle.radio) === null || _jssStyle$radio === void 0 ? void 0 : _jssStyle$radio.call(jssStyle).wrapper;
|
|
70553
|
+
var cascaderWrapper = jssStyle === null || jssStyle === void 0 || (_jssStyle$cascader = jssStyle.cascader) === null || _jssStyle$cascader === void 0 ? void 0 : _jssStyle$cascader.call(jssStyle).wrapper;
|
|
70554
|
+
// 行点击时用于判断点击目标是否为表单控件(不触发 onRowClick / 行展开)
|
|
70555
|
+
var preventClasses = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () {
|
|
70556
|
+
return [inputWrapper, selectWrapper, datePickerWrapper, treeSelectWrapper, switchWrapper, checkboxWrapper, radioWrapper, cascaderWrapper];
|
|
70557
|
+
}, [inputWrapper, selectWrapper, datePickerWrapper, treeSelectWrapper, switchWrapper, checkboxWrapper, radioWrapper, cascaderWrapper]);
|
|
70484
70558
|
var renderRow = function renderRow(item, index) {
|
|
70485
70559
|
var _props$rowEvents;
|
|
70486
70560
|
var rowIndex = index + currentRowIndex;
|
|
@@ -70492,6 +70566,8 @@ var Tr = function Tr(props) {
|
|
|
70492
70566
|
columns: columns,
|
|
70493
70567
|
isScrollX: props.isScrollX,
|
|
70494
70568
|
jssStyle: props.jssStyle,
|
|
70569
|
+
tableClasses: tableClasses,
|
|
70570
|
+
preventClasses: preventClasses,
|
|
70495
70571
|
colgroup: props.colgroup,
|
|
70496
70572
|
rowClassName: props.rowClassName,
|
|
70497
70573
|
rawData: item,
|
|
@@ -70529,6 +70605,7 @@ var Tr = function Tr(props) {
|
|
|
70529
70605
|
virtual: props.virtual,
|
|
70530
70606
|
scrolling: props.scrolling,
|
|
70531
70607
|
strictRowHeight: props.strictRowHeight,
|
|
70608
|
+
rowMemo: props.rowMemo,
|
|
70532
70609
|
bodyRowSemClass: props.bodyRowSemClass,
|
|
70533
70610
|
bodyRowSemStyle: props.bodyRowSemStyle,
|
|
70534
70611
|
bodyCellSemClass: props.bodyCellSemClass,
|
|
@@ -70694,9 +70771,6 @@ var table_excluded = ["data"];
|
|
|
70694
70771
|
|
|
70695
70772
|
var table_devUseWarning = devUseWarning;
|
|
70696
70773
|
var table_emptyArr = [];
|
|
70697
|
-
var emptyRef = {
|
|
70698
|
-
current: null
|
|
70699
|
-
};
|
|
70700
70774
|
function Table(props) {
|
|
70701
70775
|
var _props$jssStyle, _props$jssStyle$table, _columns$find;
|
|
70702
70776
|
var _props$verticalAlign = props.verticalAlign,
|
|
@@ -70773,13 +70847,6 @@ function Table(props) {
|
|
|
70773
70847
|
setScrollAble(isScrollAble);
|
|
70774
70848
|
}, [virtual]);
|
|
70775
70849
|
|
|
70776
|
-
// TODO: 没用的tbodyHeight,有空移除了
|
|
70777
|
-
// 虚拟列表高度另外计算
|
|
70778
|
-
var _useResize = useResize({
|
|
70779
|
-
targetRef: virtual ? emptyRef : tbodyRef
|
|
70780
|
-
}),
|
|
70781
|
-
tbodyHeight = _useResize.height;
|
|
70782
|
-
|
|
70783
70850
|
// default height
|
|
70784
70851
|
var defaultHeight = virtual && !props.height && !props.virtualScrollContainer ? '100%' : props.height;
|
|
70785
70852
|
var selection = use_table_select({
|
|
@@ -70797,7 +70864,8 @@ function Table(props) {
|
|
|
70797
70864
|
data: props.data,
|
|
70798
70865
|
virtualColumn: props.virtualColumn,
|
|
70799
70866
|
scrollRef: scrollRef,
|
|
70800
|
-
showCheckbox: typeof props.onRowSelect === 'function'
|
|
70867
|
+
showCheckbox: typeof props.onRowSelect === 'function',
|
|
70868
|
+
reuseEqualColumns: !!props.rowMemo
|
|
70801
70869
|
}),
|
|
70802
70870
|
columns = _useTableColumns.columns,
|
|
70803
70871
|
expandHideCol = _useTableColumns.expandHideCol,
|
|
@@ -71095,6 +71163,7 @@ function Table(props) {
|
|
|
71095
71163
|
treeCheckAll: props.treeCheckAll,
|
|
71096
71164
|
onCellClick: props.onCellClick,
|
|
71097
71165
|
strictRowHeight: props.strictRowHeight,
|
|
71166
|
+
rowMemo: props.rowMemo,
|
|
71098
71167
|
scrollRef: scrollRef,
|
|
71099
71168
|
bodyRowSemClass: semClass('bodyRow'),
|
|
71100
71169
|
bodyRowSemStyle: semStyle('bodyRow'),
|
|
@@ -71329,8 +71398,11 @@ function Table(props) {
|
|
|
71329
71398
|
flex: 1
|
|
71330
71399
|
},
|
|
71331
71400
|
wrapperRef: scrollRef,
|
|
71332
|
-
scrollWidth: width || 1
|
|
71333
|
-
|
|
71401
|
+
scrollWidth: width || 1
|
|
71402
|
+
// 非虚拟时只有空数据会走到 Scroll,此时 isEmpty 会把 paddingTop 置 0,scrollHeight 不生效;
|
|
71403
|
+
// 原先这里对 tbody 做 useResize 监听,tbody 尺寸变化后会额外触发整表重渲染,已移除
|
|
71404
|
+
,
|
|
71405
|
+
scrollHeight: virtual ? virtualInfo.scrollHeight : 0,
|
|
71334
71406
|
onScroll: handleVirtualScroll,
|
|
71335
71407
|
defaultHeight: context.emptyHeight,
|
|
71336
71408
|
isScrollY: isScrollY,
|
|
@@ -80212,7 +80284,7 @@ var watermark_interface = __webpack_require__(6640);
|
|
|
80212
80284
|
|
|
80213
80285
|
|
|
80214
80286
|
/* harmony default export */ var src_0 = ({
|
|
80215
|
-
version: '3.10.3-beta.
|
|
80287
|
+
version: '3.10.3-beta.3'
|
|
80216
80288
|
});
|
|
80217
80289
|
}();
|
|
80218
80290
|
/******/ return __webpack_exports__;
|