UNPKG

console-toolkit

Version:

Toolkit to produce a fancy console output (boxes, tables, charts, colors).

28 lines (23 loc) 1 kB
import style from '../../style.js'; import Box from '../../box.js'; import {optimize} from '../../ansi/sgr-state.js'; import {drawRealHeightBlock} from '../../draw-block-frac.js'; import drawGroupedChart from './draw-grouped.js'; // data = [datum] // datum = {value, colorState, symbol, state} export const drawColumn = (data, width, maxValue, options = {}) => { const {reverse, rectSize = 1, initState = {}} = options, blocks = data.map(datum => { if (!datum) return Box.makeBlank(rectSize, 0); const box = drawRealHeightBlock(rectSize, (datum.value / maxValue) * width), boxStyle = style.addState(initState).addState(datum.colorState).addState(datum.state); return new Box( box.box.map(line => boxStyle.text(line)), true ); }), result = (reverse ? blocks : blocks.reverse()).map(block => block.box).flat(1); return result.map(line => optimize(line)); }; export const drawChart = drawGroupedChart(drawColumn); export default drawChart;