"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mapDataUsingRowHeights = void 0; const wrapCell_1 = require("./wrapCell"); const createEmptyStrings = (length) => { return new Array(length).fill(''); }; const padCellVertically = (lines, rowHeight, columnConfig) => { const { verticalAlignment } = columnConfig; 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)), ]; }; const flatten = (array) => { return [].concat(...array); }; const mapDataUsingRowHeights = (unmappedRows, rowHeights, config) => { const tableWidth = unmappedRows[0].length; const mappedRows = unmappedRows.map((unmappedRow, unmappedRowIndex) => { const outputRowHeight = rowHeights[unmappedRowIndex]; const outputRow = Array.from({ length: outputRowHeight }, () => { return new Array(tableWidth).fill(''); }); unmappedRow.forEach((cell, cellIndex) => { const cellLines = wrapCell_1.wrapCell(cell, config.columns[cellIndex].width, config.columns[cellIndex].wrapWord); const paddedCellLines = padCellVertically(cellLines, outputRowHeight, config.columns[cellIndex]); paddedCellLines.forEach((cellLine, cellLineIndex) => { outputRow[cellLineIndex][cellIndex] = cellLine; }); }); return outputRow; }); return flatten(mappedRows); }; exports.mapDataUsingRowHeights = mapDataUsingRowHeights;