A viewport into a virtual grid of text cells
MIT License
A viewport into a virtual grid of text cells.
Renderes cells in a grid. Each cell contains text that is wrapped and truncated to fit inside the cell. Full support for ANSI colors. Useful as a layout manager for terminal apps.
npm install virtual-grid --save
const Grid = require('virtual-grid')
const grid = new Grid({
height: 10,
width: 20,
rows: [
[{height: 5, text: 'This is the top cell spanning the entire width'}],
[{width: '50%', text: 'Left column'}, {width: '50%', text: 'Right column'}]
]
})
// Update the text in cell C
grid.update(1, 1, 'This text have been overwritten')
console.log(grid.toString())
Output:
This is the top cell
spanning the entire
width
Left This text
column have been
overwritt…
grid = new Grid(options)
Provide an options
object as the first argument. The following options
are supported:
width
- The total width of the viewport (defaults toprocess.stdout.columns
)height
- The total height of the viewport (defaults toprocess.stdout.rows
)rows
- An array of rows. Each row is an array of cell
objectsA cell
object supports the following properties:
width
- The width of the cell. If the value is the string auto
it25%
), it's treated as aauto
)height
- The height of the cell. If the value is the string auto
25%
), it's treated as aauto
)text
- Default text content of the cell (defaults to an emptywrap
- Set to false
to disable automatic line wrapping (defaultstrue
)padding
- An optional array of cell padding for the top, right,[0, 2, 0, 2]
You can use strings instead of objects for cells. This is equivalent to
{text: cell}
grid = new Grid(rows)
An alias for:
new Grid({rows: rows})
update
Emitted every time a cell in the grid is updated.
grid.update(row, cell, text)
Update the text content of a cell.
Arguments:
row
- The row indexcell
- The cell index inside the rowtext
- The new text content of the cellgrid.resize(width, height)
Resize the viewport to new width
and height
.
cell = grid.cellAt(row, index)
Return the cell at the gien row
and index`.
str = grid.toString()
Render all content in all cells in the grid and return the result as one big string.
MIT