You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
2.3 KiB
52 lines
2.3 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.mapDataUsingRowHeights = exports.padCellVertically = void 0;
|
|
const utils_1 = require("./utils");
|
|
const wrapCell_1 = require("./wrapCell");
|
|
const createEmptyStrings = (length) => {
|
|
return new Array(length).fill('');
|
|
};
|
|
const padCellVertically = (lines, rowHeight, verticalAlignment) => {
|
|
const availableLines = rowHeight - lines.length;
|
|
if (verticalAlignment === 'top') {
|
|
return [...lines, ...createEmptyStrings(availableLines)];
|
|
}
|
|
if (verticalAlignment === 'bottom') {
|
|
return [...createEmptyStrings(availableLines), ...lines];
|
|
}
|
|
return [
|
|
...createEmptyStrings(Math.floor(availableLines / 2)),
|
|
...lines,
|
|
...createEmptyStrings(Math.ceil(availableLines / 2)),
|
|
];
|
|
};
|
|
exports.padCellVertically = padCellVertically;
|
|
const mapDataUsingRowHeights = (unmappedRows, rowHeights, config) => {
|
|
const nColumns = unmappedRows[0].length;
|
|
const mappedRows = unmappedRows.map((unmappedRow, unmappedRowIndex) => {
|
|
const outputRowHeight = rowHeights[unmappedRowIndex];
|
|
const outputRow = Array.from({ length: outputRowHeight }, () => {
|
|
return new Array(nColumns).fill('');
|
|
});
|
|
unmappedRow.forEach((cell, cellIndex) => {
|
|
var _a;
|
|
const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,
|
|
row: unmappedRowIndex });
|
|
if (containingRange) {
|
|
containingRange.extractCellContent(unmappedRowIndex).forEach((cellLine, cellLineIndex) => {
|
|
outputRow[cellLineIndex][cellIndex] = cellLine;
|
|
});
|
|
return;
|
|
}
|
|
const cellLines = (0, wrapCell_1.wrapCell)(cell, config.columns[cellIndex].width, config.columns[cellIndex].wrapWord);
|
|
const paddedCellLines = (0, exports.padCellVertically)(cellLines, outputRowHeight, config.columns[cellIndex].verticalAlignment);
|
|
paddedCellLines.forEach((cellLine, cellLineIndex) => {
|
|
outputRow[cellLineIndex][cellIndex] = cellLine;
|
|
});
|
|
});
|
|
return outputRow;
|
|
});
|
|
return (0, utils_1.flatten)(mappedRows);
|
|
};
|
|
exports.mapDataUsingRowHeights = mapDataUsingRowHeights;
|
|
//# sourceMappingURL=mapDataUsingRowHeights.js.map
|