@visulima/colorize
Version:
Terminal and Console string styling done right.
45 lines (43 loc) • 1.28 kB
JavaScript
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
const rgbToAnsi256 = /* @__PURE__ */ __name((r, g, b) => {
if (r === g && g === b) {
if (r < 8) {
return 16;
}
if (r > 248) {
return 231;
}
return Math.round((r - 8) / 247 * 24) + 232;
}
return 16 + // r / 255 * 5 => r / 51
36 * Math.round(r / 51) + 6 * Math.round(g / 51) + Math.round(b / 51);
}, "rgbToAnsi256");
const ansi256To16 = /* @__PURE__ */ __name((code) => {
let r;
let g;
let b;
if (code < 8) {
return 30 + code;
}
if (code < 16) {
return 90 + (code - 8);
}
if (code >= 232) {
r = g = b = ((code - 232) * 10 + 8) / 255;
} else {
code -= 16;
const remainder = code % 36;
r = Math.floor(code / 36) / 5;
g = Math.floor(remainder / 6) / 5;
b = remainder % 6 / 5;
}
const value = Math.max(r, g, b) * 2;
if (value === 0) {
return 30;
}
const code16 = 30 + (Math.round(b) << 2 | Math.round(g) << 1 | Math.round(r));
return value === 2 ? code16 + 60 : code16;
}, "ansi256To16");
const rgbToAnsi16 = /* @__PURE__ */ __name((r, g, b) => ansi256To16(rgbToAnsi256(r, g, b)), "rgbToAnsi16");
export { ansi256To16, rgbToAnsi16, rgbToAnsi256 };