@remotex-labs/xansi
Version:
A lightweight ANSI utility library for styling terminal output
122 lines (120 loc) • 3.4 kB
JavaScript
// src/providers/styles.provider.ts
var c = {
dim: [2, 22],
bold: [1, 22],
reset: [0, 0],
hidden: [8, 28],
inverse: [7, 27]
}, f = {
red: [31, 39],
gray: [90, 39],
blue: [34, 39],
cyan: [36, 39],
black: [30, 39],
white: [37, 39],
green: [32, 39],
yellow: [33, 39],
magenta: [35, 39],
redBright: [91, 39],
blueBright: [94, 39],
cyanBright: [96, 39],
whiteBright: [97, 39],
greenBright: [92, 39],
blackBright: [90, 39],
yellowBright: [93, 39],
magentaBright: [95, 39],
darkGray: ["38;5;238", 39],
lightGray: ["38;5;252", 39],
lightCyan: ["38;5;81", 39],
lightCoral: ["38;5;203", 39],
oliveGreen: ["38;5;149", 39],
deepOrange: ["38;5;166", 39],
brightPink: ["38;5;197", 39],
lightOrange: ["38;5;215", 39],
burntOrange: ["38;5;208", 39],
lightYellow: ["38;5;230", 39],
canaryYellow: ["38;5;227", 39],
lightGoldenrodYellow: ["38;5;221", 39]
}, d = {
bgRed: [41, 49],
bgBlue: [44, 49],
bgCyan: [46, 49],
bgGray: [100, 49],
bgBlack: [40, 49],
bgGreen: [42, 49],
bgWhite: [47, 49],
bgYellow: [43, 49],
bgMagenta: [45, 49],
bgRedBright: [101, 49],
bgBlueBright: [104, 49],
bgCyanBright: [106, 49],
bgBlackBright: [100, 49],
bgWhiteBright: [107, 49],
bgGreenBright: [102, 49],
bgYellowBright: [103, 49],
bgMagentaBright: [105, 49]
};
// src/components/xterm.component.ts
var a = "\x1B[", l = "m";
function m(t, r) {
if (globalThis.NO_COLOR) return r;
let i = t.length;
if (i === 0) return r;
if (i === 1)
return `${a}${t[0][0]}${l}${r}${a}${t[0][1]}${l}`;
let o = new Array(i), n = new Array(i);
for (let e = 0; e < i; e++)
n[e] = `${a}${t[e][0]}${l}`, o[i - e - 1] = `${a}${t[e][1]}${l}`;
return n.concat(r, o).join("");
}
function b(t, r, i, o) {
if (typeof r != "number" || typeof i != "number" || typeof o != "number")
throw new Error(`RGB values must be numbers, received: r=${typeof r}, g=${typeof i}, b=${typeof o}`);
let n = t === "fg" ? 38 : 48, e = t === "fg" ? 39 : 49;
return [`${n};2;${r};${i};${o}`, e];
}
function p(t) {
let r = t.replace(/^#/, "").toLowerCase();
if (!/^([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(r))
throw new Error(`Invalid hex color format: "${t}". Expected 3 or 6 hex digits.`);
if (r.length === 3) {
let e = parseInt(r[0] + r[0], 16), s = parseInt(r[1] + r[1], 16), y = parseInt(r[2] + r[2], 16);
return [e, s, y];
}
let i = parseInt(r.slice(0, 2), 16), o = parseInt(r.slice(2, 4), 16), n = parseInt(r.slice(4, 6), 16);
return [i, o, n];
}
function g(t = []) {
let r = (...n) => {
if (Array.isArray(n[0]) && "raw" in n[0]) {
let [e, ...s] = n, y = e.reduce(
(h, C, u) => h + C + (u < s.length ? String(s[u] ?? "") : ""),
""
);
return m(t, y);
}
return m(t, n.join(" "));
}, i = {
// RGB foreground color
rgb: (n, e, s) => g([...t, b("fg", n, e, s)]),
bgRgb: (n, e, s) => g([...t, b("bg", n, e, s)]),
hex: (n) => g([...t, b("fg", ...p(n))]),
bgHex: (n) => g([...t, b("bg", ...p(n))])
}, o = {
...c,
...f,
...d
};
return new Proxy(r, {
get(n, e) {
if (typeof e != "string")
throw new Error(`Invalid property: ${String(e)}`);
return e in o ? g([...t, o[e]]) : e in i ? i[e] : Reflect.get(n, e);
}
});
}
var $ = /* @__PURE__ */ g();
export {
$ as xterm
};
//# sourceMappingURL=xterm.component.js.map