3 Object.defineProperty(exports, "__esModule", {
7 var _lodash = require('lodash');
9 var _lodash2 = _interopRequireDefault(_lodash);
11 var _makeStreamConfig = require('./makeStreamConfig');
13 var _makeStreamConfig2 = _interopRequireDefault(_makeStreamConfig);
15 var _drawRow = require('./drawRow');
17 var _drawRow2 = _interopRequireDefault(_drawRow);
19 var _drawBorder = require('./drawBorder');
21 var _stringifyTableData = require('./stringifyTableData');
23 var _stringifyTableData2 = _interopRequireDefault(_stringifyTableData);
25 var _truncateTableData = require('./truncateTableData');
27 var _truncateTableData2 = _interopRequireDefault(_truncateTableData);
29 var _mapDataUsingRowHeightIndex = require('./mapDataUsingRowHeightIndex');
31 var _mapDataUsingRowHeightIndex2 = _interopRequireDefault(_mapDataUsingRowHeightIndex);
33 var _alignTableData = require('./alignTableData');
35 var _alignTableData2 = _interopRequireDefault(_alignTableData);
37 var _padTableData = require('./padTableData');
39 var _padTableData2 = _interopRequireDefault(_padTableData);
41 var _calculateRowHeightIndex = require('./calculateRowHeightIndex');
43 var _calculateRowHeightIndex2 = _interopRequireDefault(_calculateRowHeightIndex);
45 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
49 * @param {Object} config
52 const prepareData = (data, config) => {
55 rows = (0, _stringifyTableData2.default)(data);
57 rows = (0, _truncateTableData2.default)(data, config);
59 const rowHeightIndex = (0, _calculateRowHeightIndex2.default)(rows, config);
61 rows = (0, _mapDataUsingRowHeightIndex2.default)(rows, rowHeightIndex, config);
62 rows = (0, _alignTableData2.default)(rows, config);
63 rows = (0, _padTableData2.default)(rows, config);
69 * @param {string[]} row
70 * @param {number[]} columnWidthIndex
71 * @param {Object} config
72 * @returns {undefined}
74 const create = (row, columnWidthIndex, config) => {
75 const rows = prepareData([row], config);
77 const body = rows.map(literalRow => {
78 return (0, _drawRow2.default)(literalRow, config.border);
85 output += (0, _drawBorder.drawBorderTop)(columnWidthIndex, config.border);
87 output += (0, _drawBorder.drawBorderBottom)(columnWidthIndex, config.border);
89 output = _lodash2.default.trimEnd(output);
91 process.stdout.write(output);
95 * @param {string[]} row
96 * @param {number[]} columnWidthIndex
97 * @param {Object} config
98 * @returns {undefined}
100 const append = (row, columnWidthIndex, config) => {
101 const rows = prepareData([row], config);
103 const body = rows.map(literalRow => {
104 return (0, _drawRow2.default)(literalRow, config.border);
109 output = '\r\u001B[K';
111 output += (0, _drawBorder.drawBorderJoin)(columnWidthIndex, config.border);
113 output += (0, _drawBorder.drawBorderBottom)(columnWidthIndex, config.border);
115 output = _lodash2.default.trimEnd(output);
117 process.stdout.write(output);
121 * @param {Object} userConfig
125 exports.default = function () {
126 let userConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
128 const config = (0, _makeStreamConfig2.default)(userConfig);
130 const columnWidthIndex = _lodash2.default.mapValues(config.columns, column => {
131 return column.width + column.paddingLeft + column.paddingRight;
140 * @param {string[]} row
141 * @returns {undefined}
144 if (row.length !== config.columnCount) {
145 throw new Error('Row cell count does not match the config.columnCount.');
151 return create(row, columnWidthIndex, config);
153 return append(row, columnWidthIndex, config);