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.
- package/@types/css-color-parser-h.d.ts +48 -19
- package/dist/css-color-parser-h.common.js +261 -187
- package/dist/css-color-parser-h.common.min.js +1 -1
- package/dist/css-color-parser-h.umd.js +260 -151
- package/dist/css-color-parser-h.umd.min.js +1 -1
- package/example.html +1 -1
- package/package.json +4 -2
|
@@ -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
|
|
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:
|
|
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:
|
|
22
|
+
* @description: 解析16进制字符串
|
|
23
23
|
* @param {string} v
|
|
24
24
|
* @return {CssColorParser}
|
|
25
|
-
* @example: parseHEX('#
|
|
25
|
+
* @example: parseHEX('#FFF')
|
|
26
26
|
*/
|
|
27
27
|
export function parseHEX(v: string): CssColorParser
|
|
28
28
|
/**
|
|
29
|
-
* @description:
|
|
29
|
+
* @description: 解析RGBA
|
|
30
30
|
* @param {string} v
|
|
31
31
|
* @return {CssColorParser}
|
|
32
|
-
* @example: parseRGBA('
|
|
32
|
+
* @example: parseRGBA('rgba(255,255,255,1)')
|
|
33
33
|
*/
|
|
34
34
|
export function parseRGBA(v: string): CssColorParser
|
|
35
35
|
/**
|
|
36
|
-
* @description:
|
|
36
|
+
* @description: 解析HSLA
|
|
37
37
|
* @param {string} v
|
|
38
38
|
* @return {CssColorParser}
|
|
39
|
-
* @example: parseHSLA('
|
|
39
|
+
* @example: parseHSLA('hsla(215,85%,62%,0.8)')
|
|
40
40
|
*/
|
|
41
41
|
export function parseHSLA(v: string): CssColorParser
|
|
42
42
|
/**
|
|
43
|
-
* @description:
|
|
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
|
-
* @
|
|
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
|
-
/******/
|
|
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
|
-
|
|
18
|
-
/******/
|
|
19
|
-
/******/
|
|
20
|
-
/******/
|
|
21
|
-
/******/
|
|
22
|
-
/******/
|
|
23
|
-
/******/
|
|
24
|
-
/******/
|
|
25
|
-
/******/
|
|
26
|
-
/******/
|
|
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
|
|
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
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
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
|
|
416
|
+
return res && CssColorParser.fromArray(res);
|
|
383
417
|
};
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
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
|
|
431
|
+
return res && CssColorParser.fromArray(res);
|
|
396
432
|
};
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
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
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
return
|
|
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
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
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
|
|
467
|
+
return CssColorParser;
|
|
426
468
|
}());
|
|
427
|
-
|
|
469
|
+
/* harmony default export */ var src_CssColorParser = (CssColorParser);
|
|
428
470
|
|
|
429
|
-
;// CONCATENATED MODULE:
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
520
|
-
|
|
521
|
-
|
|
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
|
|
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 });
|