source: frontend/node_modules/kleur/index.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 13 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.5 KB
Line 
1'use strict';
2
3const { FORCE_COLOR, NODE_DISABLE_COLORS, TERM } = process.env;
4
5const $ = {
6 enabled: !NODE_DISABLE_COLORS && TERM !== 'dumb' && FORCE_COLOR !== '0',
7
8 // modifiers
9 reset: init(0, 0),
10 bold: init(1, 22),
11 dim: init(2, 22),
12 italic: init(3, 23),
13 underline: init(4, 24),
14 inverse: init(7, 27),
15 hidden: init(8, 28),
16 strikethrough: init(9, 29),
17
18 // colors
19 black: init(30, 39),
20 red: init(31, 39),
21 green: init(32, 39),
22 yellow: init(33, 39),
23 blue: init(34, 39),
24 magenta: init(35, 39),
25 cyan: init(36, 39),
26 white: init(37, 39),
27 gray: init(90, 39),
28 grey: init(90, 39),
29
30 // background colors
31 bgBlack: init(40, 49),
32 bgRed: init(41, 49),
33 bgGreen: init(42, 49),
34 bgYellow: init(43, 49),
35 bgBlue: init(44, 49),
36 bgMagenta: init(45, 49),
37 bgCyan: init(46, 49),
38 bgWhite: init(47, 49)
39};
40
41function run(arr, str) {
42 let i=0, tmp, beg='', end='';
43 for (; i < arr.length; i++) {
44 tmp = arr[i];
45 beg += tmp.open;
46 end += tmp.close;
47 if (str.includes(tmp.close)) {
48 str = str.replace(tmp.rgx, tmp.close + tmp.open);
49 }
50 }
51 return beg + str + end;
52}
53
54function chain(has, keys) {
55 let ctx = { has, keys };
56
57 ctx.reset = $.reset.bind(ctx);
58 ctx.bold = $.bold.bind(ctx);
59 ctx.dim = $.dim.bind(ctx);
60 ctx.italic = $.italic.bind(ctx);
61 ctx.underline = $.underline.bind(ctx);
62 ctx.inverse = $.inverse.bind(ctx);
63 ctx.hidden = $.hidden.bind(ctx);
64 ctx.strikethrough = $.strikethrough.bind(ctx);
65
66 ctx.black = $.black.bind(ctx);
67 ctx.red = $.red.bind(ctx);
68 ctx.green = $.green.bind(ctx);
69 ctx.yellow = $.yellow.bind(ctx);
70 ctx.blue = $.blue.bind(ctx);
71 ctx.magenta = $.magenta.bind(ctx);
72 ctx.cyan = $.cyan.bind(ctx);
73 ctx.white = $.white.bind(ctx);
74 ctx.gray = $.gray.bind(ctx);
75 ctx.grey = $.grey.bind(ctx);
76
77 ctx.bgBlack = $.bgBlack.bind(ctx);
78 ctx.bgRed = $.bgRed.bind(ctx);
79 ctx.bgGreen = $.bgGreen.bind(ctx);
80 ctx.bgYellow = $.bgYellow.bind(ctx);
81 ctx.bgBlue = $.bgBlue.bind(ctx);
82 ctx.bgMagenta = $.bgMagenta.bind(ctx);
83 ctx.bgCyan = $.bgCyan.bind(ctx);
84 ctx.bgWhite = $.bgWhite.bind(ctx);
85
86 return ctx;
87}
88
89function init(open, close) {
90 let blk = {
91 open: `\x1b[${open}m`,
92 close: `\x1b[${close}m`,
93 rgx: new RegExp(`\\x1b\\[${close}m`, 'g')
94 };
95 return function (txt) {
96 if (this !== void 0 && this.has !== void 0) {
97 this.has.includes(open) || (this.has.push(open),this.keys.push(blk));
98 return txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';
99 }
100 return txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';
101 };
102}
103
104module.exports = $;
Note: See TracBrowser for help on using the repository browser.