tdesign-react
Version:
TDesign Component for React
102 lines (96 loc) • 3.67 kB
JavaScript
/**
* tdesign v1.16.2
* (c) 2025 tdesign
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var slicedToArray = require('../../_chunks/dep-5cb0d66d.js');
var React = require('react');
var log = require('../../_chunks/dep-05f87b98.js');
var get = require('../../_chunks/dep-b7bd245a.js');
require('../../_chunks/dep-737b8bd8.js');
require('../../_chunks/dep-5dd1b13c.js');
require('../../_chunks/dep-bdafd287.js');
require('../../_chunks/dep-b325182b.js');
require('../../_chunks/dep-eb2203ae.js');
require('../../_chunks/dep-4ce0670e.js');
require('../../_chunks/dep-3448f35f.js');
require('../../_chunks/dep-3332ad6f.js');
require('../../_chunks/dep-98783318.js');
require('../../_chunks/dep-967e785f.js');
require('../../_chunks/dep-5c8525ea.js');
require('../../_chunks/dep-fc884a8e.js');
require('../../_chunks/dep-7659797a.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