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
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";var r={
|
|
1
|
+
!function(){"use strict";var r={n:function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},d:function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o:function(r,t){return Object.prototype.hasOwnProperty.call(r,t)},r:function(r){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})}},t={};r.r(t),r.d(t,{CssColorParser:function(){return i},fromArray:function(){return d},fromColorStr:function(){return S},fromHSL:function(){return m},fromHWB:function(){return y},fromJson:function(){return v},fromRandom:function(){return R},parseCssColorStr:function(){return l},parseHEX:function(){return f},parseHSLA:function(){return g},parseHWB:function(){return h},parseKeyWord:function(){return p},parseRGBA:function(){return b}});var e=function(){function r(){}return r.type=function(r,t,e){var n=typeof e;if(n!==r)throw new Error("Expected ".concat(t," to be typeof ").concat(r,", actual typeof was ").concat(n))},r.types=function(r,t,e){var n=typeof e;if(!r.includes(n))throw new Error("Expected ".concat(t," to be typeof ").concat(r.join("|"),", actual typeof was ").concat(n))},r}();function n(r,t){return null==r||isNaN(r)&&"number"==typeof t?t:r}function a(r,t,e){return e>t?e=t:e<r&&(e=r),e}function o(r,t){return Number(r.toFixed(t))}var s=function(){function r(){}return r.clearStrSpace=function(r){return r.replace(/\s/g,"")},r.trimStr=function(r){return(r=r.replace(/\s+/g," ")).trim()},r.parse3BitsHEX=function(t){var e=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i.exec(t);if(e){var a=n(e[4],"f");return[r._parseResStrForRgb(parseInt(e[1]+e[1],16)),r._parseResStrForRgb(parseInt(e[2]+e[2],16)),r._parseResStrForRgb(parseInt(e[3]+e[3],16)),r._parsePercent(parseInt(a+a,16)/255)]}return null},r.parse6BitsHEX=function(t){var e=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i.exec(t);if(e){var a=n(e[4],"ff");return[r._parseResStrForRgb(parseInt(e[1],16)),r._parseResStrForRgb(parseInt(e[2],16)),r._parseResStrForRgb(parseInt(e[3],16)),r._parsePercent(parseInt(a,16)/255)]}return null},r.parseRGBA=function(t){var e=/^rgba?\(([0-9.]+%?),([0-9.]+%?),([0-9.]+%?)(?:,([0-9.]+%?))?\)$/i.exec(t);return e?[r._parseResStrForRgb(e[1]),r._parseResStrForRgb(e[2]),r._parseResStrForRgb(e[3]),r._parsePercent(e[4])]:null},r.parseHSLA=function(t){var e=/^hsla?\(([0-9.]+)(?:deg)?,([0-9.]+%?),([0-9.]+%?)(?:,([0-9.]+%?))?\)$/i.exec(t);return e?[r._parseResStrForHue(e[1]),r._parsePercent(e[2]),r._parsePercent(e[3]),r._parsePercent(e[4])]:null},r.parseHWB=function(t){var e=/^hwb\s?\(\s?([0-9.]+)(?:deg)?\s([0-9.]+%?)\s([0-9.]+%?)\s?(?:\/\s?([0-9.]+%?))?\s?\)$/i.exec(t);return e?[r._parseResStrForHue(e[1]),r._parsePercent(e[2]),r._parsePercent(e[3]),r._parsePercent(e[4])]:null},r.parseRGBA2=function(t){var e=/^rgba?\s?\(\s?([0-9.]+%?)\s?([0-9.]+%?)\s?([0-9.]+%?)(?:\s?\/\s?([0-9.]+%?))?\s?\)$/i.exec(t);return e?[r._parseResStrForRgb(e[1]),r._parseResStrForRgb(e[2]),r._parseResStrForRgb(e[3]),r._parsePercent(e[4])]:null},r.parseHSLA2=function(t){var e=/^hsla?\s?\(\s?([0-9.]+)(?:deg)?\s([0-9.]+%?)\s([0-9.]+%?)\s?(?:\/\s?([0-9.]+%?))?\s?\)$/i.exec(t);return e?[r._parseResStrForHue(e[1]),r._parsePercent(e[2]),r._parsePercent(e[3]),r._parsePercent(e[4])]:null},r._parseResStrForRgb=function(r){return"string"==typeof r&&(r=parseFloat(r)/("%"===r.substr(-1)?100/255:1)),isNaN(r)&&(r=1),a(0,255,r)},r._parseResStrForHue=function(r){return"string"==typeof r&&(r=parseFloat(r)),isNaN(r)&&(r=0),a(0,360,r)},r._parsePercent=function(r){return"string"==typeof r&&(r=parseFloat(r)/("%"===r.substr(-1)?100:1)),isNaN(r)&&(r=1),a(0,1,r)},r}(),i=function(){function r(r,t,e,n){this.r=255,this.g=255,this.b=255,this.a=1,this.setColor(r,t,e,n)}return r.prototype.setColor=function(r,t,e,o){this.r=a(0,255,n(Number(r),0)),this.g=a(0,255,n(Number(t),0)),this.b=a(0,255,n(Number(e),0)),this.a=a(0,1,n(Number(o),1))},r.prototype.toRGBA=function(){var r=this.toJson();return 1===r.a?"rgb(".concat(r.r,",").concat(r.g,",").concat(r.b,")"):"rgba(".concat(r.r,",").concat(r.g,",").concat(r.b,",").concat(r.a,")")},r.prototype.toString=function(){return this.toRGBA()},r.prototype.toNormalize=function(){return{r:o(this.r/255,2),g:o(this.g/255,2),b:o(this.b/255,2),a:o(this.a,2)}},r.prototype.toHEX=function(){var r=this.toJson(),t=r.r.toString(16);t.length<2&&(t="0".concat(t));var e=r.g.toString(16);e.length<2&&(e="0".concat(e));var n=r.b.toString(16);if(n.length<2&&(n="0".concat(n)),this.a<1){var a=parseInt((255*this.a).toFixed()).toString(16);return a.length<2&&(a="0".concat(a)),"#".concat(t).concat(e).concat(n).concat(a)}return"#".concat(t).concat(e).concat(n)},r.prototype.toArray=function(){var r=this.toJson();return[r.r,r.g,r.b,r.a]},r.prototype.toJson=function(){return{r:parseInt(this.r.toFixed()),g:parseInt(this.g.toFixed()),b:parseInt(this.b.toFixed()),a:parseFloat(this.a.toFixed(2))}},r.prototype.clone=function(){return new r(this.r,this.g,this.b,this.a)},r.prototype.equals=function(r){return this===r||this.r===r.r&&this.g===r.g&&this.b===r.g&&this.a===r.a},r.parseHEX=function(t){var e=s.clearStrSpace(t),n=s.parse3BitsHEX(e);return n||(n=s.parse6BitsHEX(e)),n&&r.fromArray(n)},r.parseRGBA=function(t){var e=s.clearStrSpace(t),n=s.parseRGBA(e);if(!n){var a=s.trimStr(t);n=s.parseRGBA2(a)}return n&&r.fromArray(n)},r.fromJson=function(t){return new r(t.r,t.g,t.b,t.a)},r.fromArray=function(t){return new r(t[0],t[1],t[2],t[3])},r.fromRandom=function(t,e){return new r(Math.random()*Math.abs(e.r-t.r)+Math.min(t.r,e.r),Math.random()*Math.abs(e.g-t.g)+Math.min(t.g,e.g),Math.random()*Math.abs(e.b-t.b)+Math.min(t.b,e.b),Math.random()*Math.abs(e.a-t.a)+Math.min(t.a,e.a))},r}(),c=require("color-convert"),u=r.n(c);function p(r){var t=s.clearStrSpace(r),e=u().keyword.rgb(t);return e&&d(e)}function f(r){var t=s.clearStrSpace(r),e=s.parse3BitsHEX(t);return e||(e=s.parse6BitsHEX(t)),e&&d(e)}function b(r){var t=s.clearStrSpace(r),e=s.parseRGBA(t);if(!e){var n=s.trimStr(r);e=s.parseRGBA2(n)}return e&&d(e)}function g(r){var t=s.clearStrSpace(r),e=s.parseHSLA(t);if(!e){var n=s.trimStr(r);e=s.parseHSLA2(n)}return e&&m(e[0],e[1],e[2],e[3])}function h(r){var t=s.trimStr(r),e=s.parseHWB(t);return e&&y(e[0],e[1],e[2],e[3])}function l(r){return e.type("string","color",r),f(r)||b(r)||p(r)||g(r)||h(r)}function S(r){return e.type("string","color",r),f(r)||b(r)||p(r)||g(r)||h(r)}function m(r,t,e,o){var s=u().hsl.rgb(a(0,360,r),a(0,100,100*t),a(0,100,100*e));return new i(s[0],s[1],s[2],n(Number(o),1))}function y(r,t,e,o){var s=u().hwb.rgb(a(0,360,r),a(0,100,100*t),a(0,100,100*e));return new i(s[0],s[1],s[2],n(Number(o),1))}function R(r,t){if("string"==typeof r&&(r=l(r)),"string"==typeof t&&(t=l(t)),!r||!t)throw new Error("fail to create object from random");var e=Math.random()*Math.abs(t.r-r.r)+Math.min(r.r,t.r),n=Math.random()*Math.abs(t.g-r.g)+Math.min(r.g,t.g),a=Math.random()*Math.abs(t.b-r.b)+Math.min(r.b,t.b),o=Math.random()*Math.abs(t.a-r.a)+Math.min(r.a,t.a);return new i(e,n,a,o)}function v(r){return new i(r.r,r.g,r.b,r.a)}function d(r){return new i(r[0],r[1],r[2],r[3])}var _=exports;for(var M in t)_[M]=t[M];t.__esModule&&Object.defineProperty(_,"__esModule",{value:!0})}();
|
|
@@ -1132,6 +1132,18 @@ module.exports = {
|
|
|
1132
1132
|
/******/ }
|
|
1133
1133
|
/******/
|
|
1134
1134
|
/************************************************************************/
|
|
1135
|
+
/******/ /* webpack/runtime/compat get default export */
|
|
1136
|
+
/******/ !function() {
|
|
1137
|
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
1138
|
+
/******/ __webpack_require__.n = function(module) {
|
|
1139
|
+
/******/ var getter = module && module.__esModule ?
|
|
1140
|
+
/******/ function() { return module['default']; } :
|
|
1141
|
+
/******/ function() { return module; };
|
|
1142
|
+
/******/ __webpack_require__.d(getter, { a: getter });
|
|
1143
|
+
/******/ return getter;
|
|
1144
|
+
/******/ };
|
|
1145
|
+
/******/ }();
|
|
1146
|
+
/******/
|
|
1135
1147
|
/******/ /* webpack/runtime/define property getters */
|
|
1136
1148
|
/******/ !function() {
|
|
1137
1149
|
/******/ // define getter functions for harmony exports
|
|
@@ -1233,6 +1245,151 @@ function setNumberPrecision(number, precision) {
|
|
|
1233
1245
|
return Number(number.toFixed(precision));
|
|
1234
1246
|
}
|
|
1235
1247
|
|
|
1248
|
+
;// CONCATENATED MODULE: ./src/utils/color-tools.ts
|
|
1249
|
+
|
|
1250
|
+
/*
|
|
1251
|
+
* @Author: roman_123
|
|
1252
|
+
* @Description: 部分核心代码修改自cesium
|
|
1253
|
+
* @Date: 2022-11-28 17:32:57
|
|
1254
|
+
* @LastEditTime: 2022-12-06 00:02:21
|
|
1255
|
+
*/
|
|
1256
|
+
var CssColorStringParser = /** @class */ (function () {
|
|
1257
|
+
function CssColorStringParser() {
|
|
1258
|
+
}
|
|
1259
|
+
// 去除字符串内所有空格
|
|
1260
|
+
CssColorStringParser.clearStrSpace = function (v) {
|
|
1261
|
+
return v.replace(/\s/g, '');
|
|
1262
|
+
};
|
|
1263
|
+
// 去除字符串两边空格,将中间多个空格合并为一个
|
|
1264
|
+
CssColorStringParser.trimStr = function (v) {
|
|
1265
|
+
v = v.replace(/\s+/g, ' ');
|
|
1266
|
+
return v.trim();
|
|
1267
|
+
};
|
|
1268
|
+
// 解析3位16进制 #fff #fff0
|
|
1269
|
+
CssColorStringParser.parse3BitsHEX = function (v) {
|
|
1270
|
+
var regx = /^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i;
|
|
1271
|
+
var res = regx.exec(v);
|
|
1272
|
+
if (res) {
|
|
1273
|
+
var res4 = defaultValue(res[4], 'f');
|
|
1274
|
+
var r = CssColorStringParser._parseResStrForRgb(parseInt(res[1] + res[1], 16));
|
|
1275
|
+
var g = CssColorStringParser._parseResStrForRgb(parseInt(res[2] + res[2], 16));
|
|
1276
|
+
var b = CssColorStringParser._parseResStrForRgb(parseInt(res[3] + res[3], 16));
|
|
1277
|
+
var a = CssColorStringParser._parsePercent(parseInt(res4 + res4, 16) / 255);
|
|
1278
|
+
return [r, g, b, a];
|
|
1279
|
+
}
|
|
1280
|
+
return null;
|
|
1281
|
+
};
|
|
1282
|
+
// 解析6位16进制 #ffffff #ffffff00
|
|
1283
|
+
CssColorStringParser.parse6BitsHEX = function (v) {
|
|
1284
|
+
var regx = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i;
|
|
1285
|
+
var res = regx.exec(v);
|
|
1286
|
+
if (res) {
|
|
1287
|
+
var res4 = defaultValue(res[4], 'ff');
|
|
1288
|
+
var r = CssColorStringParser._parseResStrForRgb(parseInt(res[1], 16));
|
|
1289
|
+
var g = CssColorStringParser._parseResStrForRgb(parseInt(res[2], 16));
|
|
1290
|
+
var b = CssColorStringParser._parseResStrForRgb(parseInt(res[3], 16));
|
|
1291
|
+
var a = CssColorStringParser._parsePercent(parseInt(res4, 16) / 255.0);
|
|
1292
|
+
return [r, g, b, a];
|
|
1293
|
+
}
|
|
1294
|
+
return null;
|
|
1295
|
+
};
|
|
1296
|
+
// 解析rgb rgba rgb(255,255,255) rgba(255,255,255,1) rgba(100%,100%,100%, 1)
|
|
1297
|
+
CssColorStringParser.parseRGBA = function (v) {
|
|
1298
|
+
var regx = /^rgba?\(([0-9.]+%?),([0-9.]+%?),([0-9.]+%?)(?:,([0-9.]+%?))?\)$/i;
|
|
1299
|
+
var res = regx.exec(v);
|
|
1300
|
+
if (res) {
|
|
1301
|
+
var r = CssColorStringParser._parseResStrForRgb(res[1]);
|
|
1302
|
+
var g = CssColorStringParser._parseResStrForRgb(res[2]);
|
|
1303
|
+
var b = CssColorStringParser._parseResStrForRgb(res[3]);
|
|
1304
|
+
var a = CssColorStringParser._parsePercent(res[4]);
|
|
1305
|
+
return [r, g, b, a];
|
|
1306
|
+
}
|
|
1307
|
+
return null;
|
|
1308
|
+
};
|
|
1309
|
+
// 解析hsl hsla hsl(360,100%,100%) hsla(360,100%,100%,1)
|
|
1310
|
+
CssColorStringParser.parseHSLA = function (v) {
|
|
1311
|
+
var regx = /^hsla?\(([0-9.]+)(?:deg)?,([0-9.]+%?),([0-9.]+%?)(?:,([0-9.]+%?))?\)$/i;
|
|
1312
|
+
var res = regx.exec(v);
|
|
1313
|
+
if (res) {
|
|
1314
|
+
var h = CssColorStringParser._parseResStrForHue(res[1]);
|
|
1315
|
+
var s = CssColorStringParser._parsePercent(res[2]);
|
|
1316
|
+
var l = CssColorStringParser._parsePercent(res[3]);
|
|
1317
|
+
var a = CssColorStringParser._parsePercent(res[4]);
|
|
1318
|
+
return [h, s, l, a];
|
|
1319
|
+
}
|
|
1320
|
+
return null;
|
|
1321
|
+
};
|
|
1322
|
+
// 解析hwb
|
|
1323
|
+
CssColorStringParser.parseHWB = function (v) {
|
|
1324
|
+
var regx = /^hwb\s?\(\s?([0-9.]+)(?:deg)?\s([0-9.]+%?)\s([0-9.]+%?)\s?(?:\/\s?([0-9.]+%?))?\s?\)$/i;
|
|
1325
|
+
var res = regx.exec(v);
|
|
1326
|
+
if (res) {
|
|
1327
|
+
var h = CssColorStringParser._parseResStrForHue(res[1]);
|
|
1328
|
+
var w = CssColorStringParser._parsePercent(res[2]);
|
|
1329
|
+
var b = CssColorStringParser._parsePercent(res[3]);
|
|
1330
|
+
var a = CssColorStringParser._parsePercent(res[4]);
|
|
1331
|
+
return [h, w, b, a];
|
|
1332
|
+
}
|
|
1333
|
+
return null;
|
|
1334
|
+
};
|
|
1335
|
+
// 解析rgb rgb(178 57 57 / 44%) 字符串中存在空格,因此使用清除两侧空格的原始字符串
|
|
1336
|
+
CssColorStringParser.parseRGBA2 = function (v) {
|
|
1337
|
+
var regx = /^rgba?\s?\(\s?([0-9.]+%?)\s?([0-9.]+%?)\s?([0-9.]+%?)(?:\s?\/\s?([0-9.]+%?))?\s?\)$/i;
|
|
1338
|
+
var res = regx.exec(v);
|
|
1339
|
+
if (res) {
|
|
1340
|
+
var r = CssColorStringParser._parseResStrForRgb(res[1]);
|
|
1341
|
+
var g = CssColorStringParser._parseResStrForRgb(res[2]);
|
|
1342
|
+
var b = CssColorStringParser._parseResStrForRgb(res[3]);
|
|
1343
|
+
var a = CssColorStringParser._parsePercent(res[4]);
|
|
1344
|
+
return [r, g, b, a];
|
|
1345
|
+
}
|
|
1346
|
+
return null;
|
|
1347
|
+
};
|
|
1348
|
+
// 解析hsl hsl(215 85% 62% / 1)
|
|
1349
|
+
CssColorStringParser.parseHSLA2 = function (v) {
|
|
1350
|
+
var regx = /^hsla?\s?\(\s?([0-9.]+)(?:deg)?\s([0-9.]+%?)\s([0-9.]+%?)\s?(?:\/\s?([0-9.]+%?))?\s?\)$/i;
|
|
1351
|
+
var res = regx.exec(v);
|
|
1352
|
+
if (res) {
|
|
1353
|
+
var h = CssColorStringParser._parseResStrForHue(res[1]);
|
|
1354
|
+
var s = CssColorStringParser._parsePercent(res[2]);
|
|
1355
|
+
var l = CssColorStringParser._parsePercent(res[3]);
|
|
1356
|
+
var a = CssColorStringParser._parsePercent(res[4]);
|
|
1357
|
+
return [h, s, l, a];
|
|
1358
|
+
}
|
|
1359
|
+
return null;
|
|
1360
|
+
};
|
|
1361
|
+
// 将结果解析为数字
|
|
1362
|
+
CssColorStringParser._parseResStrForRgb = function (v) {
|
|
1363
|
+
if (typeof v === 'string') {
|
|
1364
|
+
v = parseFloat(v) / ('%' === v.substr(-1) ? 100.0 / 255 : 1);
|
|
1365
|
+
}
|
|
1366
|
+
if (isNaN(v)) {
|
|
1367
|
+
v = 1;
|
|
1368
|
+
}
|
|
1369
|
+
return limitNumber(0, 255, v);
|
|
1370
|
+
};
|
|
1371
|
+
CssColorStringParser._parseResStrForHue = function (v) {
|
|
1372
|
+
if (typeof v === 'string') {
|
|
1373
|
+
v = parseFloat(v);
|
|
1374
|
+
}
|
|
1375
|
+
if (isNaN(v)) {
|
|
1376
|
+
v = 0;
|
|
1377
|
+
}
|
|
1378
|
+
return limitNumber(0, 360, v);
|
|
1379
|
+
};
|
|
1380
|
+
CssColorStringParser._parsePercent = function (v) {
|
|
1381
|
+
if (typeof v === 'string') {
|
|
1382
|
+
v = parseFloat(v) / ('%' === v.substr(-1) ? 100.0 : 1);
|
|
1383
|
+
}
|
|
1384
|
+
if (isNaN(v)) {
|
|
1385
|
+
v = 1;
|
|
1386
|
+
}
|
|
1387
|
+
return limitNumber(0, 1, v);
|
|
1388
|
+
};
|
|
1389
|
+
return CssColorStringParser;
|
|
1390
|
+
}());
|
|
1391
|
+
|
|
1392
|
+
|
|
1236
1393
|
;// CONCATENATED MODULE: ./src/CssColorParser.ts
|
|
1237
1394
|
/*
|
|
1238
1395
|
* @Descripttion: 颜色解析器
|
|
@@ -1240,9 +1397,10 @@ function setNumberPrecision(number, precision) {
|
|
|
1240
1397
|
* @Author: roman_123
|
|
1241
1398
|
* @Date: 2021-01-19 09:22:11
|
|
1242
1399
|
* @LastEditors: Please set LastEditors
|
|
1243
|
-
* @LastEditTime: 2023-05-26
|
|
1400
|
+
* @LastEditTime: 2023-05-26 15:59:40
|
|
1244
1401
|
*/
|
|
1245
1402
|
|
|
1403
|
+
|
|
1246
1404
|
var CssColorParser = /** @class */ (function () {
|
|
1247
1405
|
function CssColorParser(red, green, blue, alpha) {
|
|
1248
1406
|
this.r = 255;
|
|
@@ -1374,165 +1532,98 @@ var CssColorParser = /** @class */ (function () {
|
|
|
1374
1532
|
this.a === color.a);
|
|
1375
1533
|
}
|
|
1376
1534
|
};
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
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];
|
|
1535
|
+
/**
|
|
1536
|
+
* @description: 解析16进制颜色
|
|
1537
|
+
* @param {string} v
|
|
1538
|
+
* @return {CssColorParser}
|
|
1539
|
+
* @example: parseHEX('#FFF')
|
|
1540
|
+
*/
|
|
1541
|
+
CssColorParser.parseHEX = function (v) {
|
|
1542
|
+
var cssStr = CssColorStringParser.clearStrSpace(v);
|
|
1543
|
+
var res = CssColorStringParser.parse3BitsHEX(cssStr);
|
|
1544
|
+
if (!res) {
|
|
1545
|
+
res = CssColorStringParser.parse6BitsHEX(cssStr);
|
|
1478
1546
|
}
|
|
1479
|
-
return
|
|
1547
|
+
return res && CssColorParser.fromArray(res);
|
|
1480
1548
|
};
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1549
|
+
/**
|
|
1550
|
+
* @description: 解析rgba、rgb颜色
|
|
1551
|
+
* @param {string} v
|
|
1552
|
+
* @return {CssColorParser}
|
|
1553
|
+
* @example: parseRGBA('rgba(255,255,255,1)')
|
|
1554
|
+
*/
|
|
1555
|
+
CssColorParser.parseRGBA = function (v) {
|
|
1556
|
+
var cssStr = CssColorStringParser.clearStrSpace(v);
|
|
1557
|
+
var res = CssColorStringParser.parseRGBA(cssStr);
|
|
1558
|
+
if (!res) {
|
|
1559
|
+
var cssStr2 = CssColorStringParser.trimStr(v);
|
|
1560
|
+
res = CssColorStringParser.parseRGBA2(cssStr2);
|
|
1491
1561
|
}
|
|
1492
|
-
return
|
|
1562
|
+
return res && CssColorParser.fromArray(res);
|
|
1493
1563
|
};
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
return limitNumber(0, 255, v);
|
|
1564
|
+
/**
|
|
1565
|
+
* @description: 将ColorJson格式的json数据转换为解析对象
|
|
1566
|
+
* @param {ColorJson} json
|
|
1567
|
+
* @return {CssColorParser}
|
|
1568
|
+
* @example: fromJson({r: 255, g: 255, b: 255, a: 1})
|
|
1569
|
+
*/
|
|
1570
|
+
CssColorParser.fromJson = function (json) {
|
|
1571
|
+
return new CssColorParser(json.r, json.g, json.b, json.a);
|
|
1503
1572
|
};
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
return
|
|
1573
|
+
/**
|
|
1574
|
+
* @description: 将RGBA数组转换为解析对象
|
|
1575
|
+
* @param {Array} color
|
|
1576
|
+
* @return {CssColorParser}
|
|
1577
|
+
* @example: fromJson([255,255,255,1])
|
|
1578
|
+
*/
|
|
1579
|
+
CssColorParser.fromArray = function (color) {
|
|
1580
|
+
return new CssColorParser(color[0], color[1], color[2], color[3]);
|
|
1512
1581
|
};
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1582
|
+
/**
|
|
1583
|
+
* @description: 产生随机颜色
|
|
1584
|
+
* @return {CssColorParser}
|
|
1585
|
+
* @example: fromRandom(new CssColorParser(0,0,0,0), new CssColorParser(255,255,255,1))
|
|
1586
|
+
*/
|
|
1587
|
+
CssColorParser.fromRandom = function (color1, color2) {
|
|
1588
|
+
var r = Math.random() * Math.abs(color2.r - color1.r) +
|
|
1589
|
+
Math.min(color1.r, color2.r);
|
|
1590
|
+
var g = Math.random() * Math.abs(color2.g - color1.g) +
|
|
1591
|
+
Math.min(color1.g, color2.g);
|
|
1592
|
+
var b = Math.random() * Math.abs(color2.b - color1.b) +
|
|
1593
|
+
Math.min(color1.b, color2.b);
|
|
1594
|
+
var a = Math.random() * Math.abs(color2.a - color1.a) +
|
|
1595
|
+
Math.min(color1.a, color2.a);
|
|
1596
|
+
return new CssColorParser(r, g, b, a);
|
|
1521
1597
|
};
|
|
1522
|
-
return
|
|
1598
|
+
return CssColorParser;
|
|
1523
1599
|
}());
|
|
1524
|
-
|
|
1600
|
+
/* harmony default export */ var src_CssColorParser = (CssColorParser);
|
|
1525
1601
|
|
|
1526
|
-
|
|
1602
|
+
// EXTERNAL MODULE: ./node_modules/color-convert/index.js
|
|
1603
|
+
var color_convert = __webpack_require__(907);
|
|
1604
|
+
var color_convert_default = /*#__PURE__*/__webpack_require__.n(color_convert);
|
|
1605
|
+
;// CONCATENATED MODULE: ./src/utils/parsers.ts
|
|
1606
|
+
|
|
1527
1607
|
|
|
1528
1608
|
|
|
1529
1609
|
|
|
1530
|
-
|
|
1610
|
+
/**
|
|
1611
|
+
* @description: 解析颜色关键字
|
|
1612
|
+
* @param {string} v
|
|
1613
|
+
* @return {CssColorParser}
|
|
1614
|
+
* @example: parseKeyWord('red')
|
|
1615
|
+
*/
|
|
1531
1616
|
function parseKeyWord(v) {
|
|
1532
1617
|
var cssStr = CssColorStringParser.clearStrSpace(v);
|
|
1533
|
-
var res =
|
|
1618
|
+
var res = color_convert_default().keyword.rgb(cssStr);
|
|
1534
1619
|
return res && fromArray(res);
|
|
1535
1620
|
}
|
|
1621
|
+
/**
|
|
1622
|
+
* @description: 解析16进制字符串
|
|
1623
|
+
* @param {string} v
|
|
1624
|
+
* @return {CssColorParser}
|
|
1625
|
+
* @example: parseHEX('#FFF')
|
|
1626
|
+
*/
|
|
1536
1627
|
function parseHEX(v) {
|
|
1537
1628
|
var cssStr = CssColorStringParser.clearStrSpace(v);
|
|
1538
1629
|
var res = CssColorStringParser.parse3BitsHEX(cssStr);
|
|
@@ -1541,6 +1632,12 @@ function parseHEX(v) {
|
|
|
1541
1632
|
}
|
|
1542
1633
|
return res && fromArray(res);
|
|
1543
1634
|
}
|
|
1635
|
+
/**
|
|
1636
|
+
* @description: 解析RGBA
|
|
1637
|
+
* @param {string} v
|
|
1638
|
+
* @return {CssColorParser}
|
|
1639
|
+
* @example: parseRGBA('rgba(255,255,255,1)')
|
|
1640
|
+
*/
|
|
1544
1641
|
function parseRGBA(v) {
|
|
1545
1642
|
var cssStr = CssColorStringParser.clearStrSpace(v);
|
|
1546
1643
|
var res = CssColorStringParser.parseRGBA(cssStr);
|
|
@@ -1550,6 +1647,12 @@ function parseRGBA(v) {
|
|
|
1550
1647
|
}
|
|
1551
1648
|
return res && fromArray(res);
|
|
1552
1649
|
}
|
|
1650
|
+
/**
|
|
1651
|
+
* @description: 解析HSLA
|
|
1652
|
+
* @param {string} v
|
|
1653
|
+
* @return {CssColorParser}
|
|
1654
|
+
* @example: parseHSLA('hsla(215,85%,62%,0.8)')
|
|
1655
|
+
*/
|
|
1553
1656
|
function parseHSLA(v) {
|
|
1554
1657
|
var cssStr = CssColorStringParser.clearStrSpace(v);
|
|
1555
1658
|
var res = CssColorStringParser.parseHSLA(cssStr);
|
|
@@ -1559,6 +1662,12 @@ function parseHSLA(v) {
|
|
|
1559
1662
|
}
|
|
1560
1663
|
return res && fromHSL(res[0], res[1], res[2], res[3]);
|
|
1561
1664
|
}
|
|
1665
|
+
/**
|
|
1666
|
+
* @description: 解析HWB
|
|
1667
|
+
* @param {string} v
|
|
1668
|
+
* @return {CssColorParser}
|
|
1669
|
+
* @example: parseHWB('hwb(215deg 30% 6% / 80%)')
|
|
1670
|
+
*/
|
|
1562
1671
|
function parseHWB(v) {
|
|
1563
1672
|
var cssStr2 = CssColorStringParser.trimStr(v);
|
|
1564
1673
|
var res = CssColorStringParser.parseHWB(cssStr2);
|
|
@@ -1596,7 +1705,7 @@ function fromColorStr(v) {
|
|
|
1596
1705
|
* @example: fromHSL(0,1,1,1)
|
|
1597
1706
|
*/
|
|
1598
1707
|
function fromHSL(h, s, l, a) {
|
|
1599
|
-
var res =
|
|
1708
|
+
var res = color_convert_default().hsl.rgb(limitNumber(0, 360, h), limitNumber(0, 100, s * 100), limitNumber(0, 100, l * 100));
|
|
1600
1709
|
return new src_CssColorParser(res[0], res[1], res[2], defaultValue(Number(a), 1));
|
|
1601
1710
|
}
|
|
1602
1711
|
/**
|
|
@@ -1609,14 +1718,14 @@ function fromHSL(h, s, l, a) {
|
|
|
1609
1718
|
* @example: fromHSL(0,1,1,1)
|
|
1610
1719
|
*/
|
|
1611
1720
|
function fromHWB(h, w, b, a) {
|
|
1612
|
-
var res =
|
|
1721
|
+
var res = color_convert_default().hwb.rgb(limitNumber(0, 360, h), limitNumber(0, 100, w * 100), limitNumber(0, 100, b * 100));
|
|
1613
1722
|
return new src_CssColorParser(res[0], res[1], res[2], defaultValue(Number(a), 1));
|
|
1614
1723
|
}
|
|
1615
1724
|
/**
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1725
|
+
* @description: 产生随机颜色
|
|
1726
|
+
* @return {CssColorParser}
|
|
1727
|
+
* @example: fromRandom('#000', ''#fff)
|
|
1728
|
+
*/
|
|
1620
1729
|
function fromRandom(color1, color2) {
|
|
1621
1730
|
if (typeof color1 === 'string') {
|
|
1622
1731
|
color1 = parseCssColorStr(color1);
|
|
@@ -1661,7 +1770,7 @@ function fromArray(color) {
|
|
|
1661
1770
|
* @Author: roman_123
|
|
1662
1771
|
* @Description:
|
|
1663
1772
|
* @Date: 2023-05-25 17:45:22
|
|
1664
|
-
* @LastEditTime: 2023-05-26
|
|
1773
|
+
* @LastEditTime: 2023-05-26 15:54:02
|
|
1665
1774
|
*/
|
|
1666
1775
|
|
|
1667
1776
|
|