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.
48 lines
2.5 KiB
48 lines
2.5 KiB
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.alignVerticalRangeContent = exports.wrapRangeContent = void 0;
|
|
const string_width_1 = __importDefault(require("string-width"));
|
|
const alignString_1 = require("./alignString");
|
|
const mapDataUsingRowHeights_1 = require("./mapDataUsingRowHeights");
|
|
const padTableData_1 = require("./padTableData");
|
|
const truncateTableData_1 = require("./truncateTableData");
|
|
const utils_1 = require("./utils");
|
|
const wrapCell_1 = require("./wrapCell");
|
|
/**
|
|
* Fill content into all cells in range in order to calculate total height
|
|
*/
|
|
const wrapRangeContent = (rangeConfig, rangeWidth, context) => {
|
|
const { topLeft, paddingRight, paddingLeft, truncate, wrapWord, alignment } = rangeConfig;
|
|
const originalContent = context.rows[topLeft.row][topLeft.col];
|
|
const contentWidth = rangeWidth - paddingLeft - paddingRight;
|
|
return (0, wrapCell_1.wrapCell)((0, truncateTableData_1.truncateString)(originalContent, truncate), contentWidth, wrapWord).map((line) => {
|
|
const alignedLine = (0, alignString_1.alignString)(line, contentWidth, alignment);
|
|
return (0, padTableData_1.padString)(alignedLine, paddingLeft, paddingRight);
|
|
});
|
|
};
|
|
exports.wrapRangeContent = wrapRangeContent;
|
|
const alignVerticalRangeContent = (range, content, context) => {
|
|
const { rows, drawHorizontalLine, rowHeights } = context;
|
|
const { topLeft, bottomRight, verticalAlignment } = range;
|
|
// They are empty before calculateRowHeights function run
|
|
if (rowHeights.length === 0) {
|
|
return [];
|
|
}
|
|
const totalCellHeight = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row, bottomRight.row + 1));
|
|
const totalBorderHeight = bottomRight.row - topLeft.row;
|
|
const hiddenHorizontalBorderCount = (0, utils_1.sequence)(topLeft.row + 1, bottomRight.row).filter((horizontalBorderIndex) => {
|
|
return !drawHorizontalLine(horizontalBorderIndex, rows.length);
|
|
}).length;
|
|
const availableRangeHeight = totalCellHeight + totalBorderHeight - hiddenHorizontalBorderCount;
|
|
return (0, mapDataUsingRowHeights_1.padCellVertically)(content, availableRangeHeight, verticalAlignment).map((line) => {
|
|
if (line.length === 0) {
|
|
return ' '.repeat((0, string_width_1.default)(content[0]));
|
|
}
|
|
return line;
|
|
});
|
|
};
|
|
exports.alignVerticalRangeContent = alignVerticalRangeContent;
|
|
//# sourceMappingURL=alignSpanningCell.js.map
|