@antv/s2
Version:
effective spreadsheet render core lib
53 lines • 2.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getExtraFrozenRowAxisNodes = exports.getExtraFrozenColAxisNodes = void 0;
function getNodesByRange(nodes, key, minIndex, maxIndex) {
return nodes.filter((node) => node[key] >= minIndex && node[key] <= maxIndex);
}
function getExtraFrozenColAxisNodes(facet, nodes) {
const extraNodes = [];
const { colCount, trailingColCount } = facet.getFrozenOptions();
if (colCount) {
const frozenLeafNodes = getNodesByRange(nodes, 'colIndex', 0, colCount - 1);
frozenLeafNodes.forEach((leafNode) => {
const newLeafNode = leafNode.clone();
newLeafNode.isFrozenHead = true;
extraNodes.push(newLeafNode);
});
}
if (trailingColCount) {
const total = nodes.length;
const frozenLeafNodes = getNodesByRange(nodes, 'colIndex', total - trailingColCount, total - 1);
frozenLeafNodes.forEach((leafNode) => {
const newLeafNode = leafNode.clone();
newLeafNode.isFrozenTrailing = true;
extraNodes.push(newLeafNode);
});
}
return extraNodes;
}
exports.getExtraFrozenColAxisNodes = getExtraFrozenColAxisNodes;
function getExtraFrozenRowAxisNodes(facet, nodes) {
const extraNodes = [];
const { start, end } = facet.getCellRange();
const { rowCount, trailingRowCount } = facet.getFrozenOptions();
if (rowCount) {
const frozenLeafNodes = getNodesByRange(nodes, 'rowIndex', start, start + rowCount - 1);
frozenLeafNodes.forEach((leafNode) => {
const newLeafNode = leafNode.clone();
newLeafNode.isFrozenHead = true;
extraNodes.push(newLeafNode);
});
}
if (trailingRowCount) {
const frozenLeafNodes = getNodesByRange(nodes, 'rowIndex', end - trailingRowCount + 1, end);
frozenLeafNodes.forEach((leafNode) => {
const newLeafNode = leafNode.clone();
newLeafNode.isFrozenTrailing = true;
extraNodes.push(newLeafNode);
});
}
return extraNodes;
}
exports.getExtraFrozenRowAxisNodes = getExtraFrozenRowAxisNodes;
//# sourceMappingURL=frozen.js.map