"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.drawTable = void 0; const string_width_1 = __importDefault(require("string-width")); const drawBorder_1 = require("./drawBorder"); const drawContent_1 = require("./drawContent"); const drawHeader_1 = require("./drawHeader"); const drawRow_1 = require("./drawRow"); const utils_1 = require("./utils"); const drawTable = (rows, columnWidths, rowHeights, config) => { const { drawHorizontalLine, singleLine, } = config; const contents = utils_1.groupBySizes(rows, rowHeights).map((group) => { return group.map((row) => { return drawRow_1.drawRow(row, config); }).join(''); }); if (config.header) { // assume that topLeft/right border have width = 1 const headerWidth = string_width_1.default(drawRow_1.drawRow(rows[0], config)) - 2 - config.header.paddingLeft - config.header.paddingRight; const header = drawHeader_1.drawHeader(headerWidth, config); contents.unshift(header); } return drawContent_1.drawContent(contents, { drawSeparator: (index, size) => { // Top/bottom border if (index === 0 || index === size) { return drawHorizontalLine(index, size); } return !singleLine && drawHorizontalLine(index, size); }, separatorGetter: drawBorder_1.createTableBorderGetter(columnWidths, config), }); }; exports.drawTable = drawTable;