drawTable.js
 1  "use strict";
 2  var __importDefault = (this && this.__importDefault) || function (mod) {
 3      return (mod && mod.__esModule) ? mod : { "default": mod };
 4  };
 5  Object.defineProperty(exports, "__esModule", { value: true });
 6  exports.drawTable = void 0;
 7  const string_width_1 = __importDefault(require("string-width"));
 8  const drawBorder_1 = require("./drawBorder");
 9  const drawContent_1 = require("./drawContent");
10  const drawHeader_1 = require("./drawHeader");
11  const drawRow_1 = require("./drawRow");
12  const utils_1 = require("./utils");
13  const drawTable = (rows, columnWidths, rowHeights, config) => {
14      const { drawHorizontalLine, singleLine, } = config;
15      const contents = (0, utils_1.groupBySizes)(rows, rowHeights).map((group) => {
16          return group.map((row) => {
17              return (0, drawRow_1.drawRow)(row, config);
18          }).join('');
19      });
20      if (config.header) {
21          // assume that topLeft/right border have width = 1
22          const headerWidth = (0, string_width_1.default)((0, drawRow_1.drawRow)(rows[0], config)) - 2 -
23              config.header.paddingLeft - config.header.paddingRight;
24          const header = (0, drawHeader_1.drawHeader)(headerWidth, config);
25          contents.unshift(header);
26      }
27      return (0, drawContent_1.drawContent)(contents, {
28          drawSeparator: (index, size) => {
29              // Top/bottom border
30              if (index === 0 || index === size) {
31                  return drawHorizontalLine(index, size);
32              }
33              return !singleLine && drawHorizontalLine(index, size);
34          },
35          separatorGetter: (0, drawBorder_1.createTableBorderGetter)(columnWidths, config),
36      });
37  };
38  exports.drawTable = drawTable;
39  //# sourceMappingURL=drawTable.js.map