css-color-parser-h 1.0.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1674 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if(typeof define === 'function' && define.amd)
5
+ define([], factory);
6
+ else if(typeof exports === 'object')
7
+ exports["Parser"] = factory();
8
+ else
9
+ root["Parser"] = factory();
10
+ })(this, function() {
11
+ return /******/ (function() { // webpackBootstrap
12
+ /******/ var __webpack_modules__ = ({
13
+
14
+ /***/ 208:
15
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
16
+
17
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
18
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
20
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
21
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
22
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
23
+ /* MIT license */
24
+ /* eslint-disable no-mixed-operators */
25
+ var cssKeywords = __webpack_require__(101);
26
+
27
+ // NOTE: conversions should only return primitive values (i.e. arrays, or
28
+ // values that give correct `typeof` results).
29
+ // do not use box values types (i.e. Number(), String(), etc.)
30
+
31
+ var reverseKeywords = {};
32
+ for (var _i = 0, _Object$keys = Object.keys(cssKeywords); _i < _Object$keys.length; _i++) {
33
+ var key = _Object$keys[_i];
34
+ reverseKeywords[cssKeywords[key]] = key;
35
+ }
36
+ var convert = {
37
+ rgb: {
38
+ channels: 3,
39
+ labels: 'rgb'
40
+ },
41
+ hsl: {
42
+ channels: 3,
43
+ labels: 'hsl'
44
+ },
45
+ hsv: {
46
+ channels: 3,
47
+ labels: 'hsv'
48
+ },
49
+ hwb: {
50
+ channels: 3,
51
+ labels: 'hwb'
52
+ },
53
+ cmyk: {
54
+ channels: 4,
55
+ labels: 'cmyk'
56
+ },
57
+ xyz: {
58
+ channels: 3,
59
+ labels: 'xyz'
60
+ },
61
+ lab: {
62
+ channels: 3,
63
+ labels: 'lab'
64
+ },
65
+ lch: {
66
+ channels: 3,
67
+ labels: 'lch'
68
+ },
69
+ hex: {
70
+ channels: 1,
71
+ labels: ['hex']
72
+ },
73
+ keyword: {
74
+ channels: 1,
75
+ labels: ['keyword']
76
+ },
77
+ ansi16: {
78
+ channels: 1,
79
+ labels: ['ansi16']
80
+ },
81
+ ansi256: {
82
+ channels: 1,
83
+ labels: ['ansi256']
84
+ },
85
+ hcg: {
86
+ channels: 3,
87
+ labels: ['h', 'c', 'g']
88
+ },
89
+ apple: {
90
+ channels: 3,
91
+ labels: ['r16', 'g16', 'b16']
92
+ },
93
+ gray: {
94
+ channels: 1,
95
+ labels: ['gray']
96
+ }
97
+ };
98
+ module.exports = convert;
99
+
100
+ // Hide .channels and .labels properties
101
+ for (var _i2 = 0, _Object$keys2 = Object.keys(convert); _i2 < _Object$keys2.length; _i2++) {
102
+ var model = _Object$keys2[_i2];
103
+ if (!('channels' in convert[model])) {
104
+ throw new Error('missing channels property: ' + model);
105
+ }
106
+ if (!('labels' in convert[model])) {
107
+ throw new Error('missing channel labels property: ' + model);
108
+ }
109
+ if (convert[model].labels.length !== convert[model].channels) {
110
+ throw new Error('channel and label counts mismatch: ' + model);
111
+ }
112
+ var _convert$model = convert[model],
113
+ channels = _convert$model.channels,
114
+ labels = _convert$model.labels;
115
+ delete convert[model].channels;
116
+ delete convert[model].labels;
117
+ Object.defineProperty(convert[model], 'channels', {
118
+ value: channels
119
+ });
120
+ Object.defineProperty(convert[model], 'labels', {
121
+ value: labels
122
+ });
123
+ }
124
+ convert.rgb.hsl = function (rgb) {
125
+ var r = rgb[0] / 255;
126
+ var g = rgb[1] / 255;
127
+ var b = rgb[2] / 255;
128
+ var min = Math.min(r, g, b);
129
+ var max = Math.max(r, g, b);
130
+ var delta = max - min;
131
+ var h;
132
+ var s;
133
+ if (max === min) {
134
+ h = 0;
135
+ } else if (r === max) {
136
+ h = (g - b) / delta;
137
+ } else if (g === max) {
138
+ h = 2 + (b - r) / delta;
139
+ } else if (b === max) {
140
+ h = 4 + (r - g) / delta;
141
+ }
142
+ h = Math.min(h * 60, 360);
143
+ if (h < 0) {
144
+ h += 360;
145
+ }
146
+ var l = (min + max) / 2;
147
+ if (max === min) {
148
+ s = 0;
149
+ } else if (l <= 0.5) {
150
+ s = delta / (max + min);
151
+ } else {
152
+ s = delta / (2 - max - min);
153
+ }
154
+ return [h, s * 100, l * 100];
155
+ };
156
+ convert.rgb.hsv = function (rgb) {
157
+ var rdif;
158
+ var gdif;
159
+ var bdif;
160
+ var h;
161
+ var s;
162
+ var r = rgb[0] / 255;
163
+ var g = rgb[1] / 255;
164
+ var b = rgb[2] / 255;
165
+ var v = Math.max(r, g, b);
166
+ var diff = v - Math.min(r, g, b);
167
+ var diffc = function diffc(c) {
168
+ return (v - c) / 6 / diff + 1 / 2;
169
+ };
170
+ if (diff === 0) {
171
+ h = 0;
172
+ s = 0;
173
+ } else {
174
+ s = diff / v;
175
+ rdif = diffc(r);
176
+ gdif = diffc(g);
177
+ bdif = diffc(b);
178
+ if (r === v) {
179
+ h = bdif - gdif;
180
+ } else if (g === v) {
181
+ h = 1 / 3 + rdif - bdif;
182
+ } else if (b === v) {
183
+ h = 2 / 3 + gdif - rdif;
184
+ }
185
+ if (h < 0) {
186
+ h += 1;
187
+ } else if (h > 1) {
188
+ h -= 1;
189
+ }
190
+ }
191
+ return [h * 360, s * 100, v * 100];
192
+ };
193
+ convert.rgb.hwb = function (rgb) {
194
+ var r = rgb[0];
195
+ var g = rgb[1];
196
+ var b = rgb[2];
197
+ var h = convert.rgb.hsl(rgb)[0];
198
+ var w = 1 / 255 * Math.min(r, Math.min(g, b));
199
+ b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
200
+ return [h, w * 100, b * 100];
201
+ };
202
+ convert.rgb.cmyk = function (rgb) {
203
+ var r = rgb[0] / 255;
204
+ var g = rgb[1] / 255;
205
+ var b = rgb[2] / 255;
206
+ var k = Math.min(1 - r, 1 - g, 1 - b);
207
+ var c = (1 - r - k) / (1 - k) || 0;
208
+ var m = (1 - g - k) / (1 - k) || 0;
209
+ var y = (1 - b - k) / (1 - k) || 0;
210
+ return [c * 100, m * 100, y * 100, k * 100];
211
+ };
212
+ function comparativeDistance(x, y) {
213
+ /*
214
+ See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
215
+ */
216
+ return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2);
217
+ }
218
+ convert.rgb.keyword = function (rgb) {
219
+ var reversed = reverseKeywords[rgb];
220
+ if (reversed) {
221
+ return reversed;
222
+ }
223
+ var currentClosestDistance = Infinity;
224
+ var currentClosestKeyword;
225
+ for (var _i3 = 0, _Object$keys3 = Object.keys(cssKeywords); _i3 < _Object$keys3.length; _i3++) {
226
+ var keyword = _Object$keys3[_i3];
227
+ var value = cssKeywords[keyword];
228
+
229
+ // Compute comparative distance
230
+ var distance = comparativeDistance(rgb, value);
231
+
232
+ // Check if its less, if so set as closest
233
+ if (distance < currentClosestDistance) {
234
+ currentClosestDistance = distance;
235
+ currentClosestKeyword = keyword;
236
+ }
237
+ }
238
+ return currentClosestKeyword;
239
+ };
240
+ convert.keyword.rgb = function (keyword) {
241
+ return cssKeywords[keyword];
242
+ };
243
+ convert.rgb.xyz = function (rgb) {
244
+ var r = rgb[0] / 255;
245
+ var g = rgb[1] / 255;
246
+ var b = rgb[2] / 255;
247
+
248
+ // Assume sRGB
249
+ r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;
250
+ g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;
251
+ b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;
252
+ var x = r * 0.4124 + g * 0.3576 + b * 0.1805;
253
+ var y = r * 0.2126 + g * 0.7152 + b * 0.0722;
254
+ var z = r * 0.0193 + g * 0.1192 + b * 0.9505;
255
+ return [x * 100, y * 100, z * 100];
256
+ };
257
+ convert.rgb.lab = function (rgb) {
258
+ var xyz = convert.rgb.xyz(rgb);
259
+ var x = xyz[0];
260
+ var y = xyz[1];
261
+ var z = xyz[2];
262
+ x /= 95.047;
263
+ y /= 100;
264
+ z /= 108.883;
265
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;
266
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;
267
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;
268
+ var l = 116 * y - 16;
269
+ var a = 500 * (x - y);
270
+ var b = 200 * (y - z);
271
+ return [l, a, b];
272
+ };
273
+ convert.hsl.rgb = function (hsl) {
274
+ var h = hsl[0] / 360;
275
+ var s = hsl[1] / 100;
276
+ var l = hsl[2] / 100;
277
+ var t2;
278
+ var t3;
279
+ var val;
280
+ if (s === 0) {
281
+ val = l * 255;
282
+ return [val, val, val];
283
+ }
284
+ if (l < 0.5) {
285
+ t2 = l * (1 + s);
286
+ } else {
287
+ t2 = l + s - l * s;
288
+ }
289
+ var t1 = 2 * l - t2;
290
+ var rgb = [0, 0, 0];
291
+ for (var i = 0; i < 3; i++) {
292
+ t3 = h + 1 / 3 * -(i - 1);
293
+ if (t3 < 0) {
294
+ t3++;
295
+ }
296
+ if (t3 > 1) {
297
+ t3--;
298
+ }
299
+ if (6 * t3 < 1) {
300
+ val = t1 + (t2 - t1) * 6 * t3;
301
+ } else if (2 * t3 < 1) {
302
+ val = t2;
303
+ } else if (3 * t3 < 2) {
304
+ val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
305
+ } else {
306
+ val = t1;
307
+ }
308
+ rgb[i] = val * 255;
309
+ }
310
+ return rgb;
311
+ };
312
+ convert.hsl.hsv = function (hsl) {
313
+ var h = hsl[0];
314
+ var s = hsl[1] / 100;
315
+ var l = hsl[2] / 100;
316
+ var smin = s;
317
+ var lmin = Math.max(l, 0.01);
318
+ l *= 2;
319
+ s *= l <= 1 ? l : 2 - l;
320
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
321
+ var v = (l + s) / 2;
322
+ var sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);
323
+ return [h, sv * 100, v * 100];
324
+ };
325
+ convert.hsv.rgb = function (hsv) {
326
+ var h = hsv[0] / 60;
327
+ var s = hsv[1] / 100;
328
+ var v = hsv[2] / 100;
329
+ var hi = Math.floor(h) % 6;
330
+ var f = h - Math.floor(h);
331
+ var p = 255 * v * (1 - s);
332
+ var q = 255 * v * (1 - s * f);
333
+ var t = 255 * v * (1 - s * (1 - f));
334
+ v *= 255;
335
+ switch (hi) {
336
+ case 0:
337
+ return [v, t, p];
338
+ case 1:
339
+ return [q, v, p];
340
+ case 2:
341
+ return [p, v, t];
342
+ case 3:
343
+ return [p, q, v];
344
+ case 4:
345
+ return [t, p, v];
346
+ case 5:
347
+ return [v, p, q];
348
+ }
349
+ };
350
+ convert.hsv.hsl = function (hsv) {
351
+ var h = hsv[0];
352
+ var s = hsv[1] / 100;
353
+ var v = hsv[2] / 100;
354
+ var vmin = Math.max(v, 0.01);
355
+ var sl;
356
+ var l;
357
+ l = (2 - s) * v;
358
+ var lmin = (2 - s) * vmin;
359
+ sl = s * vmin;
360
+ sl /= lmin <= 1 ? lmin : 2 - lmin;
361
+ sl = sl || 0;
362
+ l /= 2;
363
+ return [h, sl * 100, l * 100];
364
+ };
365
+
366
+ // http://dev.w3.org/csswg/css-color/#hwb-to-rgb
367
+ convert.hwb.rgb = function (hwb) {
368
+ var h = hwb[0] / 360;
369
+ var wh = hwb[1] / 100;
370
+ var bl = hwb[2] / 100;
371
+ var ratio = wh + bl;
372
+ var f;
373
+
374
+ // Wh + bl cant be > 1
375
+ if (ratio > 1) {
376
+ wh /= ratio;
377
+ bl /= ratio;
378
+ }
379
+ var i = Math.floor(6 * h);
380
+ var v = 1 - bl;
381
+ f = 6 * h - i;
382
+ if ((i & 0x01) !== 0) {
383
+ f = 1 - f;
384
+ }
385
+ var n = wh + f * (v - wh); // Linear interpolation
386
+
387
+ var r;
388
+ var g;
389
+ var b;
390
+ /* eslint-disable max-statements-per-line,no-multi-spaces */
391
+ switch (i) {
392
+ default:
393
+ case 6:
394
+ case 0:
395
+ r = v;
396
+ g = n;
397
+ b = wh;
398
+ break;
399
+ case 1:
400
+ r = n;
401
+ g = v;
402
+ b = wh;
403
+ break;
404
+ case 2:
405
+ r = wh;
406
+ g = v;
407
+ b = n;
408
+ break;
409
+ case 3:
410
+ r = wh;
411
+ g = n;
412
+ b = v;
413
+ break;
414
+ case 4:
415
+ r = n;
416
+ g = wh;
417
+ b = v;
418
+ break;
419
+ case 5:
420
+ r = v;
421
+ g = wh;
422
+ b = n;
423
+ break;
424
+ }
425
+ /* eslint-enable max-statements-per-line,no-multi-spaces */
426
+
427
+ return [r * 255, g * 255, b * 255];
428
+ };
429
+ convert.cmyk.rgb = function (cmyk) {
430
+ var c = cmyk[0] / 100;
431
+ var m = cmyk[1] / 100;
432
+ var y = cmyk[2] / 100;
433
+ var k = cmyk[3] / 100;
434
+ var r = 1 - Math.min(1, c * (1 - k) + k);
435
+ var g = 1 - Math.min(1, m * (1 - k) + k);
436
+ var b = 1 - Math.min(1, y * (1 - k) + k);
437
+ return [r * 255, g * 255, b * 255];
438
+ };
439
+ convert.xyz.rgb = function (xyz) {
440
+ var x = xyz[0] / 100;
441
+ var y = xyz[1] / 100;
442
+ var z = xyz[2] / 100;
443
+ var r;
444
+ var g;
445
+ var b;
446
+ r = x * 3.2406 + y * -1.5372 + z * -0.4986;
447
+ g = x * -0.9689 + y * 1.8758 + z * 0.0415;
448
+ b = x * 0.0557 + y * -0.2040 + z * 1.0570;
449
+
450
+ // Assume sRGB
451
+ r = r > 0.0031308 ? 1.055 * Math.pow(r, 1.0 / 2.4) - 0.055 : r * 12.92;
452
+ g = g > 0.0031308 ? 1.055 * Math.pow(g, 1.0 / 2.4) - 0.055 : g * 12.92;
453
+ b = b > 0.0031308 ? 1.055 * Math.pow(b, 1.0 / 2.4) - 0.055 : b * 12.92;
454
+ r = Math.min(Math.max(0, r), 1);
455
+ g = Math.min(Math.max(0, g), 1);
456
+ b = Math.min(Math.max(0, b), 1);
457
+ return [r * 255, g * 255, b * 255];
458
+ };
459
+ convert.xyz.lab = function (xyz) {
460
+ var x = xyz[0];
461
+ var y = xyz[1];
462
+ var z = xyz[2];
463
+ x /= 95.047;
464
+ y /= 100;
465
+ z /= 108.883;
466
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;
467
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;
468
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;
469
+ var l = 116 * y - 16;
470
+ var a = 500 * (x - y);
471
+ var b = 200 * (y - z);
472
+ return [l, a, b];
473
+ };
474
+ convert.lab.xyz = function (lab) {
475
+ var l = lab[0];
476
+ var a = lab[1];
477
+ var b = lab[2];
478
+ var x;
479
+ var y;
480
+ var z;
481
+ y = (l + 16) / 116;
482
+ x = a / 500 + y;
483
+ z = y - b / 200;
484
+ var y2 = Math.pow(y, 3);
485
+ var x2 = Math.pow(x, 3);
486
+ var z2 = Math.pow(z, 3);
487
+ y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
488
+ x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
489
+ z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
490
+ x *= 95.047;
491
+ y *= 100;
492
+ z *= 108.883;
493
+ return [x, y, z];
494
+ };
495
+ convert.lab.lch = function (lab) {
496
+ var l = lab[0];
497
+ var a = lab[1];
498
+ var b = lab[2];
499
+ var h;
500
+ var hr = Math.atan2(b, a);
501
+ h = hr * 360 / 2 / Math.PI;
502
+ if (h < 0) {
503
+ h += 360;
504
+ }
505
+ var c = Math.sqrt(a * a + b * b);
506
+ return [l, c, h];
507
+ };
508
+ convert.lch.lab = function (lch) {
509
+ var l = lch[0];
510
+ var c = lch[1];
511
+ var h = lch[2];
512
+ var hr = h / 360 * 2 * Math.PI;
513
+ var a = c * Math.cos(hr);
514
+ var b = c * Math.sin(hr);
515
+ return [l, a, b];
516
+ };
517
+ convert.rgb.ansi16 = function (args) {
518
+ var saturation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
519
+ var _args = _slicedToArray(args, 3),
520
+ r = _args[0],
521
+ g = _args[1],
522
+ b = _args[2];
523
+ var value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization
524
+
525
+ value = Math.round(value / 50);
526
+ if (value === 0) {
527
+ return 30;
528
+ }
529
+ var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));
530
+ if (value === 2) {
531
+ ansi += 60;
532
+ }
533
+ return ansi;
534
+ };
535
+ convert.hsv.ansi16 = function (args) {
536
+ // Optimization here; we already know the value and don't need to get
537
+ // it converted for us.
538
+ return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
539
+ };
540
+ convert.rgb.ansi256 = function (args) {
541
+ var r = args[0];
542
+ var g = args[1];
543
+ var b = args[2];
544
+
545
+ // We use the extended greyscale palette here, with the exception of
546
+ // black and white. normal palette only has 4 greyscale shades.
547
+ if (r === g && g === b) {
548
+ if (r < 8) {
549
+ return 16;
550
+ }
551
+ if (r > 248) {
552
+ return 231;
553
+ }
554
+ return Math.round((r - 8) / 247 * 24) + 232;
555
+ }
556
+ var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);
557
+ return ansi;
558
+ };
559
+ convert.ansi16.rgb = function (args) {
560
+ var color = args % 10;
561
+
562
+ // Handle greyscale
563
+ if (color === 0 || color === 7) {
564
+ if (args > 50) {
565
+ color += 3.5;
566
+ }
567
+ color = color / 10.5 * 255;
568
+ return [color, color, color];
569
+ }
570
+ var mult = (~~(args > 50) + 1) * 0.5;
571
+ var r = (color & 1) * mult * 255;
572
+ var g = (color >> 1 & 1) * mult * 255;
573
+ var b = (color >> 2 & 1) * mult * 255;
574
+ return [r, g, b];
575
+ };
576
+ convert.ansi256.rgb = function (args) {
577
+ // Handle greyscale
578
+ if (args >= 232) {
579
+ var c = (args - 232) * 10 + 8;
580
+ return [c, c, c];
581
+ }
582
+ args -= 16;
583
+ var rem;
584
+ var r = Math.floor(args / 36) / 5 * 255;
585
+ var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
586
+ var b = rem % 6 / 5 * 255;
587
+ return [r, g, b];
588
+ };
589
+ convert.rgb.hex = function (args) {
590
+ var integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF);
591
+ var string = integer.toString(16).toUpperCase();
592
+ return '000000'.substring(string.length) + string;
593
+ };
594
+ convert.hex.rgb = function (args) {
595
+ var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
596
+ if (!match) {
597
+ return [0, 0, 0];
598
+ }
599
+ var colorString = match[0];
600
+ if (match[0].length === 3) {
601
+ colorString = colorString.split('').map(function (_char) {
602
+ return _char + _char;
603
+ }).join('');
604
+ }
605
+ var integer = parseInt(colorString, 16);
606
+ var r = integer >> 16 & 0xFF;
607
+ var g = integer >> 8 & 0xFF;
608
+ var b = integer & 0xFF;
609
+ return [r, g, b];
610
+ };
611
+ convert.rgb.hcg = function (rgb) {
612
+ var r = rgb[0] / 255;
613
+ var g = rgb[1] / 255;
614
+ var b = rgb[2] / 255;
615
+ var max = Math.max(Math.max(r, g), b);
616
+ var min = Math.min(Math.min(r, g), b);
617
+ var chroma = max - min;
618
+ var grayscale;
619
+ var hue;
620
+ if (chroma < 1) {
621
+ grayscale = min / (1 - chroma);
622
+ } else {
623
+ grayscale = 0;
624
+ }
625
+ if (chroma <= 0) {
626
+ hue = 0;
627
+ } else if (max === r) {
628
+ hue = (g - b) / chroma % 6;
629
+ } else if (max === g) {
630
+ hue = 2 + (b - r) / chroma;
631
+ } else {
632
+ hue = 4 + (r - g) / chroma;
633
+ }
634
+ hue /= 6;
635
+ hue %= 1;
636
+ return [hue * 360, chroma * 100, grayscale * 100];
637
+ };
638
+ convert.hsl.hcg = function (hsl) {
639
+ var s = hsl[1] / 100;
640
+ var l = hsl[2] / 100;
641
+ var c = l < 0.5 ? 2.0 * s * l : 2.0 * s * (1.0 - l);
642
+ var f = 0;
643
+ if (c < 1.0) {
644
+ f = (l - 0.5 * c) / (1.0 - c);
645
+ }
646
+ return [hsl[0], c * 100, f * 100];
647
+ };
648
+ convert.hsv.hcg = function (hsv) {
649
+ var s = hsv[1] / 100;
650
+ var v = hsv[2] / 100;
651
+ var c = s * v;
652
+ var f = 0;
653
+ if (c < 1.0) {
654
+ f = (v - c) / (1 - c);
655
+ }
656
+ return [hsv[0], c * 100, f * 100];
657
+ };
658
+ convert.hcg.rgb = function (hcg) {
659
+ var h = hcg[0] / 360;
660
+ var c = hcg[1] / 100;
661
+ var g = hcg[2] / 100;
662
+ if (c === 0.0) {
663
+ return [g * 255, g * 255, g * 255];
664
+ }
665
+ var pure = [0, 0, 0];
666
+ var hi = h % 1 * 6;
667
+ var v = hi % 1;
668
+ var w = 1 - v;
669
+ var mg = 0;
670
+
671
+ /* eslint-disable max-statements-per-line */
672
+ switch (Math.floor(hi)) {
673
+ case 0:
674
+ pure[0] = 1;
675
+ pure[1] = v;
676
+ pure[2] = 0;
677
+ break;
678
+ case 1:
679
+ pure[0] = w;
680
+ pure[1] = 1;
681
+ pure[2] = 0;
682
+ break;
683
+ case 2:
684
+ pure[0] = 0;
685
+ pure[1] = 1;
686
+ pure[2] = v;
687
+ break;
688
+ case 3:
689
+ pure[0] = 0;
690
+ pure[1] = w;
691
+ pure[2] = 1;
692
+ break;
693
+ case 4:
694
+ pure[0] = v;
695
+ pure[1] = 0;
696
+ pure[2] = 1;
697
+ break;
698
+ default:
699
+ pure[0] = 1;
700
+ pure[1] = 0;
701
+ pure[2] = w;
702
+ }
703
+ /* eslint-enable max-statements-per-line */
704
+
705
+ mg = (1.0 - c) * g;
706
+ return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255];
707
+ };
708
+ convert.hcg.hsv = function (hcg) {
709
+ var c = hcg[1] / 100;
710
+ var g = hcg[2] / 100;
711
+ var v = c + g * (1.0 - c);
712
+ var f = 0;
713
+ if (v > 0.0) {
714
+ f = c / v;
715
+ }
716
+ return [hcg[0], f * 100, v * 100];
717
+ };
718
+ convert.hcg.hsl = function (hcg) {
719
+ var c = hcg[1] / 100;
720
+ var g = hcg[2] / 100;
721
+ var l = g * (1.0 - c) + 0.5 * c;
722
+ var s = 0;
723
+ if (l > 0.0 && l < 0.5) {
724
+ s = c / (2 * l);
725
+ } else if (l >= 0.5 && l < 1.0) {
726
+ s = c / (2 * (1 - l));
727
+ }
728
+ return [hcg[0], s * 100, l * 100];
729
+ };
730
+ convert.hcg.hwb = function (hcg) {
731
+ var c = hcg[1] / 100;
732
+ var g = hcg[2] / 100;
733
+ var v = c + g * (1.0 - c);
734
+ return [hcg[0], (v - c) * 100, (1 - v) * 100];
735
+ };
736
+ convert.hwb.hcg = function (hwb) {
737
+ var w = hwb[1] / 100;
738
+ var b = hwb[2] / 100;
739
+ var v = 1 - b;
740
+ var c = v - w;
741
+ var g = 0;
742
+ if (c < 1) {
743
+ g = (v - c) / (1 - c);
744
+ }
745
+ return [hwb[0], c * 100, g * 100];
746
+ };
747
+ convert.apple.rgb = function (apple) {
748
+ return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];
749
+ };
750
+ convert.rgb.apple = function (rgb) {
751
+ return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];
752
+ };
753
+ convert.gray.rgb = function (args) {
754
+ return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
755
+ };
756
+ convert.gray.hsl = function (args) {
757
+ return [0, 0, args[0]];
758
+ };
759
+ convert.gray.hsv = convert.gray.hsl;
760
+ convert.gray.hwb = function (gray) {
761
+ return [0, 100, gray[0]];
762
+ };
763
+ convert.gray.cmyk = function (gray) {
764
+ return [0, 0, 0, gray[0]];
765
+ };
766
+ convert.gray.lab = function (gray) {
767
+ return [gray[0], 0, 0];
768
+ };
769
+ convert.gray.hex = function (gray) {
770
+ var val = Math.round(gray[0] / 100 * 255) & 0xFF;
771
+ var integer = (val << 16) + (val << 8) + val;
772
+ var string = integer.toString(16).toUpperCase();
773
+ return '000000'.substring(string.length) + string;
774
+ };
775
+ convert.rgb.gray = function (rgb) {
776
+ var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
777
+ return [val / 255 * 100];
778
+ };
779
+
780
+ /***/ }),
781
+
782
+ /***/ 907:
783
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
784
+
785
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
786
+ var conversions = __webpack_require__(208);
787
+ var route = __webpack_require__(171);
788
+ var convert = {};
789
+ var models = Object.keys(conversions);
790
+ function wrapRaw(fn) {
791
+ var wrappedFn = function wrappedFn() {
792
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
793
+ args[_key] = arguments[_key];
794
+ }
795
+ var arg0 = args[0];
796
+ if (arg0 === undefined || arg0 === null) {
797
+ return arg0;
798
+ }
799
+ if (arg0.length > 1) {
800
+ args = arg0;
801
+ }
802
+ return fn(args);
803
+ };
804
+
805
+ // Preserve .conversion property if there is one
806
+ if ('conversion' in fn) {
807
+ wrappedFn.conversion = fn.conversion;
808
+ }
809
+ return wrappedFn;
810
+ }
811
+ function wrapRounded(fn) {
812
+ var wrappedFn = function wrappedFn() {
813
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
814
+ args[_key2] = arguments[_key2];
815
+ }
816
+ var arg0 = args[0];
817
+ if (arg0 === undefined || arg0 === null) {
818
+ return arg0;
819
+ }
820
+ if (arg0.length > 1) {
821
+ args = arg0;
822
+ }
823
+ var result = fn(args);
824
+
825
+ // We're assuming the result is an array here.
826
+ // see notice in conversions.js; don't use box types
827
+ // in conversion functions.
828
+ if (_typeof(result) === 'object') {
829
+ for (var len = result.length, i = 0; i < len; i++) {
830
+ result[i] = Math.round(result[i]);
831
+ }
832
+ }
833
+ return result;
834
+ };
835
+
836
+ // Preserve .conversion property if there is one
837
+ if ('conversion' in fn) {
838
+ wrappedFn.conversion = fn.conversion;
839
+ }
840
+ return wrappedFn;
841
+ }
842
+ models.forEach(function (fromModel) {
843
+ convert[fromModel] = {};
844
+ Object.defineProperty(convert[fromModel], 'channels', {
845
+ value: conversions[fromModel].channels
846
+ });
847
+ Object.defineProperty(convert[fromModel], 'labels', {
848
+ value: conversions[fromModel].labels
849
+ });
850
+ var routes = route(fromModel);
851
+ var routeModels = Object.keys(routes);
852
+ routeModels.forEach(function (toModel) {
853
+ var fn = routes[toModel];
854
+ convert[fromModel][toModel] = wrapRounded(fn);
855
+ convert[fromModel][toModel].raw = wrapRaw(fn);
856
+ });
857
+ });
858
+ module.exports = convert;
859
+
860
+ /***/ }),
861
+
862
+ /***/ 171:
863
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
864
+
865
+ var conversions = __webpack_require__(208);
866
+
867
+ /*
868
+ This function routes a model to all other models.
869
+
870
+ all functions that are routed have a property `.conversion` attached
871
+ to the returned synthetic function. This property is an array
872
+ of strings, each with the steps in between the 'from' and 'to'
873
+ color models (inclusive).
874
+
875
+ conversions that are not possible simply are not included.
876
+ */
877
+
878
+ function buildGraph() {
879
+ var graph = {};
880
+ // https://jsperf.com/object-keys-vs-for-in-with-closure/3
881
+ var models = Object.keys(conversions);
882
+ for (var len = models.length, i = 0; i < len; i++) {
883
+ graph[models[i]] = {
884
+ // http://jsperf.com/1-vs-infinity
885
+ // micro-opt, but this is simple.
886
+ distance: -1,
887
+ parent: null
888
+ };
889
+ }
890
+ return graph;
891
+ }
892
+
893
+ // https://en.wikipedia.org/wiki/Breadth-first_search
894
+ function deriveBFS(fromModel) {
895
+ var graph = buildGraph();
896
+ var queue = [fromModel]; // Unshift -> queue -> pop
897
+
898
+ graph[fromModel].distance = 0;
899
+ while (queue.length) {
900
+ var current = queue.pop();
901
+ var adjacents = Object.keys(conversions[current]);
902
+ for (var len = adjacents.length, i = 0; i < len; i++) {
903
+ var adjacent = adjacents[i];
904
+ var node = graph[adjacent];
905
+ if (node.distance === -1) {
906
+ node.distance = graph[current].distance + 1;
907
+ node.parent = current;
908
+ queue.unshift(adjacent);
909
+ }
910
+ }
911
+ }
912
+ return graph;
913
+ }
914
+ function link(from, to) {
915
+ return function (args) {
916
+ return to(from(args));
917
+ };
918
+ }
919
+ function wrapConversion(toModel, graph) {
920
+ var path = [graph[toModel].parent, toModel];
921
+ var fn = conversions[graph[toModel].parent][toModel];
922
+ var cur = graph[toModel].parent;
923
+ while (graph[cur].parent) {
924
+ path.unshift(graph[cur].parent);
925
+ fn = link(conversions[graph[cur].parent][cur], fn);
926
+ cur = graph[cur].parent;
927
+ }
928
+ fn.conversion = path;
929
+ return fn;
930
+ }
931
+ module.exports = function (fromModel) {
932
+ var graph = deriveBFS(fromModel);
933
+ var conversion = {};
934
+ var models = Object.keys(graph);
935
+ for (var len = models.length, i = 0; i < len; i++) {
936
+ var toModel = models[i];
937
+ var node = graph[toModel];
938
+ if (node.parent === null) {
939
+ // No possible conversion, or this node is the source model.
940
+ continue;
941
+ }
942
+ conversion[toModel] = wrapConversion(toModel, graph);
943
+ }
944
+ return conversion;
945
+ };
946
+
947
+ /***/ }),
948
+
949
+ /***/ 101:
950
+ /***/ (function(module) {
951
+
952
+ "use strict";
953
+
954
+
955
+ module.exports = {
956
+ "aliceblue": [240, 248, 255],
957
+ "antiquewhite": [250, 235, 215],
958
+ "aqua": [0, 255, 255],
959
+ "aquamarine": [127, 255, 212],
960
+ "azure": [240, 255, 255],
961
+ "beige": [245, 245, 220],
962
+ "bisque": [255, 228, 196],
963
+ "black": [0, 0, 0],
964
+ "blanchedalmond": [255, 235, 205],
965
+ "blue": [0, 0, 255],
966
+ "blueviolet": [138, 43, 226],
967
+ "brown": [165, 42, 42],
968
+ "burlywood": [222, 184, 135],
969
+ "cadetblue": [95, 158, 160],
970
+ "chartreuse": [127, 255, 0],
971
+ "chocolate": [210, 105, 30],
972
+ "coral": [255, 127, 80],
973
+ "cornflowerblue": [100, 149, 237],
974
+ "cornsilk": [255, 248, 220],
975
+ "crimson": [220, 20, 60],
976
+ "cyan": [0, 255, 255],
977
+ "darkblue": [0, 0, 139],
978
+ "darkcyan": [0, 139, 139],
979
+ "darkgoldenrod": [184, 134, 11],
980
+ "darkgray": [169, 169, 169],
981
+ "darkgreen": [0, 100, 0],
982
+ "darkgrey": [169, 169, 169],
983
+ "darkkhaki": [189, 183, 107],
984
+ "darkmagenta": [139, 0, 139],
985
+ "darkolivegreen": [85, 107, 47],
986
+ "darkorange": [255, 140, 0],
987
+ "darkorchid": [153, 50, 204],
988
+ "darkred": [139, 0, 0],
989
+ "darksalmon": [233, 150, 122],
990
+ "darkseagreen": [143, 188, 143],
991
+ "darkslateblue": [72, 61, 139],
992
+ "darkslategray": [47, 79, 79],
993
+ "darkslategrey": [47, 79, 79],
994
+ "darkturquoise": [0, 206, 209],
995
+ "darkviolet": [148, 0, 211],
996
+ "deeppink": [255, 20, 147],
997
+ "deepskyblue": [0, 191, 255],
998
+ "dimgray": [105, 105, 105],
999
+ "dimgrey": [105, 105, 105],
1000
+ "dodgerblue": [30, 144, 255],
1001
+ "firebrick": [178, 34, 34],
1002
+ "floralwhite": [255, 250, 240],
1003
+ "forestgreen": [34, 139, 34],
1004
+ "fuchsia": [255, 0, 255],
1005
+ "gainsboro": [220, 220, 220],
1006
+ "ghostwhite": [248, 248, 255],
1007
+ "gold": [255, 215, 0],
1008
+ "goldenrod": [218, 165, 32],
1009
+ "gray": [128, 128, 128],
1010
+ "green": [0, 128, 0],
1011
+ "greenyellow": [173, 255, 47],
1012
+ "grey": [128, 128, 128],
1013
+ "honeydew": [240, 255, 240],
1014
+ "hotpink": [255, 105, 180],
1015
+ "indianred": [205, 92, 92],
1016
+ "indigo": [75, 0, 130],
1017
+ "ivory": [255, 255, 240],
1018
+ "khaki": [240, 230, 140],
1019
+ "lavender": [230, 230, 250],
1020
+ "lavenderblush": [255, 240, 245],
1021
+ "lawngreen": [124, 252, 0],
1022
+ "lemonchiffon": [255, 250, 205],
1023
+ "lightblue": [173, 216, 230],
1024
+ "lightcoral": [240, 128, 128],
1025
+ "lightcyan": [224, 255, 255],
1026
+ "lightgoldenrodyellow": [250, 250, 210],
1027
+ "lightgray": [211, 211, 211],
1028
+ "lightgreen": [144, 238, 144],
1029
+ "lightgrey": [211, 211, 211],
1030
+ "lightpink": [255, 182, 193],
1031
+ "lightsalmon": [255, 160, 122],
1032
+ "lightseagreen": [32, 178, 170],
1033
+ "lightskyblue": [135, 206, 250],
1034
+ "lightslategray": [119, 136, 153],
1035
+ "lightslategrey": [119, 136, 153],
1036
+ "lightsteelblue": [176, 196, 222],
1037
+ "lightyellow": [255, 255, 224],
1038
+ "lime": [0, 255, 0],
1039
+ "limegreen": [50, 205, 50],
1040
+ "linen": [250, 240, 230],
1041
+ "magenta": [255, 0, 255],
1042
+ "maroon": [128, 0, 0],
1043
+ "mediumaquamarine": [102, 205, 170],
1044
+ "mediumblue": [0, 0, 205],
1045
+ "mediumorchid": [186, 85, 211],
1046
+ "mediumpurple": [147, 112, 219],
1047
+ "mediumseagreen": [60, 179, 113],
1048
+ "mediumslateblue": [123, 104, 238],
1049
+ "mediumspringgreen": [0, 250, 154],
1050
+ "mediumturquoise": [72, 209, 204],
1051
+ "mediumvioletred": [199, 21, 133],
1052
+ "midnightblue": [25, 25, 112],
1053
+ "mintcream": [245, 255, 250],
1054
+ "mistyrose": [255, 228, 225],
1055
+ "moccasin": [255, 228, 181],
1056
+ "navajowhite": [255, 222, 173],
1057
+ "navy": [0, 0, 128],
1058
+ "oldlace": [253, 245, 230],
1059
+ "olive": [128, 128, 0],
1060
+ "olivedrab": [107, 142, 35],
1061
+ "orange": [255, 165, 0],
1062
+ "orangered": [255, 69, 0],
1063
+ "orchid": [218, 112, 214],
1064
+ "palegoldenrod": [238, 232, 170],
1065
+ "palegreen": [152, 251, 152],
1066
+ "paleturquoise": [175, 238, 238],
1067
+ "palevioletred": [219, 112, 147],
1068
+ "papayawhip": [255, 239, 213],
1069
+ "peachpuff": [255, 218, 185],
1070
+ "peru": [205, 133, 63],
1071
+ "pink": [255, 192, 203],
1072
+ "plum": [221, 160, 221],
1073
+ "powderblue": [176, 224, 230],
1074
+ "purple": [128, 0, 128],
1075
+ "rebeccapurple": [102, 51, 153],
1076
+ "red": [255, 0, 0],
1077
+ "rosybrown": [188, 143, 143],
1078
+ "royalblue": [65, 105, 225],
1079
+ "saddlebrown": [139, 69, 19],
1080
+ "salmon": [250, 128, 114],
1081
+ "sandybrown": [244, 164, 96],
1082
+ "seagreen": [46, 139, 87],
1083
+ "seashell": [255, 245, 238],
1084
+ "sienna": [160, 82, 45],
1085
+ "silver": [192, 192, 192],
1086
+ "skyblue": [135, 206, 235],
1087
+ "slateblue": [106, 90, 205],
1088
+ "slategray": [112, 128, 144],
1089
+ "slategrey": [112, 128, 144],
1090
+ "snow": [255, 250, 250],
1091
+ "springgreen": [0, 255, 127],
1092
+ "steelblue": [70, 130, 180],
1093
+ "tan": [210, 180, 140],
1094
+ "teal": [0, 128, 128],
1095
+ "thistle": [216, 191, 216],
1096
+ "tomato": [255, 99, 71],
1097
+ "turquoise": [64, 224, 208],
1098
+ "violet": [238, 130, 238],
1099
+ "wheat": [245, 222, 179],
1100
+ "white": [255, 255, 255],
1101
+ "whitesmoke": [245, 245, 245],
1102
+ "yellow": [255, 255, 0],
1103
+ "yellowgreen": [154, 205, 50]
1104
+ };
1105
+
1106
+ /***/ })
1107
+
1108
+ /******/ });
1109
+ /************************************************************************/
1110
+ /******/ // The module cache
1111
+ /******/ var __webpack_module_cache__ = {};
1112
+ /******/
1113
+ /******/ // The require function
1114
+ /******/ function __webpack_require__(moduleId) {
1115
+ /******/ // Check if module is in cache
1116
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
1117
+ /******/ if (cachedModule !== undefined) {
1118
+ /******/ return cachedModule.exports;
1119
+ /******/ }
1120
+ /******/ // Create a new module (and put it into the cache)
1121
+ /******/ var module = __webpack_module_cache__[moduleId] = {
1122
+ /******/ // no module.id needed
1123
+ /******/ // no module.loaded needed
1124
+ /******/ exports: {}
1125
+ /******/ };
1126
+ /******/
1127
+ /******/ // Execute the module function
1128
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
1129
+ /******/
1130
+ /******/ // Return the exports of the module
1131
+ /******/ return module.exports;
1132
+ /******/ }
1133
+ /******/
1134
+ /************************************************************************/
1135
+ /******/ /* webpack/runtime/define property getters */
1136
+ /******/ !function() {
1137
+ /******/ // define getter functions for harmony exports
1138
+ /******/ __webpack_require__.d = function(exports, definition) {
1139
+ /******/ for(var key in definition) {
1140
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1141
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1142
+ /******/ }
1143
+ /******/ }
1144
+ /******/ };
1145
+ /******/ }();
1146
+ /******/
1147
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
1148
+ /******/ !function() {
1149
+ /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
1150
+ /******/ }();
1151
+ /******/
1152
+ /******/ /* webpack/runtime/make namespace object */
1153
+ /******/ !function() {
1154
+ /******/ // define __esModule on exports
1155
+ /******/ __webpack_require__.r = function(exports) {
1156
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
1157
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1158
+ /******/ }
1159
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
1160
+ /******/ };
1161
+ /******/ }();
1162
+ /******/
1163
+ /************************************************************************/
1164
+ var __webpack_exports__ = {};
1165
+ // This entry need to be wrapped in an IIFE because it need to be in strict mode.
1166
+ !function() {
1167
+ "use strict";
1168
+ // ESM COMPAT FLAG
1169
+ __webpack_require__.r(__webpack_exports__);
1170
+
1171
+ // EXPORTS
1172
+ __webpack_require__.d(__webpack_exports__, {
1173
+ "CssColorParser": function() { return /* reexport */ src_CssColorParser; },
1174
+ "fromArray": function() { return /* reexport */ fromArray; },
1175
+ "fromColorStr": function() { return /* reexport */ fromColorStr; },
1176
+ "fromHSL": function() { return /* reexport */ fromHSL; },
1177
+ "fromHWB": function() { return /* reexport */ fromHWB; },
1178
+ "fromJson": function() { return /* reexport */ fromJson; },
1179
+ "fromRandom": function() { return /* reexport */ fromRandom; },
1180
+ "parseCssColorStr": function() { return /* reexport */ parseCssColorStr; },
1181
+ "parseHEX": function() { return /* reexport */ parseHEX; },
1182
+ "parseHSLA": function() { return /* reexport */ parseHSLA; },
1183
+ "parseHWB": function() { return /* reexport */ parseHWB; },
1184
+ "parseKeyWord": function() { return /* reexport */ parseKeyWord; },
1185
+ "parseRGBA": function() { return /* reexport */ parseRGBA; }
1186
+ });
1187
+
1188
+ ;// CONCATENATED MODULE: ./src/utils/common.ts
1189
+ var Check = /** @class */ (function () {
1190
+ function Check() {
1191
+ }
1192
+ Check.type = function (type, paramName, value) {
1193
+ var valueType = typeof value;
1194
+ if (valueType !== type) {
1195
+ throw new Error("Expected ".concat(paramName, " to be typeof ").concat(type, ", actual typeof was ").concat(valueType));
1196
+ }
1197
+ };
1198
+ Check.types = function (types, paramName, value) {
1199
+ var valueType = typeof value;
1200
+ var isContained = types.includes(valueType);
1201
+ if (!isContained) {
1202
+ throw new Error("Expected ".concat(paramName, " to be typeof ").concat(types.join('|'), ", actual typeof was ").concat(valueType));
1203
+ }
1204
+ };
1205
+ return Check;
1206
+ }());
1207
+
1208
+ var ColorJson = /** @class */ (function () {
1209
+ function ColorJson() {
1210
+ }
1211
+ return ColorJson;
1212
+ }());
1213
+
1214
+ function defaultValue(v, defaultV) {
1215
+ if (v === undefined || v === null) {
1216
+ return defaultV;
1217
+ }
1218
+ if (isNaN(v) && typeof defaultV === 'number') {
1219
+ return defaultV;
1220
+ }
1221
+ return v;
1222
+ }
1223
+ function limitNumber(min, max, v) {
1224
+ if (v > max) {
1225
+ v = max;
1226
+ }
1227
+ else if (v < min) {
1228
+ v = min;
1229
+ }
1230
+ return v;
1231
+ }
1232
+ function setNumberPrecision(number, precision) {
1233
+ return Number(number.toFixed(precision));
1234
+ }
1235
+
1236
+ ;// CONCATENATED MODULE: ./src/CssColorParser.ts
1237
+ /*
1238
+ * @Descripttion: 颜色解析器
1239
+ * @version: 1.0.0
1240
+ * @Author: roman_123
1241
+ * @Date: 2021-01-19 09:22:11
1242
+ * @LastEditors: Please set LastEditors
1243
+ * @LastEditTime: 2023-05-26 11:20:17
1244
+ */
1245
+
1246
+ var CssColorParser = /** @class */ (function () {
1247
+ function CssColorParser(red, green, blue, alpha) {
1248
+ this.r = 255;
1249
+ this.g = 255;
1250
+ this.b = 255;
1251
+ this.a = 1;
1252
+ this.setColor(red, green, blue, alpha);
1253
+ }
1254
+ /**
1255
+ * 设置颜色
1256
+ * @param red
1257
+ * @param green
1258
+ * @param blue
1259
+ * @param alpha
1260
+ * @example: this.setColor(255,255,255,1)
1261
+ */
1262
+ CssColorParser.prototype.setColor = function (red, green, blue, alpha) {
1263
+ this.r = limitNumber(0, 255, defaultValue(Number(red), 0));
1264
+ this.g = limitNumber(0, 255, defaultValue(Number(green), 0));
1265
+ this.b = limitNumber(0, 255, defaultValue(Number(blue), 0));
1266
+ this.a = limitNumber(0, 1, defaultValue(Number(alpha), 1));
1267
+ };
1268
+ /**
1269
+ * @description: 返回rgba格式的css字符串
1270
+ * @return {*}
1271
+ * @author: roman_123
1272
+ */
1273
+ CssColorParser.prototype.toRGBA = function () {
1274
+ var color = this.toJson();
1275
+ if (color.a === 1) {
1276
+ return "rgb(".concat(color.r, ",").concat(color.g, ",").concat(color.b, ")");
1277
+ }
1278
+ return "rgba(".concat(color.r, ",").concat(color.g, ",").concat(color.b, ",").concat(color.a, ")");
1279
+ };
1280
+ /**
1281
+ * @description: 返回字符串
1282
+ * @return {*}
1283
+ * @author: roman_123
1284
+ */
1285
+ CssColorParser.prototype.toString = function () {
1286
+ return this.toRGBA();
1287
+ };
1288
+ /**
1289
+ * @description: 归一化
1290
+ * @return {*}
1291
+ * @author: roman_123
1292
+ */
1293
+ CssColorParser.prototype.toNormalize = function () {
1294
+ return {
1295
+ r: setNumberPrecision(this.r / 255, 2),
1296
+ g: setNumberPrecision(this.g / 255, 2),
1297
+ b: setNumberPrecision(this.b / 255, 2),
1298
+ a: setNumberPrecision(this.a, 2)
1299
+ };
1300
+ };
1301
+ /**
1302
+ * @description: 返回16进制格式的css字符串
1303
+ * @return {*}
1304
+ * @author: roman_123
1305
+ */
1306
+ CssColorParser.prototype.toHEX = function () {
1307
+ var color = this.toJson();
1308
+ var r = color.r.toString(16);
1309
+ if (r.length < 2) {
1310
+ r = "0".concat(r);
1311
+ }
1312
+ var g = color.g.toString(16);
1313
+ if (g.length < 2) {
1314
+ g = "0".concat(g);
1315
+ }
1316
+ var b = color.b.toString(16);
1317
+ if (b.length < 2) {
1318
+ b = "0".concat(b);
1319
+ }
1320
+ // 由于tojson后a会丢失精度,此处使用this.a
1321
+ if (this.a < 1) {
1322
+ var hexAlpha = parseInt((this.a * 255).toFixed()).toString(16);
1323
+ if (hexAlpha.length < 2) {
1324
+ hexAlpha = "0".concat(hexAlpha);
1325
+ }
1326
+ return "#".concat(r).concat(g).concat(b).concat(hexAlpha);
1327
+ }
1328
+ return "#".concat(r).concat(g).concat(b);
1329
+ };
1330
+ /**
1331
+ * @description: 返回rgba数组
1332
+ * @return {*}
1333
+ * @author: roman_123
1334
+ */
1335
+ CssColorParser.prototype.toArray = function () {
1336
+ var color = this.toJson();
1337
+ return [color.r, color.g, color.b, color.a];
1338
+ };
1339
+ /**
1340
+ * @description: 返回ColorJson
1341
+ * @return {*}
1342
+ * @author: roman_123
1343
+ */
1344
+ CssColorParser.prototype.toJson = function () {
1345
+ return {
1346
+ r: parseInt(this.r.toFixed()),
1347
+ g: parseInt(this.g.toFixed()),
1348
+ b: parseInt(this.b.toFixed()),
1349
+ a: parseFloat(this.a.toFixed(2))
1350
+ };
1351
+ };
1352
+ /**
1353
+ * @description: 拷贝
1354
+ * @return {*}
1355
+ * @author: roman_123
1356
+ */
1357
+ CssColorParser.prototype.clone = function () {
1358
+ return new CssColorParser(this.r, this.g, this.b, this.a);
1359
+ };
1360
+ /**
1361
+ * @description: 比较两个解析对象的数据是否相等
1362
+ * @param {*} color
1363
+ * @return {*}
1364
+ * @author: roman_123
1365
+ */
1366
+ CssColorParser.prototype.equals = function (color) {
1367
+ if (this === color) {
1368
+ return true;
1369
+ }
1370
+ else {
1371
+ return (this.r === color.r &&
1372
+ this.g === color.g &&
1373
+ this.b === color.g &&
1374
+ this.a === color.a);
1375
+ }
1376
+ };
1377
+ return CssColorParser;
1378
+ }());
1379
+ /* harmony default export */ var src_CssColorParser = (CssColorParser);
1380
+
1381
+ ;// CONCATENATED MODULE: ./src/utils/color-tools.ts
1382
+
1383
+ /*
1384
+ * @Author: roman_123
1385
+ * @Description: 部分核心代码修改自cesium
1386
+ * @Date: 2022-11-28 17:32:57
1387
+ * @LastEditTime: 2022-12-06 00:02:21
1388
+ */
1389
+ var CssColorStringParser = /** @class */ (function () {
1390
+ function CssColorStringParser() {
1391
+ }
1392
+ // 去除字符串内所有空格
1393
+ CssColorStringParser.clearStrSpace = function (v) {
1394
+ return v.replace(/\s/g, '');
1395
+ };
1396
+ // 去除字符串两边空格,将中间多个空格合并为一个
1397
+ CssColorStringParser.trimStr = function (v) {
1398
+ v = v.replace(/\s+/g, ' ');
1399
+ return v.trim();
1400
+ };
1401
+ // 解析3位16进制 #fff #fff0
1402
+ CssColorStringParser.parse3BitsHEX = function (v) {
1403
+ var regx = /^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i;
1404
+ var res = regx.exec(v);
1405
+ if (res) {
1406
+ var res4 = defaultValue(res[4], 'f');
1407
+ var r = CssColorStringParser._parseResStrForRgb(parseInt(res[1] + res[1], 16));
1408
+ var g = CssColorStringParser._parseResStrForRgb(parseInt(res[2] + res[2], 16));
1409
+ var b = CssColorStringParser._parseResStrForRgb(parseInt(res[3] + res[3], 16));
1410
+ var a = CssColorStringParser._parsePercent(parseInt(res4 + res4, 16) / 255);
1411
+ return [r, g, b, a];
1412
+ }
1413
+ return null;
1414
+ };
1415
+ // 解析6位16进制 #ffffff #ffffff00
1416
+ CssColorStringParser.parse6BitsHEX = function (v) {
1417
+ var regx = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i;
1418
+ var res = regx.exec(v);
1419
+ if (res) {
1420
+ var res4 = defaultValue(res[4], 'ff');
1421
+ var r = CssColorStringParser._parseResStrForRgb(parseInt(res[1], 16));
1422
+ var g = CssColorStringParser._parseResStrForRgb(parseInt(res[2], 16));
1423
+ var b = CssColorStringParser._parseResStrForRgb(parseInt(res[3], 16));
1424
+ var a = CssColorStringParser._parsePercent(parseInt(res4, 16) / 255.0);
1425
+ return [r, g, b, a];
1426
+ }
1427
+ return null;
1428
+ };
1429
+ // 解析rgb rgba rgb(255,255,255) rgba(255,255,255,1) rgba(100%,100%,100%, 1)
1430
+ CssColorStringParser.parseRGBA = function (v) {
1431
+ var regx = /^rgba?\(([0-9.]+%?),([0-9.]+%?),([0-9.]+%?)(?:,([0-9.]+%?))?\)$/i;
1432
+ var res = regx.exec(v);
1433
+ if (res) {
1434
+ var r = CssColorStringParser._parseResStrForRgb(res[1]);
1435
+ var g = CssColorStringParser._parseResStrForRgb(res[2]);
1436
+ var b = CssColorStringParser._parseResStrForRgb(res[3]);
1437
+ var a = CssColorStringParser._parsePercent(res[4]);
1438
+ return [r, g, b, a];
1439
+ }
1440
+ return null;
1441
+ };
1442
+ // 解析hsl hsla hsl(360,100%,100%) hsla(360,100%,100%,1)
1443
+ CssColorStringParser.parseHSLA = function (v) {
1444
+ var regx = /^hsla?\(([0-9.]+)(?:deg)?,([0-9.]+%?),([0-9.]+%?)(?:,([0-9.]+%?))?\)$/i;
1445
+ var res = regx.exec(v);
1446
+ if (res) {
1447
+ var h = CssColorStringParser._parseResStrForHue(res[1]);
1448
+ var s = CssColorStringParser._parsePercent(res[2]);
1449
+ var l = CssColorStringParser._parsePercent(res[3]);
1450
+ var a = CssColorStringParser._parsePercent(res[4]);
1451
+ return [h, s, l, a];
1452
+ }
1453
+ return null;
1454
+ };
1455
+ // 解析hwb
1456
+ CssColorStringParser.parseHWB = function (v) {
1457
+ var regx = /^hwb\s?\(\s?([0-9.]+)(?:deg)?\s([0-9.]+%?)\s([0-9.]+%?)\s?(?:\/\s?([0-9.]+%?))?\s?\)$/i;
1458
+ var res = regx.exec(v);
1459
+ if (res) {
1460
+ var h = CssColorStringParser._parseResStrForHue(res[1]);
1461
+ var w = CssColorStringParser._parsePercent(res[2]);
1462
+ var b = CssColorStringParser._parsePercent(res[3]);
1463
+ var a = CssColorStringParser._parsePercent(res[4]);
1464
+ return [h, w, b, a];
1465
+ }
1466
+ return null;
1467
+ };
1468
+ // 解析rgb rgb(178 57 57 / 44%) 字符串中存在空格,因此使用清除两侧空格的原始字符串
1469
+ CssColorStringParser.parseRGBA2 = function (v) {
1470
+ var regx = /^rgba?\s?\(\s?([0-9.]+%?)\s?([0-9.]+%?)\s?([0-9.]+%?)(?:\s?\/\s?([0-9.]+%?))?\s?\)$/i;
1471
+ var res = regx.exec(v);
1472
+ if (res) {
1473
+ var r = CssColorStringParser._parseResStrForRgb(res[1]);
1474
+ var g = CssColorStringParser._parseResStrForRgb(res[2]);
1475
+ var b = CssColorStringParser._parseResStrForRgb(res[3]);
1476
+ var a = CssColorStringParser._parsePercent(res[4]);
1477
+ return [r, g, b, a];
1478
+ }
1479
+ return null;
1480
+ };
1481
+ // 解析hsl hsl(215 85% 62% / 1)
1482
+ CssColorStringParser.parseHSLA2 = function (v) {
1483
+ var regx = /^hsla?\s?\(\s?([0-9.]+)(?:deg)?\s([0-9.]+%?)\s([0-9.]+%?)\s?(?:\/\s?([0-9.]+%?))?\s?\)$/i;
1484
+ var res = regx.exec(v);
1485
+ if (res) {
1486
+ var h = CssColorStringParser._parseResStrForHue(res[1]);
1487
+ var s = CssColorStringParser._parsePercent(res[2]);
1488
+ var l = CssColorStringParser._parsePercent(res[3]);
1489
+ var a = CssColorStringParser._parsePercent(res[4]);
1490
+ return [h, s, l, a];
1491
+ }
1492
+ return null;
1493
+ };
1494
+ // 将结果解析为数字
1495
+ CssColorStringParser._parseResStrForRgb = function (v) {
1496
+ if (typeof v === 'string') {
1497
+ v = parseFloat(v) / ('%' === v.substr(-1) ? 100.0 / 255 : 1);
1498
+ }
1499
+ if (isNaN(v)) {
1500
+ v = 1;
1501
+ }
1502
+ return limitNumber(0, 255, v);
1503
+ };
1504
+ CssColorStringParser._parseResStrForHue = function (v) {
1505
+ if (typeof v === 'string') {
1506
+ v = parseFloat(v);
1507
+ }
1508
+ if (isNaN(v)) {
1509
+ v = 0;
1510
+ }
1511
+ return limitNumber(0, 360, v);
1512
+ };
1513
+ CssColorStringParser._parsePercent = function (v) {
1514
+ if (typeof v === 'string') {
1515
+ v = parseFloat(v) / ('%' === v.substr(-1) ? 100.0 : 1);
1516
+ }
1517
+ if (isNaN(v)) {
1518
+ v = 1;
1519
+ }
1520
+ return limitNumber(0, 1, v);
1521
+ };
1522
+ return CssColorStringParser;
1523
+ }());
1524
+
1525
+
1526
+ ;// CONCATENATED MODULE: ./src/utils/parsers/parsers.ts
1527
+
1528
+
1529
+
1530
+ var convert = __webpack_require__(907);
1531
+ function parseKeyWord(v) {
1532
+ var cssStr = CssColorStringParser.clearStrSpace(v);
1533
+ var res = convert.keyword.rgb(cssStr);
1534
+ return res && fromArray(res);
1535
+ }
1536
+ function parseHEX(v) {
1537
+ var cssStr = CssColorStringParser.clearStrSpace(v);
1538
+ var res = CssColorStringParser.parse3BitsHEX(cssStr);
1539
+ if (!res) {
1540
+ res = CssColorStringParser.parse6BitsHEX(cssStr);
1541
+ }
1542
+ return res && fromArray(res);
1543
+ }
1544
+ function parseRGBA(v) {
1545
+ var cssStr = CssColorStringParser.clearStrSpace(v);
1546
+ var res = CssColorStringParser.parseRGBA(cssStr);
1547
+ if (!res) {
1548
+ var cssStr2 = CssColorStringParser.trimStr(v);
1549
+ res = CssColorStringParser.parseRGBA2(cssStr2);
1550
+ }
1551
+ return res && fromArray(res);
1552
+ }
1553
+ function parseHSLA(v) {
1554
+ var cssStr = CssColorStringParser.clearStrSpace(v);
1555
+ var res = CssColorStringParser.parseHSLA(cssStr);
1556
+ if (!res) {
1557
+ var cssStr2 = CssColorStringParser.trimStr(v);
1558
+ res = CssColorStringParser.parseHSLA2(cssStr2);
1559
+ }
1560
+ return res && fromHSL(res[0], res[1], res[2], res[3]);
1561
+ }
1562
+ function parseHWB(v) {
1563
+ var cssStr2 = CssColorStringParser.trimStr(v);
1564
+ var res = CssColorStringParser.parseHWB(cssStr2);
1565
+ return res && fromHWB(res[0], res[1], res[2], res[3]);
1566
+ }
1567
+ /**
1568
+ * @description: 将css字符串转换为解析对象
1569
+ * @param {string} v
1570
+ * @return {CssColorParser}
1571
+ * @example: parseCssColorStr('rgba(255,255,255,1)')
1572
+ */
1573
+ function parseCssColorStr(v) {
1574
+ Check.type('string', 'color', v);
1575
+ return parseHEX(v) || parseRGBA(v) || parseKeyWord(v) || parseHSLA(v) || parseHWB(v);
1576
+ }
1577
+ /**
1578
+ * **Deprecated method.** Use `parseCssColorStr()` instead.
1579
+ * @description: since 2.0.1
1580
+ * @deprecated
1581
+ * @param {string} v
1582
+ * @return {CssColorParser}
1583
+ * @example: fromColorStr('rgba(255,255,255,1)')
1584
+ */
1585
+ function fromColorStr(v) {
1586
+ Check.type('string', 'color', v);
1587
+ return parseHEX(v) || parseRGBA(v) || parseKeyWord(v) || parseHSLA(v) || parseHWB(v);
1588
+ }
1589
+ /**
1590
+ * @description: 将HSL色彩模式转换为解析对象
1591
+ * @param {number} hue 色相
1592
+ * @param {number} saturation 饱和度
1593
+ * @param {number} lightness 亮度
1594
+ * @param {number} alpha 不透明度
1595
+ * @return {CssColorParser}
1596
+ * @example: fromHSL(0,1,1,1)
1597
+ */
1598
+ function fromHSL(h, s, l, a) {
1599
+ var res = convert.hsl.rgb(limitNumber(0, 360, h), limitNumber(0, 100, s * 100), limitNumber(0, 100, l * 100));
1600
+ return new src_CssColorParser(res[0], res[1], res[2], defaultValue(Number(a), 1));
1601
+ }
1602
+ /**
1603
+ * @description: 将HWB色彩模式转换为解析对象
1604
+ * @param {number} h 色调
1605
+ * @param {number} w 白度
1606
+ * @param {number} b 黑度
1607
+ * @param {number} a 不透明度
1608
+ * @return {CssColorParser}
1609
+ * @example: fromHSL(0,1,1,1)
1610
+ */
1611
+ function fromHWB(h, w, b, a) {
1612
+ var res = convert.hwb.rgb(limitNumber(0, 360, h), limitNumber(0, 100, w * 100), limitNumber(0, 100, b * 100));
1613
+ return new src_CssColorParser(res[0], res[1], res[2], defaultValue(Number(a), 1));
1614
+ }
1615
+ /**
1616
+ * @description: 从解析器中产生随机颜色
1617
+ * @return {CssColorParser}
1618
+ * @author: roman_123
1619
+ */
1620
+ function fromRandom(color1, color2) {
1621
+ if (typeof color1 === 'string') {
1622
+ color1 = parseCssColorStr(color1);
1623
+ }
1624
+ if (typeof color2 === 'string') {
1625
+ color2 = parseCssColorStr(color2);
1626
+ }
1627
+ if (!color1 || !color2) {
1628
+ throw new Error('fail to create object from random');
1629
+ }
1630
+ var r = Math.random() * Math.abs(color2.r - color1.r) +
1631
+ Math.min(color1.r, color2.r);
1632
+ var g = Math.random() * Math.abs(color2.g - color1.g) +
1633
+ Math.min(color1.g, color2.g);
1634
+ var b = Math.random() * Math.abs(color2.b - color1.b) +
1635
+ Math.min(color1.b, color2.b);
1636
+ var a = Math.random() * Math.abs(color2.a - color1.a) +
1637
+ Math.min(color1.a, color2.a);
1638
+ return new src_CssColorParser(r, g, b, a);
1639
+ }
1640
+ /**
1641
+ * @description: 将ColorJson格式的json数据转换为解析对象
1642
+ * @param {ColorJson} json
1643
+ * @return {CssColorParser}
1644
+ * @author: roman_123
1645
+ */
1646
+ function fromJson(json) {
1647
+ return new src_CssColorParser(json.r, json.g, json.b, json.a);
1648
+ }
1649
+ /**
1650
+ * @description: 将rgba数组转换为解析对象
1651
+ * @param {Array} color
1652
+ * @return {CssColorParser}
1653
+ * @author: roman_123
1654
+ */
1655
+ function fromArray(color) {
1656
+ return new src_CssColorParser(color[0], color[1], color[2], color[3]);
1657
+ }
1658
+
1659
+ ;// CONCATENATED MODULE: ./src/main.ts
1660
+ /*
1661
+ * @Author: roman_123
1662
+ * @Description:
1663
+ * @Date: 2023-05-25 17:45:22
1664
+ * @LastEditTime: 2023-05-26 11:17:48
1665
+ */
1666
+
1667
+
1668
+
1669
+
1670
+ }();
1671
+ /******/ return __webpack_exports__;
1672
+ /******/ })()
1673
+ ;
1674
+ });