@igo2/utils 1.7.2 → 1.9.0

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.
@@ -1,87 +1,87 @@
1
- import { StringUtils } from './string-utils';
2
- import { ChangeType } from './change.interface';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLmpzIiwic291cmNlUm9vdCI6Ii9zcnYvYXBwcy9pZ28yLWxpYi9wYWNrYWdlcy91dGlscy9zcmMvIiwic291cmNlcyI6WyJsaWIvY2hhbmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQW1CLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpFLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLE1BQU0sQ0FBQyxXQUFXLENBQ2hCLElBQVcsRUFDWCxJQUFXLEVBQ1gsYUFBdUIsRUFBRTtRQUV6QixNQUFNLEtBQUssR0FBb0I7WUFDN0IsS0FBSyxFQUFFLEVBQUU7WUFDVCxPQUFPLEVBQUUsRUFBRTtZQUNYLFFBQVEsRUFBRSxFQUFFO1NBQ2IsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDbEIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sU0FBUyxHQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNqQyxNQUFNLFNBQVMsR0FBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFakMsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUU7WUFDaEMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRTdELElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNoQixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDakIsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUU7b0JBQ3BDLEtBQUssRUFBRSxRQUFRO2lCQUNoQixDQUFDLENBQUM7Z0JBQ0gsU0FBUzthQUNWO1lBRUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxD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QjtnQkFDQSxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUMxRCxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNqQyxXQUFXLENBQUMsSUFBSSxDQUFDO3dCQUNmLEdBQUcsRUFBRSxTQUFTO3dCQUNkLFFBQVEsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDO3dCQUM1QixRQUFRLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQztxQkFDM0IsQ0FBQyxDQUFDO29CQUNILFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDOUQ7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tICcuL3N0cmluZy11dGlscyc7XG5pbXBvcnQgeyBHcm91cGluZ0NoYW5nZXMsIENoYW5nZVR5cGUgfSBmcm9tICcuL2NoYW5nZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgQ2hhbmdlVXRpbHMge1xuICBzdGF0aWMgZmluZENoYW5nZXMoXG4gICAgb2JqMTogYW55W10sXG4gICAgb2JqMjogYW55W10sXG4gICAgaWdub3JlS2V5czogc3RyaW5nW10gPSBbXVxuICApOiBHcm91cGluZ0NoYW5nZXMge1xuICAgIGNvbnN0IGl0ZW1zOiBHcm91cGluZ0NoYW5nZXMgPSB7XG4gICAgICBhZGRlZDogW10sXG4gICAgICBkZWxldGVkOiBbXSxcbiAgICAgIG1vZGlmaWVkOiBbXVxuICAgIH07XG5cbiAgICBpZiAoIW9iajEgfHwgIW9iajIpIHtcbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICBjb25zdCBvYmoxQ2xvbmU6IGFueSA9IFsuLi5vYmoxXTtcbiAgICBjb25zdCBvYmoyQ2xvbmU6IGFueSA9IFsuLi5vYmoyXTtcblxuICAgIGZvciAoY29uc3QgZnJvbUl0ZW0gb2Ygb2JqMUNsb25lKSB7XG4gICAgICBjb25zdCBpbmRleCA9IG9iajJDbG9uZS5maW5kSW5kZXgocyA9PiBzLmlkID09PSBmcm9tSXRlbS5pZCk7XG5cbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgaXRlbXMuZGVsZXRlZC5wdXNoKHtcbiAgICAgICAgICBjaGFuZ2U6IHsgdHlwZTogQ2hhbmdlVHlwZS5ERUxFVEVEIH0sXG4gICAgICAgICAgdmFsdWU6IGZyb21JdGVtXG4gICAgICAgIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG9JdGVtID0gb2JqMkNsb25lLnNwbGljZShpbmRleCwgMSlbMF07XG4gICAgICBjb25zdCBmcm9tSXRlbUNsb25lID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmcm9tSXRlbSkpO1xuICAgICAgY29uc3QgdG9JdGVtQ2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRvSXRlbSkpO1xuXG4gICAgICBjb25zdCBrZXlzQ2hhbmdlZCA9IENoYW5nZVV0aWxzLmNvbXBhcmVPYmplY3QoXG4gICAgICAgIGZyb21JdGVtQ2xvbmUsXG4gICAgICAgIHRvSXRlbUNsb25lLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGlnbm9yZUtleXNcbiAgICAgICk7XG5cbiAgICAgIGlmIChrZXlzQ2hhbmdlZC5sZW5ndGgpIHtcbiAgICAgICAgaXRlbXMubW9kaWZpZWQucHVzaCh7XG4gICAgICAgICAgY2hhbmdlOiB7XG4gICAgICAgICAgICB0eXBlOiBDaGFuZ2VUeXBlLk1PRElGSUVELFxuICAgICAgICAgICAga2V5c0NoYW5nZWRcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZhbHVlOiBmcm9tSXRlbUNsb25lLFxuICAgICAgICAgIG9sZFZhbHVlOiBmcm9tSXRlbSxcbiAgICAgICAgICBuZXdWYWx1ZTogdG9JdGVtXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGl0ZW1zLmFkZGVkID0gb2JqMkNsb25lLm1hcChpdGVtQWRkZWQgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2hhbmdlOiB7IHR5cGU6IENoYW5nZVR5cGUuQURERUQgfSxcbiAgICAgICAgdmFsdWU6IGl0ZW1BZGRlZFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvbXBhcmVPYmplY3QoZnJvbUl0ZW0sIHRvSXRlbSwgYmFzZUtleT8sIGlnbm9yZUtleXMgPSBbXSkge1xuICAgIGNvbnN0IGZyb21JdGVtQ2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZyb21JdGVtKSk7XG4gICAgY29uc3QgdG9JdGVtQ2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRvSXRlbSkpO1xuXG4gICAgY29uc3Qga2V5czogYW55ID0gbmV3IFNldChbXG4gICAgICAuLi5PYmplY3Qua2V5cyhmcm9tSXRlbSksXG4gICAgICAuLi5PYmplY3Qua2V5cyh0b0l0ZW0pXG4gICAgXSk7XG4gICAgbGV0IGtleXNDaGFuZ2VkID0gW107XG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBrZXlTdHJpbmcgPSBiYXNlS2V5ID8gYCR7YmFzZUtleX0uJHtrZXl9YCA6IGtleTtcbiAgICAgIGlmIChpZ25vcmVLZXlzLmluZGV4T2Yoa2V5U3RyaW5nKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmcm9tSXRlbVtrZXldKSkge1xuICAgICAgICBmcm9tSXRlbVtrZXldID0gZnJvbUl0ZW1ba2V5XS5qb2luKCcsPGJyPicpO1xuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodG9JdGVtW2tleV0pKSB7XG4gICAgICAgIHRvSXRlbVtrZXldID0gdG9JdGVtW2tleV0uam9pbignLDxicj4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZnJvbUl0ZW1ba2V5XSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdHlwZW9mIHRvSXRlbVtrZXldID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBmcm9tSXRlbVtrZXldICE9PSBudWxsICYmXG4gICAgICAgIHRvSXRlbVtrZXldICE9PSBudWxsXG4gICAgICApIHtcbiAgICAgICAga2V5c0NoYW5nZWQgPSBrZXlzQ2hhbmdlZC5jb25jYXQoXG4gICAgICAgICAgdGhpcy5jb21wYXJlT2JqZWN0KGZyb21JdGVtW2tleV0sIHRvSXRlbVtrZXldLCBrZXlTdHJpbmcpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZnJvbUl0ZW1ba2V5XSAhPT0gdG9JdGVtW2tleV0pIHtcbiAgICAgICAgICBrZXlzQ2hhbmdlZC5wdXNoKHtcbiAgICAgICAgICAgIGtleToga2V5U3RyaW5nLFxuICAgICAgICAgICAgb2xkVmFsdWU6IGZyb21JdGVtQ2xvbmVba2V5XSxcbiAgICAgICAgICAgIG5ld1ZhbHVlOiB0b0l0ZW1DbG9uZVtrZXldXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZnJvbUl0ZW1ba2V5XSA9IFN0cmluZ1V0aWxzLmRpZmYoZnJvbUl0ZW1ba2V5XSwgdG9JdGVtW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga2V5c0NoYW5nZWQ7XG4gIH1cbn1cbiJdfQ==
1
+ import { StringUtils } from './string-utils';
2
+ import { ChangeType } from './change.interface';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbHMvc3JjL2xpYi9jaGFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBbUIsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakUsTUFBTSxPQUFPLFdBQVc7SUFDdEIsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsSUFBVyxFQUNYLElBQVcsRUFDWCxhQUF1QixFQUFFO1FBRXpCLE1BQU0sS0FBSyxHQUFvQjtZQUM3QixLQUFLLEVBQUUsRUFBRTtZQUNULE9BQU8sRUFBRSxFQUFFO1lBQ1gsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNsQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsTUFBTSxTQUFTLEdBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sU0FBUyxHQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUVqQyxLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRTtZQUNoQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFN0QsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNqQixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLE9BQU8sRUFBRTtvQkFDcEMsS0FBSyxFQUFFLFFBQVE7aUJBQ2hCLENBQUMsQ0FBQztnQkFDSCxTQUFTO2FBQ1Y7WUFFRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFB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LFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQzFELENBQUM7YUFDSDtpQkFBTTtnQkFDTCxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2pDLFdBQVcsQ0FBQyxJQUFJLENBQUM7d0JBQ2YsR0FBRyxFQUFFLFNBQVM7d0JBQ2QsUUFBUSxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUM7d0JBQzVCLFFBQVEsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDO3FCQUMzQixDQUFDLENBQUM7b0JBQ0gsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUM5RDthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdHJpbmdVdGlscyB9IGZyb20gJy4vc3RyaW5nLXV0aWxzJztcclxuaW1wb3J0IHsgR3JvdXBpbmdDaGFuZ2VzLCBDaGFuZ2VUeXBlIH0gZnJvbSAnLi9jaGFuZ2UuaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBDaGFuZ2VVdGlscyB7XHJcbiAgc3RhdGljIGZpbmRDaGFuZ2VzKFxyXG4gICAgb2JqMTogYW55W10sXHJcbiAgICBvYmoyOiBhbnlbXSxcclxuICAgIGlnbm9yZUtleXM6IHN0cmluZ1tdID0gW11cclxuICApOiBHcm91cGluZ0NoYW5nZXMge1xyXG4gICAgY29uc3QgaXRlbXM6IEdyb3VwaW5nQ2hhbmdlcyA9IHtcclxuICAgICAgYWRkZWQ6IFtdLFxyXG4gICAgICBkZWxldGVkOiBbXSxcclxuICAgICAgbW9kaWZpZWQ6IFtdXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICghb2JqMSB8fCAhb2JqMikge1xyXG4gICAgICByZXR1cm4gaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb2JqMUNsb25lOiBhbnkgPSBbLi4ub2JqMV07XHJcbiAgICBjb25zdCBvYmoyQ2xvbmU6IGFueSA9IFsuLi5vYmoyXTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGZyb21JdGVtIG9mIG9iajFDbG9uZSkge1xyXG4gICAgICBjb25zdCBpbmRleCA9IG9iajJDbG9uZS5maW5kSW5kZXgocyA9PiBzLmlkID09PSBmcm9tSXRlbS5pZCk7XHJcblxyXG4gICAgICBpZiAoaW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgaXRlbXMuZGVsZXRlZC5wdXNoKHtcclxuICAgICAgICAgIGNoYW5nZTogeyB0eXBlOiBDaGFuZ2VUeXBlLkRFTEVURUQgfSxcclxuICAgICAgICAgIHZhbHVlOiBmcm9tSXRlbVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB0b0l0ZW0gPSBvYmoyQ2xvbmUuc3BsaWNlKGluZGV4LCAxKVswXTtcclxuICAgICAgY29uc3QgZnJvbUl0ZW1DbG9uZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZnJvbUl0ZW0pKTtcclxuICAgICAgY29uc3QgdG9JdGVtQ2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRvSXRlbSkpO1xyXG5cclxuICAgICAgY29uc3Qga2V5c0NoYW5nZWQgPSBDaGFuZ2VVdGlscy5jb21wYXJlT2JqZWN0KFxyXG4gICAgICAgIGZyb21JdGVtQ2xvbmUsXHJcbiAgICAgICAgdG9JdGVtQ2xvbmUsXHJcbiAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgIGlnbm9yZUtleXNcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmIChrZXlzQ2hhbmdlZC5sZW5ndGgpIHtcclxuICAgICAgICBpdGVtcy5tb2RpZmllZC5wdXNoKHtcclxuICAgICAgICAgIGNoYW5nZToge1xyXG4gICAgICAgICAgICB0eXBlOiBDaGFuZ2VUeXBlLk1PRElGSUVELFxyXG4gICAgICAgICAgICBrZXlzQ2hhbmdlZFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHZhbHVlOiBmcm9tSXRlbUNsb25lLFxyXG4gICAgICAgICAgb2xkVmFsdWU6IGZyb21JdGVtLFxyXG4gICAgICAgICAgbmV3VmFsdWU6IHRvSXRlbVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXRlbXMuYWRkZWQgPSBvYmoyQ2xvbmUubWFwKGl0ZW1BZGRlZCA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY2hhbmdlOiB7IHR5cGU6IENoYW5nZVR5cGUuQURERUQgfSxcclxuICAgICAgICB2YWx1ZTogaXRlbUFkZGVkXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gaXRlbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb21wYXJlT2JqZWN0KGZyb21JdGVtLCB0b0l0ZW0sIGJhc2VLZXk/LCBpZ25vcmVLZXlzID0gW10pIHtcclxuICAgIGNvbnN0IGZyb21JdGVtQ2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZyb21JdGVtKSk7XHJcbiAgICBjb25zdCB0b0l0ZW1DbG9uZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodG9JdGVtKSk7XHJcblxyXG4gICAgY29uc3Qga2V5czogYW55ID0gbmV3IFNldChbXHJcbiAgICAgIC4uLk9iamVjdC5rZXlzKGZyb21JdGVtKSxcclxuICAgICAgLi4uT2JqZWN0LmtleXModG9JdGVtKVxyXG4gICAgXSk7XHJcbiAgICBsZXQga2V5c0NoYW5nZWQgPSBbXTtcclxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICBjb25zdCBrZXlTdHJpbmcgPSBiYXNlS2V5ID8gYCR7YmFzZUtleX0uJHtrZXl9YCA6IGtleTtcclxuICAgICAgaWYgKGlnbm9yZUtleXMuaW5kZXhPZihrZXlTdHJpbmcpICE9PSAtMSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZnJvbUl0ZW1ba2V5XSkpIHtcclxuICAgICAgICBmcm9tSXRlbVtrZXldID0gZnJvbUl0ZW1ba2V5XS5qb2luKCcsPGJyPicpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRvSXRlbVtrZXldKSkge1xyXG4gICAgICAgIHRvSXRlbVtrZXldID0gdG9JdGVtW2tleV0uam9pbignLDxicj4nKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHR5cGVvZiBmcm9tSXRlbVtrZXldID09PSAnb2JqZWN0JyAmJlxyXG4gICAgICAgIHR5cGVvZiB0b0l0ZW1ba2V5XSA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgICBmcm9tSXRlbVtrZXldICE9PSBudWxsICYmXHJcbiAgICAgICAgdG9JdGVtW2tleV0gIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAga2V5c0NoYW5nZWQgPSBrZXlzQ2hhbmdlZC5jb25jYXQoXHJcbiAgICAgICAgICB0aGlzLmNvbXBhcmVPYmplY3QoZnJvbUl0ZW1ba2V5XSwgdG9JdGVtW2tleV0sIGtleVN0cmluZylcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChmcm9tSXRlbVtrZXldICE9PSB0b0l0ZW1ba2V5XSkge1xyXG4gICAgICAgICAga2V5c0NoYW5nZWQucHVzaCh7XHJcbiAgICAgICAgICAgIGtleToga2V5U3RyaW5nLFxyXG4gICAgICAgICAgICBvbGRWYWx1ZTogZnJvbUl0ZW1DbG9uZVtrZXldLFxyXG4gICAgICAgICAgICBuZXdWYWx1ZTogdG9JdGVtQ2xvbmVba2V5XVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBmcm9tSXRlbVtrZXldID0gU3RyaW5nVXRpbHMuZGlmZihmcm9tSXRlbVtrZXldLCB0b0l0ZW1ba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4ga2V5c0NoYW5nZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,52 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6Ii9zcnYvYXBwcy9pZ28yLWxpYi9wYWNrYWdlcy91dGlscy9zcmMvIiwic291cmNlcyI6WyJsaWIvY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekMsTUFBTSxPQUFPLFNBQVM7SUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFxQztRQUMvQyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDL0IsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuRCxTQUFTLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLFVBQVUsR0FBRyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QyxTQUFTLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3JDO2FBQU07WUFDTCxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLFVBQVUsR0FBRyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM5QztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQVk7UUFDeEMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQXdCLENBQUM7UUFDM0UsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBUTtRQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRO1FBQ2hDLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLEtBQUssRUFBRTtZQUNuQyxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDcEQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN0QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRXhDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQzFCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDNUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsa0JBQWtCLENBQUM7WUFDOUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7U0FDakM7YUFBTTtZQUNMLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsbUJBQW1CO1FBQ2hDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxLQUFLLElBQUksU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3pFLE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlckFnZW50IH0gZnJvbSAnLi91c2VyLWFnZW50JztcblxuZXhwb3J0IGNsYXNzIENsaXBib2FyZCB7XG4gIHN0YXRpYyBjb3B5KGVsZW1lbnQ6IEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgc3VjY2Vzc2Z1bCA9IGZhbHNlO1xuICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHRleHRBcmVhID0gQ2xpcGJvYXJkLmNyZWF0ZVRleHRBcmVhKGVsZW1lbnQpO1xuICAgICAgQ2xpcGJvYXJkLnNlbGVjdFRleHQodGV4dEFyZWEpO1xuICAgICAgc3VjY2Vzc2Z1bCA9IENsaXBib2FyZC5jb3B5VGV4dFRvQ2xpcGJvYXJkKCk7XG4gICAgICBDbGlwYm9hcmQuZGVzdHJveVRleHRBcmVhKHRleHRBcmVhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ2xpcGJvYXJkLnNlbGVjdFRleHQoZWxlbWVudCk7XG4gICAgICBzdWNjZXNzZnVsID0gQ2xpcGJvYXJkLmNvcHlUZXh0VG9DbGlwYm9hcmQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1Y2Nlc3NmdWw7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVUZXh0QXJlYSh0ZXh0OiBzdHJpbmcpOiBIVE1MVGV4dEFyZWFFbGVtZW50IHtcbiAgICBjb25zdCB0ZXh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRBcmVhJykgYXMgSFRNTFRleHRBcmVhRWxlbWVudDtcbiAgICB0ZXh0QXJlYS52YWx1ZSA9IHRleHQ7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXh0QXJlYSk7XG4gICAgcmV0dXJuIHRleHRBcmVhO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZGVzdHJveVRleHRBcmVhKHRleHRBcmVhKSB7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXh0QXJlYSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzZWxlY3RUZXh0KHRleHRBcmVhKSB7XG4gICAgaWYgKHVzZXJBZ2VudC5nZXRPU05hbWUoKSA9PT0gJ2lPUycpIHtcbiAgICAgIGNvbnN0IG9sZENvbnRlbnRFZGl0YWJsZSA9IHRleHRBcmVhLmNvbnRlbnRFZGl0YWJsZTtcbiAgICAgIGNvbnN0IG9sZFJlYWRPbmx5ID0gdGV4dEFyZWEucmVhZE9ubHk7XG4gICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICAgIHRleHRBcmVhLmNvbnRlbnRlZGl0YWJsZSA9IHRydWU7XG4gICAgICB0ZXh0QXJlYS5yZWFkb25seSA9IGZhbHNlO1xuICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHRleHRBcmVhKTtcbiAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG4gICAgICB0ZXh0QXJlYS5zZXRTZWxlY3Rpb25SYW5nZSgwLCA5OTk5OTkpO1xuICAgICAgdGV4dEFyZWEuY29udGVudEVkaXRhYmxlID0gb2xkQ29udGVudEVkaXRhYmxlO1xuICAgICAgdGV4dEFyZWEucmVhZE9ubHkgPSBvbGRSZWFkT25seTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGV4dEFyZWEuc2VsZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY29weVRleHRUb0NsaXBib2FyZCgpOiBib29sZWFuIHtcbiAgICBpZiAoISh1c2VyQWdlbnQuZ2V0T1NOYW1lKCkgPT09ICdpT1MnICYmIHVzZXJBZ2VudC5jb21wYXJlVmVyc2lvbignPDEwJykpKSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbHMvc3JjL2xpYi9jbGlwYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxNQUFNLE9BQU8sU0FBUztJQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQXFDO1FBQy9DLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUMvQixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0IsVUFBVSxHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzdDLFNBQVMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckM7YUFBTTtZQUNMLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsVUFBVSxHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzlDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBWTtRQUN4QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBd0IsQ0FBQztRQUMzRSxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUN0QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRU8sTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRO1FBQ3JDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVE7UUFDaEMsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLEtBQUssS0FBSyxFQUFFO1lBQ25DLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztZQUNwRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFeEMsUUFBUSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDaEMsUUFBUSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDMUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QixTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdEMsUUFBUSxDQUFDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztZQUM5QyxRQUFRLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztTQUNqQzthQUFNO1lBQ0wsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxtQkFBbUI7UUFDaEMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLEtBQUssSUFBSSxTQUFTLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDekUsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VyQWdlbnQgfSBmcm9tICcuL3VzZXItYWdlbnQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIENsaXBib2FyZCB7XHJcbiAgc3RhdGljIGNvcHkoZWxlbWVudDogSFRNTFRleHRBcmVhRWxlbWVudCB8IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHN1Y2Nlc3NmdWwgPSBmYWxzZTtcclxuICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgY29uc3QgdGV4dEFyZWEgPSBDbGlwYm9hcmQuY3JlYXRlVGV4dEFyZWEoZWxlbWVudCk7XHJcbiAgICAgIENsaXBib2FyZC5zZWxlY3RUZXh0KHRleHRBcmVhKTtcclxuICAgICAgc3VjY2Vzc2Z1bCA9IENsaXBib2FyZC5jb3B5VGV4dFRvQ2xpcGJvYXJkKCk7XHJcbiAgICAgIENsaXBib2FyZC5kZXN0cm95VGV4dEFyZWEodGV4dEFyZWEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgQ2xpcGJvYXJkLnNlbGVjdFRleHQoZWxlbWVudCk7XHJcbiAgICAgIHN1Y2Nlc3NmdWwgPSBDbGlwYm9hcmQuY29weVRleHRUb0NsaXBib2FyZCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1Y2Nlc3NmdWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVUZXh0QXJlYSh0ZXh0OiBzdHJpbmcpOiBIVE1MVGV4dEFyZWFFbGVtZW50IHtcclxuICAgIGNvbnN0IHRleHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dEFyZWEnKSBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xyXG4gICAgdGV4dEFyZWEudmFsdWUgPSB0ZXh0O1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXh0QXJlYSk7XHJcbiAgICByZXR1cm4gdGV4dEFyZWE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBkZXN0cm95VGV4dEFyZWEodGV4dEFyZWEpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dEFyZWEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgc2VsZWN0VGV4dCh0ZXh0QXJlYSkge1xyXG4gICAgaWYgKHVzZXJBZ2VudC5nZXRPU05hbWUoKSA9PT0gJ2lPUycpIHtcclxuICAgICAgY29uc3Qgb2xkQ29udGVudEVkaXRhYmxlID0gdGV4dEFyZWEuY29udGVudEVkaXRhYmxlO1xyXG4gICAgICBjb25zdCBvbGRSZWFkT25seSA9IHRleHRBcmVhLnJlYWRPbmx5O1xyXG4gICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICAgIHRleHRBcmVhLmNvbnRlbnRlZGl0YWJsZSA9IHRydWU7XHJcbiAgICAgIHRleHRBcmVhLnJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyh0ZXh0QXJlYSk7XHJcbiAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcclxuICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcclxuICAgICAgdGV4dEFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgOTk5OTk5KTtcclxuICAgICAgdGV4dEFyZWEuY29udGVudEVkaXRhYmxlID0gb2xkQ29udGVudEVkaXRhYmxlO1xyXG4gICAgICB0ZXh0QXJlYS5yZWFkT25seSA9IG9sZFJlYWRPbmx5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGV4dEFyZWEuc2VsZWN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb3B5VGV4dFRvQ2xpcGJvYXJkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCEodXNlckFnZW50LmdldE9TTmFtZSgpID09PSAnaU9TJyAmJiB1c2VyQWdlbnQuY29tcGFyZVZlcnNpb24oJzwxMCcpKSkge1xyXG4gICAgICByZXR1cm4gZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,28 +1,28 @@
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
- /**
13
- * Trigger download of a file
14
- *
15
- * @param content File content
16
- * @param mimeType File mime type
17
- * @param fileName File name
18
- */
19
- export function downloadFromUri(uri, fileName) {
20
- const element = document.createElement('a');
21
- element.setAttribute('href', uri);
22
- element.setAttribute('download', fileName);
23
- element.style.display = 'none';
24
- document.body.appendChild(element);
25
- element.click();
26
- document.body.removeChild(element);
27
- }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIvc3J2L2FwcHMvaWdvMi1saWIvcGFja2FnZXMvdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibGliL2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQjtJQUNqRixNQUFNLEdBQUcsR0FBRyxRQUFRLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0lBQzlELGVBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBVyxFQUFFLFFBQWdCO0lBQzNELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEMsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRW5DLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVoQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmlnZ2VyIGRvd25sb2FkIG9mIGEgZmlsZVxuICpcbiAqIEBwYXJhbSBjb250ZW50IEZpbGUgY29udGVudFxuICogQHBhcmFtIG1pbWVUeXBlIEZpbGUgbWltZSB0eXBlXG4gKiBAcGFyYW0gZmlsZU5hbWUgRmlsZSBuYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb3dubG9hZENvbnRlbnQoY29udGVudDogc3RyaW5nLCBtaW1lVHlwZTogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHVyaSA9IGBkYXRhOiR7bWltZVR5cGV9LCR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvbnRlbnQpfWA7XG4gIGRvd25sb2FkRnJvbVVyaSh1cmksIGZpbGVOYW1lKTtcbn1cblxuLyoqXG4gKiBUcmlnZ2VyIGRvd25sb2FkIG9mIGEgZmlsZVxuICpcbiAqIEBwYXJhbSBjb250ZW50IEZpbGUgY29udGVudFxuICogQHBhcmFtIG1pbWVUeXBlIEZpbGUgbWltZSB0eXBlXG4gKiBAcGFyYW0gZmlsZU5hbWUgRmlsZSBuYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb3dubG9hZEZyb21VcmkodXJpOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB1cmkpO1xuICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XG4gIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcblxuICBlbGVtZW50LmNsaWNrKCk7XG5cbiAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTtcbn1cbiJdfQ==
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
+ /**
13
+ * Trigger download of a file
14
+ *
15
+ * @param content File content
16
+ * @param mimeType File mime type
17
+ * @param fileName File name
18
+ */
19
+ export function downloadFromUri(uri, fileName) {
20
+ const element = document.createElement('a');
21
+ element.setAttribute('href', uri);
22
+ element.setAttribute('download', fileName);
23
+ element.style.display = 'none';
24
+ document.body.appendChild(element);
25
+ element.click();
26
+ document.body.removeChild(element);
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWxzL3NyYy9saWIvZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQWUsRUFBRSxRQUFnQixFQUFFLFFBQWdCO0lBQ2pGLE1BQU0sR0FBRyxHQUFHLFFBQVEsUUFBUSxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDOUQsZUFBZSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFXLEVBQUUsUUFBZ0I7SUFDM0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsQyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbkMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRWhCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHJpZ2dlciBkb3dubG9hZCBvZiBhIGZpbGVcclxuICpcclxuICogQHBhcmFtIGNvbnRlbnQgRmlsZSBjb250ZW50XHJcbiAqIEBwYXJhbSBtaW1lVHlwZSBGaWxlIG1pbWUgdHlwZVxyXG4gKiBAcGFyYW0gZmlsZU5hbWUgRmlsZSBuYW1lXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRDb250ZW50KGNvbnRlbnQ6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZykge1xyXG4gIGNvbnN0IHVyaSA9IGBkYXRhOiR7bWltZVR5cGV9LCR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvbnRlbnQpfWA7XHJcbiAgZG93bmxvYWRGcm9tVXJpKHVyaSwgZmlsZU5hbWUpO1xyXG59XHJcblxyXG4vKipcclxuICogVHJpZ2dlciBkb3dubG9hZCBvZiBhIGZpbGVcclxuICpcclxuICogQHBhcmFtIGNvbnRlbnQgRmlsZSBjb250ZW50XHJcbiAqIEBwYXJhbSBtaW1lVHlwZSBGaWxlIG1pbWUgdHlwZVxyXG4gKiBAcGFyYW0gZmlsZU5hbWUgRmlsZSBuYW1lXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRGcm9tVXJpKHVyaTogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsIHVyaSk7XHJcbiAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZU5hbWUpO1xyXG4gIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xyXG5cclxuICBlbGVtZW50LmNsaWNrKCk7XHJcblxyXG4gIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XHJcbn1cclxuIl19
@@ -1,12 +1,12 @@
1
- export * from './base64';
2
- export * from './clipboard';
3
- export * from './change';
4
- export * from './change.interface';
5
- export * from './file';
6
- export * from './object-utils';
7
- export * from './strenum';
8
- export * from './string-utils';
9
- export * from './user-agent';
10
- export * from './uuid';
11
- export * from './watcher';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3Nydi9hcHBzL2lnbzItbGliL3BhY2thZ2VzL3V0aWxzL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFzZTY0JztcbmV4cG9ydCAqIGZyb20gJy4vY2xpcGJvYXJkJztcbmV4cG9ydCAqIGZyb20gJy4vY2hhbmdlJztcbmV4cG9ydCAqIGZyb20gJy4vY2hhbmdlLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9vYmplY3QtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zdHJlbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vc3RyaW5nLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1hZ2VudCc7XG5leHBvcnQgKiBmcm9tICcuL3V1aWQnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGVyJztcbiJdfQ==
1
+ export * from './base64';
2
+ export * from './clipboard';
3
+ export * from './change';
4
+ export * from './change.interface';
5
+ export * from './file';
6
+ export * from './object-utils';
7
+ export * from './strenum';
8
+ export * from './string-utils';
9
+ export * from './user-agent';
10
+ export * from './uuid';
11
+ export * from './watcher';
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlscy9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYXNlNjQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NsaXBib2FyZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2hhbmdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9jaGFuZ2UuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9vYmplY3QtdXRpbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3N0cmVudW0nO1xyXG5leHBvcnQgKiBmcm9tICcuL3N0cmluZy11dGlscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1hZ2VudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdXVpZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hlcic7XHJcbiJdfQ==