PageSourceSearch

https://guardian-portal-production.herokuapp.com/assets/rgbcolor-5…91a2ed60e082e356c993c5242c9aef0d474cd3fc.js

js guardian-portal-production.herokuapp.com collected 2026-10-03 14:49:09 UTC 9,498 bytes, 302 lines download raw bytes

vendor: 9,498 bytes, lines 1-302
1/*
2	Based on rgbcolor.js by Stoyan Stefanov <[email protected]>
3	http://www.phpied.com/rgb-color-parser-in-javascript/
4*/
5
6module.exports = function(color_string) {
7    this.ok = false;
8    this.alpha = 1.0;
9
10    // strip any leading #
11    if (color_string.charAt(0) == '#') { // remove # if any
12        color_string = color_string.substr(1,6);
13    }
14
15    color_string = color_string.replace(/ /g,'');
16    color_string = color_string.toLowerCase();
17
18    // before getting into regexps, try simple matches
19    // and overwrite the input
20    var simple_colors = {
21        aliceblue: 'f0f8ff',
22        antiquewhite: 'faebd7',
23        aqua: '00ffff',
24        aquamarine: '7fffd4',
25        azure: 'f0ffff',
26        beige: 'f5f5dc',
27        bisque: 'ffe4c4',
28        black: '000000',
29        blanchedalmond: 'ffebcd',
30        blue: '0000ff',
31        blueviolet: '8a2be2',
32        brown: 'a52a2a',
33        burlywood: 'deb887',
34        cadetblue: '5f9ea0',
35        chartreuse: '7fff00',
36        chocolate: 'd2691e',
37        coral: 'ff7f50',
38        cornflowerblue: '6495ed',
39        cornsilk: 'fff8dc',
40        crimson: 'dc143c',
41        cyan: '00ffff',
42        darkblue: '00008b',
43        darkcyan: '008b8b',
44        darkgoldenrod: 'b8860b',
45        darkgray: 'a9a9a9',
46        darkgreen: '006400',
47        darkkhaki: 'bdb76b',
48        darkmagenta: '8b008b',
49        darkolivegreen: '556b2f',
50        darkorange: 'ff8c00',
51        darkorchid: '9932cc',
52        darkred: '8b0000',
53        darksalmon: 'e9967a',
54        darkseagreen: '8fbc8f',
55        darkslateblue: '483d8b',
56        darkslategray: '2f4f4f',
57        darkturquoise: '00ced1',
58        darkviolet: '9400d3',
59        deeppink: 'ff1493',
60        deepskyblue: '00bfff',
61        dimgray: '696969',
62        dodgerblue: '1e90ff',
63        feldspar: 'd19275',
64        firebrick: 'b22222',
65        floralwhite: 'fffaf0',
66        forestgreen: '228b22',
67        fuchsia: 'ff00ff',
68        gainsboro: 'dcdcdc',
69        ghostwhite: 'f8f8ff',
70        gold: 'ffd700',
71        goldenrod: 'daa520',
72        gray: '808080',
73        green: '008000',
74        greenyellow: 'adff2f',
75        honeydew: 'f0fff0',
76        hotpink: 'ff69b4',
77        indianred : 'cd5c5c',
78        indigo : '4b0082',
79        ivory: 'fffff0',
80        khaki: 'f0e68c',
81        lavender: 'e6e6fa',
82        lavenderblush: 'fff0f5',
83        lawngreen: '7cfc00',
84        lemonchiffon: 'fffacd',
85        lightblue: 'add8e6',
86        lightcoral: 'f08080',
87        lightcyan: 'e0ffff',
88        lightgoldenrodyellow: 'fafad2',
89        lightgrey: 'd3d3d3',
90        lightgreen: '90ee90',
91        lightpink: 'ffb6c1',
92        lightsalmon: 'ffa07a',
93        lightseagreen: '20b2aa',
94        lightskyblue: '87cefa',
95        lightslateblue: '8470ff',
96        lightslategray: '778899',
97        lightsteelblue: 'b0c4de',
98        lightyellow: 'ffffe0',
99        lime: '00ff00',
100        limegreen: '32cd32',
101        linen: 'faf0e6',
102        magenta: 'ff00ff',
103        maroon: '800000',
104        mediumaquamarine: '66cdaa',
105        mediumblue: '0000cd',
106        mediumorchid: 'ba55d3',
107        mediumpurple: '9370d8',
108        mediumseagreen: '3cb371',
109        mediumslateblue: '7b68ee',
110        mediumspringgreen: '00fa9a',
111        mediumturquoise: '48d1cc',
112        mediumvioletred: 'c71585',
113        midnightblue: '191970',
114        mintcream: 'f5fffa',
115        mistyrose: 'ffe4e1',
116        moccasin: 'ffe4b5',
117        navajowhite: 'ffdead',
118        navy: '000080',
119        oldlace: 'fdf5e6',
120        olive: '808000',
121        olivedrab: '6b8e23',
122        orange: 'ffa500',
123        orangered: 'ff4500',
124        orchid: 'da70d6',
125        palegoldenrod: 'eee8aa',
126        palegreen: '98fb98',
127        paleturquoise: 'afeeee',
128        palevioletred: 'd87093',
129        papayawhip: 'ffefd5',
130        peachpuff: 'ffdab9',
131        peru: 'cd853f',
132        pink: 'ffc0cb',
133        plum: 'dda0dd',
134        powderblue: 'b0e0e6',
135        purple: '800080',
136        rebeccapurple: '663399',
137        red: 'ff0000',
138        rosybrown: 'bc8f8f',
139        royalblue: '4169e1',
140        saddlebrown: '8b4513',
141        salmon: 'fa8072',
142        sandybrown: 'f4a460',
143        seagreen: '2e8b57',
144        seashell: 'fff5ee',
145        sienna: 'a0522d',
146        silver: 'c0c0c0',
147        skyblue: '87ceeb',
148        slateblue: '6a5acd',
149        slategray: '708090',
150        snow: 'fffafa',
151        springgreen: '00ff7f',
152        steelblue: '4682b4',
153        tan: 'd2b48c',
154        teal: '008080',
155        thistle: 'd8bfd8',
156        tomato: 'ff6347',
157        turquoise: '40e0d0',
158        violet: 'ee82ee',
159        violetred: 'd02090',
160        wheat: 'f5deb3',
161        white: 'ffffff',
162        whitesmoke: 'f5f5f5',
163        yellow: 'ffff00',
164        yellowgreen: '9acd32'
165    };
166    color_string = simple_colors[color_string] || color_string;
167    // emd of simple type-in colors
168
169    // array of color definition objects
170    var color_defs = [
171        {
172            re: /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*((?:\d?\.)?\d)\)$/,
173            example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],
174            process: function (bits){
175                return [
176                    parseInt(bits[1]),
177                    parseInt(bits[2]),
178                    parseInt(bits[3]),
179                    parseFloat(bits[4])
180                ];
181            }
182        },
183        {
184            re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
185            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
186            process: function (bits){
187                return [
188                    parseInt(bits[1]),
189                    parseInt(bits[2]),
190                    parseInt(bits[3])
191                ];
192            }
193        },
194        {
195            re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
196            example: ['#00ff00', '336699'],
197            process: function (bits){
198                return [
199                    parseInt(bits[1], 16),
200                    parseInt(bits[2], 16),
201                    parseInt(bits[3], 16)
202                ];
203            }
204        },
205        {
206            re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
207            example: ['#fb0', 'f0f'],
208            process: function (bits){
209                return [
210                    parseInt(bits[1] + bits[1], 16),
211                    parseInt(bits[2] + bits[2], 16),
212                    parseInt(bits[3] + bits[3], 16)
213                ];
214            }
215        }
216    ];
217
218    // search through the definitions to find a match
219    for (var i = 0; i < color_defs.length; i++) {
220        var re = color_defs[i].re;
221        var processor = color_defs[i].process;
222        var bits = re.exec(color_string);
223        if (bits) {
224            var channels = processor(bits);
225            this.r = channels[0];
226            this.g = channels[1];
227            this.b = channels[2];
228            if (channels.length > 3) {
229                this.alpha = channels[3];
230            }
231            this.ok = true;
232        }
233
234    }
235
236    // validate/cleanup values
237    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
238    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
239    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
240    this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);
241
242    // some getters
243    this.toRGB = function () {
244        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
245    }
246    this.toRGBA = function () {
247        return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';
248    }
249    this.toHex = function () {
250        var r = this.r.toString(16);
251        var g = this.g.toString(16);
252        var b = this.b.toString(16);
253        if (r.length == 1) r = '0' + r;
254        if (g.length == 1) g = '0' + g;
255        if (b.length == 1) b = '0' + b;
256        return '#' + r + g + b;
257    }
258
259    // help
260    this.getHelpXML = function () {
261
262        var examples = new Array();
263        // add regexps
264        for (var i = 0; i < color_defs.length; i++) {
265            var example = color_defs[i].example;
266            for (var j = 0; j < example.length; j++) {
267                examples[examples.length] = example[j];
268            }
269        }
270        // add type-in colors
271        for (var sc in simple_colors) {
272            examples[examples.length] = sc;
273        }
274
275        var xml = document.createElement('ul');
276        xml.setAttribute('id', 'rgbcolor-examples');
277        for (var i = 0; i < examples.length; i++) {
278            try {
279                var list_item = document.createElement('li');
280                var list_color = new RGBColor(examples[i]);
281                var example_div = document.createElement('div');
282                example_div.style.cssText =
283                        'margin: 3px; '
284                        + 'border: 1px solid black; '
285                        + 'background:' + list_color.toHex() + '; '
286                        + 'color:' + list_color.toHex()
287                ;
288                example_div.appendChild(document.createTextNode('test'));
289                var list_item_value = document.createTextNode(
290                    ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()
291                );
292                list_item.appendChild(example_div);
293                list_item.appendChild(list_item_value);
294                xml.appendChild(list_item);
295
296            } catch(e){}
297        }
298        return xml;
299
300    }
301
302};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.