tdesign-react
Version:
TDesign Component for React
102 lines (96 loc) • 3.67 kB
JavaScript
/**
* tdesign v1.13.2
* (c) 2025 tdesign
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var slicedToArray = require('../../_chunks/dep-e17e2d31.js');
var React = require('react');
var log = require('../../_chunks/dep-4bc3c0ab.js');
var get = require('../../_chunks/dep-fbc19a54.js');
require('../../_chunks/dep-b7d577ac.js');
require('../../_chunks/dep-4ba2ac6b.js');
require('../../_chunks/dep-028b759d.js');
require('../../_chunks/dep-6d4d8660.js');
require('../../_chunks/dep-f076775e.js');
require('../../_chunks/dep-f0379c5f.js');
require('../../_chunks/dep-ddacd27a.js');
require('../../_chunks/dep-a30819a4.js');
require('../../_chunks/dep-6a7ba247.js');
require('../../_chunks/dep-bed9d73e.js');
require('../../_chunks/dep-780eda7b.js');
require('../../_chunks/dep-c87d9752.js');
require('../../_chunks/dep-62193a48.js');
function getCellKey(row, rowKey, colKey, colIndex) {
var rowValue = get.get(row, rowKey);
if (rowValue === void 0) {
log.log.error("Table", "rowKey is wrong, can not get unique identifier of row.");
}
return [rowValue, colKey || colIndex].join("_");
}
function useRowspanAndColspan(data, columns, rowKey, rowspanAndColspan) {
var _useState = React.useState(function () {
return /* @__PURE__ */new Map();
}),
_useState2 = slicedToArray._slicedToArray(_useState, 2),
skipSpansMap = _useState2[0],
setKipSnapsMap = _useState2[1];
var onTrRowspanOrColspan = function onTrRowspanOrColspan(params, skipSpansValue, map) {
var rowIndex = params.rowIndex,
colIndex = params.colIndex;
if (!skipSpansValue.rowspan && !skipSpansValue.colspan) return;
var maxRowIndex = rowIndex + (skipSpansValue.rowspan || 1);
var maxColIndex = colIndex + (skipSpansValue.colspan || 1);
for (var i = rowIndex; i < maxRowIndex; i++) {
for (var j = colIndex; j < maxColIndex; j++) {
if (i !== rowIndex || j !== colIndex) {
if (!data[i] || !columns[j]) return;
var cellKey = getCellKey(data[i], rowKey, columns[j].colKey, j);
var state = map.get(cellKey) || {};
state.skipped = true;
map.set(cellKey, state);
}
}
}
};
var getSkipSpansMap = function getSkipSpansMap(data2, columns2, rowspanAndColspan2) {
if (!data2 || !rowspanAndColspan2) return;
var map = /* @__PURE__ */new Map();
for (var i = 0, len = data2.length; i < len; i++) {
var row = data2[i];
for (var j = 0, colLen = columns2.length; j < colLen; j++) {
var col = columns2[j];
var params = {
row: row,
col: col,
rowIndex: i,
colIndex: j
};
var cellKey = getCellKey(row, rowKey, col.colKey, j);
var state = map.get(cellKey) || {};
var o = rowspanAndColspan2(params) || {};
if (o.rowspan || o.colspan || state.rowspan || state.colspan) {
o.rowspan && (state.rowspan = o.rowspan);
o.colspan && (state.colspan = o.colspan);
map.set(cellKey, state);
}
onTrRowspanOrColspan === null || onTrRowspanOrColspan === void 0 || onTrRowspanOrColspan(params, state, map);
}
}
return map;
};
React.useEffect(function () {
if (!rowspanAndColspan) return;
skipSpansMap.clear();
var result = getSkipSpansMap(data, columns, rowspanAndColspan);
setKipSnapsMap(result);
}, [data, columns, rowspanAndColspan]);
return {
skipSpansMap: skipSpansMap,
getSkipSpansMap: getSkipSpansMap
};
}
exports["default"] = useRowspanAndColspan;
exports.getCellKey = getCellKey;
//# sourceMappingURL=useRowspanAndColspan.js.map