@log-rush/log-formatter
Version:
Parse/Format/Style colored logs
87 lines • 3.54 kB
JavaScript
var _a, _b, _c, _d, _e, _f, _g;
import { BlinkEffect, ColorEffect, ColorModeEffect, ConcealedEffect, CrossedOutEffect, ItalicEffect, NegativeEffect, TextWeightEffect, UnderlineEffect, EffectKey, } from '../parsing/effects';
import { EffectsMap } from '../parsing/index';
import { ColorMode8Colors } from '../colors/colorDefinitions8';
import { ColorMode256Colors } from '../colors';
/**
* @internal
*/
var classMap = {
foreground: {},
background: {},
backgroundMode: {},
foregroundMode: {},
blink: (_a = {},
_a[BlinkEffect[EffectKey.BlinkSlow]] = 'l-bs',
_a[BlinkEffect[EffectKey.BlinkRapid]] = 'l-br',
_a),
concealed: (_b = {},
_b[ConcealedEffect[EffectKey.ConcealedCharacters]] = 'l-cc',
_b),
crossedOut: (_c = {},
_c[CrossedOutEffect[EffectKey.CrossedOut]] = 'l-cr',
_c),
inverted: (_d = {},
_d[NegativeEffect[EffectKey.NegativeImage]] = 'l-n',
_d),
italic: (_e = {},
_e[ItalicEffect[EffectKey.Italic]] = 'l-i',
_e),
underline: (_f = {},
_f[UnderlineEffect[EffectKey.DoublyUnderlined]] = 'l-du',
_f[UnderlineEffect[EffectKey.Underline]] = 'l-u',
_f),
weight: (_g = {},
_g[TextWeightEffect[EffectKey.Bold]] = 'l-b',
_g[TextWeightEffect[EffectKey.Faint]] = 'l-f',
_g),
};
var HTMLNodeBuilder = /** @class */ (function () {
function HTMLNodeBuilder() {
}
HTMLNodeBuilder.prototype.getColor = function (effect, type) {
var _a, _b;
var color = effect[type];
if (color === ColorEffect.Default)
return '';
var colorMode = effect["".concat(type, "Mode")];
if (!color || !colorMode)
return '';
if (colorMode === ColorModeEffect[EffectKey.ColorMode8])
// @ts-ignore
return (_a = ColorMode8Colors[color]) !== null && _a !== void 0 ? _a : '';
else if (colorMode === ColorModeEffect[EffectKey.ColorMode256])
// @ts-ignore
return (_b = ColorMode256Colors[color]) !== null && _b !== void 0 ? _b : '';
else
return color;
};
HTMLNodeBuilder.prototype.build = function (root) {
var wrapper = document.createElement('p');
wrapper.classList.add('log');
var currentNode = root;
while (currentNode !== undefined) {
var node = document.createElement('span');
node.innerText = currentNode.content;
for (var _i = 0, _a = Object.entries(currentNode.effect); _i < _a.length; _i++) {
var _b = _a[_i], key = _b[0], value = _b[1];
if (EffectsMap[key].Default !== value &&
value !== undefined &&
classMap[key][value]) {
node.classList.add(classMap[key][value]);
}
}
var fgColor = this.getColor(currentNode.effect, 'foreground');
var bgColor = this.getColor(currentNode.effect, 'background');
node.setAttribute('style', "".concat(fgColor !== '' ? "--fg: ".concat(fgColor, ";") : '', " ").concat(bgColor !== '' ? "--bg: ".concat(bgColor, ";") : ''));
wrapper.appendChild(node);
currentNode = currentNode.nextNode;
}
var exportWrapper = document.createElement('div');
exportWrapper.appendChild(wrapper);
return exportWrapper.innerHTML;
};
return HTMLNodeBuilder;
}());
export { HTMLNodeBuilder };
//# sourceMappingURL=html.js.map