| "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 |