@acorex/core 7.0.33 → 7.0.35
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/esm2020/utils/src/color-util.mjs +66 -10
- package/esm2020/utils/src/drawing-util.mjs +4 -1
- package/fesm2015/acorex-core-utils.mjs +68 -9
- package/fesm2015/acorex-core-utils.mjs.map +1 -1
- package/fesm2020/acorex-core-utils.mjs +68 -9
- package/fesm2020/acorex-core-utils.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/src/color-util.d.ts +6 -1
- package/utils/src/drawing-util.d.ts +1 -0
@@ -5,6 +5,7 @@ export class AXColorUtil {
|
|
5
5
|
const _color = tinycolor(color);
|
6
6
|
switch (mode) {
|
7
7
|
case 'rgba':
|
8
|
+
;
|
8
9
|
return _color.toRgb();
|
9
10
|
case 'hsla':
|
10
11
|
return _color.toHsl();
|
@@ -14,7 +15,8 @@ export class AXColorUtil {
|
|
14
15
|
return _color.toHex();
|
15
16
|
}
|
16
17
|
}
|
17
|
-
|
18
|
+
;
|
19
|
+
static toString(color, mode = null) {
|
18
20
|
const _color = tinycolor(color);
|
19
21
|
switch (mode) {
|
20
22
|
case 'rgba':
|
@@ -23,37 +25,91 @@ export class AXColorUtil {
|
|
23
25
|
return _color.toHslString();
|
24
26
|
case 'hsva':
|
25
27
|
return _color.toHsvString();
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
case 'hsva':
|
29
|
+
return _color.toHsvString();
|
30
|
+
case 'hex':
|
31
|
+
{
|
32
|
+
const rgba = _color.toRgb();
|
33
|
+
return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();
|
34
|
+
}
|
35
|
+
default:
|
36
|
+
{
|
37
|
+
if (typeof color == 'string') {
|
38
|
+
if (color.toLowerCase().startsWith("#"))
|
39
|
+
return this.toString(color, "hex");
|
40
|
+
else
|
41
|
+
return this.toString(color, "rgba");
|
42
|
+
}
|
43
|
+
else {
|
44
|
+
return this.toString(color, "rgba");
|
45
|
+
}
|
46
|
+
}
|
30
47
|
}
|
31
48
|
}
|
49
|
+
;
|
50
|
+
static isValid(color) {
|
51
|
+
const _color = tinycolor(color);
|
52
|
+
return _color.isValid();
|
53
|
+
}
|
54
|
+
;
|
32
55
|
static mix(baseColor, hex, percentage) {
|
33
56
|
return tinycolor.mix(baseColor, hex, percentage).toString('rgb');
|
34
57
|
}
|
35
58
|
static multiply(color1, color2) {
|
36
59
|
let rgb1 = tinycolor(color1).toRgb();
|
37
60
|
let rgb2 = tinycolor(color2).toRgb();
|
38
|
-
rgb1.b = Math.floor(
|
39
|
-
rgb1.g = Math.floor(
|
40
|
-
rgb1.r = Math.floor(
|
61
|
+
rgb1.b = Math.floor(rgb1.b * rgb2.b / 255);
|
62
|
+
rgb1.g = Math.floor(rgb1.g * rgb2.g / 255);
|
63
|
+
rgb1.r = Math.floor(rgb1.r * rgb2.r / 255);
|
41
64
|
return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');
|
42
65
|
}
|
43
66
|
static contrastToWhite(color) {
|
44
|
-
return tinycolor.readability(
|
67
|
+
return tinycolor.readability("#fff", color);
|
45
68
|
}
|
69
|
+
;
|
46
70
|
static lighten(hex, percentage) {
|
47
71
|
return tinycolor(hex).lighten(percentage);
|
48
72
|
}
|
49
73
|
static darken(hex, percentage) {
|
50
74
|
return tinycolor(hex).darken(percentage);
|
51
75
|
}
|
76
|
+
static brighten(hex, percentage) {
|
77
|
+
return tinycolor(hex).brighten(percentage);
|
78
|
+
}
|
79
|
+
static saturate(hex, percentage) {
|
80
|
+
return tinycolor(hex).saturate(percentage);
|
81
|
+
}
|
82
|
+
static desaturate(hex, percentage) {
|
83
|
+
return tinycolor(hex).getLuminance();
|
84
|
+
}
|
52
85
|
static equal(color1, color2) {
|
53
86
|
return tinycolor.equals(color1, color2);
|
54
87
|
}
|
55
88
|
static gradient(values) {
|
56
89
|
return tinygradient([...values]);
|
57
90
|
}
|
91
|
+
static xyToRgb(vX, vY) {
|
92
|
+
vY = vY || 0.00000000001;
|
93
|
+
const Y = 1;
|
94
|
+
const X = (Y / vY) * vX;
|
95
|
+
const Z = (Y / vY) * (1 - vX - vY);
|
96
|
+
// Convert to RGB using Wide RGB D65 conversion.
|
97
|
+
let rgb = [
|
98
|
+
X * 1.656492 - Y * 0.354851 - Z * 0.255038,
|
99
|
+
-X * 0.707196 + Y * 1.655397 + Z * 0.036152,
|
100
|
+
X * 0.051713 - Y * 0.121364 + Z * 1.011530
|
101
|
+
];
|
102
|
+
// Apply reverse gamma correction.
|
103
|
+
rgb = rgb.map(x => x <= 0.0031308 ? 12.92 * x : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055);
|
104
|
+
// Bring all negative components to zero.
|
105
|
+
rgb = rgb.map(x => Math.max(0, x));
|
106
|
+
// If one component is greater than 1, weight components by that value.
|
107
|
+
const max = Math.max(...rgb);
|
108
|
+
if (max > 1) {
|
109
|
+
rgb = rgb.map(x => x / max);
|
110
|
+
}
|
111
|
+
rgb = rgb.map(x => Math.round(x * 255));
|
112
|
+
return 'rgb(' + rgb.join(',') + ')';
|
113
|
+
}
|
58
114
|
}
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3V0aWxzL3NyYy9jb2xvci11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sU0FBeUIsTUFBTSxZQUFZLENBQUM7QUFDbkQsT0FBTyxZQUFZLE1BQU0sY0FBYyxDQUFDO0FBSXhDLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBb0IsRUFBRSxJQUFpQjtRQUMvQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEIsS0FBSyxNQUFNO2dCQUNULE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QjtnQkFDRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQW9CLEVBQUUsSUFBaUI7UUFDckQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxNQUFNO2dCQUNULE9BQU8sTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlCLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUIsT0FBTyxDQUFDLENBQUM7Z0JBQ1AsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM1QixPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNuRTtTQUNGO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQ1IsU0FBd0IsRUFDeEIsR0FBa0IsRUFDbEIsVUFBa0I7UUFFbEIsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQXFCLEVBQUUsTUFBcUI7UUFDMUQsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM3QyxPQUFPLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FDdEUsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFvQjtRQUN6QyxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQWtCLEVBQUUsVUFBbUI7UUFDcEQsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQWtCLEVBQUUsVUFBbUI7UUFDbkQsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQXFCLEVBQUUsTUFBcUI7UUFDdkQsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FDYixNQUE2QztRQUU3QyxPQUFPLFlBQVksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBWENvbG9yTW9kZSA9ICdyZ2JhJyB8ICdoZXgnIHwgJ2hzbGEnIHwgJ2hzdmEnO1xyXG5cclxuaW1wb3J0IHRpbnljb2xvciwgeyBDb2xvcklucHV0IH0gZnJvbSAndGlueWNvbG9yMic7XHJcbmltcG9ydCB0aW55Z3JhZGllbnQgZnJvbSAndGlueWdyYWRpZW50JztcclxuXHJcbmV4cG9ydCB0eXBlIEFYQ29sb3JGb3JtYXQgPSBDb2xvcklucHV0O1xyXG5cclxuZXhwb3J0IGNsYXNzIEFYQ29sb3JVdGlsIHtcclxuICBzdGF0aWMgdG8oY29sb3I6IEFYQ29sb3JGb3JtYXQsIG1vZGU6IEFYQ29sb3JNb2RlKTogQVhDb2xvckZvcm1hdCB7XHJcbiAgICBjb25zdCBfY29sb3IgPSB0aW55Y29sb3IoY29sb3IpO1xyXG4gICAgc3dpdGNoIChtb2RlKSB7XHJcbiAgICAgIGNhc2UgJ3JnYmEnOlxyXG4gICAgICAgIHJldHVybiBfY29sb3IudG9SZ2IoKTtcclxuICAgICAgY2FzZSAnaHNsYSc6XHJcbiAgICAgICAgcmV0dXJuIF9jb2xvci50b0hzbCgpO1xyXG4gICAgICBjYXNlICdoc3ZhJzpcclxuICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHN2KCk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIF9jb2xvci50b0hleCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRvU3RyaW5nKGNvbG9yOiBBWENvbG9yRm9ybWF0LCBtb2RlOiBBWENvbG9yTW9kZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBfY29sb3IgPSB0aW55Y29sb3IoY29sb3IpO1xyXG4gICAgc3dpdGNoIChtb2RlKSB7XHJcbiAgICAgIGNhc2UgJ3JnYmEnOlxyXG4gICAgICAgIHJldHVybiBfY29sb3IudG9SZ2JTdHJpbmcoKTtcclxuICAgICAgY2FzZSAnaHNsYSc6XHJcbiAgICAgICAgcmV0dXJuIF9jb2xvci50b0hzbFN0cmluZygpO1xyXG4gICAgICBjYXNlICdoc3ZhJzpcclxuICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHN2U3RyaW5nKCk7XHJcbiAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICBjb25zdCByZ2JhID0gX2NvbG9yLnRvUmdiKCk7XHJcbiAgICAgICAgcmV0dXJuIHJnYmEuYSAhPSAxID8gX2NvbG9yLnRvSGV4OFN0cmluZygpIDogX2NvbG9yLnRvSGV4U3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBtaXgoXHJcbiAgICBiYXNlQ29sb3I6IEFYQ29sb3JGb3JtYXQsXHJcbiAgICBoZXg6IEFYQ29sb3JGb3JtYXQsXHJcbiAgICBwZXJjZW50YWdlOiBudW1iZXJcclxuICApOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRpbnljb2xvci5taXgoYmFzZUNvbG9yLCBoZXgsIHBlcmNlbnRhZ2UpLnRvU3RyaW5nKCdyZ2InKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtdWx0aXBseShjb2xvcjE6IEFYQ29sb3JGb3JtYXQsIGNvbG9yMjogQVhDb2xvckZvcm1hdCk6IHN0cmluZyB7XHJcbiAgICBsZXQgcmdiMSA9IHRpbnljb2xvcihjb2xvcjEpLnRvUmdiKCk7XHJcbiAgICBsZXQgcmdiMiA9IHRpbnljb2xvcihjb2xvcjIpLnRvUmdiKCk7XHJcbiAgICByZ2IxLmIgPSBNYXRoLmZsb29yKChyZ2IxLmIgKiByZ2IyLmIpIC8gMjU1KTtcclxuICAgIHJnYjEuZyA9IE1hdGguZmxvb3IoKHJnYjEuZyAqIHJnYjIuZykgLyAyNTUpO1xyXG4gICAgcmdiMS5yID0gTWF0aC5mbG9vcigocmdiMS5yICogcmdiMi5yKSAvIDI1NSk7XHJcbiAgICByZXR1cm4gdGlueWNvbG9yKCdyZ2IgJyArIHJnYjEuciArICcgJyArIHJnYjEuZyArICcgJyArIHJnYjEuYikudG9TdHJpbmcoXHJcbiAgICAgICdyZ2InXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNvbnRyYXN0VG9XaGl0ZShjb2xvcjogQVhDb2xvckZvcm1hdCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGlueWNvbG9yLnJlYWRhYmlsaXR5KCcjZmZmJywgY29sb3IpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGxpZ2h0ZW4oaGV4OiBBWENvbG9yRm9ybWF0LCBwZXJjZW50YWdlPzogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGlueWNvbG9yKGhleCkubGlnaHRlbihwZXJjZW50YWdlKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkYXJrZW4oaGV4OiBBWENvbG9yRm9ybWF0LCBwZXJjZW50YWdlPzogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGlueWNvbG9yKGhleCkuZGFya2VuKHBlcmNlbnRhZ2UpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGVxdWFsKGNvbG9yMTogQVhDb2xvckZvcm1hdCwgY29sb3IyOiBBWENvbG9yRm9ybWF0KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGlueWNvbG9yLmVxdWFscyhjb2xvcjEsIGNvbG9yMik7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ3JhZGllbnQoXHJcbiAgICB2YWx1ZXM6IGFueVtdIHwgeyBjb2xvcjogYW55OyBwb3M6IG51bWJlciB9W11cclxuICApOiB0aW55Z3JhZGllbnQuSW5zdGFuY2Uge1xyXG4gICAgcmV0dXJuIHRpbnlncmFkaWVudChbLi4udmFsdWVzXSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3V0aWxzL3NyYy9jb2xvci11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sU0FBeUIsTUFBTSxZQUFZLENBQUM7QUFDbkQsT0FBTyxZQUFZLE1BQU0sY0FBYyxDQUFBO0FBSXZDLE1BQU0sT0FBTyxXQUFXO0lBR3BCLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBb0IsRUFBRSxJQUFpQjtRQUU3QyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDL0IsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLE1BQU07Z0JBQUUsQ0FBQztnQkFDVixPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixLQUFLLE1BQU07Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFCO2dCQUNJLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzdCO0lBQ0wsQ0FBQztJQUFBLENBQUM7SUFFRixNQUFNLENBQUMsUUFBUSxDQUFDLEtBQW9CLEVBQUUsT0FBb0IsSUFBSTtRQUMxRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDL0IsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLE1BQU07Z0JBQ1AsT0FBTyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEMsS0FBSyxNQUFNO2dCQUNQLE9BQU8sTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLEtBQUssTUFBTTtnQkFDUCxPQUFPLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU07Z0JBQ1AsT0FBTyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEMsS0FBSyxLQUFLO2dCQUNOO29CQUNJLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDNUIsT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3JFO1lBQ0w7Z0JBQ0k7b0JBQ0ksSUFBSSxPQUFPLEtBQUssSUFBSSxRQUFRLEVBQUU7d0JBQzFCLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7NEJBQ25DLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7OzRCQUVuQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3FCQUMzQzt5QkFDSTt3QkFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3FCQUN2QztpQkFDSjtTQUNSO0lBQ0wsQ0FBQztJQUFBLENBQUM7SUFFRixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQW9CO1FBQy9CLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMvQixPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBQUEsQ0FBQztJQUVGLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBd0IsRUFBRSxHQUFrQixFQUFFLFVBQWtCO1FBQ3ZFLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFxQixFQUFFLE1BQXFCO1FBQ3hELElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQyxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDM0MsT0FBTyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBb0I7UUFDdkMsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQUEsQ0FBQztJQUVGLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBa0IsRUFBRSxVQUFtQjtRQUNsRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBa0IsRUFBRSxVQUFtQjtRQUNqRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBa0IsRUFBRSxVQUFtQjtRQUNuRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBa0IsRUFBRSxVQUFtQjtRQUNuRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBa0IsRUFBRSxVQUFtQjtRQUNyRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFxQixFQUFFLE1BQXFCO1FBQ3JELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBNkM7UUFDekQsT0FBTyxZQUFZLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDcEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUU7UUFDakIsRUFBRSxHQUFHLEVBQUUsSUFBSSxhQUFhLENBQUM7UUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVuQyxnREFBZ0Q7UUFDaEQsSUFBSSxHQUFHLEdBQUc7WUFDTixDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxHQUFHLFFBQVE7WUFDMUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxHQUFHLFFBQVE7WUFDM0MsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsR0FBRyxRQUFRO1NBQzdDLENBQUM7UUFFRixrQ0FBa0M7UUFDbEMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDZCxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUM5RSxDQUFDO1FBRUYseUNBQXlDO1FBQ3pDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuQyx1RUFBdUU7UUFDdkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRTtZQUNULEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQy9CO1FBRUQsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXhDLE9BQU8sTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3hDLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYQ29sb3JNb2RlID0gJ3JnYmEnIHwgJ2hleCcgfCAnaHNsYScgfCAnaHN2YSc7XHJcblxyXG5pbXBvcnQgdGlueWNvbG9yLCB7IENvbG9ySW5wdXQgfSBmcm9tICd0aW55Y29sb3IyJztcclxuaW1wb3J0IHRpbnlncmFkaWVudCBmcm9tICd0aW55Z3JhZGllbnQnXHJcblxyXG5leHBvcnQgdHlwZSBBWENvbG9yRm9ybWF0ID0gQ29sb3JJbnB1dDtcclxuXHJcbmV4cG9ydCBjbGFzcyBBWENvbG9yVXRpbCB7XHJcblxyXG5cclxuICAgIHN0YXRpYyB0byhjb2xvcjogQVhDb2xvckZvcm1hdCwgbW9kZTogQVhDb2xvck1vZGUpOiBBWENvbG9yRm9ybWF0IHtcclxuXHJcbiAgICAgICAgY29uc3QgX2NvbG9yID0gdGlueWNvbG9yKGNvbG9yKVxyXG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xyXG4gICAgICAgICAgICBjYXNlICdyZ2JhJzogO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb2xvci50b1JnYigpO1xyXG4gICAgICAgICAgICBjYXNlICdoc2xhJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBfY29sb3IudG9Ic2woKTtcclxuICAgICAgICAgICAgY2FzZSAnaHN2YSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHN2KCk7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbG9yLnRvSGV4KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBzdGF0aWMgdG9TdHJpbmcoY29sb3I6IEFYQ29sb3JGb3JtYXQsIG1vZGU6IEFYQ29sb3JNb2RlID0gbnVsbCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgX2NvbG9yID0gdGlueWNvbG9yKGNvbG9yKVxyXG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xyXG4gICAgICAgICAgICBjYXNlICdyZ2JhJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBfY29sb3IudG9SZ2JTdHJpbmcoKTtcclxuICAgICAgICAgICAgY2FzZSAnaHNsYSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHNsU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2hzdmEnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb2xvci50b0hzdlN0cmluZygpO1xyXG4gICAgICAgICAgICBjYXNlICdoc3ZhJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBfY29sb3IudG9Ic3ZTdHJpbmcoKTtcclxuICAgICAgICAgICAgY2FzZSAnaGV4JzpcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZ2JhID0gX2NvbG9yLnRvUmdiKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJnYmEuYSAhPSAxID8gX2NvbG9yLnRvSGV4OFN0cmluZygpIDogX2NvbG9yLnRvSGV4U3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb2xvciA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sb3IudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFwiI1wiKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKGNvbG9yLCBcImhleFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoY29sb3IsIFwicmdiYVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKGNvbG9yLCBcInJnYmFcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgc3RhdGljIGlzVmFsaWQoY29sb3I6IEFYQ29sb3JGb3JtYXQpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBfY29sb3IgPSB0aW55Y29sb3IoY29sb3IpXHJcbiAgICAgICAgcmV0dXJuIF9jb2xvci5pc1ZhbGlkKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIHN0YXRpYyBtaXgoYmFzZUNvbG9yOiBBWENvbG9yRm9ybWF0LCBoZXg6IEFYQ29sb3JGb3JtYXQsIHBlcmNlbnRhZ2U6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRpbnljb2xvci5taXgoYmFzZUNvbG9yLCBoZXgsIHBlcmNlbnRhZ2UpLnRvU3RyaW5nKCdyZ2InKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgbXVsdGlwbHkoY29sb3IxOiBBWENvbG9yRm9ybWF0LCBjb2xvcjI6IEFYQ29sb3JGb3JtYXQpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCByZ2IxID0gdGlueWNvbG9yKGNvbG9yMSkudG9SZ2IoKTtcclxuICAgICAgICBsZXQgcmdiMiA9IHRpbnljb2xvcihjb2xvcjIpLnRvUmdiKCk7XHJcbiAgICAgICAgcmdiMS5iID0gTWF0aC5mbG9vcihyZ2IxLmIgKiByZ2IyLmIgLyAyNTUpO1xyXG4gICAgICAgIHJnYjEuZyA9IE1hdGguZmxvb3IocmdiMS5nICogcmdiMi5nIC8gMjU1KTtcclxuICAgICAgICByZ2IxLnIgPSBNYXRoLmZsb29yKHJnYjEuciAqIHJnYjIuciAvIDI1NSk7XHJcbiAgICAgICAgcmV0dXJuIHRpbnljb2xvcigncmdiICcgKyByZ2IxLnIgKyAnICcgKyByZ2IxLmcgKyAnICcgKyByZ2IxLmIpLnRvU3RyaW5nKCdyZ2InKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29udHJhc3RUb1doaXRlKGNvbG9yOiBBWENvbG9yRm9ybWF0KTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGlueWNvbG9yLnJlYWRhYmlsaXR5KFwiI2ZmZlwiLCBjb2xvcik7XHJcbiAgICB9O1xyXG5cclxuICAgIHN0YXRpYyBsaWdodGVuKGhleDogQVhDb2xvckZvcm1hdCwgcGVyY2VudGFnZT86IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiB0aW55Y29sb3IoaGV4KS5saWdodGVuKHBlcmNlbnRhZ2UpXHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGRhcmtlbihoZXg6IEFYQ29sb3JGb3JtYXQsIHBlcmNlbnRhZ2U/OiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gdGlueWNvbG9yKGhleCkuZGFya2VuKHBlcmNlbnRhZ2UpXHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGJyaWdodGVuKGhleDogQVhDb2xvckZvcm1hdCwgcGVyY2VudGFnZT86IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiB0aW55Y29sb3IoaGV4KS5icmlnaHRlbihwZXJjZW50YWdlKVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzYXR1cmF0ZShoZXg6IEFYQ29sb3JGb3JtYXQsIHBlcmNlbnRhZ2U/OiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gdGlueWNvbG9yKGhleCkuc2F0dXJhdGUocGVyY2VudGFnZSlcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZGVzYXR1cmF0ZShoZXg6IEFYQ29sb3JGb3JtYXQsIHBlcmNlbnRhZ2U/OiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gdGlueWNvbG9yKGhleCkuZ2V0THVtaW5hbmNlKClcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZXF1YWwoY29sb3IxOiBBWENvbG9yRm9ybWF0LCBjb2xvcjI6IEFYQ29sb3JGb3JtYXQpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGlueWNvbG9yLmVxdWFscyhjb2xvcjEsIGNvbG9yMik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdyYWRpZW50KHZhbHVlczogYW55W10gfCB7IGNvbG9yOiBhbnksIHBvczogbnVtYmVyIH1bXSk6IHRpbnlncmFkaWVudC5JbnN0YW5jZSB7XHJcbiAgICAgICAgcmV0dXJuIHRpbnlncmFkaWVudChbLi4udmFsdWVzXSlcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgeHlUb1JnYih2WCwgdlkpOiBzdHJpbmcge1xyXG4gICAgICAgIHZZID0gdlkgfHwgMC4wMDAwMDAwMDAwMTtcclxuICAgICAgICBjb25zdCBZID0gMTtcclxuICAgICAgICBjb25zdCBYID0gKFkgLyB2WSkgKiB2WDtcclxuICAgICAgICBjb25zdCBaID0gKFkgLyB2WSkgKiAoMSAtIHZYIC0gdlkpO1xyXG5cclxuICAgICAgICAvLyBDb252ZXJ0IHRvIFJHQiB1c2luZyBXaWRlIFJHQiBENjUgY29udmVyc2lvbi5cclxuICAgICAgICBsZXQgcmdiID0gW1xyXG4gICAgICAgICAgICBYICogMS42NTY0OTIgLSBZICogMC4zNTQ4NTEgLSBaICogMC4yNTUwMzgsXHJcbiAgICAgICAgICAgIC1YICogMC43MDcxOTYgKyBZICogMS42NTUzOTcgKyBaICogMC4wMzYxNTIsXHJcbiAgICAgICAgICAgIFggKiAwLjA1MTcxMyAtIFkgKiAwLjEyMTM2NCArIFogKiAxLjAxMTUzMFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIC8vIEFwcGx5IHJldmVyc2UgZ2FtbWEgY29ycmVjdGlvbi5cclxuICAgICAgICByZ2IgPSByZ2IubWFwKHggPT5cclxuICAgICAgICAgICAgeCA8PSAwLjAwMzEzMDggPyAxMi45MiAqIHggOiAoMS4wICsgMC4wNTUpICogTWF0aC5wb3coeCwgMS4wIC8gMi40KSAtIDAuMDU1XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8gQnJpbmcgYWxsIG5lZ2F0aXZlIGNvbXBvbmVudHMgdG8gemVyby5cclxuICAgICAgICByZ2IgPSByZ2IubWFwKHggPT4gTWF0aC5tYXgoMCwgeCkpO1xyXG5cclxuICAgICAgICAvLyBJZiBvbmUgY29tcG9uZW50IGlzIGdyZWF0ZXIgdGhhbiAxLCB3ZWlnaHQgY29tcG9uZW50cyBieSB0aGF0IHZhbHVlLlxyXG4gICAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnJnYik7XHJcbiAgICAgICAgaWYgKG1heCA+IDEpIHtcclxuICAgICAgICAgICAgcmdiID0gcmdiLm1hcCh4ID0+IHggLyBtYXgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmdiID0gcmdiLm1hcCh4ID0+IE1hdGgucm91bmQoeCAqIDI1NSkpO1xyXG5cclxuICAgICAgICByZXR1cm4gJ3JnYignICsgcmdiLmpvaW4oJywnKSArICcpJztcclxuICAgIH1cclxuXHJcbn0iXX0=
|
@@ -23,5 +23,8 @@ export class AXDrawingUtil {
|
|
23
23
|
static isInRecPoint(pos, rec) {
|
24
24
|
return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));
|
25
25
|
}
|
26
|
+
static convertRemToPixels(rem) {
|
27
|
+
return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);
|
28
|
+
}
|
26
29
|
}
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2luZy11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvdXRpbHMvc3JjL2RyYXdpbmctdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxXQUFXO0FBQ1gsTUFBTSxPQUFPLGFBQWE7SUFDdEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFjLEVBQUUsQ0FBYztRQUMzQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUVyQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSTtZQUM1RCxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRTtZQUM1RCxPQUFPLElBQUksQ0FBQztTQUNmO2FBQ0k7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBWSxFQUFFLE9BQW9CO1FBQ3RELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2hELE9BQU8sYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7WUFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNkLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtTQUN6QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFZLEVBQUUsR0FBK0I7UUFDN0QsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pILENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBVztRQUNqQyxPQUFPLEdBQUcsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQVhQb2ludCB7XHJcbiAgICB4OiBudW1iZXI7XHJcbiAgICB5OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhCb3VuZGluZ0NsaWVudFJlY3Qge1xyXG4gICAgbGVmdD86IG51bWJlcjtcclxuICAgIHRvcD86IG51bWJlcjtcclxuICAgIHdpZHRoPzogbnVtYmVyO1xyXG4gICAgaGVpZ2h0PzogbnVtYmVyO1xyXG4gICAgYm90dG9tPzogbnVtYmVyO1xyXG4gICAgcmlnaHQ/OiBudW1iZXI7XHJcbn1cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEFYRHJhd2luZ1V0aWwge1xyXG4gICAgc3RhdGljIGNvbGxpc2lvbihhOiBIVE1MRWxlbWVudCwgYjogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBhYyA9IGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgY29uc3QgYmMgPSBiLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICBpZiAoYWMubGVmdCA8IGJjLmxlZnQgKyBiYy53aWR0aCAmJiBhYy5sZWZ0ICsgYWMud2lkdGggPiBiYy5sZWZ0ICYmXHJcbiAgICAgICAgICAgIGFjLnRvcCA8IGJjLnRvcCArIGJjLmhlaWdodCAmJiBhYy50b3AgKyBhYy5oZWlnaHQgPiBiYy50b3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0luRWxlbWVudEJvdW5kKHBvczogQVhQb2ludCwgZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBlbEJvdW5kID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICByZXR1cm4gQVhEcmF3aW5nVXRpbC5pc0luUmVjUG9pbnQocG9zLCB7XHJcbiAgICAgICAgICAgIGxlZnQ6IGVsQm91bmQueCxcclxuICAgICAgICAgICAgd2lkdGg6IGVsQm91bmQud2lkdGgsXHJcbiAgICAgICAgICAgIHRvcDogZWxCb3VuZC55LFxyXG4gICAgICAgICAgICBoZWlnaHQ6IGVsQm91bmQuaGVpZ2h0XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzSW5SZWNQb2ludChwb3M6IEFYUG9pbnQsIHJlYzogQVhCb3VuZGluZ0NsaWVudFJlY3QgfCBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gcG9zLnggPj0gcmVjLmxlZnQgJiYgcG9zLnggPD0gKHJlYy5sZWZ0ICsgcmVjLndpZHRoKSAmJiBwb3MueSA+PSByZWMudG9wICYmIChwb3MueSA8PSAocmVjLnRvcCArIHJlYy5oZWlnaHQpKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29udmVydFJlbVRvUGl4ZWxzKHJlbTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gcmVtICogcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZm9udFNpemUpO1xyXG4gICAgfVxyXG5cclxufSJdfQ==
|
@@ -65,6 +65,9 @@ class AXDrawingUtil {
|
|
65
65
|
static isInRecPoint(pos, rec) {
|
66
66
|
return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));
|
67
67
|
}
|
68
|
+
static convertRemToPixels(rem) {
|
69
|
+
return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);
|
70
|
+
}
|
68
71
|
}
|
69
72
|
|
70
73
|
// @dynamic
|
@@ -91,6 +94,7 @@ class AXColorUtil {
|
|
91
94
|
const _color = tinycolor(color);
|
92
95
|
switch (mode) {
|
93
96
|
case 'rgba':
|
97
|
+
;
|
94
98
|
return _color.toRgb();
|
95
99
|
case 'hsla':
|
96
100
|
return _color.toHsl();
|
@@ -100,7 +104,8 @@ class AXColorUtil {
|
|
100
104
|
return _color.toHex();
|
101
105
|
}
|
102
106
|
}
|
103
|
-
|
107
|
+
;
|
108
|
+
static toString(color, mode = null) {
|
104
109
|
const _color = tinycolor(color);
|
105
110
|
switch (mode) {
|
106
111
|
case 'rgba':
|
@@ -109,38 +114,92 @@ class AXColorUtil {
|
|
109
114
|
return _color.toHslString();
|
110
115
|
case 'hsva':
|
111
116
|
return _color.toHsvString();
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
117
|
+
case 'hsva':
|
118
|
+
return _color.toHsvString();
|
119
|
+
case 'hex':
|
120
|
+
{
|
121
|
+
const rgba = _color.toRgb();
|
122
|
+
return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();
|
123
|
+
}
|
124
|
+
default:
|
125
|
+
{
|
126
|
+
if (typeof color == 'string') {
|
127
|
+
if (color.toLowerCase().startsWith("#"))
|
128
|
+
return this.toString(color, "hex");
|
129
|
+
else
|
130
|
+
return this.toString(color, "rgba");
|
131
|
+
}
|
132
|
+
else {
|
133
|
+
return this.toString(color, "rgba");
|
134
|
+
}
|
135
|
+
}
|
116
136
|
}
|
117
137
|
}
|
138
|
+
;
|
139
|
+
static isValid(color) {
|
140
|
+
const _color = tinycolor(color);
|
141
|
+
return _color.isValid();
|
142
|
+
}
|
143
|
+
;
|
118
144
|
static mix(baseColor, hex, percentage) {
|
119
145
|
return tinycolor.mix(baseColor, hex, percentage).toString('rgb');
|
120
146
|
}
|
121
147
|
static multiply(color1, color2) {
|
122
148
|
let rgb1 = tinycolor(color1).toRgb();
|
123
149
|
let rgb2 = tinycolor(color2).toRgb();
|
124
|
-
rgb1.b = Math.floor(
|
125
|
-
rgb1.g = Math.floor(
|
126
|
-
rgb1.r = Math.floor(
|
150
|
+
rgb1.b = Math.floor(rgb1.b * rgb2.b / 255);
|
151
|
+
rgb1.g = Math.floor(rgb1.g * rgb2.g / 255);
|
152
|
+
rgb1.r = Math.floor(rgb1.r * rgb2.r / 255);
|
127
153
|
return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');
|
128
154
|
}
|
129
155
|
static contrastToWhite(color) {
|
130
|
-
return tinycolor.readability(
|
156
|
+
return tinycolor.readability("#fff", color);
|
131
157
|
}
|
158
|
+
;
|
132
159
|
static lighten(hex, percentage) {
|
133
160
|
return tinycolor(hex).lighten(percentage);
|
134
161
|
}
|
135
162
|
static darken(hex, percentage) {
|
136
163
|
return tinycolor(hex).darken(percentage);
|
137
164
|
}
|
165
|
+
static brighten(hex, percentage) {
|
166
|
+
return tinycolor(hex).brighten(percentage);
|
167
|
+
}
|
168
|
+
static saturate(hex, percentage) {
|
169
|
+
return tinycolor(hex).saturate(percentage);
|
170
|
+
}
|
171
|
+
static desaturate(hex, percentage) {
|
172
|
+
return tinycolor(hex).getLuminance();
|
173
|
+
}
|
138
174
|
static equal(color1, color2) {
|
139
175
|
return tinycolor.equals(color1, color2);
|
140
176
|
}
|
141
177
|
static gradient(values) {
|
142
178
|
return tinygradient([...values]);
|
143
179
|
}
|
180
|
+
static xyToRgb(vX, vY) {
|
181
|
+
vY = vY || 0.00000000001;
|
182
|
+
const Y = 1;
|
183
|
+
const X = (Y / vY) * vX;
|
184
|
+
const Z = (Y / vY) * (1 - vX - vY);
|
185
|
+
// Convert to RGB using Wide RGB D65 conversion.
|
186
|
+
let rgb = [
|
187
|
+
X * 1.656492 - Y * 0.354851 - Z * 0.255038,
|
188
|
+
-X * 0.707196 + Y * 1.655397 + Z * 0.036152,
|
189
|
+
X * 0.051713 - Y * 0.121364 + Z * 1.011530
|
190
|
+
];
|
191
|
+
// Apply reverse gamma correction.
|
192
|
+
rgb = rgb.map(x => x <= 0.0031308 ? 12.92 * x : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055);
|
193
|
+
// Bring all negative components to zero.
|
194
|
+
rgb = rgb.map(x => Math.max(0, x));
|
195
|
+
// If one component is greater than 1, weight components by that value.
|
196
|
+
const max = Math.max(...rgb);
|
197
|
+
if (max > 1) {
|
198
|
+
rgb = rgb.map(x => x / max);
|
199
|
+
}
|
200
|
+
rgb = rgb.map(x => Math.round(x * 255));
|
201
|
+
return 'rgb(' + rgb.join(',') + ')';
|
202
|
+
}
|
144
203
|
}
|
145
204
|
|
146
205
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-core-utils.mjs","sources":["../../../../projects/acorex/core/utils/src/object-util.ts","../../../../projects/acorex/core/utils/src/drawing-util.ts","../../../../projects/acorex/core/utils/src/string-util.ts","../../../../projects/acorex/core/utils/src/color-util.ts","../../../../projects/acorex/core/utils/acorex-core-utils.ts"],"sourcesContent":["// @dynamic\r\nexport class AXObjectUtil {\r\n static deepJSONClone(obj: any): any {\r\n return obj ? JSON.parse(JSON.stringify(obj)) : null;\r\n }\r\n\r\n static deepCopy(obj) {\r\n let copy;\r\n // Handle the 3 simple types, and null or undefined\r\n if (null == obj || 'object' !== typeof obj) { return obj; }\r\n // Handle Date\r\n if (obj instanceof Date) {\r\n copy = new Date();\r\n copy.setTime(obj.getTime());\r\n return copy;\r\n }\r\n // Handle Array\r\n if (obj instanceof Array) {\r\n copy = [];\r\n for (let i = 0, len = obj.length; i < len; i++) {\r\n copy[i] = AXObjectUtil.deepCopy(obj[i]);\r\n }\r\n return copy;\r\n }\r\n // Handle Object\r\n if (obj instanceof Object) {\r\n copy = {};\r\n for (const attr in obj) {\r\n if (obj.hasOwnProperty(attr)) { copy[attr] = AXObjectUtil.deepCopy(obj[attr]); }\r\n }\r\n return copy;\r\n }\r\n throw new Error('Unable to copy obj! Its type isn\\'t supported.');\r\n }\r\n\r\n // static fetchProp(obj, prop: string) {\r\n // if (typeof obj === 'undefined') {\r\n // return false;\r\n // }\r\n // const index = prop.indexOf('.');\r\n\r\n // if (index > -1) {\r\n // return AXObjectUtil.fetchProp(obj[prop.substring(0, index)], prop.substr(index + 1));\r\n // }\r\n\r\n // return obj[prop];\r\n // }\r\n\r\n // static getPropByPath(obj, path, defaultVal?) {\r\n // path = path\r\n // .replace(/\\[/g, '.')\r\n // .replace(/]/g, '')\r\n // .split('.');\r\n\r\n // path.forEach((level) => {\r\n // if (obj) {\r\n // obj = obj[level];\r\n // }\r\n // });\r\n\r\n // if (obj === undefined) {\r\n // return defaultVal;\r\n // }\r\n // return obj;\r\n // }\r\n\r\n // static setPropByPath(obj, path, value) {\r\n // if (Object(obj) !== obj) { return obj; } // When obj is not an object\r\n // // If not yet an array, get the keys from the string-path\r\n // if (!Array.isArray(path)) { path = path.toString().match(/[^.[\\]]+/g) || []; }\r\n // path.slice(0, -1).reduce((a, c, i) => // Iterate all of them except the last one\r\n // Object(a[c]) === a[c] // Does the key exist and is its value an object?\r\n // // Yes: then follow that path\r\n // ? a[c]\r\n // // No: create the key. Is the next key a potential array-index?\r\n // : a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1]\r\n // ? [] // Yes: assign a new array object\r\n // : {}, // No: assign a new plain object\r\n // obj)[path[path.length - 1]] = value; // Finally assign the value to the last key\r\n // return obj; // Return the top-level object to allow chaining\r\n // }\r\n}","export interface AXPoint {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface AXBoundingClientRect {\r\n left?: number;\r\n top?: number;\r\n width?: number;\r\n height?: number;\r\n bottom?: number;\r\n right?: number;\r\n}\r\n// @dynamic\r\nexport class AXDrawingUtil {\r\n static collision(a: HTMLElement, b: HTMLElement): boolean {\r\n const ac = a.getBoundingClientRect();\r\n const bc = b.getBoundingClientRect();\r\n\r\n if (ac.left < bc.left + bc.width && ac.left + ac.width > bc.left &&\r\n ac.top < bc.top + bc.height && ac.top + ac.height > bc.top) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n static isInElementBound(pos: AXPoint, element: HTMLElement): boolean {\r\n const elBound = element.getBoundingClientRect();\r\n return AXDrawingUtil.isInRecPoint(pos, {\r\n left: elBound.x,\r\n width: elBound.width,\r\n top: elBound.y,\r\n height: elBound.height\r\n });\r\n }\r\n\r\n static isInRecPoint(pos: AXPoint, rec: AXBoundingClientRect | any): boolean {\r\n return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));\r\n }\r\n\r\n}","// @dynamic\r\nexport class AXStringUtil {\r\n\r\n static getWordBoundsAtPosition(str: string, position: number): { start: number, end: number } {\r\n const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);\r\n let start = position - 1;\r\n\r\n while (start >= 0 && !isSpace(str[start])) {\r\n start -= 1;\r\n }\r\n start = Math.max(0, start + 1);\r\n const leftSideString:any = str.slice(start).match(/[a-zA-Z0-9]+/i);\r\n start += leftSideString.index;\r\n let end = start + leftSideString[0].length;\r\n return {\r\n start,\r\n end\r\n };\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}","export type AXColorMode = 'rgba' | 'hex' | 'hsla' | 'hsva';\r\n\r\nimport tinycolor, { ColorInput } from 'tinycolor2';\r\nimport tinygradient from 'tinygradient';\r\n\r\nexport type AXColorFormat = ColorInput;\r\n\r\nexport class AXColorUtil {\r\n static to(color: AXColorFormat, mode: AXColorMode): AXColorFormat {\r\n const _color = tinycolor(color);\r\n switch (mode) {\r\n case 'rgba':\r\n return _color.toRgb();\r\n case 'hsla':\r\n return _color.toHsl();\r\n case 'hsva':\r\n return _color.toHsv();\r\n default:\r\n return _color.toHex();\r\n }\r\n }\r\n\r\n static toString(color: AXColorFormat, mode: AXColorMode): string {\r\n const _color = tinycolor(color);\r\n switch (mode) {\r\n case 'rgba':\r\n return _color.toRgbString();\r\n case 'hsla':\r\n return _color.toHslString();\r\n case 'hsva':\r\n return _color.toHsvString();\r\n default: {\r\n const rgba = _color.toRgb();\r\n return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();\r\n }\r\n }\r\n }\r\n\r\n static mix(\r\n baseColor: AXColorFormat,\r\n hex: AXColorFormat,\r\n percentage: number\r\n ): string {\r\n return tinycolor.mix(baseColor, hex, percentage).toString('rgb');\r\n }\r\n\r\n static multiply(color1: AXColorFormat, color2: AXColorFormat): string {\r\n let rgb1 = tinycolor(color1).toRgb();\r\n let rgb2 = tinycolor(color2).toRgb();\r\n rgb1.b = Math.floor((rgb1.b * rgb2.b) / 255);\r\n rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);\r\n rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);\r\n return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString(\r\n 'rgb'\r\n );\r\n }\r\n\r\n static contrastToWhite(color: AXColorFormat): number {\r\n return tinycolor.readability('#fff', color);\r\n }\r\n\r\n static lighten(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).lighten(percentage);\r\n }\r\n\r\n static darken(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).darken(percentage);\r\n }\r\n\r\n static equal(color1: AXColorFormat, color2: AXColorFormat): boolean {\r\n return tinycolor.equals(color1, color2);\r\n }\r\n\r\n static gradient(\r\n values: any[] | { color: any; pos: number }[]\r\n ): tinygradient.Instance {\r\n return tinygradient([...values]);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-core-utils.mjs","sources":["../../../../projects/acorex/core/utils/src/object-util.ts","../../../../projects/acorex/core/utils/src/drawing-util.ts","../../../../projects/acorex/core/utils/src/string-util.ts","../../../../projects/acorex/core/utils/src/color-util.ts","../../../../projects/acorex/core/utils/acorex-core-utils.ts"],"sourcesContent":["// @dynamic\r\nexport class AXObjectUtil {\r\n static deepJSONClone(obj: any): any {\r\n return obj ? JSON.parse(JSON.stringify(obj)) : null;\r\n }\r\n\r\n static deepCopy(obj) {\r\n let copy;\r\n // Handle the 3 simple types, and null or undefined\r\n if (null == obj || 'object' !== typeof obj) { return obj; }\r\n // Handle Date\r\n if (obj instanceof Date) {\r\n copy = new Date();\r\n copy.setTime(obj.getTime());\r\n return copy;\r\n }\r\n // Handle Array\r\n if (obj instanceof Array) {\r\n copy = [];\r\n for (let i = 0, len = obj.length; i < len; i++) {\r\n copy[i] = AXObjectUtil.deepCopy(obj[i]);\r\n }\r\n return copy;\r\n }\r\n // Handle Object\r\n if (obj instanceof Object) {\r\n copy = {};\r\n for (const attr in obj) {\r\n if (obj.hasOwnProperty(attr)) { copy[attr] = AXObjectUtil.deepCopy(obj[attr]); }\r\n }\r\n return copy;\r\n }\r\n throw new Error('Unable to copy obj! Its type isn\\'t supported.');\r\n }\r\n\r\n // static fetchProp(obj, prop: string) {\r\n // if (typeof obj === 'undefined') {\r\n // return false;\r\n // }\r\n // const index = prop.indexOf('.');\r\n\r\n // if (index > -1) {\r\n // return AXObjectUtil.fetchProp(obj[prop.substring(0, index)], prop.substr(index + 1));\r\n // }\r\n\r\n // return obj[prop];\r\n // }\r\n\r\n // static getPropByPath(obj, path, defaultVal?) {\r\n // path = path\r\n // .replace(/\\[/g, '.')\r\n // .replace(/]/g, '')\r\n // .split('.');\r\n\r\n // path.forEach((level) => {\r\n // if (obj) {\r\n // obj = obj[level];\r\n // }\r\n // });\r\n\r\n // if (obj === undefined) {\r\n // return defaultVal;\r\n // }\r\n // return obj;\r\n // }\r\n\r\n // static setPropByPath(obj, path, value) {\r\n // if (Object(obj) !== obj) { return obj; } // When obj is not an object\r\n // // If not yet an array, get the keys from the string-path\r\n // if (!Array.isArray(path)) { path = path.toString().match(/[^.[\\]]+/g) || []; }\r\n // path.slice(0, -1).reduce((a, c, i) => // Iterate all of them except the last one\r\n // Object(a[c]) === a[c] // Does the key exist and is its value an object?\r\n // // Yes: then follow that path\r\n // ? a[c]\r\n // // No: create the key. Is the next key a potential array-index?\r\n // : a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1]\r\n // ? [] // Yes: assign a new array object\r\n // : {}, // No: assign a new plain object\r\n // obj)[path[path.length - 1]] = value; // Finally assign the value to the last key\r\n // return obj; // Return the top-level object to allow chaining\r\n // }\r\n}","export interface AXPoint {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface AXBoundingClientRect {\r\n left?: number;\r\n top?: number;\r\n width?: number;\r\n height?: number;\r\n bottom?: number;\r\n right?: number;\r\n}\r\n// @dynamic\r\nexport class AXDrawingUtil {\r\n static collision(a: HTMLElement, b: HTMLElement): boolean {\r\n const ac = a.getBoundingClientRect();\r\n const bc = b.getBoundingClientRect();\r\n\r\n if (ac.left < bc.left + bc.width && ac.left + ac.width > bc.left &&\r\n ac.top < bc.top + bc.height && ac.top + ac.height > bc.top) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n static isInElementBound(pos: AXPoint, element: HTMLElement): boolean {\r\n const elBound = element.getBoundingClientRect();\r\n return AXDrawingUtil.isInRecPoint(pos, {\r\n left: elBound.x,\r\n width: elBound.width,\r\n top: elBound.y,\r\n height: elBound.height\r\n });\r\n }\r\n\r\n static isInRecPoint(pos: AXPoint, rec: AXBoundingClientRect | any): boolean {\r\n return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));\r\n }\r\n\r\n static convertRemToPixels(rem: number): number {\r\n return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);\r\n }\r\n\r\n}","// @dynamic\r\nexport class AXStringUtil {\r\n\r\n static getWordBoundsAtPosition(str: string, position: number): { start: number, end: number } {\r\n const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);\r\n let start = position - 1;\r\n\r\n while (start >= 0 && !isSpace(str[start])) {\r\n start -= 1;\r\n }\r\n start = Math.max(0, start + 1);\r\n const leftSideString:any = str.slice(start).match(/[a-zA-Z0-9]+/i);\r\n start += leftSideString.index;\r\n let end = start + leftSideString[0].length;\r\n return {\r\n start,\r\n end\r\n };\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}","export type AXColorMode = 'rgba' | 'hex' | 'hsla' | 'hsva';\r\n\r\nimport tinycolor, { ColorInput } from 'tinycolor2';\r\nimport tinygradient from 'tinygradient'\r\n\r\nexport type AXColorFormat = ColorInput;\r\n\r\nexport class AXColorUtil {\r\n\r\n\r\n static to(color: AXColorFormat, mode: AXColorMode): AXColorFormat {\r\n\r\n const _color = tinycolor(color)\r\n switch (mode) {\r\n case 'rgba': ;\r\n return _color.toRgb();\r\n case 'hsla':\r\n return _color.toHsl();\r\n case 'hsva':\r\n return _color.toHsv();\r\n default:\r\n return _color.toHex();\r\n }\r\n };\r\n\r\n static toString(color: AXColorFormat, mode: AXColorMode = null): string {\r\n const _color = tinycolor(color)\r\n switch (mode) {\r\n case 'rgba':\r\n return _color.toRgbString();\r\n case 'hsla':\r\n return _color.toHslString();\r\n case 'hsva':\r\n return _color.toHsvString();\r\n case 'hsva':\r\n return _color.toHsvString();\r\n case 'hex':\r\n {\r\n const rgba = _color.toRgb();\r\n return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();\r\n }\r\n default:\r\n {\r\n if (typeof color == 'string') {\r\n if (color.toLowerCase().startsWith(\"#\"))\r\n return this.toString(color, \"hex\");\r\n else\r\n return this.toString(color, \"rgba\");\r\n }\r\n else {\r\n return this.toString(color, \"rgba\");\r\n }\r\n }\r\n }\r\n };\r\n\r\n static isValid(color: AXColorFormat): boolean {\r\n const _color = tinycolor(color)\r\n return _color.isValid();\r\n };\r\n\r\n static mix(baseColor: AXColorFormat, hex: AXColorFormat, percentage: number): string {\r\n return tinycolor.mix(baseColor, hex, percentage).toString('rgb');\r\n }\r\n\r\n static multiply(color1: AXColorFormat, color2: AXColorFormat): string {\r\n let rgb1 = tinycolor(color1).toRgb();\r\n let rgb2 = tinycolor(color2).toRgb();\r\n rgb1.b = Math.floor(rgb1.b * rgb2.b / 255);\r\n rgb1.g = Math.floor(rgb1.g * rgb2.g / 255);\r\n rgb1.r = Math.floor(rgb1.r * rgb2.r / 255);\r\n return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');\r\n }\r\n\r\n static contrastToWhite(color: AXColorFormat): number {\r\n return tinycolor.readability(\"#fff\", color);\r\n };\r\n\r\n static lighten(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).lighten(percentage)\r\n }\r\n\r\n static darken(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).darken(percentage)\r\n }\r\n\r\n static brighten(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).brighten(percentage)\r\n }\r\n\r\n static saturate(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).saturate(percentage)\r\n }\r\n\r\n static desaturate(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).getLuminance()\r\n }\r\n\r\n static equal(color1: AXColorFormat, color2: AXColorFormat): boolean {\r\n return tinycolor.equals(color1, color2);\r\n }\r\n\r\n static gradient(values: any[] | { color: any, pos: number }[]): tinygradient.Instance {\r\n return tinygradient([...values])\r\n }\r\n\r\n static xyToRgb(vX, vY): string {\r\n vY = vY || 0.00000000001;\r\n const Y = 1;\r\n const X = (Y / vY) * vX;\r\n const Z = (Y / vY) * (1 - vX - vY);\r\n\r\n // Convert to RGB using Wide RGB D65 conversion.\r\n let rgb = [\r\n X * 1.656492 - Y * 0.354851 - Z * 0.255038,\r\n -X * 0.707196 + Y * 1.655397 + Z * 0.036152,\r\n X * 0.051713 - Y * 0.121364 + Z * 1.011530\r\n ];\r\n\r\n // Apply reverse gamma correction.\r\n rgb = rgb.map(x =>\r\n x <= 0.0031308 ? 12.92 * x : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055\r\n );\r\n\r\n // Bring all negative components to zero.\r\n rgb = rgb.map(x => Math.max(0, x));\r\n\r\n // If one component is greater than 1, weight components by that value.\r\n const max = Math.max(...rgb);\r\n if (max > 1) {\r\n rgb = rgb.map(x => x / max);\r\n }\r\n\r\n rgb = rgb.map(x => Math.round(x * 255));\r\n\r\n return 'rgb(' + rgb.join(',') + ')';\r\n }\r\n\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
@@ -65,6 +65,9 @@ class AXDrawingUtil {
|
|
65
65
|
static isInRecPoint(pos, rec) {
|
66
66
|
return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));
|
67
67
|
}
|
68
|
+
static convertRemToPixels(rem) {
|
69
|
+
return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);
|
70
|
+
}
|
68
71
|
}
|
69
72
|
|
70
73
|
// @dynamic
|
@@ -91,6 +94,7 @@ class AXColorUtil {
|
|
91
94
|
const _color = tinycolor(color);
|
92
95
|
switch (mode) {
|
93
96
|
case 'rgba':
|
97
|
+
;
|
94
98
|
return _color.toRgb();
|
95
99
|
case 'hsla':
|
96
100
|
return _color.toHsl();
|
@@ -100,7 +104,8 @@ class AXColorUtil {
|
|
100
104
|
return _color.toHex();
|
101
105
|
}
|
102
106
|
}
|
103
|
-
|
107
|
+
;
|
108
|
+
static toString(color, mode = null) {
|
104
109
|
const _color = tinycolor(color);
|
105
110
|
switch (mode) {
|
106
111
|
case 'rgba':
|
@@ -109,38 +114,92 @@ class AXColorUtil {
|
|
109
114
|
return _color.toHslString();
|
110
115
|
case 'hsva':
|
111
116
|
return _color.toHsvString();
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
117
|
+
case 'hsva':
|
118
|
+
return _color.toHsvString();
|
119
|
+
case 'hex':
|
120
|
+
{
|
121
|
+
const rgba = _color.toRgb();
|
122
|
+
return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();
|
123
|
+
}
|
124
|
+
default:
|
125
|
+
{
|
126
|
+
if (typeof color == 'string') {
|
127
|
+
if (color.toLowerCase().startsWith("#"))
|
128
|
+
return this.toString(color, "hex");
|
129
|
+
else
|
130
|
+
return this.toString(color, "rgba");
|
131
|
+
}
|
132
|
+
else {
|
133
|
+
return this.toString(color, "rgba");
|
134
|
+
}
|
135
|
+
}
|
116
136
|
}
|
117
137
|
}
|
138
|
+
;
|
139
|
+
static isValid(color) {
|
140
|
+
const _color = tinycolor(color);
|
141
|
+
return _color.isValid();
|
142
|
+
}
|
143
|
+
;
|
118
144
|
static mix(baseColor, hex, percentage) {
|
119
145
|
return tinycolor.mix(baseColor, hex, percentage).toString('rgb');
|
120
146
|
}
|
121
147
|
static multiply(color1, color2) {
|
122
148
|
let rgb1 = tinycolor(color1).toRgb();
|
123
149
|
let rgb2 = tinycolor(color2).toRgb();
|
124
|
-
rgb1.b = Math.floor(
|
125
|
-
rgb1.g = Math.floor(
|
126
|
-
rgb1.r = Math.floor(
|
150
|
+
rgb1.b = Math.floor(rgb1.b * rgb2.b / 255);
|
151
|
+
rgb1.g = Math.floor(rgb1.g * rgb2.g / 255);
|
152
|
+
rgb1.r = Math.floor(rgb1.r * rgb2.r / 255);
|
127
153
|
return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');
|
128
154
|
}
|
129
155
|
static contrastToWhite(color) {
|
130
|
-
return tinycolor.readability(
|
156
|
+
return tinycolor.readability("#fff", color);
|
131
157
|
}
|
158
|
+
;
|
132
159
|
static lighten(hex, percentage) {
|
133
160
|
return tinycolor(hex).lighten(percentage);
|
134
161
|
}
|
135
162
|
static darken(hex, percentage) {
|
136
163
|
return tinycolor(hex).darken(percentage);
|
137
164
|
}
|
165
|
+
static brighten(hex, percentage) {
|
166
|
+
return tinycolor(hex).brighten(percentage);
|
167
|
+
}
|
168
|
+
static saturate(hex, percentage) {
|
169
|
+
return tinycolor(hex).saturate(percentage);
|
170
|
+
}
|
171
|
+
static desaturate(hex, percentage) {
|
172
|
+
return tinycolor(hex).getLuminance();
|
173
|
+
}
|
138
174
|
static equal(color1, color2) {
|
139
175
|
return tinycolor.equals(color1, color2);
|
140
176
|
}
|
141
177
|
static gradient(values) {
|
142
178
|
return tinygradient([...values]);
|
143
179
|
}
|
180
|
+
static xyToRgb(vX, vY) {
|
181
|
+
vY = vY || 0.00000000001;
|
182
|
+
const Y = 1;
|
183
|
+
const X = (Y / vY) * vX;
|
184
|
+
const Z = (Y / vY) * (1 - vX - vY);
|
185
|
+
// Convert to RGB using Wide RGB D65 conversion.
|
186
|
+
let rgb = [
|
187
|
+
X * 1.656492 - Y * 0.354851 - Z * 0.255038,
|
188
|
+
-X * 0.707196 + Y * 1.655397 + Z * 0.036152,
|
189
|
+
X * 0.051713 - Y * 0.121364 + Z * 1.011530
|
190
|
+
];
|
191
|
+
// Apply reverse gamma correction.
|
192
|
+
rgb = rgb.map(x => x <= 0.0031308 ? 12.92 * x : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055);
|
193
|
+
// Bring all negative components to zero.
|
194
|
+
rgb = rgb.map(x => Math.max(0, x));
|
195
|
+
// If one component is greater than 1, weight components by that value.
|
196
|
+
const max = Math.max(...rgb);
|
197
|
+
if (max > 1) {
|
198
|
+
rgb = rgb.map(x => x / max);
|
199
|
+
}
|
200
|
+
rgb = rgb.map(x => Math.round(x * 255));
|
201
|
+
return 'rgb(' + rgb.join(',') + ')';
|
202
|
+
}
|
144
203
|
}
|
145
204
|
|
146
205
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-core-utils.mjs","sources":["../../../../projects/acorex/core/utils/src/object-util.ts","../../../../projects/acorex/core/utils/src/drawing-util.ts","../../../../projects/acorex/core/utils/src/string-util.ts","../../../../projects/acorex/core/utils/src/color-util.ts","../../../../projects/acorex/core/utils/acorex-core-utils.ts"],"sourcesContent":["// @dynamic\r\nexport class AXObjectUtil {\r\n static deepJSONClone(obj: any): any {\r\n return obj ? JSON.parse(JSON.stringify(obj)) : null;\r\n }\r\n\r\n static deepCopy(obj) {\r\n let copy;\r\n // Handle the 3 simple types, and null or undefined\r\n if (null == obj || 'object' !== typeof obj) { return obj; }\r\n // Handle Date\r\n if (obj instanceof Date) {\r\n copy = new Date();\r\n copy.setTime(obj.getTime());\r\n return copy;\r\n }\r\n // Handle Array\r\n if (obj instanceof Array) {\r\n copy = [];\r\n for (let i = 0, len = obj.length; i < len; i++) {\r\n copy[i] = AXObjectUtil.deepCopy(obj[i]);\r\n }\r\n return copy;\r\n }\r\n // Handle Object\r\n if (obj instanceof Object) {\r\n copy = {};\r\n for (const attr in obj) {\r\n if (obj.hasOwnProperty(attr)) { copy[attr] = AXObjectUtil.deepCopy(obj[attr]); }\r\n }\r\n return copy;\r\n }\r\n throw new Error('Unable to copy obj! Its type isn\\'t supported.');\r\n }\r\n\r\n // static fetchProp(obj, prop: string) {\r\n // if (typeof obj === 'undefined') {\r\n // return false;\r\n // }\r\n // const index = prop.indexOf('.');\r\n\r\n // if (index > -1) {\r\n // return AXObjectUtil.fetchProp(obj[prop.substring(0, index)], prop.substr(index + 1));\r\n // }\r\n\r\n // return obj[prop];\r\n // }\r\n\r\n // static getPropByPath(obj, path, defaultVal?) {\r\n // path = path\r\n // .replace(/\\[/g, '.')\r\n // .replace(/]/g, '')\r\n // .split('.');\r\n\r\n // path.forEach((level) => {\r\n // if (obj) {\r\n // obj = obj[level];\r\n // }\r\n // });\r\n\r\n // if (obj === undefined) {\r\n // return defaultVal;\r\n // }\r\n // return obj;\r\n // }\r\n\r\n // static setPropByPath(obj, path, value) {\r\n // if (Object(obj) !== obj) { return obj; } // When obj is not an object\r\n // // If not yet an array, get the keys from the string-path\r\n // if (!Array.isArray(path)) { path = path.toString().match(/[^.[\\]]+/g) || []; }\r\n // path.slice(0, -1).reduce((a, c, i) => // Iterate all of them except the last one\r\n // Object(a[c]) === a[c] // Does the key exist and is its value an object?\r\n // // Yes: then follow that path\r\n // ? a[c]\r\n // // No: create the key. Is the next key a potential array-index?\r\n // : a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1]\r\n // ? [] // Yes: assign a new array object\r\n // : {}, // No: assign a new plain object\r\n // obj)[path[path.length - 1]] = value; // Finally assign the value to the last key\r\n // return obj; // Return the top-level object to allow chaining\r\n // }\r\n}","export interface AXPoint {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface AXBoundingClientRect {\r\n left?: number;\r\n top?: number;\r\n width?: number;\r\n height?: number;\r\n bottom?: number;\r\n right?: number;\r\n}\r\n// @dynamic\r\nexport class AXDrawingUtil {\r\n static collision(a: HTMLElement, b: HTMLElement): boolean {\r\n const ac = a.getBoundingClientRect();\r\n const bc = b.getBoundingClientRect();\r\n\r\n if (ac.left < bc.left + bc.width && ac.left + ac.width > bc.left &&\r\n ac.top < bc.top + bc.height && ac.top + ac.height > bc.top) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n static isInElementBound(pos: AXPoint, element: HTMLElement): boolean {\r\n const elBound = element.getBoundingClientRect();\r\n return AXDrawingUtil.isInRecPoint(pos, {\r\n left: elBound.x,\r\n width: elBound.width,\r\n top: elBound.y,\r\n height: elBound.height\r\n });\r\n }\r\n\r\n static isInRecPoint(pos: AXPoint, rec: AXBoundingClientRect | any): boolean {\r\n return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));\r\n }\r\n\r\n}","// @dynamic\r\nexport class AXStringUtil {\r\n\r\n static getWordBoundsAtPosition(str: string, position: number): { start: number, end: number } {\r\n const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);\r\n let start = position - 1;\r\n\r\n while (start >= 0 && !isSpace(str[start])) {\r\n start -= 1;\r\n }\r\n start = Math.max(0, start + 1);\r\n const leftSideString:any = str.slice(start).match(/[a-zA-Z0-9]+/i);\r\n start += leftSideString.index;\r\n let end = start + leftSideString[0].length;\r\n return {\r\n start,\r\n end\r\n };\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}","export type AXColorMode = 'rgba' | 'hex' | 'hsla' | 'hsva';\r\n\r\nimport tinycolor, { ColorInput } from 'tinycolor2';\r\nimport tinygradient from 'tinygradient';\r\n\r\nexport type AXColorFormat = ColorInput;\r\n\r\nexport class AXColorUtil {\r\n static to(color: AXColorFormat, mode: AXColorMode): AXColorFormat {\r\n const _color = tinycolor(color);\r\n switch (mode) {\r\n case 'rgba':\r\n return _color.toRgb();\r\n case 'hsla':\r\n return _color.toHsl();\r\n case 'hsva':\r\n return _color.toHsv();\r\n default:\r\n return _color.toHex();\r\n }\r\n }\r\n\r\n static toString(color: AXColorFormat, mode: AXColorMode): string {\r\n const _color = tinycolor(color);\r\n switch (mode) {\r\n case 'rgba':\r\n return _color.toRgbString();\r\n case 'hsla':\r\n return _color.toHslString();\r\n case 'hsva':\r\n return _color.toHsvString();\r\n default: {\r\n const rgba = _color.toRgb();\r\n return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();\r\n }\r\n }\r\n }\r\n\r\n static mix(\r\n baseColor: AXColorFormat,\r\n hex: AXColorFormat,\r\n percentage: number\r\n ): string {\r\n return tinycolor.mix(baseColor, hex, percentage).toString('rgb');\r\n }\r\n\r\n static multiply(color1: AXColorFormat, color2: AXColorFormat): string {\r\n let rgb1 = tinycolor(color1).toRgb();\r\n let rgb2 = tinycolor(color2).toRgb();\r\n rgb1.b = Math.floor((rgb1.b * rgb2.b) / 255);\r\n rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);\r\n rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);\r\n return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString(\r\n 'rgb'\r\n );\r\n }\r\n\r\n static contrastToWhite(color: AXColorFormat): number {\r\n return tinycolor.readability('#fff', color);\r\n }\r\n\r\n static lighten(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).lighten(percentage);\r\n }\r\n\r\n static darken(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).darken(percentage);\r\n }\r\n\r\n static equal(color1: AXColorFormat, color2: AXColorFormat): boolean {\r\n return tinycolor.equals(color1, color2);\r\n }\r\n\r\n static gradient(\r\n values: any[] | { color: any; pos: number }[]\r\n ): tinygradient.Instance {\r\n return tinygradient([...values]);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-core-utils.mjs","sources":["../../../../projects/acorex/core/utils/src/object-util.ts","../../../../projects/acorex/core/utils/src/drawing-util.ts","../../../../projects/acorex/core/utils/src/string-util.ts","../../../../projects/acorex/core/utils/src/color-util.ts","../../../../projects/acorex/core/utils/acorex-core-utils.ts"],"sourcesContent":["// @dynamic\r\nexport class AXObjectUtil {\r\n static deepJSONClone(obj: any): any {\r\n return obj ? JSON.parse(JSON.stringify(obj)) : null;\r\n }\r\n\r\n static deepCopy(obj) {\r\n let copy;\r\n // Handle the 3 simple types, and null or undefined\r\n if (null == obj || 'object' !== typeof obj) { return obj; }\r\n // Handle Date\r\n if (obj instanceof Date) {\r\n copy = new Date();\r\n copy.setTime(obj.getTime());\r\n return copy;\r\n }\r\n // Handle Array\r\n if (obj instanceof Array) {\r\n copy = [];\r\n for (let i = 0, len = obj.length; i < len; i++) {\r\n copy[i] = AXObjectUtil.deepCopy(obj[i]);\r\n }\r\n return copy;\r\n }\r\n // Handle Object\r\n if (obj instanceof Object) {\r\n copy = {};\r\n for (const attr in obj) {\r\n if (obj.hasOwnProperty(attr)) { copy[attr] = AXObjectUtil.deepCopy(obj[attr]); }\r\n }\r\n return copy;\r\n }\r\n throw new Error('Unable to copy obj! Its type isn\\'t supported.');\r\n }\r\n\r\n // static fetchProp(obj, prop: string) {\r\n // if (typeof obj === 'undefined') {\r\n // return false;\r\n // }\r\n // const index = prop.indexOf('.');\r\n\r\n // if (index > -1) {\r\n // return AXObjectUtil.fetchProp(obj[prop.substring(0, index)], prop.substr(index + 1));\r\n // }\r\n\r\n // return obj[prop];\r\n // }\r\n\r\n // static getPropByPath(obj, path, defaultVal?) {\r\n // path = path\r\n // .replace(/\\[/g, '.')\r\n // .replace(/]/g, '')\r\n // .split('.');\r\n\r\n // path.forEach((level) => {\r\n // if (obj) {\r\n // obj = obj[level];\r\n // }\r\n // });\r\n\r\n // if (obj === undefined) {\r\n // return defaultVal;\r\n // }\r\n // return obj;\r\n // }\r\n\r\n // static setPropByPath(obj, path, value) {\r\n // if (Object(obj) !== obj) { return obj; } // When obj is not an object\r\n // // If not yet an array, get the keys from the string-path\r\n // if (!Array.isArray(path)) { path = path.toString().match(/[^.[\\]]+/g) || []; }\r\n // path.slice(0, -1).reduce((a, c, i) => // Iterate all of them except the last one\r\n // Object(a[c]) === a[c] // Does the key exist and is its value an object?\r\n // // Yes: then follow that path\r\n // ? a[c]\r\n // // No: create the key. Is the next key a potential array-index?\r\n // : a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1]\r\n // ? [] // Yes: assign a new array object\r\n // : {}, // No: assign a new plain object\r\n // obj)[path[path.length - 1]] = value; // Finally assign the value to the last key\r\n // return obj; // Return the top-level object to allow chaining\r\n // }\r\n}","export interface AXPoint {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface AXBoundingClientRect {\r\n left?: number;\r\n top?: number;\r\n width?: number;\r\n height?: number;\r\n bottom?: number;\r\n right?: number;\r\n}\r\n// @dynamic\r\nexport class AXDrawingUtil {\r\n static collision(a: HTMLElement, b: HTMLElement): boolean {\r\n const ac = a.getBoundingClientRect();\r\n const bc = b.getBoundingClientRect();\r\n\r\n if (ac.left < bc.left + bc.width && ac.left + ac.width > bc.left &&\r\n ac.top < bc.top + bc.height && ac.top + ac.height > bc.top) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n static isInElementBound(pos: AXPoint, element: HTMLElement): boolean {\r\n const elBound = element.getBoundingClientRect();\r\n return AXDrawingUtil.isInRecPoint(pos, {\r\n left: elBound.x,\r\n width: elBound.width,\r\n top: elBound.y,\r\n height: elBound.height\r\n });\r\n }\r\n\r\n static isInRecPoint(pos: AXPoint, rec: AXBoundingClientRect | any): boolean {\r\n return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));\r\n }\r\n\r\n static convertRemToPixels(rem: number): number {\r\n return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);\r\n }\r\n\r\n}","// @dynamic\r\nexport class AXStringUtil {\r\n\r\n static getWordBoundsAtPosition(str: string, position: number): { start: number, end: number } {\r\n const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);\r\n let start = position - 1;\r\n\r\n while (start >= 0 && !isSpace(str[start])) {\r\n start -= 1;\r\n }\r\n start = Math.max(0, start + 1);\r\n const leftSideString:any = str.slice(start).match(/[a-zA-Z0-9]+/i);\r\n start += leftSideString.index;\r\n let end = start + leftSideString[0].length;\r\n return {\r\n start,\r\n end\r\n };\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}","export type AXColorMode = 'rgba' | 'hex' | 'hsla' | 'hsva';\r\n\r\nimport tinycolor, { ColorInput } from 'tinycolor2';\r\nimport tinygradient from 'tinygradient'\r\n\r\nexport type AXColorFormat = ColorInput;\r\n\r\nexport class AXColorUtil {\r\n\r\n\r\n static to(color: AXColorFormat, mode: AXColorMode): AXColorFormat {\r\n\r\n const _color = tinycolor(color)\r\n switch (mode) {\r\n case 'rgba': ;\r\n return _color.toRgb();\r\n case 'hsla':\r\n return _color.toHsl();\r\n case 'hsva':\r\n return _color.toHsv();\r\n default:\r\n return _color.toHex();\r\n }\r\n };\r\n\r\n static toString(color: AXColorFormat, mode: AXColorMode = null): string {\r\n const _color = tinycolor(color)\r\n switch (mode) {\r\n case 'rgba':\r\n return _color.toRgbString();\r\n case 'hsla':\r\n return _color.toHslString();\r\n case 'hsva':\r\n return _color.toHsvString();\r\n case 'hsva':\r\n return _color.toHsvString();\r\n case 'hex':\r\n {\r\n const rgba = _color.toRgb();\r\n return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();\r\n }\r\n default:\r\n {\r\n if (typeof color == 'string') {\r\n if (color.toLowerCase().startsWith(\"#\"))\r\n return this.toString(color, \"hex\");\r\n else\r\n return this.toString(color, \"rgba\");\r\n }\r\n else {\r\n return this.toString(color, \"rgba\");\r\n }\r\n }\r\n }\r\n };\r\n\r\n static isValid(color: AXColorFormat): boolean {\r\n const _color = tinycolor(color)\r\n return _color.isValid();\r\n };\r\n\r\n static mix(baseColor: AXColorFormat, hex: AXColorFormat, percentage: number): string {\r\n return tinycolor.mix(baseColor, hex, percentage).toString('rgb');\r\n }\r\n\r\n static multiply(color1: AXColorFormat, color2: AXColorFormat): string {\r\n let rgb1 = tinycolor(color1).toRgb();\r\n let rgb2 = tinycolor(color2).toRgb();\r\n rgb1.b = Math.floor(rgb1.b * rgb2.b / 255);\r\n rgb1.g = Math.floor(rgb1.g * rgb2.g / 255);\r\n rgb1.r = Math.floor(rgb1.r * rgb2.r / 255);\r\n return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');\r\n }\r\n\r\n static contrastToWhite(color: AXColorFormat): number {\r\n return tinycolor.readability(\"#fff\", color);\r\n };\r\n\r\n static lighten(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).lighten(percentage)\r\n }\r\n\r\n static darken(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).darken(percentage)\r\n }\r\n\r\n static brighten(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).brighten(percentage)\r\n }\r\n\r\n static saturate(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).saturate(percentage)\r\n }\r\n\r\n static desaturate(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).getLuminance()\r\n }\r\n\r\n static equal(color1: AXColorFormat, color2: AXColorFormat): boolean {\r\n return tinycolor.equals(color1, color2);\r\n }\r\n\r\n static gradient(values: any[] | { color: any, pos: number }[]): tinygradient.Instance {\r\n return tinygradient([...values])\r\n }\r\n\r\n static xyToRgb(vX, vY): string {\r\n vY = vY || 0.00000000001;\r\n const Y = 1;\r\n const X = (Y / vY) * vX;\r\n const Z = (Y / vY) * (1 - vX - vY);\r\n\r\n // Convert to RGB using Wide RGB D65 conversion.\r\n let rgb = [\r\n X * 1.656492 - Y * 0.354851 - Z * 0.255038,\r\n -X * 0.707196 + Y * 1.655397 + Z * 0.036152,\r\n X * 0.051713 - Y * 0.121364 + Z * 1.011530\r\n ];\r\n\r\n // Apply reverse gamma correction.\r\n rgb = rgb.map(x =>\r\n x <= 0.0031308 ? 12.92 * x : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055\r\n );\r\n\r\n // Bring all negative components to zero.\r\n rgb = rgb.map(x => Math.max(0, x));\r\n\r\n // If one component is greater than 1, weight components by that value.\r\n const max = Math.max(...rgb);\r\n if (max > 1) {\r\n rgb = rgb.map(x => x / max);\r\n }\r\n\r\n rgb = rgb.map(x => Math.round(x * 255));\r\n\r\n return 'rgb(' + rgb.join(',') + ')';\r\n }\r\n\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -4,15 +4,20 @@ import tinygradient from 'tinygradient';
|
|
4
4
|
export declare type AXColorFormat = ColorInput;
|
5
5
|
export declare class AXColorUtil {
|
6
6
|
static to(color: AXColorFormat, mode: AXColorMode): AXColorFormat;
|
7
|
-
static toString(color: AXColorFormat, mode
|
7
|
+
static toString(color: AXColorFormat, mode?: AXColorMode): string;
|
8
|
+
static isValid(color: AXColorFormat): boolean;
|
8
9
|
static mix(baseColor: AXColorFormat, hex: AXColorFormat, percentage: number): string;
|
9
10
|
static multiply(color1: AXColorFormat, color2: AXColorFormat): string;
|
10
11
|
static contrastToWhite(color: AXColorFormat): number;
|
11
12
|
static lighten(hex: AXColorFormat, percentage?: number): tinycolor.Instance;
|
12
13
|
static darken(hex: AXColorFormat, percentage?: number): tinycolor.Instance;
|
14
|
+
static brighten(hex: AXColorFormat, percentage?: number): tinycolor.Instance;
|
15
|
+
static saturate(hex: AXColorFormat, percentage?: number): tinycolor.Instance;
|
16
|
+
static desaturate(hex: AXColorFormat, percentage?: number): number;
|
13
17
|
static equal(color1: AXColorFormat, color2: AXColorFormat): boolean;
|
14
18
|
static gradient(values: any[] | {
|
15
19
|
color: any;
|
16
20
|
pos: number;
|
17
21
|
}[]): tinygradient.Instance;
|
22
|
+
static xyToRgb(vX: any, vY: any): string;
|
18
23
|
}
|
@@ -14,4 +14,5 @@ export declare class AXDrawingUtil {
|
|
14
14
|
static collision(a: HTMLElement, b: HTMLElement): boolean;
|
15
15
|
static isInElementBound(pos: AXPoint, element: HTMLElement): boolean;
|
16
16
|
static isInRecPoint(pos: AXPoint, rec: AXBoundingClientRect | any): boolean;
|
17
|
+
static convertRemToPixels(rem: number): number;
|
17
18
|
}
|