css-color-parser-h 2.0.0 → 2.0.2

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.
@@ -2,7 +2,7 @@
2
2
  * @Author: roman_123
3
3
  * @Description:
4
4
  * @Date: 2023-05-26 13:29:45
5
- * @LastEditTime: 2023-05-26 13:58:07
5
+ * @LastEditTime: 2023-05-26 16:10:51
6
6
  */
7
7
  export class ColorJson {
8
8
  r: number
@@ -12,35 +12,35 @@ export class ColorJson {
12
12
  }
13
13
  declare module 'css-color-parser-h' {
14
14
  /**
15
- * @description: 将css KeyWord字符串转换为解析对象
15
+ * @description: 解析颜色关键字
16
16
  * @param {string} v
17
17
  * @return {CssColorParser}
18
18
  * @example: parseKeyWord('red')
19
19
  */
20
20
  export function parseKeyWord(v: string): CssColorParser
21
21
  /**
22
- * @description: 将css HEX字符串转换为解析对象
22
+ * @description: 解析16进制字符串
23
23
  * @param {string} v
24
24
  * @return {CssColorParser}
25
- * @example: parseHEX('#ccc')
25
+ * @example: parseHEX('#FFF')
26
26
  */
27
27
  export function parseHEX(v: string): CssColorParser
28
28
  /**
29
- * @description: 将css RGBA字符串转换为解析对象
29
+ * @description: 解析RGBA
30
30
  * @param {string} v
31
31
  * @return {CssColorParser}
32
- * @example: parseRGBA('rgb(255,255,255)')
32
+ * @example: parseRGBA('rgba(255,255,255,1)')
33
33
  */
34
34
  export function parseRGBA(v: string): CssColorParser
35
35
  /**
36
- * @description: 将css HSLA字符串转换为解析对象
36
+ * @description: 解析HSLA
37
37
  * @param {string} v
38
38
  * @return {CssColorParser}
39
- * @example: parseHSLA('hsl(215 85% 62% / 0.8)')
39
+ * @example: parseHSLA('hsla(215,85%,62%,0.8)')
40
40
  */
41
41
  export function parseHSLA(v: string): CssColorParser
42
42
  /**
43
- * @description: 将css HSLA字符串转换为解析对象
43
+ * @description: 解析HWB
44
44
  * @param {string} v
45
45
  * @return {CssColorParser}
46
46
  * @example: parseHWB('hwb(215deg 30% 6% / 80%)')
@@ -93,9 +93,9 @@ declare module 'css-color-parser-h' {
93
93
  a?: number
94
94
  ): CssColorParser
95
95
  /**
96
- * @description: 从解析器中产生随机颜色
96
+ * @description: 产生随机颜色
97
97
  * @return {CssColorParser}
98
- * @author: roman_123
98
+ * @example: fromRandom('#000', ''#fff)
99
99
  */
100
100
  export function fromRandom(
101
101
  color1: string | CssColorParser,
@@ -120,14 +120,6 @@ declare module 'css-color-parser-h' {
120
120
  g: number
121
121
  b: number
122
122
  a: number
123
- /**
124
- * 设置颜色
125
- * @param red
126
- * @param green
127
- * @param blue
128
- * @param alpha
129
- * @example: const parser = new CssColorParser(255,255,255,1)
130
- */
131
123
  constructor(
132
124
  red?: number | string,
133
125
  green?: number | string,
@@ -197,5 +189,42 @@ declare module 'css-color-parser-h' {
197
189
  * @author: roman_123
198
190
  */
199
191
  equals(color: any): boolean
192
+ /**
193
+ * @description: 解析16进制颜色
194
+ * @param {string} v
195
+ * @return {CssColorParser}
196
+ * @example: parseHEX('#FFF')
197
+ */
198
+ static parseHEX(v: string): CssColorParser
199
+ /**
200
+ * @description: 解析rgba、rgb颜色
201
+ * @param {string} v
202
+ * @return {CssColorParser}
203
+ * @example: parseRGBA('rgba(255,255,255,1)')
204
+ */
205
+ static parseRGBA(v: string): CssColorParser
206
+ /**
207
+ * @description: 将ColorJson格式的json数据转换为解析对象
208
+ * @param {ColorJson} json
209
+ * @return {CssColorParser}
210
+ * @example: fromJson({r: 255, g: 255, b: 255, a: 1})
211
+ */
212
+ static fromJson(json: ColorJson): CssColorParser
213
+ /**
214
+ * @description: 将RGBA数组转换为解析对象
215
+ * @param {Array} color
216
+ * @return {CssColorParser}
217
+ * @example: fromJson([255,255,255,1])
218
+ */
219
+ static fromArray(color: Array<number>): CssColorParser
220
+ /**
221
+ * @description: 产生随机颜色
222
+ * @return {CssColorParser}
223
+ * @example: fromRandom(new CssColorParser(0,0,0,0), new CssColorParser(255,255,255,1))
224
+ */
225
+ static fromRandom(
226
+ color1: CssColorParser,
227
+ color2: CssColorParser
228
+ ): CssColorParser
200
229
  }
201
230
  }
@@ -1,41 +1,21 @@
1
1
  /******/ (function() { // webpackBootstrap
2
2
  /******/ "use strict";
3
- /******/ var __webpack_modules__ = ({
4
-
5
- /***/ 819:
6
- /***/ (function(module) {
7
-
8
- module.exports = require("color-convert");
9
-
10
- /***/ })
11
-
12
- /******/ });
13
- /************************************************************************/
14
- /******/ // The module cache
15
- /******/ var __webpack_module_cache__ = {};
3
+ /******/ // The require scope
4
+ /******/ var __webpack_require__ = {};
16
5
  /******/
17
- /******/ // The require function
18
- /******/ function __webpack_require__(moduleId) {
19
- /******/ // Check if module is in cache
20
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
21
- /******/ if (cachedModule !== undefined) {
22
- /******/ return cachedModule.exports;
23
- /******/ }
24
- /******/ // Create a new module (and put it into the cache)
25
- /******/ var module = __webpack_module_cache__[moduleId] = {
26
- /******/ // no module.id needed
27
- /******/ // no module.loaded needed
28
- /******/ exports: {}
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;
29
16
  /******/ };
17
+ /******/ }();
30
18
  /******/
31
- /******/ // Execute the module function
32
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
33
- /******/
34
- /******/ // Return the exports of the module
35
- /******/ return module.exports;
36
- /******/ }
37
- /******/
38
- /************************************************************************/
39
19
  /******/ /* webpack/runtime/define property getters */
40
20
  /******/ !function() {
41
21
  /******/ // define getter functions for harmony exports
@@ -66,8 +46,6 @@ module.exports = require("color-convert");
66
46
  /******/
67
47
  /************************************************************************/
68
48
  var __webpack_exports__ = {};
69
- // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
70
- !function() {
71
49
  // ESM COMPAT FLAG
72
50
  __webpack_require__.r(__webpack_exports__);
73
51
 
@@ -136,6 +114,151 @@ function setNumberPrecision(number, precision) {
136
114
  return Number(number.toFixed(precision));
137
115
  }
138
116
 
117
+ ;// CONCATENATED MODULE: ./src/utils/color-tools.ts
118
+
119
+ /*
120
+ * @Author: roman_123
121
+ * @Description: 部分核心代码修改自cesium
122
+ * @Date: 2022-11-28 17:32:57
123
+ * @LastEditTime: 2022-12-06 00:02:21
124
+ */
125
+ var CssColorStringParser = /** @class */ (function () {
126
+ function CssColorStringParser() {
127
+ }
128
+ // 去除字符串内所有空格
129
+ CssColorStringParser.clearStrSpace = function (v) {
130
+ return v.replace(/\s/g, '');
131
+ };
132
+ // 去除字符串两边空格,将中间多个空格合并为一个
133
+ CssColorStringParser.trimStr = function (v) {
134
+ v = v.replace(/\s+/g, ' ');
135
+ return v.trim();
136
+ };
137
+ // 解析3位16进制 #fff #fff0
138
+ CssColorStringParser.parse3BitsHEX = function (v) {
139
+ var regx = /^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i;
140
+ var res = regx.exec(v);
141
+ if (res) {
142
+ var res4 = defaultValue(res[4], 'f');
143
+ var r = CssColorStringParser._parseResStrForRgb(parseInt(res[1] + res[1], 16));
144
+ var g = CssColorStringParser._parseResStrForRgb(parseInt(res[2] + res[2], 16));
145
+ var b = CssColorStringParser._parseResStrForRgb(parseInt(res[3] + res[3], 16));
146
+ var a = CssColorStringParser._parsePercent(parseInt(res4 + res4, 16) / 255);
147
+ return [r, g, b, a];
148
+ }
149
+ return null;
150
+ };
151
+ // 解析6位16进制 #ffffff #ffffff00
152
+ CssColorStringParser.parse6BitsHEX = function (v) {
153
+ var regx = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i;
154
+ var res = regx.exec(v);
155
+ if (res) {
156
+ var res4 = defaultValue(res[4], 'ff');
157
+ var r = CssColorStringParser._parseResStrForRgb(parseInt(res[1], 16));
158
+ var g = CssColorStringParser._parseResStrForRgb(parseInt(res[2], 16));
159
+ var b = CssColorStringParser._parseResStrForRgb(parseInt(res[3], 16));
160
+ var a = CssColorStringParser._parsePercent(parseInt(res4, 16) / 255.0);
161
+ return [r, g, b, a];
162
+ }
163
+ return null;
164
+ };
165
+ // 解析rgb rgba rgb(255,255,255) rgba(255,255,255,1) rgba(100%,100%,100%, 1)
166
+ CssColorStringParser.parseRGBA = function (v) {
167
+ var regx = /^rgba?\(([0-9.]+%?),([0-9.]+%?),([0-9.]+%?)(?:,([0-9.]+%?))?\)$/i;
168
+ var res = regx.exec(v);
169
+ if (res) {
170
+ var r = CssColorStringParser._parseResStrForRgb(res[1]);
171
+ var g = CssColorStringParser._parseResStrForRgb(res[2]);
172
+ var b = CssColorStringParser._parseResStrForRgb(res[3]);
173
+ var a = CssColorStringParser._parsePercent(res[4]);
174
+ return [r, g, b, a];
175
+ }
176
+ return null;
177
+ };
178
+ // 解析hsl hsla hsl(360,100%,100%) hsla(360,100%,100%,1)
179
+ CssColorStringParser.parseHSLA = function (v) {
180
+ var regx = /^hsla?\(([0-9.]+)(?:deg)?,([0-9.]+%?),([0-9.]+%?)(?:,([0-9.]+%?))?\)$/i;
181
+ var res = regx.exec(v);
182
+ if (res) {
183
+ var h = CssColorStringParser._parseResStrForHue(res[1]);
184
+ var s = CssColorStringParser._parsePercent(res[2]);
185
+ var l = CssColorStringParser._parsePercent(res[3]);
186
+ var a = CssColorStringParser._parsePercent(res[4]);
187
+ return [h, s, l, a];
188
+ }
189
+ return null;
190
+ };
191
+ // 解析hwb
192
+ CssColorStringParser.parseHWB = function (v) {
193
+ var regx = /^hwb\s?\(\s?([0-9.]+)(?:deg)?\s([0-9.]+%?)\s([0-9.]+%?)\s?(?:\/\s?([0-9.]+%?))?\s?\)$/i;
194
+ var res = regx.exec(v);
195
+ if (res) {
196
+ var h = CssColorStringParser._parseResStrForHue(res[1]);
197
+ var w = CssColorStringParser._parsePercent(res[2]);
198
+ var b = CssColorStringParser._parsePercent(res[3]);
199
+ var a = CssColorStringParser._parsePercent(res[4]);
200
+ return [h, w, b, a];
201
+ }
202
+ return null;
203
+ };
204
+ // 解析rgb rgb(178 57 57 / 44%) 字符串中存在空格,因此使用清除两侧空格的原始字符串
205
+ CssColorStringParser.parseRGBA2 = function (v) {
206
+ var regx = /^rgba?\s?\(\s?([0-9.]+%?)\s?([0-9.]+%?)\s?([0-9.]+%?)(?:\s?\/\s?([0-9.]+%?))?\s?\)$/i;
207
+ var res = regx.exec(v);
208
+ if (res) {
209
+ var r = CssColorStringParser._parseResStrForRgb(res[1]);
210
+ var g = CssColorStringParser._parseResStrForRgb(res[2]);
211
+ var b = CssColorStringParser._parseResStrForRgb(res[3]);
212
+ var a = CssColorStringParser._parsePercent(res[4]);
213
+ return [r, g, b, a];
214
+ }
215
+ return null;
216
+ };
217
+ // 解析hsl hsl(215 85% 62% / 1)
218
+ CssColorStringParser.parseHSLA2 = function (v) {
219
+ var regx = /^hsla?\s?\(\s?([0-9.]+)(?:deg)?\s([0-9.]+%?)\s([0-9.]+%?)\s?(?:\/\s?([0-9.]+%?))?\s?\)$/i;
220
+ var res = regx.exec(v);
221
+ if (res) {
222
+ var h = CssColorStringParser._parseResStrForHue(res[1]);
223
+ var s = CssColorStringParser._parsePercent(res[2]);
224
+ var l = CssColorStringParser._parsePercent(res[3]);
225
+ var a = CssColorStringParser._parsePercent(res[4]);
226
+ return [h, s, l, a];
227
+ }
228
+ return null;
229
+ };
230
+ // 将结果解析为数字
231
+ CssColorStringParser._parseResStrForRgb = function (v) {
232
+ if (typeof v === 'string') {
233
+ v = parseFloat(v) / ('%' === v.substr(-1) ? 100.0 / 255 : 1);
234
+ }
235
+ if (isNaN(v)) {
236
+ v = 1;
237
+ }
238
+ return limitNumber(0, 255, v);
239
+ };
240
+ CssColorStringParser._parseResStrForHue = function (v) {
241
+ if (typeof v === 'string') {
242
+ v = parseFloat(v);
243
+ }
244
+ if (isNaN(v)) {
245
+ v = 0;
246
+ }
247
+ return limitNumber(0, 360, v);
248
+ };
249
+ CssColorStringParser._parsePercent = function (v) {
250
+ if (typeof v === 'string') {
251
+ v = parseFloat(v) / ('%' === v.substr(-1) ? 100.0 : 1);
252
+ }
253
+ if (isNaN(v)) {
254
+ v = 1;
255
+ }
256
+ return limitNumber(0, 1, v);
257
+ };
258
+ return CssColorStringParser;
259
+ }());
260
+
261
+
139
262
  ;// CONCATENATED MODULE: ./src/CssColorParser.ts
140
263
  /*
141
264
  * @Descripttion: 颜色解析器
@@ -143,9 +266,10 @@ function setNumberPrecision(number, precision) {
143
266
  * @Author: roman_123
144
267
  * @Date: 2021-01-19 09:22:11
145
268
  * @LastEditors: Please set LastEditors
146
- * @LastEditTime: 2023-05-26 11:20:17
269
+ * @LastEditTime: 2023-05-26 15:59:40
147
270
  */
148
271
 
272
+
149
273
  var CssColorParser = /** @class */ (function () {
150
274
  function CssColorParser(red, green, blue, alpha) {
151
275
  this.r = 255;
@@ -277,165 +401,98 @@ var CssColorParser = /** @class */ (function () {
277
401
  this.a === color.a);
278
402
  }
279
403
  };
280
- return CssColorParser;
281
- }());
282
- /* harmony default export */ var src_CssColorParser = (CssColorParser);
283
-
284
- ;// CONCATENATED MODULE: ./src/utils/color-tools.ts
285
-
286
- /*
287
- * @Author: roman_123
288
- * @Description: 部分核心代码修改自cesium
289
- * @Date: 2022-11-28 17:32:57
290
- * @LastEditTime: 2022-12-06 00:02:21
291
- */
292
- var CssColorStringParser = /** @class */ (function () {
293
- function CssColorStringParser() {
294
- }
295
- // 去除字符串内所有空格
296
- CssColorStringParser.clearStrSpace = function (v) {
297
- return v.replace(/\s/g, '');
298
- };
299
- // 去除字符串两边空格,将中间多个空格合并为一个
300
- CssColorStringParser.trimStr = function (v) {
301
- v = v.replace(/\s+/g, ' ');
302
- return v.trim();
303
- };
304
- // 解析3位16进制 #fff #fff0
305
- CssColorStringParser.parse3BitsHEX = function (v) {
306
- var regx = /^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i;
307
- var res = regx.exec(v);
308
- if (res) {
309
- var res4 = defaultValue(res[4], 'f');
310
- var r = CssColorStringParser._parseResStrForRgb(parseInt(res[1] + res[1], 16));
311
- var g = CssColorStringParser._parseResStrForRgb(parseInt(res[2] + res[2], 16));
312
- var b = CssColorStringParser._parseResStrForRgb(parseInt(res[3] + res[3], 16));
313
- var a = CssColorStringParser._parsePercent(parseInt(res4 + res4, 16) / 255);
314
- return [r, g, b, a];
315
- }
316
- return null;
317
- };
318
- // 解析6位16进制 #ffffff #ffffff00
319
- CssColorStringParser.parse6BitsHEX = function (v) {
320
- var regx = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i;
321
- var res = regx.exec(v);
322
- if (res) {
323
- var res4 = defaultValue(res[4], 'ff');
324
- var r = CssColorStringParser._parseResStrForRgb(parseInt(res[1], 16));
325
- var g = CssColorStringParser._parseResStrForRgb(parseInt(res[2], 16));
326
- var b = CssColorStringParser._parseResStrForRgb(parseInt(res[3], 16));
327
- var a = CssColorStringParser._parsePercent(parseInt(res4, 16) / 255.0);
328
- return [r, g, b, a];
329
- }
330
- return null;
331
- };
332
- // 解析rgb rgba rgb(255,255,255) rgba(255,255,255,1) rgba(100%,100%,100%, 1)
333
- CssColorStringParser.parseRGBA = function (v) {
334
- var regx = /^rgba?\(([0-9.]+%?),([0-9.]+%?),([0-9.]+%?)(?:,([0-9.]+%?))?\)$/i;
335
- var res = regx.exec(v);
336
- if (res) {
337
- var r = CssColorStringParser._parseResStrForRgb(res[1]);
338
- var g = CssColorStringParser._parseResStrForRgb(res[2]);
339
- var b = CssColorStringParser._parseResStrForRgb(res[3]);
340
- var a = CssColorStringParser._parsePercent(res[4]);
341
- return [r, g, b, a];
342
- }
343
- return null;
344
- };
345
- // 解析hsl hsla hsl(360,100%,100%) hsla(360,100%,100%,1)
346
- CssColorStringParser.parseHSLA = function (v) {
347
- var regx = /^hsla?\(([0-9.]+)(?:deg)?,([0-9.]+%?),([0-9.]+%?)(?:,([0-9.]+%?))?\)$/i;
348
- var res = regx.exec(v);
349
- if (res) {
350
- var h = CssColorStringParser._parseResStrForHue(res[1]);
351
- var s = CssColorStringParser._parsePercent(res[2]);
352
- var l = CssColorStringParser._parsePercent(res[3]);
353
- var a = CssColorStringParser._parsePercent(res[4]);
354
- return [h, s, l, a];
355
- }
356
- return null;
357
- };
358
- // 解析hwb
359
- CssColorStringParser.parseHWB = function (v) {
360
- var regx = /^hwb\s?\(\s?([0-9.]+)(?:deg)?\s([0-9.]+%?)\s([0-9.]+%?)\s?(?:\/\s?([0-9.]+%?))?\s?\)$/i;
361
- var res = regx.exec(v);
362
- if (res) {
363
- var h = CssColorStringParser._parseResStrForHue(res[1]);
364
- var w = CssColorStringParser._parsePercent(res[2]);
365
- var b = CssColorStringParser._parsePercent(res[3]);
366
- var a = CssColorStringParser._parsePercent(res[4]);
367
- return [h, w, b, a];
368
- }
369
- return null;
370
- };
371
- // 解析rgb rgb(178 57 57 / 44%) 字符串中存在空格,因此使用清除两侧空格的原始字符串
372
- CssColorStringParser.parseRGBA2 = function (v) {
373
- var regx = /^rgba?\s?\(\s?([0-9.]+%?)\s?([0-9.]+%?)\s?([0-9.]+%?)(?:\s?\/\s?([0-9.]+%?))?\s?\)$/i;
374
- var res = regx.exec(v);
375
- if (res) {
376
- var r = CssColorStringParser._parseResStrForRgb(res[1]);
377
- var g = CssColorStringParser._parseResStrForRgb(res[2]);
378
- var b = CssColorStringParser._parseResStrForRgb(res[3]);
379
- var a = CssColorStringParser._parsePercent(res[4]);
380
- return [r, g, b, a];
404
+ /**
405
+ * @description: 解析16进制颜色
406
+ * @param {string} v
407
+ * @return {CssColorParser}
408
+ * @example: parseHEX('#FFF')
409
+ */
410
+ CssColorParser.parseHEX = function (v) {
411
+ var cssStr = CssColorStringParser.clearStrSpace(v);
412
+ var res = CssColorStringParser.parse3BitsHEX(cssStr);
413
+ if (!res) {
414
+ res = CssColorStringParser.parse6BitsHEX(cssStr);
381
415
  }
382
- return null;
416
+ return res && CssColorParser.fromArray(res);
383
417
  };
384
- // 解析hsl hsl(215 85% 62% / 1)
385
- CssColorStringParser.parseHSLA2 = function (v) {
386
- var regx = /^hsla?\s?\(\s?([0-9.]+)(?:deg)?\s([0-9.]+%?)\s([0-9.]+%?)\s?(?:\/\s?([0-9.]+%?))?\s?\)$/i;
387
- var res = regx.exec(v);
388
- if (res) {
389
- var h = CssColorStringParser._parseResStrForHue(res[1]);
390
- var s = CssColorStringParser._parsePercent(res[2]);
391
- var l = CssColorStringParser._parsePercent(res[3]);
392
- var a = CssColorStringParser._parsePercent(res[4]);
393
- return [h, s, l, a];
418
+ /**
419
+ * @description: 解析rgba、rgb颜色
420
+ * @param {string} v
421
+ * @return {CssColorParser}
422
+ * @example: parseRGBA('rgba(255,255,255,1)')
423
+ */
424
+ CssColorParser.parseRGBA = function (v) {
425
+ var cssStr = CssColorStringParser.clearStrSpace(v);
426
+ var res = CssColorStringParser.parseRGBA(cssStr);
427
+ if (!res) {
428
+ var cssStr2 = CssColorStringParser.trimStr(v);
429
+ res = CssColorStringParser.parseRGBA2(cssStr2);
394
430
  }
395
- return null;
431
+ return res && CssColorParser.fromArray(res);
396
432
  };
397
- // 将结果解析为数字
398
- CssColorStringParser._parseResStrForRgb = function (v) {
399
- if (typeof v === 'string') {
400
- v = parseFloat(v) / ('%' === v.substr(-1) ? 100.0 / 255 : 1);
401
- }
402
- if (isNaN(v)) {
403
- v = 1;
404
- }
405
- return limitNumber(0, 255, v);
433
+ /**
434
+ * @description: 将ColorJson格式的json数据转换为解析对象
435
+ * @param {ColorJson} json
436
+ * @return {CssColorParser}
437
+ * @example: fromJson({r: 255, g: 255, b: 255, a: 1})
438
+ */
439
+ CssColorParser.fromJson = function (json) {
440
+ return new CssColorParser(json.r, json.g, json.b, json.a);
406
441
  };
407
- CssColorStringParser._parseResStrForHue = function (v) {
408
- if (typeof v === 'string') {
409
- v = parseFloat(v);
410
- }
411
- if (isNaN(v)) {
412
- v = 0;
413
- }
414
- return limitNumber(0, 360, v);
442
+ /**
443
+ * @description: 将RGBA数组转换为解析对象
444
+ * @param {Array} color
445
+ * @return {CssColorParser}
446
+ * @example: fromJson([255,255,255,1])
447
+ */
448
+ CssColorParser.fromArray = function (color) {
449
+ return new CssColorParser(color[0], color[1], color[2], color[3]);
415
450
  };
416
- CssColorStringParser._parsePercent = function (v) {
417
- if (typeof v === 'string') {
418
- v = parseFloat(v) / ('%' === v.substr(-1) ? 100.0 : 1);
419
- }
420
- if (isNaN(v)) {
421
- v = 1;
422
- }
423
- return limitNumber(0, 1, v);
451
+ /**
452
+ * @description: 产生随机颜色
453
+ * @return {CssColorParser}
454
+ * @example: fromRandom(new CssColorParser(0,0,0,0), new CssColorParser(255,255,255,1))
455
+ */
456
+ CssColorParser.fromRandom = function (color1, color2) {
457
+ var r = Math.random() * Math.abs(color2.r - color1.r) +
458
+ Math.min(color1.r, color2.r);
459
+ var g = Math.random() * Math.abs(color2.g - color1.g) +
460
+ Math.min(color1.g, color2.g);
461
+ var b = Math.random() * Math.abs(color2.b - color1.b) +
462
+ Math.min(color1.b, color2.b);
463
+ var a = Math.random() * Math.abs(color2.a - color1.a) +
464
+ Math.min(color1.a, color2.a);
465
+ return new CssColorParser(r, g, b, a);
424
466
  };
425
- return CssColorStringParser;
467
+ return CssColorParser;
426
468
  }());
427
-
469
+ /* harmony default export */ var src_CssColorParser = (CssColorParser);
428
470
 
429
- ;// CONCATENATED MODULE: ./src/utils/parsers/parsers.ts
471
+ ;// CONCATENATED MODULE: external "color-convert"
472
+ var external_color_convert_namespaceObject = require("color-convert");
473
+ var external_color_convert_default = /*#__PURE__*/__webpack_require__.n(external_color_convert_namespaceObject);
474
+ ;// CONCATENATED MODULE: ./src/utils/parsers.ts
475
+
430
476
 
431
477
 
432
478
 
433
- var convert = __webpack_require__(819);
479
+ /**
480
+ * @description: 解析颜色关键字
481
+ * @param {string} v
482
+ * @return {CssColorParser}
483
+ * @example: parseKeyWord('red')
484
+ */
434
485
  function parseKeyWord(v) {
435
486
  var cssStr = CssColorStringParser.clearStrSpace(v);
436
- var res = convert.keyword.rgb(cssStr);
487
+ var res = external_color_convert_default().keyword.rgb(cssStr);
437
488
  return res && fromArray(res);
438
489
  }
490
+ /**
491
+ * @description: 解析16进制字符串
492
+ * @param {string} v
493
+ * @return {CssColorParser}
494
+ * @example: parseHEX('#FFF')
495
+ */
439
496
  function parseHEX(v) {
440
497
  var cssStr = CssColorStringParser.clearStrSpace(v);
441
498
  var res = CssColorStringParser.parse3BitsHEX(cssStr);
@@ -444,6 +501,12 @@ function parseHEX(v) {
444
501
  }
445
502
  return res && fromArray(res);
446
503
  }
504
+ /**
505
+ * @description: 解析RGBA
506
+ * @param {string} v
507
+ * @return {CssColorParser}
508
+ * @example: parseRGBA('rgba(255,255,255,1)')
509
+ */
447
510
  function parseRGBA(v) {
448
511
  var cssStr = CssColorStringParser.clearStrSpace(v);
449
512
  var res = CssColorStringParser.parseRGBA(cssStr);
@@ -453,6 +516,12 @@ function parseRGBA(v) {
453
516
  }
454
517
  return res && fromArray(res);
455
518
  }
519
+ /**
520
+ * @description: 解析HSLA
521
+ * @param {string} v
522
+ * @return {CssColorParser}
523
+ * @example: parseHSLA('hsla(215,85%,62%,0.8)')
524
+ */
456
525
  function parseHSLA(v) {
457
526
  var cssStr = CssColorStringParser.clearStrSpace(v);
458
527
  var res = CssColorStringParser.parseHSLA(cssStr);
@@ -462,6 +531,12 @@ function parseHSLA(v) {
462
531
  }
463
532
  return res && fromHSL(res[0], res[1], res[2], res[3]);
464
533
  }
534
+ /**
535
+ * @description: 解析HWB
536
+ * @param {string} v
537
+ * @return {CssColorParser}
538
+ * @example: parseHWB('hwb(215deg 30% 6% / 80%)')
539
+ */
465
540
  function parseHWB(v) {
466
541
  var cssStr2 = CssColorStringParser.trimStr(v);
467
542
  var res = CssColorStringParser.parseHWB(cssStr2);
@@ -499,7 +574,7 @@ function fromColorStr(v) {
499
574
  * @example: fromHSL(0,1,1,1)
500
575
  */
501
576
  function fromHSL(h, s, l, a) {
502
- var res = convert.hsl.rgb(limitNumber(0, 360, h), limitNumber(0, 100, s * 100), limitNumber(0, 100, l * 100));
577
+ var res = external_color_convert_default().hsl.rgb(limitNumber(0, 360, h), limitNumber(0, 100, s * 100), limitNumber(0, 100, l * 100));
503
578
  return new src_CssColorParser(res[0], res[1], res[2], defaultValue(Number(a), 1));
504
579
  }
505
580
  /**
@@ -512,14 +587,14 @@ function fromHSL(h, s, l, a) {
512
587
  * @example: fromHSL(0,1,1,1)
513
588
  */
514
589
  function fromHWB(h, w, b, a) {
515
- var res = convert.hwb.rgb(limitNumber(0, 360, h), limitNumber(0, 100, w * 100), limitNumber(0, 100, b * 100));
590
+ var res = external_color_convert_default().hwb.rgb(limitNumber(0, 360, h), limitNumber(0, 100, w * 100), limitNumber(0, 100, b * 100));
516
591
  return new src_CssColorParser(res[0], res[1], res[2], defaultValue(Number(a), 1));
517
592
  }
518
593
  /**
519
- * @description: 从解析器中产生随机颜色
520
- * @return {CssColorParser}
521
- * @author: roman_123
522
- */
594
+ * @description: 产生随机颜色
595
+ * @return {CssColorParser}
596
+ * @example: fromRandom('#000', ''#fff)
597
+ */
523
598
  function fromRandom(color1, color2) {
524
599
  if (typeof color1 === 'string') {
525
600
  color1 = parseCssColorStr(color1);
@@ -564,13 +639,12 @@ function fromArray(color) {
564
639
  * @Author: roman_123
565
640
  * @Description:
566
641
  * @Date: 2023-05-25 17:45:22
567
- * @LastEditTime: 2023-05-26 11:17:48
642
+ * @LastEditTime: 2023-05-26 15:54:02
568
643
  */
569
644
 
570
645
 
571
646
 
572
647
 
573
- }();
574
648
  var __webpack_export_target__ = exports;
575
649
  for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i];
576
650
  if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true });