"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.drawBorderTop = exports.drawBorderJoin = exports.drawBorderBottom = exports.drawBorder = exports.createTableBorderGetter = void 0; const drawContent_1 = require("./drawContent"); const drawBorder = (columnWidths, config) => { const { separator, drawVerticalLine } = config; const columns = columnWidths.map((size) => { return config.separator.body.repeat(size); }); return drawContent_1.drawContent(columns, { drawSeparator: drawVerticalLine, separatorGetter: (index, columnCount) => { if (index === 0) { return separator.left; } if (index === columnCount) { return separator.right; } return separator.join; }, }) + '\n'; }; exports.drawBorder = drawBorder; const drawBorderTop = (columnWidths, config) => { const result = drawBorder(columnWidths, { ...config, separator: { body: config.border.topBody, join: config.border.topJoin, left: config.border.topLeft, right: config.border.topRight, }, }); if (result === '\n') { return ''; } return result; }; exports.drawBorderTop = drawBorderTop; const drawBorderJoin = (columnWidths, config) => { return drawBorder(columnWidths, { ...config, separator: { body: config.border.joinBody, join: config.border.joinJoin, left: config.border.joinLeft, right: config.border.joinRight, }, }); }; exports.drawBorderJoin = drawBorderJoin; const drawBorderBottom = (columnWidths, config) => { return drawBorder(columnWidths, { ...config, separator: { body: config.border.bottomBody, join: config.border.bottomJoin, left: config.border.bottomLeft, right: config.border.bottomRight, }, }); }; exports.drawBorderBottom = drawBorderBottom; const createTableBorderGetter = (columnWidths, config) => { return (index, size) => { if (!config.header) { if (index === 0) { return drawBorderTop(columnWidths, config); } if (index === size) { return drawBorderBottom(columnWidths, config); } return drawBorderJoin(columnWidths, config); } // Deal with the header if (index === 0) { return drawBorderTop(columnWidths, { ...config, border: { ...config.border, topJoin: config.border.topBody, }, }); } if (index === 1) { return drawBorderJoin(columnWidths, { ...config, border: { ...config.border, joinJoin: config.border.headerJoin, }, }); } if (index === size) { return drawBorderBottom(columnWidths, config); } return drawBorderJoin(columnWidths, config); }; }; exports.createTableBorderGetter = createTableBorderGetter;