@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.
@@ -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
- static toString(color, mode) {
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
- default: {
27
- const rgba = _color.toRgb();
28
- return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();
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((rgb1.b * rgb2.b) / 255);
39
- rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);
40
- rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);
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('#fff', color);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2luZy11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvdXRpbHMvc3JjL2RyYXdpbmctdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxXQUFXO0FBQ1gsTUFBTSxPQUFPLGFBQWE7SUFDdEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFjLEVBQUUsQ0FBYztRQUMzQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUVyQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSTtZQUM1RCxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRTtZQUM1RCxPQUFPLElBQUksQ0FBQztTQUNmO2FBQ0k7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBWSxFQUFFLE9BQW9CO1FBQ3RELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2hELE9BQU8sYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7WUFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNkLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtTQUN6QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFZLEVBQUUsR0FBK0I7UUFDN0QsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pILENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQVhQb2ludCB7XHJcbiAgICB4OiBudW1iZXI7XHJcbiAgICB5OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhCb3VuZGluZ0NsaWVudFJlY3Qge1xyXG4gICAgbGVmdD86IG51bWJlcjtcclxuICAgIHRvcD86IG51bWJlcjtcclxuICAgIHdpZHRoPzogbnVtYmVyO1xyXG4gICAgaGVpZ2h0PzogbnVtYmVyO1xyXG4gICAgYm90dG9tPzogbnVtYmVyO1xyXG4gICAgcmlnaHQ/OiBudW1iZXI7XHJcbn1cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEFYRHJhd2luZ1V0aWwge1xyXG4gICAgc3RhdGljIGNvbGxpc2lvbihhOiBIVE1MRWxlbWVudCwgYjogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBhYyA9IGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgY29uc3QgYmMgPSBiLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICBpZiAoYWMubGVmdCA8IGJjLmxlZnQgKyBiYy53aWR0aCAmJiBhYy5sZWZ0ICsgYWMud2lkdGggPiBiYy5sZWZ0ICYmXHJcbiAgICAgICAgICAgIGFjLnRvcCA8IGJjLnRvcCArIGJjLmhlaWdodCAmJiBhYy50b3AgKyBhYy5oZWlnaHQgPiBiYy50b3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0luRWxlbWVudEJvdW5kKHBvczogQVhQb2ludCwgZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBlbEJvdW5kID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICByZXR1cm4gQVhEcmF3aW5nVXRpbC5pc0luUmVjUG9pbnQocG9zLCB7XHJcbiAgICAgICAgICAgIGxlZnQ6IGVsQm91bmQueCxcclxuICAgICAgICAgICAgd2lkdGg6IGVsQm91bmQud2lkdGgsXHJcbiAgICAgICAgICAgIHRvcDogZWxCb3VuZC55LFxyXG4gICAgICAgICAgICBoZWlnaHQ6IGVsQm91bmQuaGVpZ2h0XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzSW5SZWNQb2ludChwb3M6IEFYUG9pbnQsIHJlYzogQVhCb3VuZGluZ0NsaWVudFJlY3QgfCBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gcG9zLnggPj0gcmVjLmxlZnQgJiYgcG9zLnggPD0gKHJlYy5sZWZ0ICsgcmVjLndpZHRoKSAmJiBwb3MueSA+PSByZWMudG9wICYmIChwb3MueSA8PSAocmVjLnRvcCArIHJlYy5oZWlnaHQpKTtcclxuICAgIH1cclxuXHJcbn0iXX0=
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
- static toString(color, mode) {
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
- default: {
113
- const rgba = _color.toRgb();
114
- return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();
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((rgb1.b * rgb2.b) / 255);
125
- rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);
126
- rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);
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('#fff', color);
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":";;;AAAA;MACa,YAAY,CAAA;IACrB,OAAO,aAAa,CAAC,GAAQ,EAAA;AACzB,QAAA,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;KACvD;IAED,OAAO,QAAQ,CAAC,GAAG,EAAA;AACf,QAAA,IAAI,IAAI,CAAC;;QAET,IAAI,IAAI,IAAI,GAAG,IAAI,QAAQ,KAAK,OAAO,GAAG,EAAE;AAAE,YAAA,OAAO,GAAG,CAAC;AAAE,SAAA;;QAE3D,IAAI,GAAG,YAAY,IAAI,EAAE;AACrB,YAAA,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;;QAED,IAAI,GAAG,YAAY,KAAK,EAAE;YACtB,IAAI,GAAG,EAAE,CAAC;AACV,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC5C,gBAAA,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;;QAED,IAAI,GAAG,YAAY,MAAM,EAAE;YACvB,IAAI,GAAG,EAAE,CAAC;AACV,YAAA,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;AACpB,gBAAA,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AAAE,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAAE,iBAAA;AACnF,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KACrE;AAgDJ;;ACpED;MACa,aAAa,CAAA;AACtB,IAAA,OAAO,SAAS,CAAC,CAAc,EAAE,CAAc,EAAA;AAC3C,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAC;AACrC,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAC;QAErC,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI;YAC5D,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AAC5D,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACI,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;AAED,IAAA,OAAO,gBAAgB,CAAC,GAAY,EAAE,OAAoB,EAAA;AACtD,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAChD,QAAA,OAAO,aAAa,CAAC,YAAY,CAAC,GAAG,EAAE;YACnC,IAAI,EAAE,OAAO,CAAC,CAAC;YACf,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,EAAE,OAAO,CAAC,CAAC;YACd,MAAM,EAAE,OAAO,CAAC,MAAM;AACzB,SAAA,CAAC,CAAC;KACN;AAED,IAAA,OAAO,YAAY,CAAC,GAAY,EAAE,GAA+B,EAAA;QAC7D,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;KACxH;IAED,OAAO,kBAAkB,CAAC,GAAW,EAAA;AACjC,QAAA,OAAO,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC;KAChF;AAEJ;;AC9CD;MACa,YAAY,CAAA;AAErB,IAAA,OAAO,uBAAuB,CAAC,GAAW,EAAE,QAAgB,EAAA;AACxD,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChD,QAAA,IAAI,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;AAEzB,QAAA,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YACvC,KAAK,IAAI,CAAC,CAAC;AACd,SAAA;QACD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC/B,QAAA,MAAM,cAAc,GAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AACnE,QAAA,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC;QAC9B,IAAI,GAAG,GAAG,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,OAAO;YACH,KAAK;YACL,GAAG;SACN,CAAC;KACL;AAMJ;;MCjBY,WAAW,CAAA;AAGpB,IAAA,OAAO,EAAE,CAAC,KAAoB,EAAE,IAAiB,EAAA;AAE7C,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;AAC/B,QAAA,QAAQ,IAAI;AACR,YAAA,KAAK,MAAM;gBAAE,CAAC;AACV,gBAAA,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAC1B,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAC1B,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAC1B,YAAA;AACI,gBAAA,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAC7B,SAAA;KACJ;;AAED,IAAA,OAAO,QAAQ,CAAC,KAAoB,EAAE,OAAoB,IAAI,EAAA;AAC1D,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;AAC/B,QAAA,QAAQ,IAAI;AACR,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;AAChC,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;AAChC,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;AAChC,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;AAChC,YAAA,KAAK,KAAK;AACN,gBAAA;AACI,oBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AAC5B,oBAAA,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;AACrE,iBAAA;AACL,YAAA;AACI,gBAAA;AACI,oBAAA,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;wBAC1B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;4BACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;;4BAEnC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3C,qBAAA;AACI,yBAAA;wBACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,qBAAA;AACJ,iBAAA;AACR,SAAA;KACJ;;IAED,OAAO,OAAO,CAAC,KAAoB,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;AAC/B,QAAA,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;KAC3B;;AAED,IAAA,OAAO,GAAG,CAAC,SAAwB,EAAE,GAAkB,EAAE,UAAkB,EAAA;AACvE,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACpE;AAED,IAAA,OAAO,QAAQ,CAAC,MAAqB,EAAE,MAAqB,EAAA;QACxD,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QACrC,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC3C,OAAO,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACnF;IAED,OAAO,eAAe,CAAC,KAAoB,EAAA;QACvC,OAAO,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KAC/C;;AAED,IAAA,OAAO,OAAO,CAAC,GAAkB,EAAE,UAAmB,EAAA;QAClD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;KAC5C;AAED,IAAA,OAAO,MAAM,CAAC,GAAkB,EAAE,UAAmB,EAAA;QACjD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;KAC3C;AAED,IAAA,OAAO,QAAQ,CAAC,GAAkB,EAAE,UAAmB,EAAA;QACnD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;KAC7C;AAED,IAAA,OAAO,QAAQ,CAAC,GAAkB,EAAE,UAAmB,EAAA;QACnD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;KAC7C;AAED,IAAA,OAAO,UAAU,CAAC,GAAkB,EAAE,UAAmB,EAAA;AACrD,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAA;KACvC;AAED,IAAA,OAAO,KAAK,CAAC,MAAqB,EAAE,MAAqB,EAAA;QACrD,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC3C;IAED,OAAO,QAAQ,CAAC,MAA6C,EAAA;AACzD,QAAA,OAAO,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;KACnC;AAED,IAAA,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,EAAA;AACjB,QAAA,EAAE,GAAG,EAAE,IAAI,aAAa,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AACxB,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;;AAGnC,QAAA,IAAI,GAAG,GAAG;YACN,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ;YAC1C,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ;YAC3C,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ;SAC7C,CAAC;;AAGF,QAAA,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IACX,CAAC,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAC9E,CAAC;;AAGF,QAAA,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;QAGnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QAC7B,IAAI,GAAG,GAAG,CAAC,EAAE;AACT,YAAA,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAC/B,SAAA;AAED,QAAA,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAExC,OAAO,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KACvC;AAEJ;;AC1ID;;AAEG;;;;"}
@@ -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
- static toString(color, mode) {
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
- default: {
113
- const rgba = _color.toRgb();
114
- return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();
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((rgb1.b * rgb2.b) / 255);
125
- rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);
126
- rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);
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('#fff', color);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/core",
3
- "version": "7.0.33",
3
+ "version": "7.0.35",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0"
6
6
  },
@@ -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: AXColorMode): string;
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
  }