@igo2/utils 18.0.1-next.1 → 18.0.1

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.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdvMi11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3V0aWxzL3NyYy9pZ28yLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -0,0 +1,85 @@
1
+ /* eslint-disable */
2
+ const ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
3
+ export class Base64 {
4
+ static PADCHAR = '=';
5
+ static ALPHA = ALPHA;
6
+ static getByte(s, i) {
7
+ const x = s.charCodeAt(i);
8
+ return x;
9
+ }
10
+ static getByte64(s, i) {
11
+ const idx = this.ALPHA.indexOf(s.charAt(i));
12
+ return idx;
13
+ }
14
+ static decode(s) {
15
+ let pads = 0, i, b10, imax = s.length, x = [];
16
+ s = String(s);
17
+ if (imax === 0) {
18
+ return s;
19
+ }
20
+ if (s.charAt(imax - 1) === this.PADCHAR) {
21
+ pads = 1;
22
+ if (s.charAt(imax - 2) === this.PADCHAR) {
23
+ pads = 2;
24
+ }
25
+ imax -= 4;
26
+ }
27
+ for (i = 0; i < imax; i += 4) {
28
+ b10 =
29
+ (this.getByte64(s, i) << 18) |
30
+ (this.getByte64(s, i + 1) << 12) |
31
+ (this.getByte64(s, i + 2) << 6) |
32
+ this.getByte64(s, i + 3);
33
+ x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 255, b10 & 255));
34
+ }
35
+ switch (pads) {
36
+ case 1:
37
+ b10 =
38
+ (this.getByte64(s, i) << 18) |
39
+ (this.getByte64(s, i + 1) << 12) |
40
+ (this.getByte64(s, i + 2) << 6);
41
+ x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 255));
42
+ break;
43
+ case 2:
44
+ b10 = (this.getByte64(s, i) << 18) | (this.getByte64(s, i + 1) << 12);
45
+ x.push(String.fromCharCode(b10 >> 16));
46
+ break;
47
+ }
48
+ return x.join('');
49
+ }
50
+ static encode(s) {
51
+ s = String(s);
52
+ let i, b10, x = [], imax = s.length - (s.length % 3);
53
+ if (s.length === 0) {
54
+ return s;
55
+ }
56
+ for (i = 0; i < imax; i += 3) {
57
+ b10 =
58
+ (this.getByte(s, i) << 16) |
59
+ (this.getByte(s, i + 1) << 8) |
60
+ this.getByte(s, i + 2);
61
+ x.push(this.ALPHA.charAt(b10 >> 18));
62
+ x.push(this.ALPHA.charAt((b10 >> 12) & 63));
63
+ x.push(this.ALPHA.charAt((b10 >> 6) & 63));
64
+ x.push(this.ALPHA.charAt(b10 & 63));
65
+ }
66
+ switch (s.length - imax) {
67
+ case 1:
68
+ b10 = this.getByte(s, i) << 16;
69
+ x.push(this.ALPHA.charAt(b10 >> 18) +
70
+ this.ALPHA.charAt((b10 >> 12) & 63) +
71
+ this.PADCHAR +
72
+ this.PADCHAR);
73
+ break;
74
+ case 2:
75
+ b10 = (this.getByte(s, i) << 16) | (this.getByte(s, i + 1) << 8);
76
+ x.push(this.ALPHA.charAt(b10 >> 18) +
77
+ this.ALPHA.charAt((b10 >> 12) & 63) +
78
+ this.ALPHA.charAt((b10 >> 6) & 63) +
79
+ this.PADCHAR);
80
+ break;
81
+ }
82
+ return x.join('');
83
+ }
84
+ }
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbHMvc3JjL2xpYi9iYXNlNjQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBRXBCLE1BQU0sS0FBSyxHQUNULGtFQUFrRSxDQUFDO0FBRXJFLE1BQU0sT0FBTyxNQUFNO0lBQ1QsTUFBTSxDQUFDLE9BQU8sR0FBVyxHQUFHLENBQUM7SUFDN0IsTUFBTSxDQUFDLEtBQUssR0FBVyxLQUFLLENBQUM7SUFFN0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUN6QyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDM0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBUztRQUM1QixJQUFJLElBQUksR0FBRyxDQUFDLEVBQ1YsQ0FBQyxFQUNELEdBQUcsRUFDSCxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFDZixDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRVQsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVkLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEMsSUFBSSxHQUFHLENBQUMsQ0FBQztZ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O1lBQ1IsS0FBSyxDQUFDO2dCQUNKLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNqRSxDQUFDLENBQUMsSUFBSSxDQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsT0FBTyxDQUNmLENBQUM7Z0JBQ0YsTUFBTTtRQUNWLENBQUM7UUFFRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5cbmNvbnN0IEFMUEhBID1cbiAgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nO1xuXG5leHBvcnQgY2xhc3MgQmFzZTY0IHtcbiAgcHJpdmF0ZSBzdGF0aWMgUEFEQ0hBUjogc3RyaW5nID0gJz0nO1xuICBwcml2YXRlIHN0YXRpYyBBTFBIQTogc3RyaW5nID0gQUxQSEE7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0Qnl0ZShzOiBzdHJpbmcsIGk6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgeCA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4geDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldEJ5dGU2NChzOiBzdHJpbmcsIGk6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgaWR4ID0gdGhpcy5BTFBIQS5pbmRleE9mKHMuY2hhckF0KGkpKTtcbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkZWNvZGUoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgcGFkcyA9IDAsXG4gICAgICBpLFxuICAgICAgYjEwLFxuICAgICAgaW1heCA9IHMubGVuZ3RoLFxuICAgICAgeCA9IFtdO1xuXG4gICAgcyA9IFN0cmluZyhzKTtcblxuICAgIGlmIChpbWF4ID09PSAwKSB7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG5cbiAgICBpZiAocy5jaGFyQXQoaW1heCAtIDEpID09PSB0aGlzLlBBRENIQVIpIHtcbiAgICAgIHBhZHMgPSAxO1xuICAgICAgaWYgKHMuY2hhckF0KGltYXggLSAyKSA9PT0gdGhpcy5QQURDSEFSKSB7XG4gICAgICAgIHBhZHMgPSAyO1xuICAgICAgfVxuICAgICAgaW1heCAtPSA0O1xuICAgIH1cblxuICAgIGZvciAoaSA9IDA7IGkgPCBpbWF4OyBpICs9IDQpIHtcbiAgICAgIGIxMCA9XG4gICAgICAgICh0aGlzLmdldEJ5dGU2NChzLCBpKSA8PCAxOCkgfFxuICAgICAgICAodGhpcy5nZXRCeXRlNjQocywgaSArIDEpIDw8IDEyKSB8XG4gICAgICAgICh0aGlzLmdldEJ5dGU2NChzLCBpICsgMikgPDwgNikgfFxuICAgICAgICB0aGlzLmdldEJ5dGU2NChzLCBpICsgMyk7XG4gICAgICB4LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShiMTAgPj4gMTYsIChiMTAgPj4gOCkgJiAyNTUsIGIxMCAmIDI1NSkpO1xuICAgIH1cblxuICAgIHN3aXRjaCAocGFkcykge1xuICAgICAgY2FzZSAxOlxuICAgICAgICBiMTAgPVxuICAgICAgICAgICh0aGlzLmdldEJ5dGU2NChzLCBpKSA8PCAxOCkgfFxuICAgICAgICAgICh0aGlzLmdldEJ5dGU2NChzLCBpICsgMSkgPDwgMTIpIHxcbiAgICAgICAgICAodGhpcy5nZXRCeXRlNjQocywgaSArIDIpIDw8IDYpO1xuICAgICAgICB4LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShiMTAgPj4gMTYsIChiMTAgPj4gOCkgJiAyNTUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGIxMCA9ICh0aGlzLmdldEJ5dGU2NChzLCBpKSA8PCAxOCkgfCAodGhpcy5nZXRCeXRlNjQocywgaSArIDEpIDw8IDEyKTtcbiAgICAgICAgeC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYjEwID4+IDE2KSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiB4LmpvaW4oJycpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBlbmNvZGUoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzID0gU3RyaW5nKHMpO1xuXG4gICAgbGV0IGksXG4gICAgICBiMTAsXG4gICAgICB4ID0gW10sXG4gICAgICBpbWF4ID0gcy5sZW5ndGggLSAocy5sZW5ndGggJSAzKTtcblxuICAgIGlmIChzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IGltYXg7IGkgKz0gMykge1xuICAgICAgYjEwID1cbiAgICAgICAgKHRoaXMuZ2V0Qnl0ZShzLCBpKSA8PCAxNikgfFxuICAgICAgICAodGhpcy5nZXRCeXRlKHMsIGkgKyAxKSA8PCA4KSB8XG4gICAgICAgIHRoaXMuZ2V0Qnl0ZShzLCBpICsgMik7XG4gICAgICB4LnB1c2godGhpcy5BTFBIQS5jaGFyQXQoYjEwID4+IDE4KSk7XG4gICAgICB4LnB1c2godGhpcy5BTFBIQS5jaGFyQXQoKGIxMCA+PiAxMikgJiA2MykpO1xuICAgICAgeC5wdXNoKHRoaXMuQUxQSEEuY2hhckF0KChiMTAgPj4gNikgJiA2MykpO1xuICAgICAgeC5wdXNoKHRoaXMuQUxQSEEuY2hhckF0KGIxMCAmIDYzKSk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChzLmxlbmd0aCAtIGltYXgpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgYjEwID0gdGhpcy5nZXRCeXRlKHMsIGkpIDw8IDE2O1xuICAgICAgICB4LnB1c2goXG4gICAgICAgICAgdGhpcy5BTFBIQS5jaGFyQXQoYjEwID4+IDE4KSArXG4gICAgICAgICAgICB0aGlzLkFMUEhBLmNoYXJBdCgoYjEwID4+IDEyKSAmIDYzKSArXG4gICAgICAgICAgICB0aGlzLlBBRENIQVIgK1xuICAgICAgICAgICAgdGhpcy5QQURDSEFSXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBiMTAgPSAodGhpcy5nZXRCeXRlKHMsIGkpIDw8IDE2KSB8ICh0aGlzLmdldEJ5dGUocywgaSArIDEpIDw8IDgpO1xuICAgICAgICB4LnB1c2goXG4gICAgICAgICAgdGhpcy5BTFBIQS5jaGFyQXQoYjEwID4+IDE4KSArXG4gICAgICAgICAgICB0aGlzLkFMUEhBLmNoYXJBdCgoYjEwID4+IDEyKSAmIDYzKSArXG4gICAgICAgICAgICB0aGlzLkFMUEhBLmNoYXJBdCgoYjEwID4+IDYpICYgNjMpICtcbiAgICAgICAgICAgIHRoaXMuUEFEQ0hBUlxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4geC5qb2luKCcnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,10 @@
1
+ import { HttpParams } from '@angular/common/http';
2
+ export function customCacheHasher(parameters) {
3
+ return parameters.map((param) => {
4
+ if (param instanceof HttpParams) {
5
+ return param.toString();
6
+ }
7
+ return param !== undefined ? JSON.parse(JSON.stringify(param)) : param;
8
+ });
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlscy9zcmMvbGliL2NhY2hlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsVUFBcUI7SUFDckQsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDOUIsSUFBSSxLQUFLLFlBQVksVUFBVSxFQUFFLENBQUM7WUFDaEMsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN6RSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tQ2FjaGVIYXNoZXIocGFyYW1ldGVyczogdW5rbm93bltdKTogdW5rbm93bltdIHtcbiAgcmV0dXJuIHBhcmFtZXRlcnMubWFwKChwYXJhbSkgPT4ge1xuICAgIGlmIChwYXJhbSBpbnN0YW5jZW9mIEh0dHBQYXJhbXMpIHtcbiAgICAgIHJldHVybiBwYXJhbS50b1N0cmluZygpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyYW0gIT09IHVuZGVmaW5lZCA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGFyYW0pKSA6IHBhcmFtO1xuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export var ChangeType;
2
+ (function (ChangeType) {
3
+ ChangeType["ADDED"] = "added";
4
+ ChangeType["DELETED"] = "deleted";
5
+ ChangeType["MODIFIED"] = "modified";
6
+ })(ChangeType || (ChangeType = {}));
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWxzL3NyYy9saWIvY2hhbmdlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ3BCLDZCQUFlLENBQUE7SUFDZixpQ0FBbUIsQ0FBQTtJQUNuQixtQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSlcsVUFBVSxLQUFWLFVBQVUsUUFJckIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBDaGFuZ2VUeXBlIHtcbiAgQURERUQgPSAnYWRkZWQnLFxuICBERUxFVEVEID0gJ2RlbGV0ZWQnLFxuICBNT0RJRklFRCA9ICdtb2RpZmllZCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2Uge1xuICB0eXBlOiBDaGFuZ2VUeXBlO1xuICBrZXlzQ2hhbmdlZD86IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBuZXdWYWx1ZTogYW55O1xuICAgIG9sZFZhbHVlOiBhbnk7XG4gIH1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcm91cGluZ0NoYW5nZXMge1xuICBhZGRlZDogQ2hhbmdlSXRlbVtdO1xuICBkZWxldGVkOiBDaGFuZ2VJdGVtW107XG4gIG1vZGlmaWVkOiBDaGFuZ2VJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlSXRlbSB7XG4gIGNoYW5nZTogQ2hhbmdlO1xuICB2YWx1ZTogYW55O1xuICBvbGRWYWx1ZT86IGFueTtcbiAgbmV3VmFsdWU/OiBhbnk7XG59XG4iXX0=
@@ -0,0 +1,87 @@
1
+ import { ChangeType } from './change.interface';
2
+ import { StringUtils } from './string-utils';
3
+ export class ChangeUtils {
4
+ static findChanges(obj1, obj2, ignoreKeys = []) {
5
+ const items = {
6
+ added: [],
7
+ deleted: [],
8
+ modified: []
9
+ };
10
+ if (!obj1 || !obj2) {
11
+ return items;
12
+ }
13
+ const obj1Clone = [...obj1];
14
+ const obj2Clone = [...obj2];
15
+ for (const fromItem of obj1Clone) {
16
+ const index = obj2Clone.findIndex((s) => s.id === fromItem.id);
17
+ if (index === -1) {
18
+ items.deleted.push({
19
+ change: { type: ChangeType.DELETED },
20
+ value: fromItem
21
+ });
22
+ continue;
23
+ }
24
+ const toItem = obj2Clone.splice(index, 1)[0];
25
+ const fromItemClone = JSON.parse(JSON.stringify(fromItem));
26
+ const toItemClone = JSON.parse(JSON.stringify(toItem));
27
+ const keysChanged = ChangeUtils.compareObject(fromItemClone, toItemClone, undefined, ignoreKeys);
28
+ if (keysChanged.length) {
29
+ items.modified.push({
30
+ change: {
31
+ type: ChangeType.MODIFIED,
32
+ keysChanged
33
+ },
34
+ value: fromItemClone,
35
+ oldValue: fromItem,
36
+ newValue: toItem
37
+ });
38
+ }
39
+ }
40
+ items.added = obj2Clone.map((itemAdded) => {
41
+ return {
42
+ change: { type: ChangeType.ADDED },
43
+ value: itemAdded
44
+ };
45
+ });
46
+ return items;
47
+ }
48
+ static compareObject(fromItem, toItem, baseKey, ignoreKeys = []) {
49
+ const fromItemClone = JSON.parse(JSON.stringify(fromItem));
50
+ const toItemClone = JSON.parse(JSON.stringify(toItem));
51
+ const keys = new Set([
52
+ ...Object.keys(fromItem),
53
+ ...Object.keys(toItem)
54
+ ]);
55
+ let keysChanged = [];
56
+ keys.forEach((key) => {
57
+ const keyString = baseKey ? `${baseKey}.${key}` : key;
58
+ if (ignoreKeys.indexOf(keyString) !== -1) {
59
+ return;
60
+ }
61
+ if (Array.isArray(fromItem[key])) {
62
+ fromItem[key] = fromItem[key].join(',<br>');
63
+ }
64
+ if (Array.isArray(toItem[key])) {
65
+ toItem[key] = toItem[key].join(',<br>');
66
+ }
67
+ if (typeof fromItem[key] === 'object' &&
68
+ typeof toItem[key] === 'object' &&
69
+ fromItem[key] !== null &&
70
+ toItem[key] !== null) {
71
+ keysChanged = keysChanged.concat(this.compareObject(fromItem[key], toItem[key], keyString));
72
+ }
73
+ else {
74
+ if (fromItem[key] !== toItem[key]) {
75
+ keysChanged.push({
76
+ key: keyString,
77
+ oldValue: fromItemClone[key],
78
+ newValue: toItemClone[key]
79
+ });
80
+ fromItem[key] = StringUtils.diff(fromItem[key], toItem[key]);
81
+ }
82
+ }
83
+ });
84
+ return keysChanged;
85
+ }
86
+ }
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbHMvc3JjL2xpYi9jaGFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsTUFBTSxPQUFPLFdBQVc7SUFDdEIsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsSUFBVyxFQUNYLElBQVcsRUFDWCxhQUF1QixFQUFFO1FBRXpCLE1BQU0sS0FBSyxHQUFvQjtZQUM3QixLQUFLLEVBQUUsRUFBRTtZQUNULE9BQU8sRUFBRSxFQUFFO1lBQ1gsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25CLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNqQyxNQUFNLFNBQVMsR0FBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFakMsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNqQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUUvRCxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNqQixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDakIsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUU7b0JBQ3BDLEtBQUssRUFBRSxRQUFRO2lCQUNoQixDQUFDLENBQUM7Z0JBQ0gsU0FBUztZQUNYLENBQUM7WUFF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Z0JBQy9CLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJO2dCQUN0QixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUNwQixDQUFDO2dCQUNELFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQzFELENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLFdBQVcsQ0FBQyxJQUFJLENBQUM7d0JBQ2YsR0FBRyxFQUFFLFNBQVM7d0JBQ2QsUUFBUSxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUM7d0JBQzVCLFFBQVEsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDO3FCQUMzQixDQUFDLENBQUM7b0JBQ0gsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMvRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlVHlwZSwgR3JvdXBpbmdDaGFuZ2VzIH0gZnJvbSAnLi9jaGFuZ2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN0cmluZ1V0aWxzIH0gZnJvbSAnLi9zdHJpbmctdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQ2hhbmdlVXRpbHMge1xuICBzdGF0aWMgZmluZENoYW5nZXMoXG4gICAgb2JqMTogYW55W10sXG4gICAgb2JqMjogYW55W10sXG4gICAgaWdub3JlS2V5czogc3RyaW5nW10gPSBbXVxuICApOiBHcm91cGluZ0NoYW5nZXMge1xuICAgIGNvbnN0IGl0ZW1zOiBHcm91cGluZ0NoYW5nZXMgPSB7XG4gICAgICBhZGRlZDogW10sXG4gICAgICBkZWxldGVkOiBbXSxcbiAgICAgIG1vZGlmaWVkOiBbXVxuICAgIH07XG5cbiAgICBpZiAoIW9iajEgfHwgIW9iajIpIHtcbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICBjb25zdCBvYmoxQ2xvbmU6IGFueSA9IFsuLi5vYmoxXTtcbiAgICBjb25zdCBvYmoyQ2xvbmU6IGFueSA9IFsuLi5vYmoyXTtcblxuICAgIGZvciAoY29uc3QgZnJvbUl0ZW0gb2Ygb2JqMUNsb25lKSB7XG4gICAgICBjb25zdCBpbmRleCA9IG9iajJDbG9uZS5maW5kSW5kZXgoKHMpID0+IHMuaWQgPT09IGZyb21JdGVtLmlkKTtcblxuICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICBpdGVtcy5kZWxldGVkLnB1c2goe1xuICAgICAgICAgIGNoYW5nZTogeyB0eXBlOiBDaGFuZ2VUeXBlLkRFTEVURUQgfSxcbiAgICAgICAgICB2YWx1ZTogZnJvbUl0ZW1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0b0l0ZW0gPSBvYmoyQ2xvbmUuc3BsaWNlKGluZGV4LCAxKVswXTtcbiAgICAgIGNvbnN0IGZyb21JdGVtQ2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZyb21JdGVtKSk7XG4gICAgICBjb25zdCB0b0l0ZW1DbG9uZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodG9JdGVtKSk7XG5cbiAgICAgIGNvbnN0IGtleXNDaGFuZ2VkID0gQ2hhbmdlVXRpbHMuY29tcGFyZU9iamVjdChcbiAgICAgICAgZnJvbUl0ZW1DbG9uZSxcbiAgICAgICAgdG9JdGVtQ2xvbmUsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgaWdub3JlS2V5c1xuICAgICAgKTtcblxuICAgICAgaWYgKGtleXNDaGFuZ2VkLmxlbmd0aCkge1xuICAgICAgICBpdGVtcy5tb2RpZmllZC5wdXNoKHtcbiAgICAgICAgICBjaGFuZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IENoYW5nZVR5cGUuTU9ESUZJRUQsXG4gICAgICAgICAgICBrZXlzQ2hhbmdlZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsdWU6IGZyb21JdGVtQ2xvbmUsXG4gICAgICAgICAgb2xkVmFsdWU6IGZyb21JdGVtLFxuICAgICAgICAgIG5ld1ZhbHVlOiB0b0l0ZW1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaXRlbXMuYWRkZWQgPSBvYmoyQ2xvbmUubWFwKChpdGVtQWRkZWQpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNoYW5nZTogeyB0eXBlOiBDaGFuZ2VUeXBlLkFEREVEIH0sXG4gICAgICAgIHZhbHVlOiBpdGVtQWRkZWRcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb21wYXJlT2JqZWN0KGZyb21JdGVtLCB0b0l0ZW0sIGJhc2VLZXk/LCBpZ25vcmVLZXlzID0gW10pIHtcbiAgICBjb25zdCBmcm9tSXRlbUNsb25lID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmcm9tSXRlbSkpO1xuICAgIGNvbnN0IHRvSXRlbUNsb25lID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0b0l0ZW0pKTtcblxuICAgIGNvbnN0IGtleXM6IGFueSA9IG5ldyBTZXQoW1xuICAgICAgLi4uT2JqZWN0LmtleXMoZnJvbUl0ZW0pLFxuICAgICAgLi4uT2JqZWN0LmtleXModG9JdGVtKVxuICAgIF0pO1xuICAgIGxldCBrZXlzQ2hhbmdlZCA9IFtdO1xuICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBrZXlTdHJpbmcgPSBiYXNlS2V5ID8gYCR7YmFzZUtleX0uJHtrZXl9YCA6IGtleTtcbiAgICAgIGlmIChpZ25vcmVLZXlzLmluZGV4T2Yoa2V5U3RyaW5nKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmcm9tSXRlbVtrZXldKSkge1xuICAgICAgICBmcm9tSXRlbVtrZXldID0gZnJvbUl0ZW1ba2V5XS5qb2luKCcsPGJyPicpO1xuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodG9JdGVtW2tleV0pKSB7XG4gICAgICAgIHRvSXRlbVtrZXldID0gdG9JdGVtW2tleV0uam9pbignLDxicj4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZnJvbUl0ZW1ba2V5XSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdHlwZW9mIHRvSXRlbVtrZXldID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBmcm9tSXRlbVtrZXldICE9PSBudWxsICYmXG4gICAgICAgIHRvSXRlbVtrZXldICE9PSBudWxsXG4gICAgICApIHtcbiAgICAgICAga2V5c0NoYW5nZWQgPSBrZXlzQ2hhbmdlZC5jb25jYXQoXG4gICAgICAgICAgdGhpcy5jb21wYXJlT2JqZWN0KGZyb21JdGVtW2tleV0sIHRvSXRlbVtrZXldLCBrZXlTdHJpbmcpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZnJvbUl0ZW1ba2V5XSAhPT0gdG9JdGVtW2tleV0pIHtcbiAgICAgICAgICBrZXlzQ2hhbmdlZC5wdXNoKHtcbiAgICAgICAgICAgIGtleToga2V5U3RyaW5nLFxuICAgICAgICAgICAgb2xkVmFsdWU6IGZyb21JdGVtQ2xvbmVba2V5XSxcbiAgICAgICAgICAgIG5ld1ZhbHVlOiB0b0l0ZW1DbG9uZVtrZXldXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZnJvbUl0ZW1ba2V5XSA9IFN0cmluZ1V0aWxzLmRpZmYoZnJvbUl0ZW1ba2V5XSwgdG9JdGVtW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga2V5c0NoYW5nZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { userAgent } from './user-agent';
2
+ export class Clipboard {
3
+ static copy(element) {
4
+ let successful = false;
5
+ if (typeof element === 'string') {
6
+ const textArea = Clipboard.createTextArea(element);
7
+ Clipboard.selectText(textArea);
8
+ successful = Clipboard.copyTextToClipboard();
9
+ Clipboard.destroyTextArea(textArea);
10
+ }
11
+ else {
12
+ Clipboard.selectText(element);
13
+ successful = Clipboard.copyTextToClipboard();
14
+ }
15
+ return successful;
16
+ }
17
+ static createTextArea(text) {
18
+ const textArea = document.createElement('textArea');
19
+ textArea.value = text;
20
+ document.body.appendChild(textArea);
21
+ return textArea;
22
+ }
23
+ static destroyTextArea(textArea) {
24
+ document.body.removeChild(textArea);
25
+ }
26
+ static selectText(textArea) {
27
+ if (userAgent.getOSName() === 'iOS') {
28
+ const oldContentEditable = textArea.contentEditable;
29
+ const oldReadOnly = textArea.readOnly;
30
+ const range = document.createRange();
31
+ const selection = window.getSelection();
32
+ textArea.contenteditable = true;
33
+ textArea.readonly = false;
34
+ range.selectNodeContents(textArea);
35
+ selection.removeAllRanges();
36
+ selection.addRange(range);
37
+ textArea.setSelectionRange(0, 999999);
38
+ textArea.contentEditable = oldContentEditable;
39
+ textArea.readOnly = oldReadOnly;
40
+ }
41
+ else {
42
+ textArea.select();
43
+ }
44
+ }
45
+ static copyTextToClipboard() {
46
+ if (!(userAgent.getOSName() === 'iOS' && userAgent.compareVersion('<10'))) {
47
+ return document.execCommand('copy');
48
+ }
49
+ return false;
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbHMvc3JjL2xpYi9jbGlwYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxNQUFNLE9BQU8sU0FBUztJQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQXFDO1FBQy9DLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixVQUFVLEdBQUcsU0FBUyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0MsU0FBUyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsVUFBVSxHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFZO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUF3QixDQUFDO1FBQzNFLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQVE7UUFDckMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUTtRQUNoQyxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNwQyxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDcEQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN0QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRXhDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQzFCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDNUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsa0JBQWtCLENBQUM7WUFDOUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDTixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsbUJBQW1CO1FBQ2hDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxLQUFLLElBQUksU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUUsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZXJBZ2VudCB9IGZyb20gJy4vdXNlci1hZ2VudCc7XG5cbmV4cG9ydCBjbGFzcyBDbGlwYm9hcmQge1xuICBzdGF0aWMgY29weShlbGVtZW50OiBIVE1MVGV4dEFyZWFFbGVtZW50IHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IHN1Y2Nlc3NmdWwgPSBmYWxzZTtcbiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB0ZXh0QXJlYSA9IENsaXBib2FyZC5jcmVhdGVUZXh0QXJlYShlbGVtZW50KTtcbiAgICAgIENsaXBib2FyZC5zZWxlY3RUZXh0KHRleHRBcmVhKTtcbiAgICAgIHN1Y2Nlc3NmdWwgPSBDbGlwYm9hcmQuY29weVRleHRUb0NsaXBib2FyZCgpO1xuICAgICAgQ2xpcGJvYXJkLmRlc3Ryb3lUZXh0QXJlYSh0ZXh0QXJlYSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIENsaXBib2FyZC5zZWxlY3RUZXh0KGVsZW1lbnQpO1xuICAgICAgc3VjY2Vzc2Z1bCA9IENsaXBib2FyZC5jb3B5VGV4dFRvQ2xpcGJvYXJkKCk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzZnVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlVGV4dEFyZWEodGV4dDogc3RyaW5nKTogSFRNTFRleHRBcmVhRWxlbWVudCB7XG4gICAgY29uc3QgdGV4dEFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0QXJlYScpIGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG4gICAgdGV4dEFyZWEudmFsdWUgPSB0ZXh0O1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dEFyZWEpO1xuICAgIHJldHVybiB0ZXh0QXJlYTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGRlc3Ryb3lUZXh0QXJlYSh0ZXh0QXJlYSkge1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dEFyZWEpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgc2VsZWN0VGV4dCh0ZXh0QXJlYSkge1xuICAgIGlmICh1c2VyQWdlbnQuZ2V0T1NOYW1lKCkgPT09ICdpT1MnKSB7XG4gICAgICBjb25zdCBvbGRDb250ZW50RWRpdGFibGUgPSB0ZXh0QXJlYS5jb250ZW50RWRpdGFibGU7XG4gICAgICBjb25zdCBvbGRSZWFkT25seSA9IHRleHRBcmVhLnJlYWRPbmx5O1xuICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gICAgICB0ZXh0QXJlYS5jb250ZW50ZWRpdGFibGUgPSB0cnVlO1xuICAgICAgdGV4dEFyZWEucmVhZG9ubHkgPSBmYWxzZTtcbiAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyh0ZXh0QXJlYSk7XG4gICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgdGV4dEFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgOTk5OTk5KTtcbiAgICAgIHRleHRBcmVhLmNvbnRlbnRFZGl0YWJsZSA9IG9sZENvbnRlbnRFZGl0YWJsZTtcbiAgICAgIHRleHRBcmVhLnJlYWRPbmx5ID0gb2xkUmVhZE9ubHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRleHRBcmVhLnNlbGVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvcHlUZXh0VG9DbGlwYm9hcmQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCEodXNlckFnZW50LmdldE9TTmFtZSgpID09PSAnaU9TJyAmJiB1c2VyQWdlbnQuY29tcGFyZVZlcnNpb24oJzwxMCcpKSkge1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHJlc3NlZERhdGEuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbHMvc3JjL2xpYi9jb21wcmVzc2lvbi9jb21wcmVzc2VkRGF0YS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ29tcHJlc3NlZERhdGEge1xuICBsZW5ndGg6IG51bWJlcjtcbiAgdHlwZTogc3RyaW5nO1xuICBvYmplY3Q6IGFueTtcbn1cbiJdfQ==
@@ -0,0 +1,124 @@
1
+ import { Observable } from 'rxjs';
2
+ function getNumber(v, endposition, length) {
3
+ const mask = (1 << length) - 1;
4
+ return (v >> endposition) & mask;
5
+ }
6
+ export class Compression {
7
+ base64Index = new Map();
8
+ indexBase64 = new Map();
9
+ constructor() {
10
+ this.generateBase64Index();
11
+ }
12
+ generateBase64Index() {
13
+ // https://fr.wikipedia.org/wiki/Base64
14
+ // A-Z => [0, 25]
15
+ for (let i = 0; i < 26; i++) {
16
+ this.base64Index.set(String.fromCharCode('A'.charCodeAt(0) + i), i);
17
+ this.indexBase64.set(i, String.fromCharCode('A'.charCodeAt(0) + i));
18
+ }
19
+ // a-z => [26, 51]
20
+ for (let i = 0; i < 26; i++) {
21
+ this.base64Index.set(String.fromCharCode('a'.charCodeAt(0) + i), i + 26);
22
+ this.indexBase64.set(i + 26, String.fromCharCode('a'.charCodeAt(0) + i));
23
+ }
24
+ // 0-9 => [52, 61]
25
+ for (let i = 0; i < 10; i++) {
26
+ this.base64Index.set(String.fromCharCode('0'.charCodeAt(0) + i), i + 52);
27
+ this.indexBase64.set(i + 52, String.fromCharCode('0'.charCodeAt(0) + i));
28
+ }
29
+ // + / => [62, 63]
30
+ this.base64Index.set('+', 62);
31
+ this.base64Index.set('/', 63);
32
+ this.indexBase64.set(62, '+');
33
+ this.indexBase64.set(63, '/');
34
+ }
35
+ compressBlob(blob) {
36
+ if (!blob) {
37
+ return;
38
+ }
39
+ const observable = new Observable((observer) => {
40
+ const reader = new FileReader();
41
+ reader.readAsDataURL(blob);
42
+ reader.onload = () => {
43
+ const base64 = reader.result.valueOf();
44
+ const text64 = base64.substr(base64.indexOf(',') + 1);
45
+ const compressed = this.compressStringBase64(text64);
46
+ const compressedData = {
47
+ length: text64.length,
48
+ type: blob.type,
49
+ object: compressed
50
+ };
51
+ observer.next(compressedData);
52
+ };
53
+ });
54
+ return observable;
55
+ }
56
+ decompressBlob(compressedData) {
57
+ const object = compressedData.object;
58
+ const length = compressedData.length;
59
+ const decompressed = this.decompressStringBase64(object, length);
60
+ const byteCharacters = atob(decompressed);
61
+ const byteNumbers = new Array(byteCharacters.length);
62
+ for (let i = 0; i < byteCharacters.length; i++) {
63
+ byteNumbers[i] = byteCharacters.charCodeAt(i);
64
+ }
65
+ const byteArray = new Uint8Array(byteNumbers);
66
+ const blob = new Blob([byteArray], { type: compressedData.type });
67
+ return blob;
68
+ }
69
+ compressStringBase64(s) {
70
+ let out = '';
71
+ let bits = 16;
72
+ let chr = 0;
73
+ let rem = 0;
74
+ for (const c of s) {
75
+ const value = this.base64Index.get(c);
76
+ if (bits > 6) {
77
+ bits -= 6;
78
+ chr += value << bits;
79
+ }
80
+ else {
81
+ rem = 6 - bits;
82
+ chr += value >> rem;
83
+ out += String.fromCharCode(chr);
84
+ chr = value << (16 - rem);
85
+ bits = 16 - rem;
86
+ }
87
+ }
88
+ if (s.length % 8 !== 0) {
89
+ out += String.fromCharCode(chr);
90
+ }
91
+ return String.fromCharCode(9731) + out;
92
+ }
93
+ decompressStringBase64(c, length) {
94
+ if (!c) {
95
+ return;
96
+ }
97
+ if (c.charCodeAt(0) !== 9731) {
98
+ return c;
99
+ }
100
+ let chr = 0;
101
+ let rem = 0;
102
+ let bits = 16;
103
+ let out = '';
104
+ let j = 1;
105
+ let value = c.charCodeAt(j);
106
+ for (let i = 0; i < length; i++) {
107
+ if (bits > 6) {
108
+ bits -= 6;
109
+ chr = getNumber(value, bits, 6);
110
+ out += this.indexBase64.get(chr);
111
+ }
112
+ else {
113
+ rem = 6 - bits;
114
+ chr = getNumber(value, 0, bits) << rem;
115
+ value = c.charCodeAt(++j);
116
+ chr += getNumber(value, 16 - rem, rem);
117
+ out += this.indexBase64.get(chr);
118
+ bits = 16 - rem;
119
+ }
120
+ }
121
+ return out;
122
+ }
123
+ }
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHJlc3Npb24udXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlscy9zcmMvbGliL2NvbXByZXNzaW9uL2NvbXByZXNzaW9uLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxNQUFNLENBQUM7QUFJNUMsU0FBUyxTQUFTLENBQUMsQ0FBUyxFQUFFLFdBQW1CLEVBQUUsTUFBYztJQUMvRCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDbkMsQ0FBQztBQUVELE1BQU0sT0FBTyxXQUFXO0lBQ2QsV0FBVyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQ3hDLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUVoRDtRQUNFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsdUNBQXVDO1FBQ3ZDLGlCQUFpQjtRQUNqQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0Qsa0JBQWtCO1FB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QUcsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2YsR0FBRyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztnQkFDdkMsS0FBSyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDMUIsR0FBRyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdkMsR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ29tcHJlc3NlZERhdGEgfSBmcm9tICcuL2NvbXByZXNzZWREYXRhLmludGVyZmFjZSc7XG5cbmZ1bmN0aW9uIGdldE51bWJlcih2OiBudW1iZXIsIGVuZHBvc2l0aW9uOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKSB7XG4gIGNvbnN0IG1hc2sgPSAoMSA8PCBsZW5ndGgpIC0gMTtcbiAgcmV0dXJuICh2ID4+IGVuZHBvc2l0aW9uKSAmIG1hc2s7XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wcmVzc2lvbiB7XG4gIHByaXZhdGUgYmFzZTY0SW5kZXggPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBwcml2YXRlIGluZGV4QmFzZTY0ID0gbmV3IE1hcDxudW1iZXIsIHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmdlbmVyYXRlQmFzZTY0SW5kZXgoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVCYXNlNjRJbmRleCgpIHtcbiAgICAvLyBodHRwczovL2ZyLndpa2lwZWRpYS5vcmcvd2lraS9CYXNlNjRcbiAgICAvLyBBLVogPT4gWzAsIDI1XVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjY7IGkrKykge1xuICAgICAgdGhpcy5iYXNlNjRJbmRleC5zZXQoU3RyaW5nLmZyb21DaGFyQ29kZSgnQScuY2hhckNvZGVBdCgwKSArIGkpLCBpKTtcbiAgICAgIHRoaXMuaW5kZXhCYXNlNjQuc2V0KGksIFN0cmluZy5mcm9tQ2hhckNvZGUoJ0EnLmNoYXJDb2RlQXQoMCkgKyBpKSk7XG4gICAgfVxuICAgIC8vIGEteiA9PiBbMjYsIDUxXVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjY7IGkrKykge1xuICAgICAgdGhpcy5iYXNlNjRJbmRleC5zZXQoU3RyaW5nLmZyb21DaGFyQ29kZSgnYScuY2hhckNvZGVBdCgwKSArIGkpLCBpICsgMjYpO1xuICAgICAgdGhpcy5pbmRleEJhc2U2NC5zZXQoaSArIDI2LCBTdHJpbmcuZnJvbUNoYXJDb2RlKCdhJy5jaGFyQ29kZUF0KDApICsgaSkpO1xuICAgIH1cbiAgICAvLyAwLTkgPT4gWzUyLCA2MV1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcbiAgICAgIHRoaXMuYmFzZTY0SW5kZXguc2V0KFN0cmluZy5mcm9tQ2hhckNvZGUoJzAnLmNoYXJDb2RlQXQoMCkgKyBpKSwgaSArIDUyKTtcbiAgICAgIHRoaXMuaW5kZXhCYXNlNjQuc2V0KGkgKyA1MiwgU3RyaW5nLmZyb21DaGFyQ29kZSgnMCcuY2hhckNvZGVBdCgwKSArIGkpKTtcbiAgICB9XG4gICAgLy8gKyAvID0+IFs2MiwgNjNdXG4gICAgdGhpcy5iYXNlNjRJbmRleC5zZXQoJysnLCA2Mik7XG4gICAgdGhpcy5iYXNlNjRJbmRleC5zZXQoJy8nLCA2Myk7XG4gICAgdGhpcy5pbmRleEJhc2U2NC5zZXQoNjIsICcrJyk7XG4gICAgdGhpcy5pbmRleEJhc2U2NC5zZXQoNjMsICcvJyk7XG4gIH1cblxuICBjb21wcmVzc0Jsb2IoYmxvYjogQmxvYik6IE9ic2VydmFibGU8Q29tcHJlc3NlZERhdGE+IHtcbiAgICBpZiAoIWJsb2IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBPYnNlcnZlcjxDb21wcmVzc2VkRGF0YT4pID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2U2NCA9IHJlYWRlci5yZXN1bHQudmFsdWVPZigpIGFzIHN0cmluZztcbiAgICAgICAgY29uc3QgdGV4dDY0ID0gYmFzZTY0LnN1YnN0cihiYXNlNjQuaW5kZXhPZignLCcpICsgMSk7XG4gICAgICAgIGNvbnN0IGNvbXByZXNzZWQgPSB0aGlzLmNvbXByZXNzU3RyaW5nQmFzZTY0KHRleHQ2NCk7XG4gICAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhOiBDb21wcmVzc2VkRGF0YSA9IHtcbiAgICAgICAgICBsZW5ndGg6IHRleHQ2NC5sZW5ndGgsXG4gICAgICAgICAgdHlwZTogYmxvYi50eXBlLFxuICAgICAgICAgIG9iamVjdDogY29tcHJlc3NlZFxuICAgICAgICB9O1xuICAgICAgICBvYnNlcnZlci5uZXh0KGNvbXByZXNzZWREYXRhKTtcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIG9ic2VydmFibGU7XG4gIH1cblxuICBkZWNvbXByZXNzQmxvYihjb21wcmVzc2VkRGF0YTogQ29tcHJlc3NlZERhdGEpOiBCbG9iIHtcbiAgICBjb25zdCBvYmplY3QgPSBjb21wcmVzc2VkRGF0YS5vYmplY3Q7XG4gICAgY29uc3QgbGVuZ3RoID0gY29tcHJlc3NlZERhdGEubGVuZ3RoO1xuICAgIGNvbnN0IGRlY29tcHJlc3NlZDogc3RyaW5nID0gdGhpcy5kZWNvbXByZXNzU3RyaW5nQmFzZTY0KG9iamVjdCwgbGVuZ3RoKTtcbiAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoZGVjb21wcmVzc2VkKTtcbiAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ5dGVOdW1iZXJzW2ldID0gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKTtcbiAgICB9XG4gICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiBjb21wcmVzc2VkRGF0YS50eXBlIH0pO1xuICAgIHJldHVybiBibG9iO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wcmVzc1N0cmluZ0Jhc2U2NChzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBvdXQgPSAnJztcbiAgICBsZXQgYml0cyA9IDE2O1xuICAgIGxldCBjaHIgPSAwO1xuICAgIGxldCByZW0gPSAwO1xuICAgIGZvciAoY29uc3QgYyBvZiBzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuYmFzZTY0SW5kZXguZ2V0KGMpO1xuICAgICAgaWYgKGJpdHMgPiA2KSB7XG4gICAgICAgIGJpdHMgLT0gNjtcbiAgICAgICAgY2hyICs9IHZhbHVlIDw8IGJpdHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZW0gPSA2IC0gYml0cztcbiAgICAgICAgY2hyICs9IHZhbHVlID4+IHJlbTtcbiAgICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hyKTtcbiAgICAgICAgY2hyID0gdmFsdWUgPDwgKDE2IC0gcmVtKTtcbiAgICAgICAgYml0cyA9IDE2IC0gcmVtO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocy5sZW5ndGggJSA4ICE9PSAwKSB7XG4gICAgICBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg5NzMxKSArIG91dDtcbiAgfVxuXG4gIHByaXZhdGUgZGVjb21wcmVzc1N0cmluZ0Jhc2U2NChjOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIWMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoYy5jaGFyQ29kZUF0KDApICE9PSA5NzMxKSB7XG4gICAgICByZXR1cm4gYztcbiAgICB9XG5cbiAgICBsZXQgY2hyID0gMDtcbiAgICBsZXQgcmVtID0gMDtcbiAgICBsZXQgYml0cyA9IDE2O1xuICAgIGxldCBvdXQgPSAnJztcbiAgICBsZXQgaiA9IDE7XG4gICAgbGV0IHZhbHVlID0gYy5jaGFyQ29kZUF0KGopO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChiaXRzID4gNikge1xuICAgICAgICBiaXRzIC09IDY7XG4gICAgICAgIGNociA9IGdldE51bWJlcih2YWx1ZSwgYml0cywgNik7XG4gICAgICAgIG91dCArPSB0aGlzLmluZGV4QmFzZTY0LmdldChjaHIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVtID0gNiAtIGJpdHM7XG4gICAgICAgIGNociA9IGdldE51bWJlcih2YWx1ZSwgMCwgYml0cykgPDwgcmVtO1xuICAgICAgICB2YWx1ZSA9IGMuY2hhckNvZGVBdCgrK2opO1xuICAgICAgICBjaHIgKz0gZ2V0TnVtYmVyKHZhbHVlLCAxNiAtIHJlbSwgcmVtKTtcbiAgICAgICAgb3V0ICs9IHRoaXMuaW5kZXhCYXNlNjQuZ2V0KGNocik7XG4gICAgICAgIGJpdHMgPSAxNiAtIHJlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './compressedData.interface';
2
+ export * from './compression.utils';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlscy9zcmMvbGliL2NvbXByZXNzaW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tcHJlc3NlZERhdGEuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcHJlc3Npb24udXRpbHMnO1xuIl19
@@ -0,0 +1,10 @@
1
+ const ISO8601_REGEX = new RegExp('(d{4}-[01]d-[0-3]dT[0-2]d:[0-5]d:[0-5]d.d+)|(d{4}-[01]d-[0-3]dT[0-2]d:[0-5]d:[0-5]d)|(d{4}-[01]d-[0-3]dT[0-2]d:[0-5]d)');
2
+ const ISO8601_UTCTIME_REGEX = new RegExp('(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\\.[0-9]+)?(Z)?');
3
+ export function isIsoDate(value) {
4
+ if (!ISO8601_REGEX.test(value) && !ISO8601_UTCTIME_REGEX.test(value)) {
5
+ return false;
6
+ }
7
+ const d = new Date(value);
8
+ return d instanceof Date && !isNaN(d.getTime());
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWxzL3NyYy9saWIvZGF0ZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FDOUIsd0hBQXdILENBQ3pILENBQUM7QUFDRixNQUFNLHFCQUFxQixHQUFHLElBQUksTUFBTSxDQUN0QyxvSUFBb0ksQ0FDckksQ0FBQztBQUVGLE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBYTtJQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3JFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSVNPODYwMV9SRUdFWCA9IG5ldyBSZWdFeHAoXG4gICcoZHs0fS1bMDFdZC1bMC0zXWRUWzAtMl1kOlswLTVdZDpbMC01XWQuZCspfChkezR9LVswMV1kLVswLTNdZFRbMC0yXWQ6WzAtNV1kOlswLTVdZCl8KGR7NH0tWzAxXWQtWzAtM11kVFswLTJdZDpbMC01XWQpJ1xuKTtcbmNvbnN0IElTTzg2MDFfVVRDVElNRV9SRUdFWCA9IG5ldyBSZWdFeHAoXG4gICcoLT8oPzpbMS05XVswLTldKik/WzAtOV17NH0pLSgxWzAtMl18MFsxLTldKS0oM1swMV18MFsxLTldfFsxMl1bMC05XSlUKDJbMC0zXXxbMDFdWzAtOV0pOihbMC01XVswLTldKTooWzAtNV1bMC05XSkoXFxcXC5bMC05XSspPyhaKT8nXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNJc29EYXRlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFJU084NjAxX1JFR0VYLnRlc3QodmFsdWUpICYmICFJU084NjAxX1VUQ1RJTUVfUkVHRVgudGVzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgcmV0dXJuIGQgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTihkLmdldFRpbWUoKSk7XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ export class DomUtils {
2
+ static create(doc, tagName, options) {
3
+ const el = doc.createElement(tagName);
4
+ for (const key in options) {
5
+ el[key] = options[key];
6
+ }
7
+ return el;
8
+ }
9
+ static remove(node) {
10
+ if (!node.parentNode) {
11
+ return;
12
+ }
13
+ node.parentNode.removeChild(node);
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbHMvc3JjL2xpYi9kb20udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFFBQVE7SUFDbkIsTUFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFhLEVBQ2IsT0FBVSxFQUNWLE9BQTJDO1FBRTNDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUMxQixFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQThCO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRG9tVXRpbHMge1xuICBzdGF0aWMgY3JlYXRlPEsgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuICAgIGRvYzogRG9jdW1lbnQsXG4gICAgdGFnTmFtZTogSyxcbiAgICBvcHRpb25zPzogUGFydGlhbDxIVE1MRWxlbWVudFRhZ05hbWVNYXBbS10+XG4gICk6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXSB7XG4gICAgY29uc3QgZWwgPSBkb2MuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMpIHtcbiAgICAgIGVsW2tleV0gPSBvcHRpb25zW2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsO1xuICB9XG5cbiAgc3RhdGljIHJlbW92ZShub2RlOiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIW5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,37 @@
1
+ export async function createExcelWorkBook(workSheet, workSheetName) {
2
+ const { utils } = await import('xlsx');
3
+ return utils.book_new(workSheet, workSheetName);
4
+ }
5
+ export async function addExcelSheetToWorkBook(title, rows, workBook, opts) {
6
+ const { utils } = await import('xlsx');
7
+ const worksheet = utils.json_to_sheet(rows, opts?.json2SheetOpts);
8
+ /* calculate column width */
9
+ if (rows?.length) {
10
+ worksheet['!cols'] = getColumnsInfo(rows);
11
+ }
12
+ const SHEET_NAME_MAX_LENGTH = 31;
13
+ let sheetName = title.length >= SHEET_NAME_MAX_LENGTH
14
+ ? title.substring(0, SHEET_NAME_MAX_LENGTH)
15
+ : title;
16
+ if (workBook.SheetNames.includes(sheetName)) {
17
+ sheetName = `${sheetName.substring(0, SHEET_NAME_MAX_LENGTH - 3)}_${workBook.SheetNames.length}`;
18
+ }
19
+ utils.book_append_sheet(workBook, worksheet, sheetName, opts?.bookAppendSheetOpts?.roll);
20
+ }
21
+ export async function writeExcelFile(workBook, filename, opts) {
22
+ const cleanedFileName = filename.toLowerCase().endsWith('.xlsx')
23
+ ? filename.slice(0, -5)
24
+ : filename;
25
+ const { writeFile } = await import('xlsx');
26
+ writeFile(workBook, `${cleanedFileName}.xlsx`, opts);
27
+ }
28
+ function getColumnsInfo(rows) {
29
+ const columns = Object.keys(rows[0]);
30
+ return columns.map((column) => ({
31
+ wch: getColumnMaxWidth(column, rows)
32
+ }));
33
+ }
34
+ function getColumnMaxWidth(column, rows) {
35
+ return rows.reduce((width, row) => Math.max(width, row[column]?.toString().length ?? 0), column.length);
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlscy9zcmMvbGliL2ZpbGVzL2V4Y2VsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQ3ZDLFNBQXFCLEVBQ3JCLGFBQXNCO0lBRXRCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV2QyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFDRCxNQUFNLENBQUMsS0FBSyxVQUFVLHVCQUF1QixDQUMzQyxLQUFhLEVBQ2IsSUFBUyxFQUNULFFBQWtCLEVBQ2xCLElBR0M7SUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdkMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRWxFLDRCQUE0QjtJQUM1QixJQUFJLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNqQixTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztJQUNqQyxJQUFJLFNBQVMsR0FDWCxLQUFLLENBQUMsTUFBTSxJQUFJLHFCQUFxQjtRQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUscUJBQXFCLENBQUM7UUFDM0MsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUVaLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxTQUFTLEdBQUcsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ25HLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQ3JCLFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQ2hDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2xDLFFBQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLElBQXFCO0lBRXJCLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQzlELENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ2IsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxlQUFlLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQThCLElBQVM7SUFDNUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsR0FBRyxFQUFFLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7S0FDckMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FDeEIsTUFBYyxFQUNkLElBQVM7SUFFVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQ2hCLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFDcEUsTUFBTSxDQUFDLE1BQU0sQ0FDZCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ29sSW5mbyxcbiAgSlNPTjJTaGVldE9wdHMsXG4gIFdvcmtCb29rLFxuICBXb3JrU2hlZXQsXG4gIFdyaXRpbmdPcHRpb25zXG59IGZyb20gJ3hsc3gnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRXhjZWxXb3JrQm9vayhcbiAgd29ya1NoZWV0PzogV29ya1NoZWV0LFxuICB3b3JrU2hlZXROYW1lPzogc3RyaW5nXG4pOiBQcm9taXNlPFdvcmtCb29rPiB7XG4gIGNvbnN0IHsgdXRpbHMgfSA9IGF3YWl0IGltcG9ydCgneGxzeCcpO1xuXG4gIHJldHVybiB1dGlscy5ib29rX25ldyh3b3JrU2hlZXQsIHdvcmtTaGVldE5hbWUpO1xufVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZEV4Y2VsU2hlZXRUb1dvcmtCb29rPFQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gIHRpdGxlOiBzdHJpbmcsXG4gIHJvd3M6IFRbXSxcbiAgd29ya0Jvb2s6IFdvcmtCb29rLFxuICBvcHRzPzoge1xuICAgIGpzb24yU2hlZXRPcHRzPzogSlNPTjJTaGVldE9wdHM7XG4gICAgYm9va0FwcGVuZFNoZWV0T3B0cz86IHsgcm9sbD86IGJvb2xlYW4gfTtcbiAgfVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgdXRpbHMgfSA9IGF3YWl0IGltcG9ydCgneGxzeCcpO1xuXG4gIGNvbnN0IHdvcmtzaGVldCA9IHV0aWxzLmpzb25fdG9fc2hlZXQocm93cywgb3B0cz8uanNvbjJTaGVldE9wdHMpO1xuXG4gIC8qIGNhbGN1bGF0ZSBjb2x1bW4gd2lkdGggKi9cbiAgaWYgKHJvd3M/Lmxlbmd0aCkge1xuICAgIHdvcmtzaGVldFsnIWNvbHMnXSA9IGdldENvbHVtbnNJbmZvKHJvd3MpO1xuICB9XG5cbiAgY29uc3QgU0hFRVRfTkFNRV9NQVhfTEVOR1RIID0gMzE7XG4gIGxldCBzaGVldE5hbWUgPVxuICAgIHRpdGxlLmxlbmd0aCA+PSBTSEVFVF9OQU1FX01BWF9MRU5HVEhcbiAgICAgID8gdGl0bGUuc3Vic3RyaW5nKDAsIFNIRUVUX05BTUVfTUFYX0xFTkdUSClcbiAgICAgIDogdGl0bGU7XG5cbiAgaWYgKHdvcmtCb29rLlNoZWV0TmFtZXMuaW5jbHVkZXMoc2hlZXROYW1lKSkge1xuICAgIHNoZWV0TmFtZSA9IGAke3NoZWV0TmFtZS5zdWJzdHJpbmcoMCwgU0hFRVRfTkFNRV9NQVhfTEVOR1RIIC0gMyl9XyR7d29ya0Jvb2suU2hlZXROYW1lcy5sZW5ndGh9YDtcbiAgfVxuXG4gIHV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KFxuICAgIHdvcmtCb29rLFxuICAgIHdvcmtzaGVldCxcbiAgICBzaGVldE5hbWUsXG4gICAgb3B0cz8uYm9va0FwcGVuZFNoZWV0T3B0cz8ucm9sbFxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVFeGNlbEZpbGUoXG4gIHdvcmtCb29rOiBXb3JrQm9vayxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgb3B0cz86IFdyaXRpbmdPcHRpb25zXG4pIHtcbiAgY29uc3QgY2xlYW5lZEZpbGVOYW1lID0gZmlsZW5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnLnhsc3gnKVxuICAgID8gZmlsZW5hbWUuc2xpY2UoMCwgLTUpXG4gICAgOiBmaWxlbmFtZTtcbiAgY29uc3QgeyB3cml0ZUZpbGUgfSA9IGF3YWl0IGltcG9ydCgneGxzeCcpO1xuICB3cml0ZUZpbGUod29ya0Jvb2ssIGAke2NsZWFuZWRGaWxlTmFtZX0ueGxzeGAsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBnZXRDb2x1bW5zSW5mbzxUID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHJvd3M6IFRbXSk6IENvbEluZm9bXSB7XG4gIGNvbnN0IGNvbHVtbnMgPSBPYmplY3Qua2V5cyhyb3dzWzBdKTtcbiAgcmV0dXJuIGNvbHVtbnMubWFwKChjb2x1bW4pID0+ICh7XG4gICAgd2NoOiBnZXRDb2x1bW5NYXhXaWR0aChjb2x1bW4sIHJvd3MpXG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29sdW1uTWF4V2lkdGg8VCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgY29sdW1uOiBzdHJpbmcsXG4gIHJvd3M6IFRbXVxuKTogbnVtYmVyIHtcbiAgcmV0dXJuIHJvd3MucmVkdWNlKFxuICAgICh3aWR0aCwgcm93KSA9PiBNYXRoLm1heCh3aWR0aCwgcm93W2NvbHVtbl0/LnRvU3RyaW5nKCkubGVuZ3RoID8/IDApLFxuICAgIGNvbHVtbi5sZW5ndGhcbiAgKTtcbn1cbiJdfQ==
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Trigger download of a file
3
+ *
4
+ * @param content File content
5
+ * @param mimeType File mime type
6
+ * @param fileName File name
7
+ */
8
+ export function downloadContent(content, mimeType, fileName) {
9
+ const uri = `data:${mimeType},${encodeURIComponent(content)}`;
10
+ downloadFromUri(uri, fileName);
11
+ }
12
+ export function downloadBlob(blob, fileName) {
13
+ const url = window.URL.createObjectURL(blob);
14
+ downloadFromUri(url, fileName);
15
+ }
16
+ /**
17
+ * Trigger download of a file
18
+ *
19
+ * @param content File content
20
+ * @param mimeType File mime type
21
+ * @param fileName File name
22
+ */
23
+ export function downloadFromUri(uri, fileName) {
24
+ const element = document.createElement('a');
25
+ element.setAttribute('href', uri);
26
+ element.setAttribute('download', fileName);
27
+ element.style.display = 'none';
28
+ document.body.appendChild(element);
29
+ element.click();
30
+ document.body.removeChild(element);
31
+ }
32
+ /**
33
+ * Validate if string is valid json object
34
+ * @param jsonString
35
+ * @return boolean
36
+ */
37
+ export function isValidJSON(jsonString) {
38
+ try {
39
+ return JSON.parse(jsonString) && !!jsonString;
40
+ }
41
+ catch {
42
+ return false;
43
+ }
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWxzL3NyYy9saWIvZmlsZXMvZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUM3QixPQUFlLEVBQ2YsUUFBZ0IsRUFDaEIsUUFBZ0I7SUFFaEIsTUFBTSxHQUFHLEdBQUcsUUFBUSxRQUFRLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxlQUFlLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQVUsRUFBRSxRQUFnQjtJQUN2RCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxlQUFlLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQVcsRUFBRSxRQUFnQjtJQUMzRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMvQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVuQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFaEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLFVBQWtCO0lBQzVDLElBQUksQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQ2hELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmlnZ2VyIGRvd25sb2FkIG9mIGEgZmlsZVxuICpcbiAqIEBwYXJhbSBjb250ZW50IEZpbGUgY29udGVudFxuICogQHBhcmFtIG1pbWVUeXBlIEZpbGUgbWltZSB0eXBlXG4gKiBAcGFyYW0gZmlsZU5hbWUgRmlsZSBuYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb3dubG9hZENvbnRlbnQoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgbWltZVR5cGU6IHN0cmluZyxcbiAgZmlsZU5hbWU6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IHVyaSA9IGBkYXRhOiR7bWltZVR5cGV9LCR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvbnRlbnQpfWA7XG4gIGRvd25sb2FkRnJvbVVyaSh1cmksIGZpbGVOYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkQmxvYihibG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICBkb3dubG9hZEZyb21VcmkodXJsLCBmaWxlTmFtZSk7XG59XG5cbi8qKlxuICogVHJpZ2dlciBkb3dubG9hZCBvZiBhIGZpbGVcbiAqXG4gKiBAcGFyYW0gY29udGVudCBGaWxlIGNvbnRlbnRcbiAqIEBwYXJhbSBtaW1lVHlwZSBGaWxlIG1pbWUgdHlwZVxuICogQHBhcmFtIGZpbGVOYW1lIEZpbGUgbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRGcm9tVXJpKHVyaTogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdocmVmJywgdXJpKTtcbiAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZU5hbWUpO1xuICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG5cbiAgZWxlbWVudC5jbGljaygpO1xuXG4gIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgaWYgc3RyaW5nIGlzIHZhbGlkIGpzb24gb2JqZWN0XG4gKiBAcGFyYW0ganNvblN0cmluZ1xuICogQHJldHVybiBib29sZWFuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkSlNPTihqc29uU3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uU3RyaW5nKSAmJiAhIWpzb25TdHJpbmc7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './excel';
2
+ export * from './file';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlscy9zcmMvbGliL2ZpbGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9leGNlbCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUnO1xuIl19
@@ -0,0 +1,19 @@
1
+ export * from './base64';
2
+ export * from './cache.utils';
3
+ export * from './clipboard';
4
+ export * from './compression';
5
+ export * from './change';
6
+ export * from './change.interface';
7
+ export * from './date.utils';
8
+ export * from './dom.utils';
9
+ export * from './files';
10
+ export * from './object-utils';
11
+ export * from './number-utils';
12
+ export * from './strenum';
13
+ export * from './string-utils';
14
+ export * from './theme.utils';
15
+ export * from './tree';
16
+ export * from './user-agent';
17
+ export * from './uuid';
18
+ export * from './watcher';
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlscy9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Jhc2U2NCc7XG5leHBvcnQgKiBmcm9tICcuL2NhY2hlLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vY2xpcGJvYXJkJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcHJlc3Npb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jaGFuZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGFuZ2UuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2RvbS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGVzJztcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0LXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbnVtYmVyLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc3RyZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmluZy11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3RoZW1lLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJlZSc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXItYWdlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi91dWlkJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hlcic7XG4iXX0=
@@ -0,0 +1,7 @@
1
+ export class NumberUtils {
2
+ static roundToNDecimal(num, decimal = 3) {
3
+ const roundFactor = Math.pow(10, decimal);
4
+ return Math.round(num * roundFactor) / roundFactor;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbHMvc3JjL2xpYi9udW1iZXItdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7SUFDdEIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFXLEVBQUUsT0FBTyxHQUFHLENBQUM7UUFDN0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUM7SUFDckQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIE51bWJlclV0aWxzIHtcbiAgc3RhdGljIHJvdW5kVG9ORGVjaW1hbChudW06IG51bWJlciwgZGVjaW1hbCA9IDMpOiBudW1iZXIge1xuICAgIGNvbnN0IHJvdW5kRmFjdG9yID0gTWF0aC5wb3coMTAsIGRlY2ltYWwpO1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG51bSAqIHJvdW5kRmFjdG9yKSAvIHJvdW5kRmFjdG9yO1xuICB9XG59XG4iXX0=