css-color-parser-h 2.0.4 → 3.0.1

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.
@@ -1,841 +0,0 @@
1
- /******/ (function() { // webpackBootstrap
2
- /******/ "use strict";
3
- /******/ // The require scope
4
- /******/ var __webpack_require__ = {};
5
- /******/
6
- /************************************************************************/
7
- /******/ /* webpack/runtime/compat get default export */
8
- /******/ !function() {
9
- /******/ // getDefaultExport function for compatibility with non-harmony modules
10
- /******/ __webpack_require__.n = function(module) {
11
- /******/ var getter = module && module.__esModule ?
12
- /******/ function() { return module['default']; } :
13
- /******/ function() { return module; };
14
- /******/ __webpack_require__.d(getter, { a: getter });
15
- /******/ return getter;
16
- /******/ };
17
- /******/ }();
18
- /******/
19
- /******/ /* webpack/runtime/define property getters */
20
- /******/ !function() {
21
- /******/ // define getter functions for harmony exports
22
- /******/ __webpack_require__.d = function(exports, definition) {
23
- /******/ for(var key in definition) {
24
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
25
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
26
- /******/ }
27
- /******/ }
28
- /******/ };
29
- /******/ }();
30
- /******/
31
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
32
- /******/ !function() {
33
- /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
34
- /******/ }();
35
- /******/
36
- /******/ /* webpack/runtime/make namespace object */
37
- /******/ !function() {
38
- /******/ // define __esModule on exports
39
- /******/ __webpack_require__.r = function(exports) {
40
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
41
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
42
- /******/ }
43
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
44
- /******/ };
45
- /******/ }();
46
- /******/
47
- /************************************************************************/
48
- var __webpack_exports__ = {};
49
- // ESM COMPAT FLAG
50
- __webpack_require__.r(__webpack_exports__);
51
-
52
- // EXPORTS
53
- __webpack_require__.d(__webpack_exports__, {
54
- "CssColorParser": function() { return /* reexport */ src_CssColorParser; },
55
- "fromArray": function() { return /* reexport */ fromArray; },
56
- "fromColorStr": function() { return /* reexport */ fromColorStr; },
57
- "fromHSL": function() { return /* reexport */ fromHSL; },
58
- "fromHWB": function() { return /* reexport */ fromHWB; },
59
- "fromJson": function() { return /* reexport */ fromJson; },
60
- "fromRandom": function() { return /* reexport */ fromRandom; },
61
- "parseCssColorStr": function() { return /* reexport */ parseCssColorStr; },
62
- "parseHEX": function() { return /* reexport */ parseHEX; },
63
- "parseHSLA": function() { return /* reexport */ parseHSLA; },
64
- "parseHWB": function() { return /* reexport */ parseHWB; },
65
- "parseKeyWord": function() { return /* reexport */ parseKeyWord; },
66
- "parseRGBA": function() { return /* reexport */ parseRGBA; }
67
- });
68
-
69
- ;// CONCATENATED MODULE: ./src/utils/common.ts
70
- var Check = /** @class */ (function () {
71
- function Check() {
72
- }
73
- Check.type = function (paramName, value, type) {
74
- var valueType = typeof value;
75
- if (valueType !== type) {
76
- throw new Error("Expected ".concat(paramName, " to be typeof ").concat(type, ", actual typeof was ").concat(valueType));
77
- }
78
- };
79
- Check.types = function (paramName, value, types) {
80
- var valueType = typeof value;
81
- var isContained = types.includes(valueType);
82
- if (!isContained) {
83
- throw new Error("Expected ".concat(paramName, " to be typeof ").concat(types.join('|'), ", actual typeof was ").concat(valueType));
84
- }
85
- };
86
- Check.numValue = function (paramName, value, min, max) {
87
- Check.numMinValue(paramName, value, min);
88
- Check.numMaxValue(paramName, value, max);
89
- };
90
- Check.numMinValue = function (paramName, value, min) {
91
- if (value < min) {
92
- throw new Error("Expected ".concat(paramName, " to > ").concat(min, ", actual value was ").concat(value));
93
- }
94
- };
95
- Check.numMaxValue = function (paramName, value, max) {
96
- if (value > max) {
97
- throw new Error("Expected ".concat(paramName, " to < ").concat(max, ", actual value was ").concat(value));
98
- }
99
- };
100
- Check.numIsInt = function (paramName, value, expectIsInt) {
101
- var isInt = Math.floor(value) === value;
102
- if (isInt !== expectIsInt) {
103
- throw new Error("Expected ".concat(paramName, " to ").concat(expectIsInt ? 'Integer' : 'Float', ", actual value was ").concat(isInt ? 'Integer' : 'Float'));
104
- }
105
- };
106
- return Check;
107
- }());
108
-
109
- var ColorJson = /** @class */ (function () {
110
- function ColorJson() {
111
- }
112
- return ColorJson;
113
- }());
114
-
115
- function defaultValue(v, defaultV) {
116
- if (v === undefined || v === null) {
117
- return defaultV;
118
- }
119
- if (isNaN(v) && typeof defaultV === 'number') {
120
- return defaultV;
121
- }
122
- return v;
123
- }
124
- function limitNumber(min, max, v) {
125
- if (v > max) {
126
- v = max;
127
- }
128
- else if (v < min) {
129
- v = min;
130
- }
131
- return v;
132
- }
133
- function setNumberPrecision(number, precision) {
134
- if (number === void 0) { number = 0; }
135
- var prec = Math.pow(10, precision);
136
- return Math.round(number * prec) / prec;
137
- }
138
-
139
- ;// CONCATENATED MODULE: ./src/utils/color-tools.ts
140
-
141
- /*
142
- * @Author: roman_123
143
- * @Description: 部分核心代码修改自cesium
144
- * @Date: 2022-11-28 17:32:57
145
- * @LastEditTime: 2022-12-06 00:02:21
146
- */
147
- var CssColorStringParser = /** @class */ (function () {
148
- function CssColorStringParser() {
149
- }
150
- // 去除字符串内所有空格
151
- CssColorStringParser.clearStrSpace = function (v) {
152
- return v.replace(/\s/g, '');
153
- };
154
- // 去除字符串两边空格,将中间多个空格合并为一个
155
- CssColorStringParser.trimStr = function (v) {
156
- v = v.replace(/\s+/g, ' ');
157
- return v.trim();
158
- };
159
- // 解析3位16进制 #fff #fff0
160
- CssColorStringParser.parse3BitsHEX = function (v) {
161
- var regx = /^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i;
162
- var res = regx.exec(v);
163
- if (res) {
164
- var res4 = defaultValue(res[4], 'f');
165
- var r = CssColorStringParser._parseResStrForRgb(parseInt(res[1] + res[1], 16));
166
- var g = CssColorStringParser._parseResStrForRgb(parseInt(res[2] + res[2], 16));
167
- var b = CssColorStringParser._parseResStrForRgb(parseInt(res[3] + res[3], 16));
168
- var a = CssColorStringParser._parsePercent(parseInt(res4 + res4, 16) / 255);
169
- return [r, g, b, a];
170
- }
171
- return null;
172
- };
173
- // 解析6位16进制 #ffffff #ffffff00
174
- CssColorStringParser.parse6BitsHEX = function (v) {
175
- var regx = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i;
176
- var res = regx.exec(v);
177
- if (res) {
178
- var res4 = defaultValue(res[4], 'ff');
179
- var r = CssColorStringParser._parseResStrForRgb(parseInt(res[1], 16));
180
- var g = CssColorStringParser._parseResStrForRgb(parseInt(res[2], 16));
181
- var b = CssColorStringParser._parseResStrForRgb(parseInt(res[3], 16));
182
- var a = CssColorStringParser._parsePercent(parseInt(res4, 16) / 255.0);
183
- return [r, g, b, a];
184
- }
185
- return null;
186
- };
187
- // 解析rgb rgba rgb(255,255,255) rgba(255,255,255,1) rgba(100%,100%,100%, 1)
188
- CssColorStringParser.parseRGBA = function (v) {
189
- var regx = /^rgba?\(([0-9.]+%?),([0-9.]+%?),([0-9.]+%?)(?:,([0-9.]+%?))?\)$/i;
190
- var res = regx.exec(v);
191
- if (res) {
192
- var r = CssColorStringParser._parseResStrForRgb(res[1]);
193
- var g = CssColorStringParser._parseResStrForRgb(res[2]);
194
- var b = CssColorStringParser._parseResStrForRgb(res[3]);
195
- var a = CssColorStringParser._parsePercent(res[4]);
196
- return [r, g, b, a];
197
- }
198
- return null;
199
- };
200
- // 解析hsl hsla hsl(360,100%,100%) hsla(360,100%,100%,1)
201
- CssColorStringParser.parseHSLA = function (v) {
202
- var regx = /^hsla?\(([0-9.]+)(?:deg)?,([0-9.]+%?),([0-9.]+%?)(?:,([0-9.]+%?))?\)$/i;
203
- var res = regx.exec(v);
204
- if (res) {
205
- var h = CssColorStringParser._parseResStrForHue(res[1]);
206
- var s = CssColorStringParser._parsePercent(res[2]);
207
- var l = CssColorStringParser._parsePercent(res[3]);
208
- var a = CssColorStringParser._parsePercent(res[4]);
209
- return [h, s, l, a];
210
- }
211
- return null;
212
- };
213
- // 解析hwb
214
- CssColorStringParser.parseHWB = function (v) {
215
- var regx = /^hwb\s?\(\s?([0-9.]+)(?:deg)?\s([0-9.]+%?)\s([0-9.]+%?)\s?(?:\/\s?([0-9.]+%?))?\s?\)$/i;
216
- var res = regx.exec(v);
217
- if (res) {
218
- var h = CssColorStringParser._parseResStrForHue(res[1]);
219
- var w = CssColorStringParser._parsePercent(res[2]);
220
- var b = CssColorStringParser._parsePercent(res[3]);
221
- var a = CssColorStringParser._parsePercent(res[4]);
222
- return [h, w, b, a];
223
- }
224
- return null;
225
- };
226
- // 解析rgb rgb(178 57 57 / 44%) 字符串中存在空格,因此使用清除两侧空格的原始字符串
227
- CssColorStringParser.parseRGBA2 = function (v) {
228
- var regx = /^rgba?\s?\(\s?([0-9.]+%?)\s?([0-9.]+%?)\s?([0-9.]+%?)(?:\s?\/\s?([0-9.]+%?))?\s?\)$/i;
229
- var res = regx.exec(v);
230
- if (res) {
231
- var r = CssColorStringParser._parseResStrForRgb(res[1]);
232
- var g = CssColorStringParser._parseResStrForRgb(res[2]);
233
- var b = CssColorStringParser._parseResStrForRgb(res[3]);
234
- var a = CssColorStringParser._parsePercent(res[4]);
235
- return [r, g, b, a];
236
- }
237
- return null;
238
- };
239
- // 解析hsl hsl(215 85% 62% / 1)
240
- CssColorStringParser.parseHSLA2 = function (v) {
241
- var regx = /^hsla?\s?\(\s?([0-9.]+)(?:deg)?\s([0-9.]+%?)\s([0-9.]+%?)\s?(?:\/\s?([0-9.]+%?))?\s?\)$/i;
242
- var res = regx.exec(v);
243
- if (res) {
244
- var h = CssColorStringParser._parseResStrForHue(res[1]);
245
- var s = CssColorStringParser._parsePercent(res[2]);
246
- var l = CssColorStringParser._parsePercent(res[3]);
247
- var a = CssColorStringParser._parsePercent(res[4]);
248
- return [h, s, l, a];
249
- }
250
- return null;
251
- };
252
- // 将结果解析为数字
253
- CssColorStringParser._parseResStrForRgb = function (v) {
254
- if (typeof v === 'string') {
255
- v = parseFloat(v) / ('%' === v.substr(-1) ? 100.0 / 255 : 1);
256
- }
257
- if (isNaN(v)) {
258
- v = 1;
259
- }
260
- return limitNumber(0, 255, v);
261
- };
262
- CssColorStringParser._parseResStrForHue = function (v) {
263
- if (typeof v === 'string') {
264
- v = parseFloat(v);
265
- }
266
- if (isNaN(v)) {
267
- v = 0;
268
- }
269
- return limitNumber(0, 360, v);
270
- };
271
- CssColorStringParser._parsePercent = function (v) {
272
- if (typeof v === 'string') {
273
- v = parseFloat(v) / ('%' === v.substr(-1) ? 100.0 : 1);
274
- }
275
- if (isNaN(v)) {
276
- v = 1;
277
- }
278
- return limitNumber(0, 1, v);
279
- };
280
- return CssColorStringParser;
281
- }());
282
-
283
-
284
- ;// CONCATENATED MODULE: ./src/CssColorParser.ts
285
- /*
286
- * @Descripttion: 颜色解析器
287
- * @version: 1.0.0
288
- * @Author: roman_123
289
- * @Date: 2021-01-19 09:22:11
290
- * @LastEditors: Roman
291
- * @LastEditTime: 2023-06-03 11:12:30
292
- */
293
-
294
-
295
- var CssColorParser = /** @class */ (function () {
296
- function CssColorParser(red, green, blue, alpha) {
297
- this.r = 255;
298
- this.g = 255;
299
- this.b = 255;
300
- this.a = 1;
301
- this._outColorPrecision = 2;
302
- this._outAlphaPrecision = 2;
303
- this.setColor(red, green, blue, alpha);
304
- }
305
- /**
306
- * @description: 设置CssColorParser实例输出的精度
307
- * @param {number} colorPrecision 输出颜色的精度
308
- * @param {number} outAlphaPrecision 输出透明度的精度
309
- * @return {CssColorParser}
310
- */
311
- CssColorParser.prototype.setOutPrecision = function (colorPrecision, outAlphaPrecision) {
312
- Check.type('colorPrecision', colorPrecision, 'number');
313
- Check.type('outAlphaPrecision', outAlphaPrecision, 'number');
314
- Check.numMinValue('colorPrecision', colorPrecision, 0);
315
- Check.numMinValue('outAlphaPrecision', outAlphaPrecision, 0);
316
- Check.numIsInt('colorPrecision', colorPrecision, true);
317
- Check.numIsInt('outAlphaPrecision', outAlphaPrecision, true);
318
- this._outColorPrecision = colorPrecision;
319
- this._outAlphaPrecision = outAlphaPrecision;
320
- return this;
321
- };
322
- /**
323
- * 设置颜色
324
- * @param red
325
- * @param green
326
- * @param blue
327
- * @param alpha
328
- * @example: this.setColor(255,255,255,1)
329
- */
330
- CssColorParser.prototype.setColor = function (red, green, blue, alpha) {
331
- this.r = limitNumber(0, 255, defaultValue(Number(red), 0));
332
- this.g = limitNumber(0, 255, defaultValue(Number(green), 0));
333
- this.b = limitNumber(0, 255, defaultValue(Number(blue), 0));
334
- this.a = limitNumber(0, 1, defaultValue(Number(alpha), 1));
335
- return this;
336
- };
337
- /**
338
- * @description: 设置透明度
339
- * @param {number} alpha
340
- * @return {CssColorParser}
341
- */
342
- CssColorParser.prototype.setAlpha = function (alpha) {
343
- this.a = limitNumber(0, 1, defaultValue(Number(alpha), 1));
344
- return this;
345
- };
346
- /**
347
- * @description: 设置红色值
348
- * @param {number} red
349
- * @return {CssColorParser}
350
- */
351
- CssColorParser.prototype.setRed = function (red) {
352
- this.r = limitNumber(0, 255, defaultValue(Number(red), 0));
353
- return this;
354
- };
355
- /**
356
- * @description: 设置绿色值
357
- * @param {number} green
358
- * @return {CssColorParser}
359
- */
360
- CssColorParser.prototype.setGreen = function (green) {
361
- this.g = limitNumber(0, 255, defaultValue(Number(green), 0));
362
- return this;
363
- };
364
- /**
365
- * @description: 设置蓝色值
366
- * @param {number} blue
367
- * @return {CssColorParser}
368
- */
369
- CssColorParser.prototype.setBlue = function (blue) {
370
- this.b = limitNumber(0, 255, defaultValue(Number(blue), 0));
371
- return this;
372
- };
373
- /**
374
- * @description: 返回rgba格式的css字符串
375
- * @return {string}
376
- */
377
- CssColorParser.prototype.toRGBA = function () {
378
- var color = this.toJson();
379
- if (color.a === 1) {
380
- return "rgb(".concat(color.r, ",").concat(color.g, ",").concat(color.b, ")");
381
- }
382
- return "rgba(".concat(color.r, ",").concat(color.g, ",").concat(color.b, ",").concat(color.a, ")");
383
- };
384
- /**
385
- * @description: 返回字符串
386
- * @return {string}
387
- */
388
- CssColorParser.prototype.toString = function () {
389
- return this.toRGBA();
390
- };
391
- /**
392
- * @description: 归一化
393
- * @return {array}
394
- */
395
- CssColorParser.prototype.toNormalize = function () {
396
- var r = setNumberPrecision(this.r / 255, this._outColorPrecision);
397
- var g = setNumberPrecision(this.g / 255, this._outColorPrecision);
398
- var b = setNumberPrecision(this.b / 255, this._outColorPrecision);
399
- var a = setNumberPrecision(this.a, this._outAlphaPrecision);
400
- return [r, g, b, a];
401
- };
402
- /**
403
- * @description: 返回16进制格式的css字符串
404
- * @return {string}
405
- */
406
- CssColorParser.prototype.toHEX = function () {
407
- var color = this.toJson();
408
- var r = color.r.toString(16);
409
- if (r.length < 2) {
410
- r = "0".concat(r);
411
- }
412
- var g = color.g.toString(16);
413
- if (g.length < 2) {
414
- g = "0".concat(g);
415
- }
416
- var b = color.b.toString(16);
417
- if (b.length < 2) {
418
- b = "0".concat(b);
419
- }
420
- // 由于tojson后a会丢失精度,此处使用this.a
421
- if (this.a < 1) {
422
- var hexAlpha = parseInt((this.a * 255).toFixed()).toString(16);
423
- if (hexAlpha.length < 2) {
424
- hexAlpha = "0".concat(hexAlpha);
425
- }
426
- return "#".concat(r).concat(g).concat(b).concat(hexAlpha);
427
- }
428
- return "#".concat(r).concat(g).concat(b);
429
- };
430
- /**
431
- * @description: 返回rgba数组
432
- * @return {array}
433
- */
434
- CssColorParser.prototype.toArray = function () {
435
- var color = this.toJson();
436
- return [color.r, color.g, color.b, color.a];
437
- };
438
- /**
439
- * @description: 返回ColorJson
440
- * @return {ColorJson}
441
- */
442
- CssColorParser.prototype.toJson = function () {
443
- return {
444
- r: setNumberPrecision(this.r, this._outColorPrecision),
445
- g: setNumberPrecision(this.g, this._outColorPrecision),
446
- b: setNumberPrecision(this.b, this._outColorPrecision),
447
- a: setNumberPrecision(this.a, this._outAlphaPrecision),
448
- };
449
- };
450
- /**
451
- * @description: 返回反色的CssColorParser实例
452
- * @return {CssColorParser}
453
- */
454
- CssColorParser.prototype.toInvert = function () {
455
- var r = 255 - this.r;
456
- var g = 255 - this.g;
457
- var b = 255 - this.b;
458
- var a = 1 - this.a;
459
- return new CssColorParser(r, g, b, a);
460
- };
461
- /**
462
- * @description: 拷贝
463
- * @return {CssColorParser}
464
- */
465
- CssColorParser.prototype.clone = function () {
466
- return new CssColorParser(this.r, this.g, this.b, this.a);
467
- };
468
- /**
469
- * @description: 比较两个解析对象的数据是否相等
470
- * @param {string} color
471
- * @return {boolean}
472
- */
473
- CssColorParser.prototype.equals = function (color) {
474
- if (this === color) {
475
- return true;
476
- }
477
- else {
478
- var json1 = this.toJson();
479
- var json2 = color.toJson();
480
- return (json1.r === json2.r &&
481
- json1.g === json2.g &&
482
- json1.b === json2.g &&
483
- json1.a === json2.a);
484
- }
485
- };
486
- /**
487
- * @description: 反色
488
- * @return {CssColorParser}
489
- */
490
- CssColorParser.prototype.setInvert = function () {
491
- this.r = 255 - this.r;
492
- this.g = 255 - this.g;
493
- this.b = 255 - this.b;
494
- this.a = 1 - this.a;
495
- return this;
496
- };
497
- /**
498
- * @description: 乘以倍数
499
- * @param {number} scalar
500
- * @param {boolean} isSetAlpha 透明度值是否参与计算(默认:是)
501
- * @return {CssColorParser}
502
- */
503
- CssColorParser.prototype.multiplyByScalar = function (scalar, isSetAlpha) {
504
- if (isSetAlpha === void 0) { isSetAlpha = true; }
505
- var r = this.r * scalar;
506
- var g = this.g * scalar;
507
- var b = this.b * scalar;
508
- var a = isSetAlpha ? this.a * scalar : this.a;
509
- return this.setColor(r, g, b, a);
510
- };
511
- /**
512
- * @description: 除以倍数
513
- * @param {number} scalar
514
- * @param {boolean} isSetAlpha 透明度值是否参与计算(默认:是)
515
- * @return {CssColorParser}
516
- */
517
- CssColorParser.prototype.divideByScalar = function (scalar, isSetAlpha) {
518
- if (isSetAlpha === void 0) { isSetAlpha = true; }
519
- var r = this.r / scalar;
520
- var g = this.g / scalar;
521
- var b = this.b / scalar;
522
- var a = isSetAlpha ? this.a / scalar : this.a;
523
- return this.setColor(r, g, b, a);
524
- };
525
- /**
526
- * @description: 实例相加
527
- * @param {CssColorParser} colorParser
528
- * @param {boolean} isSetAlpha 透明度值是否参与计算(默认:是)
529
- * @return {CssColorParser}
530
- */
531
- CssColorParser.prototype.add = function (colorParser, isSetAlpha) {
532
- if (isSetAlpha === void 0) { isSetAlpha = true; }
533
- var r = this.r + colorParser.r;
534
- var g = this.g + colorParser.g;
535
- var b = this.b + colorParser.b;
536
- var a = isSetAlpha ? this.a + colorParser.a : this.a;
537
- return this.setColor(r, g, b, a);
538
- };
539
- /**
540
- * @description: 实例相减
541
- * @param {CssColorParser} colorParser
542
- * @param {boolean} isSetAlpha 透明度值是否参与计算(默认:是)
543
- * @return {CssColorParser}
544
- */
545
- CssColorParser.prototype.subtract = function (colorParser, isSetAlpha) {
546
- if (isSetAlpha === void 0) { isSetAlpha = true; }
547
- var r = this.r - colorParser.r;
548
- var g = this.g - colorParser.g;
549
- var b = this.b - colorParser.b;
550
- var a = isSetAlpha ? this.a - colorParser.a : this.a;
551
- return this.setColor(r, g, b, a);
552
- };
553
- /**
554
- * @description: 实例相乘
555
- * @param {CssColorParser} colorParser
556
- * @param {boolean} isSetAlpha 透明度值是否参与计算(默认:是)
557
- * @return {CssColorParser}
558
- */
559
- CssColorParser.prototype.multiply = function (colorParser, isSetAlpha) {
560
- if (isSetAlpha === void 0) { isSetAlpha = true; }
561
- var r = this.r * colorParser.r;
562
- var g = this.g * colorParser.g;
563
- var b = this.b * colorParser.b;
564
- var a = isSetAlpha ? this.a * colorParser.a : this.a;
565
- return this.setColor(r, g, b, a);
566
- };
567
- /**
568
- * @description: 实例相除
569
- * @param {CssColorParser} colorParser
570
- * @param {boolean} isSetAlpha 透明度值是否参与计算(默认:是)
571
- * @return {CssColorParser}
572
- */
573
- CssColorParser.prototype.divide = function (colorParser, isSetAlpha) {
574
- if (isSetAlpha === void 0) { isSetAlpha = true; }
575
- var r = this.r / colorParser.r;
576
- var g = this.g / colorParser.g;
577
- var b = this.b / colorParser.b;
578
- var a = isSetAlpha ? this.a / colorParser.a : this.a;
579
- return this.setColor(r, g, b, a);
580
- };
581
- /**
582
- * @description: 颜色RGB加上数字
583
- * @param {number} num
584
- * @return {CssColorParser}
585
- */
586
- CssColorParser.prototype.addNumberForRGB = function (num) {
587
- this.r = this.r + num;
588
- this.g = this.g + num;
589
- this.b = this.b + num;
590
- return this;
591
- };
592
- /**
593
- * @description: 透明度加上数字
594
- * @param {number} num
595
- * @return {CssColorParser}
596
- */
597
- CssColorParser.prototype.addNumberForAlpha = function (num) {
598
- this.a = this.a + num;
599
- return this;
600
- };
601
- /**
602
- * @description: 解析16进制颜色
603
- * @param {string} v
604
- * @return {CssColorParser}
605
- * @example: CssColorParser.parseHEX('#FFF')
606
- */
607
- CssColorParser.parseHEX = function (v) {
608
- var cssStr = CssColorStringParser.clearStrSpace(v);
609
- var res = CssColorStringParser.parse3BitsHEX(cssStr);
610
- if (!res) {
611
- res = CssColorStringParser.parse6BitsHEX(cssStr);
612
- }
613
- return res && CssColorParser.fromArray(res);
614
- };
615
- /**
616
- * @description: 解析rgba、rgb颜色
617
- * @param {string} v
618
- * @return {CssColorParser}
619
- * @example: CssColorParser.parseRGBA('rgba(255,255,255,1)')
620
- */
621
- CssColorParser.parseRGBA = function (v) {
622
- var cssStr = CssColorStringParser.clearStrSpace(v);
623
- var res = CssColorStringParser.parseRGBA(cssStr);
624
- if (!res) {
625
- var cssStr2 = CssColorStringParser.trimStr(v);
626
- res = CssColorStringParser.parseRGBA2(cssStr2);
627
- }
628
- return res && CssColorParser.fromArray(res);
629
- };
630
- /**
631
- * @description: 将ColorJson格式的json数据转换为解析对象
632
- * @param {ColorJson} json
633
- * @return {CssColorParser}
634
- * @example: CssColorParser.fromJson({r: 255, g: 255, b: 255, a: 1})
635
- */
636
- CssColorParser.fromJson = function (json) {
637
- return new CssColorParser(json.r, json.g, json.b, json.a);
638
- };
639
- /**
640
- * @description: 将RGBA数组转换为解析对象
641
- * @param {Array} color
642
- * @return {CssColorParser}
643
- * @example: CssColorParser.fromArray([255,255,255,1])
644
- */
645
- CssColorParser.fromArray = function (color) {
646
- return new CssColorParser(color[0], color[1], color[2], color[3]);
647
- };
648
- /**
649
- * @description: 产生随机颜色
650
- * @return {CssColorParser}
651
- * @example: CssColorParser.fromRandom(new CssColorParser(0,0,0,0), new CssColorParser(255,255,255,1))
652
- */
653
- CssColorParser.fromRandom = function (color1, color2) {
654
- var r = Math.random() * Math.abs(color2.r - color1.r) +
655
- Math.min(color1.r, color2.r);
656
- var g = Math.random() * Math.abs(color2.g - color1.g) +
657
- Math.min(color1.g, color2.g);
658
- var b = Math.random() * Math.abs(color2.b - color1.b) +
659
- Math.min(color1.b, color2.b);
660
- var a = Math.random() * Math.abs(color2.a - color1.a) +
661
- Math.min(color1.a, color2.a);
662
- return new CssColorParser(r, g, b, a);
663
- };
664
- /**
665
- * @description: 颜色序列化数组转换为CssColorParser对象实例
666
- * @param {array} colorArr
667
- * @example: CssColorParser.fromNormaliz([1, 0, 0, 1])
668
- */
669
- CssColorParser.fromNormalize = function (colorArr) {
670
- var r = colorArr[0] * 255;
671
- var g = colorArr[1] * 255;
672
- var b = colorArr[2] * 255;
673
- var a = colorArr[3];
674
- return CssColorParser.fromArray([r, g, b, a]);
675
- };
676
- return CssColorParser;
677
- }());
678
- /* harmony default export */ var src_CssColorParser = (CssColorParser);
679
-
680
- ;// CONCATENATED MODULE: external "color-convert"
681
- var external_color_convert_namespaceObject = require("color-convert");
682
- var external_color_convert_default = /*#__PURE__*/__webpack_require__.n(external_color_convert_namespaceObject);
683
- ;// CONCATENATED MODULE: ./src/utils/parsers.ts
684
-
685
-
686
-
687
-
688
- /**
689
- * @description: 解析颜色关键字
690
- * @param {string} v
691
- * @return {CssColorParser}
692
- * @example: parseKeyWord('red')
693
- */
694
- function parseKeyWord(v) {
695
- var cssStr = CssColorStringParser.clearStrSpace(v);
696
- var res = external_color_convert_default().keyword.rgb(cssStr);
697
- return res && fromArray(res);
698
- }
699
- /**
700
- * @description: 解析16进制字符串
701
- * @param {string} v
702
- * @return {CssColorParser}
703
- * @example: parseHEX('#FFF')
704
- */
705
- function parseHEX(v) {
706
- return src_CssColorParser.parseHEX(v);
707
- }
708
- /**
709
- * @description: 解析RGBA
710
- * @param {string} v
711
- * @return {CssColorParser}
712
- * @example: parseRGBA('rgba(255,255,255,1)')
713
- */
714
- function parseRGBA(v) {
715
- return src_CssColorParser.parseRGBA(v);
716
- }
717
- /**
718
- * @description: 解析HSLA
719
- * @param {string} v
720
- * @return {CssColorParser}
721
- * @example: parseHSLA('hsla(215,85%,62%,0.8)')
722
- */
723
- function parseHSLA(v) {
724
- var cssStr = CssColorStringParser.clearStrSpace(v);
725
- var res = CssColorStringParser.parseHSLA(cssStr);
726
- if (!res) {
727
- var cssStr2 = CssColorStringParser.trimStr(v);
728
- res = CssColorStringParser.parseHSLA2(cssStr2);
729
- }
730
- return res && fromHSL(res[0], res[1], res[2], res[3]);
731
- }
732
- /**
733
- * @description: 解析HWB
734
- * @param {string} v
735
- * @return {CssColorParser}
736
- * @example: parseHWB('hwb(215deg 30% 6% / 80%)')
737
- */
738
- function parseHWB(v) {
739
- var cssStr2 = CssColorStringParser.trimStr(v);
740
- var res = CssColorStringParser.parseHWB(cssStr2);
741
- return res && fromHWB(res[0], res[1], res[2], res[3]);
742
- }
743
- /**
744
- * @description: 将css字符串转换为解析对象
745
- * @param {string} v
746
- * @return {CssColorParser}
747
- * @example: parseCssColorStr('rgba(255,255,255,1)')
748
- */
749
- function parseCssColorStr(v) {
750
- Check.type('color', v, 'string');
751
- return parseHEX(v) || parseRGBA(v) || parseKeyWord(v) || parseHSLA(v) || parseHWB(v);
752
- }
753
- /**
754
- * **Deprecated method.** Use `parseCssColorStr()` instead.
755
- * @description: since 2.0.1
756
- * @deprecated
757
- * @param {string} v
758
- * @return {CssColorParser}
759
- * @example: fromColorStr('rgba(255,255,255,1)')
760
- */
761
- function fromColorStr(v) {
762
- return parseCssColorStr(v);
763
- }
764
- /**
765
- * @description: 将HSL色彩模式转换为解析对象
766
- * @param {number} hue 色相
767
- * @param {number} saturation 饱和度
768
- * @param {number} lightness 亮度
769
- * @param {number} alpha 不透明度
770
- * @return {CssColorParser}
771
- * @example: fromHSL(0,1,1,1)
772
- */
773
- function fromHSL(h, s, l, a) {
774
- var res = external_color_convert_default().hsl.rgb(limitNumber(0, 360, h), limitNumber(0, 100, s * 100), limitNumber(0, 100, l * 100));
775
- return new src_CssColorParser(res[0], res[1], res[2], defaultValue(Number(a), 1));
776
- }
777
- /**
778
- * @description: 将HWB色彩模式转换为解析对象
779
- * @param {number} h 色调
780
- * @param {number} w 白度
781
- * @param {number} b 黑度
782
- * @param {number} a 不透明度
783
- * @return {CssColorParser}
784
- * @example: fromHSL(0,1,1,1)
785
- */
786
- function fromHWB(h, w, b, a) {
787
- var res = external_color_convert_default().hwb.rgb(limitNumber(0, 360, h), limitNumber(0, 100, w * 100), limitNumber(0, 100, b * 100));
788
- return new src_CssColorParser(res[0], res[1], res[2], defaultValue(Number(a), 1));
789
- }
790
- /**
791
- * @description: 产生随机颜色
792
- * @return {CssColorParser}
793
- * @example: fromRandom('#000', ''#fff)
794
- */
795
- function fromRandom(color1, color2) {
796
- if (typeof color1 === 'string') {
797
- color1 = parseCssColorStr(color1);
798
- }
799
- if (typeof color2 === 'string') {
800
- color2 = parseCssColorStr(color2);
801
- }
802
- if (!color1 || !color2) {
803
- throw new Error('fail to create object from random');
804
- }
805
- return src_CssColorParser.fromRandom(color1, color2);
806
- }
807
- /**
808
- * @description: 将ColorJson格式的json数据转换为解析对象
809
- * @param {ColorJson} json
810
- * @return {CssColorParser}
811
- * @example: fromJson({r: 255, g:255, b:255, a:1})
812
- */
813
- function fromJson(json) {
814
- return src_CssColorParser.fromJson(json);
815
- }
816
- /**
817
- * @description: 将rgba数组转换为解析对象
818
- * @param {Array} color
819
- * @return {CssColorParser}
820
- * @author: roman_123
821
- */
822
- function fromArray(color) {
823
- return src_CssColorParser.fromArray(color);
824
- }
825
-
826
- ;// CONCATENATED MODULE: ./src/main.ts
827
- /*
828
- * @Author: roman_123
829
- * @Description:
830
- * @Date: 2023-05-25 17:45:22
831
- * @LastEditTime: 2023-05-26 15:54:02
832
- */
833
-
834
-
835
-
836
-
837
- var __webpack_export_target__ = exports;
838
- for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i];
839
- if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true });
840
- /******/ })()
841
- ;