UNPKG

@teaui/core

Version:

A high-level terminal UI library for Node

66 lines 1.81 kB
import { parseStyleDescriptor, BG_DRAW as _BG_DRAW } from '@teaui/term'; export const RESET = '\x1b[0m'; // unicode.charWidth considers this "drawable" (width: 1). Buffer translates it // to a space when it flushes to a terminal. It's used by Viewport.paint to // put foreground/background colors into a region – subsequent draws that do // _not_ specify foreground/background (value: undefined) will "inherit" this // "paint" color. export const BG_DRAW = _BG_DRAW; export function styled(input, attr) { const open = parseStyleDescriptor(attr); const close = parseStyleDescriptor('!' + attr); return open + input + close; } export function style(attr) { if (attr.startsWith('\x1b[')) { return attr; } return parseStyleDescriptor(attr); } export function ansi(code, input) { const opener = '\x1b['.concat(String(code), 'm'); return opener.concat(input.replace(RESET, opener), RESET); } export function bold(input) { return ansi(1, input); } export function dim(input) { return ansi(2, input); } export function italic(input) { return ansi(3, input); } export function underline(input) { return ansi(4, input); } export function invert(input) { return ansi(7, input); } export function hide(input) { return ansi(8, input); } export function strikeout(input) { return ansi(9, input); } export function red(input) { return ansi(31, input); } export function green(input) { return ansi(32, input); } export function yellow(input) { return ansi(33, input); } export function blue(input) { return ansi(34, input); } export function magenta(input) { return ansi(35, input); } export function cyan(input) { return ansi(36, input); } export function gray(input) { return ansi(90, input); } //# sourceMappingURL=ansi.js.map