@teaui/core
Version:
A high-level terminal UI library for Node
66 lines • 1.81 kB
JavaScript
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