@trudb/tru-common-lib 0.0.179 → 0.0.182
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/toolbar/tru-toolbar-module.mjs +21 -3
- package/esm2020/lib/services/tru-predicate-map.mjs +11 -0
- package/esm2020/lib/services/tru-text-manager.mjs +134 -0
- package/esm2020/lib/services/tru-user.mjs +54 -0
- package/esm2020/public-api.mjs +22 -2
- package/fesm2015/trudb-tru-common-lib.mjs +213 -3
- package/fesm2015/trudb-tru-common-lib.mjs.map +1 -1
- package/fesm2020/trudb-tru-common-lib.mjs +213 -3
- package/fesm2020/trudb-tru-common-lib.mjs.map +1 -1
- package/lib/components/toolbar/tru-toolbar-module.d.ts +1 -1
- package/lib/services/tru-predicate-map.d.ts +6 -0
- package/lib/services/tru-text-manager.d.ts +68 -0
- package/lib/services/tru-user.d.ts +21 -0
- package/package.json +1 -1
- package/public-api.d.ts +21 -1
|
@@ -19,7 +19,13 @@ TruToolbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
19
19
|
TruToolbarDropdownModule,
|
|
20
20
|
TruToolbarSeparatorModule,
|
|
21
21
|
TruToolbarContextFilterModule,
|
|
22
|
-
TruToolbarTextModule], exports: [TruToolbar
|
|
22
|
+
TruToolbarTextModule], exports: [TruToolbar,
|
|
23
|
+
TruToolbarMenuModule,
|
|
24
|
+
TruToolbarButtonModule,
|
|
25
|
+
TruToolbarDropdownModule,
|
|
26
|
+
TruToolbarSeparatorModule,
|
|
27
|
+
TruToolbarContextFilterModule,
|
|
28
|
+
TruToolbarTextModule] });
|
|
23
29
|
TruToolbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruToolbarModule, imports: [CommonModule,
|
|
24
30
|
FormsModule,
|
|
25
31
|
TruToolbarMenuModule,
|
|
@@ -27,6 +33,11 @@ TruToolbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
|
|
|
27
33
|
TruToolbarDropdownModule,
|
|
28
34
|
TruToolbarSeparatorModule,
|
|
29
35
|
TruToolbarContextFilterModule,
|
|
36
|
+
TruToolbarTextModule, TruToolbarMenuModule,
|
|
37
|
+
TruToolbarButtonModule,
|
|
38
|
+
TruToolbarDropdownModule,
|
|
39
|
+
TruToolbarSeparatorModule,
|
|
40
|
+
TruToolbarContextFilterModule,
|
|
30
41
|
TruToolbarTextModule] });
|
|
31
42
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruToolbarModule, decorators: [{
|
|
32
43
|
type: NgModule,
|
|
@@ -42,7 +53,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
42
53
|
TruToolbarContextFilterModule,
|
|
43
54
|
TruToolbarTextModule
|
|
44
55
|
],
|
|
45
|
-
exports: [TruToolbar
|
|
56
|
+
exports: [TruToolbar,
|
|
57
|
+
TruToolbarMenuModule,
|
|
58
|
+
TruToolbarButtonModule,
|
|
59
|
+
TruToolbarDropdownModule,
|
|
60
|
+
TruToolbarSeparatorModule,
|
|
61
|
+
TruToolbarContextFilterModule,
|
|
62
|
+
TruToolbarTextModule
|
|
63
|
+
]
|
|
46
64
|
}]
|
|
47
65
|
}] });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXRvb2xiYXItbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvdHJ1LXRvb2xiYXItbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQXVCdEUsTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLGlCQXBCWixVQUFVLGFBRXZCLFlBQVk7UUFDWixXQUFXO1FBQ1gsb0JBQW9CO1FBQ3BCLHNCQUFzQjtRQUN0Qix3QkFBd0I7UUFDeEIseUJBQXlCO1FBQ3pCLDZCQUE2QjtRQUM3QixvQkFBb0IsYUFFWixVQUFVO1FBQ2xCLG9CQUFvQjtRQUNwQixzQkFBc0I7UUFDdEIsd0JBQXdCO1FBQ3hCLHlCQUF5QjtRQUN6Qiw2QkFBNkI7UUFDN0Isb0JBQW9COzhHQUdYLGdCQUFnQixZQWxCekIsWUFBWTtRQUNaLFdBQVc7UUFDWCxvQkFBb0I7UUFDcEIsc0JBQXNCO1FBQ3RCLHdCQUF3QjtRQUN4Qix5QkFBeUI7UUFDekIsNkJBQTZCO1FBQzdCLG9CQUFvQixFQUdwQixvQkFBb0I7UUFDcEIsc0JBQXNCO1FBQ3RCLHdCQUF3QjtRQUN4Qix5QkFBeUI7UUFDekIsNkJBQTZCO1FBQzdCLG9CQUFvQjsyRkFHWCxnQkFBZ0I7a0JBckI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQztvQkFDMUIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLDZCQUE2Qjt3QkFDN0Isb0JBQW9CO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxVQUFVO3dCQUNsQixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLDZCQUE2Qjt3QkFDN0Isb0JBQW9CO3FCQUNyQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuaW1wb3J0IHsgVHJ1VG9vbGJhciB9IGZyb20gXCIuL3RydS10b29sYmFyXCI7XHJcbmltcG9ydCB7IFRydVRvb2xiYXJNZW51TW9kdWxlIH0gZnJvbSBcIi4vbWVudS90cnUtdG9vbGJhci1tZW51LW1vZHVsZVwiO1xyXG5pbXBvcnQgeyBUcnVUb29sYmFyQnV0dG9uTW9kdWxlIH0gZnJvbSBcIi4vYnV0dG9uL3RydS10b29sYmFyLWJ1dHRvbi1tb2R1bGVcIjtcclxuaW1wb3J0IHsgVHJ1VG9vbGJhckRyb3Bkb3duTW9kdWxlIH0gZnJvbSBcIi4vZHJvcGRvd24vdHJ1LXRvb2xiYXItZHJvcGRvd24tbW9kdWxlXCI7XHJcbmltcG9ydCB7IFRydVRvb2xiYXJTZXBhcmF0b3JNb2R1bGUgfSBmcm9tIFwiLi9zZXBhcmF0b3IvdHJ1LXRvb2xiYXItc2VwYXJhdG9yLW1vZHVsZVwiO1xyXG5pbXBvcnQgeyBUcnVUb29sYmFyQ29udGV4dEZpbHRlck1vZHVsZSB9IGZyb20gXCIuL2NvbnRleHQtZmlsdGVyL3RydS10b29sYmFyLWNvbnRleHQtZmlsdGVyLW1vZHVsZVwiO1xyXG5pbXBvcnQgeyBUcnVUb29sYmFyVGV4dE1vZHVsZSB9IGZyb20gXCIuL3RleHQvdHJ1LXRvb2xiYXItdGV4dC1tb2R1bGVcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbVHJ1VG9vbGJhcl0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUcnVUb29sYmFyTWVudU1vZHVsZSxcclxuICAgIFRydVRvb2xiYXJCdXR0b25Nb2R1bGUsXHJcbiAgICBUcnVUb29sYmFyRHJvcGRvd25Nb2R1bGUsXHJcbiAgICBUcnVUb29sYmFyU2VwYXJhdG9yTW9kdWxlLFxyXG4gICAgVHJ1VG9vbGJhckNvbnRleHRGaWx0ZXJNb2R1bGUsXHJcbiAgICBUcnVUb29sYmFyVGV4dE1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1RydVRvb2xiYXIsXHJcbiAgICBUcnVUb29sYmFyTWVudU1vZHVsZSxcclxuICAgIFRydVRvb2xiYXJCdXR0b25Nb2R1bGUsXHJcbiAgICBUcnVUb29sYmFyRHJvcGRvd25Nb2R1bGUsXHJcbiAgICBUcnVUb29sYmFyU2VwYXJhdG9yTW9kdWxlLFxyXG4gICAgVHJ1VG9vbGJhckNvbnRleHRGaWx0ZXJNb2R1bGUsXHJcbiAgICBUcnVUb29sYmFyVGV4dE1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydVRvb2xiYXJNb2R1bGUgeyB9XHJcbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TruPredicateMap {
|
|
4
|
+
constructor() { }
|
|
5
|
+
}
|
|
6
|
+
TruPredicateMap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruPredicateMap, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
7
|
+
TruPredicateMap.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruPredicateMap });
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruPredicateMap, decorators: [{
|
|
9
|
+
type: Injectable
|
|
10
|
+
}], ctorParameters: function () { return []; } });
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXByZWRpY2F0ZS1tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RydS1wcmVkaWNhdGUtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxlQUFlO0lBQzFCLGdCQUFnQixDQUFDOzs0R0FETixlQUFlO2dIQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJ1UHJlZGljYXRlTWFwIHtcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as _ from 'underscore';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class TruTextManager {
|
|
5
|
+
constructor() {
|
|
6
|
+
/**
|
|
7
|
+
* If text.length exceeds length, then returns a string that is the first length chars
|
|
8
|
+
* of text plus suffix. Otherwise, returns text.
|
|
9
|
+
* @param {string} text
|
|
10
|
+
* @param {number} length
|
|
11
|
+
* @param {string} suffix
|
|
12
|
+
* @return {string}
|
|
13
|
+
*/
|
|
14
|
+
this.truncate = (text, length, suffix) => {
|
|
15
|
+
return text.length > length ? text.substr(0, length) + suffix : text.toString();
|
|
16
|
+
};
|
|
17
|
+
this.isMac = () => {
|
|
18
|
+
return navigator.platform.toUpperCase().indexOf('MAC') >= 0;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Formats the text to use for the window title.
|
|
22
|
+
* @param {string} text
|
|
23
|
+
* @return {string} - Window title.
|
|
24
|
+
*/
|
|
25
|
+
this.formatWindowTitle = (text) => {
|
|
26
|
+
return this.truncate(text, 60, '...');
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Returns a message indicating that an entity or entities were deleted in another view.
|
|
30
|
+
* @param {string} entityTypeLabel - Description of the entity type.
|
|
31
|
+
* @param [{string}] entityTypePluralLabel - Description of more than one of the entity type.
|
|
32
|
+
* @param [{number}] count - Number of entities.
|
|
33
|
+
*/
|
|
34
|
+
this.fmtEntityDeletedInOtherView = (entityTypeLabel, entityTypePluralLabel, count) => {
|
|
35
|
+
if (!count || count === 1)
|
|
36
|
+
return entityTypeLabel + ' deleted in another view';
|
|
37
|
+
return count + ' ' + entityTypePluralLabel + ' deleted in another view';
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Returns a message used to confirm deletion of an entity or entities.
|
|
41
|
+
* @param {string} entityTypeLabel - Description of the entity type.
|
|
42
|
+
* @param [{string}] entityTypePluralLabel - Description of more than one of the entity type.
|
|
43
|
+
* @param [{number}] count - Number of entities.
|
|
44
|
+
*/
|
|
45
|
+
this.fmtDeleteConfirmation = (entityTypeLabel, entityTypePluralLabel = null, count = null) => {
|
|
46
|
+
if (count === null)
|
|
47
|
+
return 'Are you sure you want to delete this ' + entityTypeLabel + '?';
|
|
48
|
+
if (count === 1)
|
|
49
|
+
return 'Are you sure you want to delete 1 ' + entityTypeLabel + '?';
|
|
50
|
+
return 'Are you sure you want to delete ' + count + ' ' + entityTypePluralLabel + '?';
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Returns a message formatted from an error object.
|
|
54
|
+
* @param {error|string} error
|
|
55
|
+
* @returns {string}
|
|
56
|
+
*/
|
|
57
|
+
this.fmtErrorToShow = (error) => {
|
|
58
|
+
if (typeof error === 'string')
|
|
59
|
+
error = new Error(error);
|
|
60
|
+
var lines = [];
|
|
61
|
+
lines.push(error.message);
|
|
62
|
+
var exception = error.detail;
|
|
63
|
+
while (exception) {
|
|
64
|
+
var message = exception.ExceptionMessage;
|
|
65
|
+
if (!_.contains(lines, message))
|
|
66
|
+
lines.push(message);
|
|
67
|
+
exception = exception.InnerException;
|
|
68
|
+
}
|
|
69
|
+
if (error.entityErrors) {
|
|
70
|
+
error.entityErrors.forEach((entityError) => {
|
|
71
|
+
lines.push('Entity <' + entityError.propertyName + '>: ' + entityError.errorMessage);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (error.stack)
|
|
75
|
+
lines.push(error.stack);
|
|
76
|
+
var text = lines.join('\r\n\r\n');
|
|
77
|
+
if (!text)
|
|
78
|
+
text = _.map(error, (value, key) => { return key + ': ' + value; }).join('\r\n');
|
|
79
|
+
return text;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Returns a message formatted from an exception object.
|
|
83
|
+
* @param {object} exception
|
|
84
|
+
* @returns {string}
|
|
85
|
+
*/
|
|
86
|
+
this.fmtExceptionToShow = (exception) => {
|
|
87
|
+
var lines = [];
|
|
88
|
+
while (exception) {
|
|
89
|
+
var message = exception.Message;
|
|
90
|
+
if (!_.contains(lines, message))
|
|
91
|
+
lines.push(message);
|
|
92
|
+
exception = exception.InnerException;
|
|
93
|
+
}
|
|
94
|
+
return lines.join('\r\n\r\n');
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Returns a message for a data error type.
|
|
98
|
+
* @param {string} typeName
|
|
99
|
+
* @returns {string}
|
|
100
|
+
*/
|
|
101
|
+
this.fmtDataError = (typeName) => {
|
|
102
|
+
if (typeName.indexOf('OptimisticLockViolation') >= 0)
|
|
103
|
+
return 'The record was edited already, by another user. Please reload and attempt your edit again.';
|
|
104
|
+
if (typeName.indexOf('DataConstraintViolation') >= 0)
|
|
105
|
+
return 'Foreign key constraint violation';
|
|
106
|
+
if (typeName.indexOf('DuplicateKeyError') >= 0)
|
|
107
|
+
return 'Duplicate key error';
|
|
108
|
+
return typeName;
|
|
109
|
+
};
|
|
110
|
+
this.msgModifierKeyLabel = this.isMac() ? 'Cmd' : 'Ctrl';
|
|
111
|
+
this.msgConfirmExitWithChangesPending = 'You have unsaved changes that will be lost.';
|
|
112
|
+
this.msgDeleteSuccessful = 'Delete succeeded';
|
|
113
|
+
this.msgSaveSuccessful = 'Save succeeded';
|
|
114
|
+
this.msgNoChangesToSave = 'No changes to save';
|
|
115
|
+
this.msgSaveInProgress = 'Save in progress';
|
|
116
|
+
this.msgInvalidData = 'Invalid data';
|
|
117
|
+
this.msgDirtyPreventsReadOnly = 'Save or revert before disabling editing';
|
|
118
|
+
this.msgDirtyPreventsNavigate = 'Save or revert before navigating';
|
|
119
|
+
this.msgDirtyPreventsClose = 'Save or revert before closing window';
|
|
120
|
+
this.msgDirtyPreventsDeleteExistingRecord = 'Save or revert before deleting';
|
|
121
|
+
this.msgNoDeleteAccess = 'Contact administrator about delete access';
|
|
122
|
+
this.msgCannotDeleteNewAndExistingRecords = 'Delete new or existing records - but not both';
|
|
123
|
+
this.msgDeleteReferencingRecordsFirst = 'Delete all referencing records first';
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
TruTextManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruTextManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
127
|
+
TruTextManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruTextManager, providedIn: 'root' });
|
|
128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruTextManager, decorators: [{
|
|
129
|
+
type: Injectable,
|
|
130
|
+
args: [{
|
|
131
|
+
providedIn: 'root',
|
|
132
|
+
}]
|
|
133
|
+
}], ctorParameters: function () { return []; } });
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXRleHQtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LXRleHQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxDQUFDLE1BQU0sWUFBWSxDQUFDOztBQUtoQyxNQUFNLE9BQU8sY0FBYztJQWdCekI7UUFpQkE7Ozs7Ozs7VUFPRTtRQUNNLGFBQVEsR0FBRyxDQUFDLElBQVksRUFBRSxNQUFjLEVBQUUsTUFBYyxFQUFVLEVBQUU7WUFDMUUsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEYsQ0FBQyxDQUFBO1FBRUQsVUFBSyxHQUFHLEdBQVksRUFBRTtZQUNwQixPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUE7UUFFRDs7OztXQUlHO1FBQ0gsc0JBQWlCLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRTtZQUMzQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUE7UUFFRDs7Ozs7VUFLRTtRQUNGLGdDQUEyQixHQUFHLENBQUMsZUFBdUIsRUFBRSxxQkFBNkIsRUFBRSxLQUFhLEVBQVUsRUFBRTtZQUM5RyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxDQUFDO2dCQUN2QixPQUFPLGVBQWUsR0FBRywwQkFBMEIsQ0FBQztZQUN0RCxPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUcscUJBQXFCLEdBQUcsMEJBQTBCLENBQUM7UUFDMUUsQ0FBQyxDQUFDO1FBRUY7Ozs7O1dBS0c7UUFDSCwwQkFBcUIsR0FBRyxDQUN0QixlQUF1QixFQUN2Qix3QkFBdUMsSUFBSSxFQUMzQyxRQUF1QixJQUFJLEVBQVUsRUFBRTtZQUN2QyxJQUFJLEtBQUssS0FBSyxJQUFJO2dCQUNoQixPQUFPLHVDQUF1QyxHQUFHLGVBQWUsR0FBRyxHQUFHLENBQUM7WUFDekUsSUFBSSxLQUFLLEtBQUssQ0FBQztnQkFDYixPQUFPLG9DQUFvQyxHQUFHLGVBQWUsR0FBRyxHQUFHLENBQUM7WUFDdEUsT0FBTyxrQ0FBa0MsR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztRQUN4RixDQUFDLENBQUM7UUFFRjs7OztXQUlHO1FBQ0gsbUJBQWMsR0FBRyxDQUFDLEtBQVUsRUFBVSxFQUFFO1lBQ3RDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtnQkFDM0IsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNmLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFCLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDN0IsT0FBTyxTQUFTLEVBQUU7Z0JBQ2hCLElBQUksT0FBTyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDekMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztvQkFDN0IsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdEIsU0FBUyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUM7YUFDdEM7WUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7Z0JBQ3RCLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBZ0IsRUFBRSxFQUFFO29CQUM5QyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsWUFBWSxHQUFHLEtBQUssR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3ZGLENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLEtBQUssQ0FBQyxLQUFLO2dCQUNiLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLElBQUk7Z0JBQ1AsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxFQUFFLEdBQUcsT0FBTyxHQUFHLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztRQUVGOzs7O1dBSUc7UUFDSCx1QkFBa0IsR0FBRyxDQUFDLFNBQWMsRUFBVSxFQUFFO1lBQzlDLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNmLE9BQU8sU0FBUyxFQUFFO2dCQUNoQixJQUFJLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO29CQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN0QixTQUFTLEdBQUcsU0FBUyxDQUFDLGNBQWMsQ0FBQzthQUN0QztZQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUM7UUFFRjs7OztXQUlHO1FBQ0gsaUJBQVksR0FBRyxDQUFDLFFBQWdCLEVBQVUsRUFBRTtZQUMxQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDO2dCQUNsRCxPQUFPLDZGQUE2RixDQUFDO1lBQ3ZHLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xELE9BQU8sa0NBQWtDLENBQUM7WUFDNUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztnQkFDNUMsT0FBTyxxQkFBcUIsQ0FBQztZQUMvQixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUE7UUFqSUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDekQsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLDZDQUE2QyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQztRQUM5QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDO1FBQy9DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQztRQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcseUNBQXlDLENBQUM7UUFDMUUsSUFBSSxDQUFDLHdCQUF3QixHQUFHLGtDQUFrQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxzQ0FBc0MsQ0FBQztRQUNwRSxJQUFJLENBQUMsb0NBQW9DLEdBQUcsZ0NBQWdDLENBQUM7UUFDN0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLDJDQUEyQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxvQ0FBb0MsR0FBRywrQ0FBK0MsQ0FBQztRQUM1RixJQUFJLENBQUMsZ0NBQWdDLEdBQUcsc0NBQXNDLENBQUM7SUFDakYsQ0FBQzs7MkdBL0JVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAndW5kZXJzY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1VGV4dE1hbmFnZXIge1xyXG4gIHJlYWRvbmx5IG1zZ01vZGlmaWVyS2V5TGFiZWw6IHN0cmluZztcclxuICByZWFkb25seSBtc2dDb25maXJtRXhpdFdpdGhDaGFuZ2VzUGVuZGluZzogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0RlbGV0ZVN1Y2Nlc3NmdWw6IHN0cmluZztcclxuICByZWFkb25seSBtc2dTYXZlU3VjY2Vzc2Z1bDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ05vQ2hhbmdlc1RvU2F2ZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ1NhdmVJblByb2dyZXNzOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnSW52YWxpZERhdGE6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEaXJ0eVByZXZlbnRzUmVhZE9ubHk6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEaXJ0eVByZXZlbnRzTmF2aWdhdGU6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEaXJ0eVByZXZlbnRzQ2xvc2U6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEaXJ0eVByZXZlbnRzRGVsZXRlRXhpc3RpbmdSZWNvcmQ6IHN0cmluZztcclxuICByZWFkb25seSBtc2dOb0RlbGV0ZUFjY2Vzczogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0Nhbm5vdERlbGV0ZU5ld0FuZEV4aXN0aW5nUmVjb3Jkczogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0RlbGV0ZVJlZmVyZW5jaW5nUmVjb3Jkc0ZpcnN0OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5tc2dNb2RpZmllcktleUxhYmVsID0gdGhpcy5pc01hYygpID8gJ0NtZCcgOiAnQ3RybCc7XHJcbiAgICB0aGlzLm1zZ0NvbmZpcm1FeGl0V2l0aENoYW5nZXNQZW5kaW5nID0gJ1lvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyB0aGF0IHdpbGwgYmUgbG9zdC4nO1xyXG4gICAgdGhpcy5tc2dEZWxldGVTdWNjZXNzZnVsID0gJ0RlbGV0ZSBzdWNjZWVkZWQnO1xyXG4gICAgdGhpcy5tc2dTYXZlU3VjY2Vzc2Z1bCA9ICdTYXZlIHN1Y2NlZWRlZCc7XHJcbiAgICB0aGlzLm1zZ05vQ2hhbmdlc1RvU2F2ZSA9ICdObyBjaGFuZ2VzIHRvIHNhdmUnO1xyXG4gICAgdGhpcy5tc2dTYXZlSW5Qcm9ncmVzcyA9ICdTYXZlIGluIHByb2dyZXNzJztcclxuICAgIHRoaXMubXNnSW52YWxpZERhdGEgPSAnSW52YWxpZCBkYXRhJztcclxuICAgIHRoaXMubXNnRGlydHlQcmV2ZW50c1JlYWRPbmx5ID0gJ1NhdmUgb3IgcmV2ZXJ0IGJlZm9yZSBkaXNhYmxpbmcgZWRpdGluZyc7XHJcbiAgICB0aGlzLm1zZ0RpcnR5UHJldmVudHNOYXZpZ2F0ZSA9ICdTYXZlIG9yIHJldmVydCBiZWZvcmUgbmF2aWdhdGluZyc7XHJcbiAgICB0aGlzLm1zZ0RpcnR5UHJldmVudHNDbG9zZSA9ICdTYXZlIG9yIHJldmVydCBiZWZvcmUgY2xvc2luZyB3aW5kb3cnO1xyXG4gICAgdGhpcy5tc2dEaXJ0eVByZXZlbnRzRGVsZXRlRXhpc3RpbmdSZWNvcmQgPSAnU2F2ZSBvciByZXZlcnQgYmVmb3JlIGRlbGV0aW5nJztcclxuICAgIHRoaXMubXNnTm9EZWxldGVBY2Nlc3MgPSAnQ29udGFjdCBhZG1pbmlzdHJhdG9yIGFib3V0IGRlbGV0ZSBhY2Nlc3MnO1xyXG4gICAgdGhpcy5tc2dDYW5ub3REZWxldGVOZXdBbmRFeGlzdGluZ1JlY29yZHMgPSAnRGVsZXRlIG5ldyBvciBleGlzdGluZyByZWNvcmRzIC0gYnV0IG5vdCBib3RoJztcclxuICAgIHRoaXMubXNnRGVsZXRlUmVmZXJlbmNpbmdSZWNvcmRzRmlyc3QgPSAnRGVsZXRlIGFsbCByZWZlcmVuY2luZyByZWNvcmRzIGZpcnN0JztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogSWYgdGV4dC5sZW5ndGggZXhjZWVkcyBsZW5ndGgsIHRoZW4gcmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHRoZSBmaXJzdCBsZW5ndGggY2hhcnMgXHJcbiAgKiBvZiB0ZXh0IHBsdXMgc3VmZml4LiAgT3RoZXJ3aXNlLCByZXR1cm5zIHRleHQuXHJcbiAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxyXG4gICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxyXG4gICogQHBhcmFtIHtzdHJpbmd9IHN1ZmZpeFxyXG4gICogQHJldHVybiB7c3RyaW5nfVxyXG4gICovXHJcbiAgcHJpdmF0ZSB0cnVuY2F0ZSA9ICh0ZXh0OiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyLCBzdWZmaXg6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgICByZXR1cm4gdGV4dC5sZW5ndGggPiBsZW5ndGggPyB0ZXh0LnN1YnN0cigwLCBsZW5ndGgpICsgc3VmZml4IDogdGV4dC50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgaXNNYWMgPSAoKTogYm9vbGVhbiA9PiB7XHJcbiAgICByZXR1cm4gbmF2aWdhdG9yLnBsYXRmb3JtLnRvVXBwZXJDYXNlKCkuaW5kZXhPZignTUFDJykgPj0gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdHMgdGhlIHRleHQgdG8gdXNlIGZvciB0aGUgd2luZG93IHRpdGxlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XHJcbiAgICogQHJldHVybiB7c3RyaW5nfSAtIFdpbmRvdyB0aXRsZS5cclxuICAgKi9cclxuICBmb3JtYXRXaW5kb3dUaXRsZSA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudHJ1bmNhdGUodGV4dCwgNjAsICcuLi4nKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogUmV0dXJucyBhIG1lc3NhZ2UgaW5kaWNhdGluZyB0aGF0IGFuIGVudGl0eSBvciBlbnRpdGllcyB3ZXJlIGRlbGV0ZWQgaW4gYW5vdGhlciB2aWV3LiBcclxuICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRpdHlUeXBlTGFiZWwgLSBEZXNjcmlwdGlvbiBvZiB0aGUgZW50aXR5IHR5cGUuXHJcbiAgKiBAcGFyYW0gW3tzdHJpbmd9XSBlbnRpdHlUeXBlUGx1cmFsTGFiZWwgLSBEZXNjcmlwdGlvbiBvZiBtb3JlIHRoYW4gb25lIG9mIHRoZSBlbnRpdHkgdHlwZS5cclxuICAqIEBwYXJhbSBbe251bWJlcn1dIGNvdW50IC0gTnVtYmVyIG9mIGVudGl0aWVzLlxyXG4gICovXHJcbiAgZm10RW50aXR5RGVsZXRlZEluT3RoZXJWaWV3ID0gKGVudGl0eVR5cGVMYWJlbDogc3RyaW5nLCBlbnRpdHlUeXBlUGx1cmFsTGFiZWw6IHN0cmluZywgY291bnQ6IG51bWJlcik6IHN0cmluZyA9PiB7XHJcbiAgICBpZiAoIWNvdW50IHx8IGNvdW50ID09PSAxKVxyXG4gICAgICByZXR1cm4gZW50aXR5VHlwZUxhYmVsICsgJyBkZWxldGVkIGluIGFub3RoZXIgdmlldyc7XHJcbiAgICByZXR1cm4gY291bnQgKyAnICcgKyBlbnRpdHlUeXBlUGx1cmFsTGFiZWwgKyAnIGRlbGV0ZWQgaW4gYW5vdGhlciB2aWV3JztcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgbWVzc2FnZSB1c2VkIHRvIGNvbmZpcm0gZGVsZXRpb24gb2YgYW4gZW50aXR5IG9yIGVudGl0aWVzLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRpdHlUeXBlTGFiZWwgLSBEZXNjcmlwdGlvbiBvZiB0aGUgZW50aXR5IHR5cGUuXHJcbiAgICogQHBhcmFtIFt7c3RyaW5nfV0gZW50aXR5VHlwZVBsdXJhbExhYmVsIC0gRGVzY3JpcHRpb24gb2YgbW9yZSB0aGFuIG9uZSBvZiB0aGUgZW50aXR5IHR5cGUuXHJcbiAgICogQHBhcmFtIFt7bnVtYmVyfV0gY291bnQgLSBOdW1iZXIgb2YgZW50aXRpZXMuXHJcbiAgICovXHJcbiAgZm10RGVsZXRlQ29uZmlybWF0aW9uID0gKFxyXG4gICAgZW50aXR5VHlwZUxhYmVsOiBzdHJpbmcsXHJcbiAgICBlbnRpdHlUeXBlUGx1cmFsTGFiZWw6IHN0cmluZyB8IG51bGwgPSBudWxsLFxyXG4gICAgY291bnQ6IG51bWJlciB8IG51bGwgPSBudWxsKTogc3RyaW5nID0+IHtcclxuICAgIGlmIChjb3VudCA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgJyArIGVudGl0eVR5cGVMYWJlbCArICc/JztcclxuICAgIGlmIChjb3VudCA9PT0gMSlcclxuICAgICAgcmV0dXJuICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIDEgJyArIGVudGl0eVR5cGVMYWJlbCArICc/JztcclxuICAgIHJldHVybiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSAnICsgY291bnQgKyAnICcgKyBlbnRpdHlUeXBlUGx1cmFsTGFiZWwgKyAnPyc7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIG1lc3NhZ2UgZm9ybWF0dGVkIGZyb20gYW4gZXJyb3Igb2JqZWN0LlxyXG4gICAqIEBwYXJhbSB7ZXJyb3J8c3RyaW5nfSBlcnJvciBcclxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxyXG4gICAqL1xyXG4gIGZtdEVycm9yVG9TaG93ID0gKGVycm9yOiBhbnkpOiBzdHJpbmcgPT4ge1xyXG4gICAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycpXHJcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKGVycm9yKTtcclxuICAgIHZhciBsaW5lcyA9IFtdO1xyXG4gICAgbGluZXMucHVzaChlcnJvci5tZXNzYWdlKTtcclxuICAgIHZhciBleGNlcHRpb24gPSBlcnJvci5kZXRhaWw7XHJcbiAgICB3aGlsZSAoZXhjZXB0aW9uKSB7XHJcbiAgICAgIHZhciBtZXNzYWdlID0gZXhjZXB0aW9uLkV4Y2VwdGlvbk1lc3NhZ2U7XHJcbiAgICAgIGlmICghXy5jb250YWlucyhsaW5lcywgbWVzc2FnZSkpXHJcbiAgICAgICAgbGluZXMucHVzaChtZXNzYWdlKTtcclxuICAgICAgZXhjZXB0aW9uID0gZXhjZXB0aW9uLklubmVyRXhjZXB0aW9uO1xyXG4gICAgfVxyXG4gICAgaWYgKGVycm9yLmVudGl0eUVycm9ycykge1xyXG4gICAgICBlcnJvci5lbnRpdHlFcnJvcnMuZm9yRWFjaCgoZW50aXR5RXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIGxpbmVzLnB1c2goJ0VudGl0eSA8JyArIGVudGl0eUVycm9yLnByb3BlcnR5TmFtZSArICc+OiAnICsgZW50aXR5RXJyb3IuZXJyb3JNZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZXJyb3Iuc3RhY2spXHJcbiAgICAgIGxpbmVzLnB1c2goZXJyb3Iuc3RhY2spO1xyXG4gICAgdmFyIHRleHQgPSBsaW5lcy5qb2luKCdcXHJcXG5cXHJcXG4nKTtcclxuICAgIGlmICghdGV4dClcclxuICAgICAgdGV4dCA9IF8ubWFwKGVycm9yLCAodmFsdWU6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHsgcmV0dXJuIGtleSArICc6ICcgKyB2YWx1ZSB9KS5qb2luKCdcXHJcXG4nKTtcclxuICAgIHJldHVybiB0ZXh0O1xyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBtZXNzYWdlIGZvcm1hdHRlZCBmcm9tIGFuIGV4Y2VwdGlvbiBvYmplY3QuXHJcbiAgICogQHBhcmFtIHtvYmplY3R9IGV4Y2VwdGlvblxyXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XHJcbiAgICovXHJcbiAgZm10RXhjZXB0aW9uVG9TaG93ID0gKGV4Y2VwdGlvbjogYW55KTogc3RyaW5nID0+IHtcclxuICAgIHZhciBsaW5lcyA9IFtdO1xyXG4gICAgd2hpbGUgKGV4Y2VwdGlvbikge1xyXG4gICAgICB2YXIgbWVzc2FnZSA9IGV4Y2VwdGlvbi5NZXNzYWdlO1xyXG4gICAgICBpZiAoIV8uY29udGFpbnMobGluZXMsIG1lc3NhZ2UpKVxyXG4gICAgICAgIGxpbmVzLnB1c2gobWVzc2FnZSk7XHJcbiAgICAgIGV4Y2VwdGlvbiA9IGV4Y2VwdGlvbi5Jbm5lckV4Y2VwdGlvbjtcclxuICAgIH1cclxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXHJcXG5cXHJcXG4nKTtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgbWVzc2FnZSBmb3IgYSBkYXRhIGVycm9yIHR5cGUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGVOYW1lIFxyXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFxyXG4gICAqL1xyXG4gIGZtdERhdGFFcnJvciA9ICh0eXBlTmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcclxuICAgIGlmICh0eXBlTmFtZS5pbmRleE9mKCdPcHRpbWlzdGljTG9ja1Zpb2xhdGlvbicpID49IDApXHJcbiAgICAgIHJldHVybiAnVGhlIHJlY29yZCB3YXMgZWRpdGVkIGFscmVhZHksIGJ5IGFub3RoZXIgdXNlci4gIFBsZWFzZSByZWxvYWQgYW5kIGF0dGVtcHQgeW91ciBlZGl0IGFnYWluLic7XHJcbiAgICBpZiAodHlwZU5hbWUuaW5kZXhPZignRGF0YUNvbnN0cmFpbnRWaW9sYXRpb24nKSA+PSAwKVxyXG4gICAgICByZXR1cm4gJ0ZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgdmlvbGF0aW9uJztcclxuICAgIGlmICh0eXBlTmFtZS5pbmRleE9mKCdEdXBsaWNhdGVLZXlFcnJvcicpID49IDApXHJcbiAgICAgIHJldHVybiAnRHVwbGljYXRlIGtleSBlcnJvcic7XHJcbiAgICByZXR1cm4gdHlwZU5hbWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TruUser {
|
|
4
|
+
constructor() {
|
|
5
|
+
this._ref = -1;
|
|
6
|
+
this._username = null;
|
|
7
|
+
this._firstName = null;
|
|
8
|
+
this._lastName = null;
|
|
9
|
+
this._roles = null;
|
|
10
|
+
this.hasRoles = (roles) => {
|
|
11
|
+
if (this._roles === null)
|
|
12
|
+
return true;
|
|
13
|
+
return true; //_.intersection(roles, this._roles).length > 0;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
get activeUserRef() {
|
|
17
|
+
if (this._ref < 0)
|
|
18
|
+
throw new Error('Inavlid User.');
|
|
19
|
+
return this._ref;
|
|
20
|
+
}
|
|
21
|
+
set activeUserRef(ref) {
|
|
22
|
+
this._ref = ref;
|
|
23
|
+
}
|
|
24
|
+
get username() {
|
|
25
|
+
return this._username;
|
|
26
|
+
}
|
|
27
|
+
set username(username) {
|
|
28
|
+
this._username = username;
|
|
29
|
+
}
|
|
30
|
+
get firstName() {
|
|
31
|
+
return this._firstName;
|
|
32
|
+
}
|
|
33
|
+
set firstName(firstName) {
|
|
34
|
+
this._firstName = firstName;
|
|
35
|
+
}
|
|
36
|
+
get lastName() {
|
|
37
|
+
return this._lastName;
|
|
38
|
+
}
|
|
39
|
+
set lastName(lastName) {
|
|
40
|
+
this._lastName = lastName;
|
|
41
|
+
}
|
|
42
|
+
set roles(roles) {
|
|
43
|
+
this._roles = roles;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
TruUser.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruUser, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
47
|
+
TruUser.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruUser, providedIn: 'root' });
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruUser, decorators: [{
|
|
49
|
+
type: Injectable,
|
|
50
|
+
args: [{
|
|
51
|
+
providedIn: 'root',
|
|
52
|
+
}]
|
|
53
|
+
}], ctorParameters: function () { return []; } });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXVzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RydS11c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxPQUFPO0lBT2xCO1FBTlEsU0FBSSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBQ2pDLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLFdBQU0sR0FBb0IsSUFBSSxDQUFDO1FBMEN2QyxhQUFRLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSTtnQkFDdEIsT0FBTyxJQUFJLENBQUM7WUFDZCxPQUFPLElBQUksQ0FBQyxDQUFDLGlEQUFpRDtRQUNoRSxDQUFDLENBQUM7SUE1Q2EsQ0FBQztJQUVoQixJQUFJLGFBQWE7UUFDZixJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxHQUFXO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLFFBQXVCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLFNBQXdCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLFFBQXVCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFzQjtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOztvR0E3Q1UsT0FBTzt3R0FBUCxPQUFPLGNBRk4sTUFBTTsyRkFFUCxPQUFPO2tCQUhuQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVVc2VyIHtcclxuICBwcml2YXRlIF9yZWY6IG51bWJlciA9IC0xO1xyXG4gIHByaXZhdGUgX3VzZXJuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9maXJzdE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2xhc3ROYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9yb2xlczogc3RyaW5nW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBnZXQgYWN0aXZlVXNlclJlZigpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMuX3JlZiA8IDApXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW5hdmxpZCBVc2VyLicpO1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlZjtcclxuICB9XHJcblxyXG4gIHNldCBhY3RpdmVVc2VyUmVmKHJlZjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9yZWYgPSByZWY7XHJcbiAgfVxyXG5cclxuICBnZXQgdXNlcm5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXNlcm5hbWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdXNlcm5hbWUodXNlcm5hbWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIHRoaXMuX3VzZXJuYW1lID0gdXNlcm5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlyc3ROYW1lKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpcnN0TmFtZTtcclxuICB9XHJcblxyXG4gIHNldCBmaXJzdE5hbWUoZmlyc3ROYW1lOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9maXJzdE5hbWUgPSBmaXJzdE5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFzdE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFzdE5hbWU7XHJcbiAgfVxyXG5cclxuICBzZXQgbGFzdE5hbWUobGFzdE5hbWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIHRoaXMuX2xhc3ROYW1lID0gbGFzdE5hbWU7XHJcbiAgfVxyXG5cclxuICBzZXQgcm9sZXMocm9sZXM6IHN0cmluZ1tdIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fcm9sZXMgPSByb2xlcztcclxuICB9XHJcblxyXG4gIGhhc1JvbGVzID0gKHJvbGVzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgaWYgKHRoaXMuX3JvbGVzID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIHJldHVybiB0cnVlOyAvL18uaW50ZXJzZWN0aW9uKHJvbGVzLCB0aGlzLl9yb2xlcykubGVuZ3RoID4gMDsgXHJcbiAgfTtcclxufVxyXG4iXX0=
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -26,11 +26,31 @@ export * from "./lib/components/export-dialog/tru-export-dialog";
|
|
|
26
26
|
export * from "./lib/components/export-dialog/tru-export-dialog-module";
|
|
27
27
|
export * from "./lib/components/toolbar/tru-toolbar";
|
|
28
28
|
export * from "./lib/components/toolbar/tru-toolbar-module";
|
|
29
|
+
export * from "./lib/components/toolbar/menu/tru-toolbar-menu";
|
|
30
|
+
export * from "./lib/components/toolbar/menu/tru-toolbar-menu-module";
|
|
31
|
+
export * from "./lib/components/toolbar/button/tru-toolbar-button";
|
|
32
|
+
export * from "./lib/components/toolbar/button/tru-toolbar-button-module";
|
|
33
|
+
export * from "./lib/components/toolbar/dropdown/tru-toolbar-dropdown";
|
|
34
|
+
export * from "./lib/components/toolbar/dropdown/tru-toolbar-dropdown-module";
|
|
35
|
+
export * from "./lib/components/toolbar/separator/tru-toolbar-separator";
|
|
36
|
+
export * from "./lib/components/toolbar/separator/tru-toolbar-separator-module";
|
|
37
|
+
export * from "./lib/components/toolbar/context-filter/tru-toolbar-context-filter";
|
|
38
|
+
export * from "./lib/components/toolbar/context-filter/tru-toolbar-context-filter-module";
|
|
39
|
+
export * from "./lib/components/toolbar/text/tru-toolbar-text";
|
|
40
|
+
export * from "./lib/components/toolbar/text/tru-toolbar-text-module";
|
|
29
41
|
/*
|
|
30
42
|
* Services
|
|
31
43
|
*/
|
|
32
|
-
export * from './lib/services/tru-
|
|
44
|
+
export * from './lib/services/tru-app-environment';
|
|
45
|
+
export * from './lib/services/tru-breeze-context-factory';
|
|
33
46
|
export * from './lib/services/tru-component-lookup';
|
|
47
|
+
export * from './lib/services/tru-data-context';
|
|
48
|
+
export * from './lib/services/tru-entity-accessor';
|
|
49
|
+
export * from './lib/services/tru-predicate-map';
|
|
50
|
+
export * from './lib/services/tru-text-manager';
|
|
51
|
+
export * from './lib/services/tru-ui-notification';
|
|
52
|
+
export * from './lib/services/tru-user';
|
|
53
|
+
export * from './lib/services/tru-search-group-event-handler';
|
|
34
54
|
export * from './lib/services/tru-window-action-event-handler';
|
|
35
55
|
export * from './lib/services/tru-window-event-handler';
|
|
36
56
|
/*
|
|
@@ -38,4 +58,4 @@ export * from './lib/services/tru-window-event-handler';
|
|
|
38
58
|
*/
|
|
39
59
|
export * from "./lib/assets/tru-search-icon-module";
|
|
40
60
|
export * from "./lib/tru-common-module";
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUg7O0dBRUc7QUFDSCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHFEQUFxRCxDQUFDO0FBRXBFOztHQUVHO0FBQ0gsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RDs7R0FFRztBQUNILGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLDJFQUEyRSxDQUFDO0FBQzFGLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyx1REFBdUQsQ0FBQztBQUV0RTs7R0FFRztBQUNILGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHlDQUF5QyxDQUFDO0FBRXhEOztHQUVHO0FBQ0gsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0cnUtY29tbW9uLWxpYlxuICovXG5cbi8qXG4gKiBCYXNlIENsYXNzZXNcbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2Jhc2UtY2xhc3Nlcy90cnUtZW50aXR5LWJhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9iYXNlLWNsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy1iYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvYmFzZS1jbGFzc2VzL3RydS1zZWFyY2gtY29tcG9uZW50LWJhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9iYXNlLWNsYXNzZXMvdHJ1LXNlYXJjaC1jb21wb25lbnQtY29uZmlnLWJhc2VcIjtcblxuLypcbiAqIENsYXNzZXNcbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NsYXNzZXMvdHJ1LXByZWRpY2F0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NsYXNzZXMvdHJ1LXF1ZXJ5LXByZWRpY2F0ZS1tYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY2xhc3Nlcy90cnUtd2luZG93LWV2ZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY2xhc3Nlcy90cnUtd2luZG93LWFkZC12aWV3LWV2ZW50XCI7XG5cbi8qXG4gKiBDb21wb25lbnRzXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL3RydS1jb25maXJtLWRpYWxvZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvdHJ1LWNvbmZpcm0tZGlhbG9nLW1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvZGVza3RvcC90cnUtZGVza3RvcFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvZGVza3RvcC90cnUtZGVza3RvcC1tb2R1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2V4cG9ydC1kaWFsb2cvdHJ1LWV4cG9ydC1kaWFsb2dcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2V4cG9ydC1kaWFsb2cvdHJ1LWV4cG9ydC1kaWFsb2ctbW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy90b29sYmFyL3RydS10b29sYmFyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy90b29sYmFyL3RydS10b29sYmFyLW1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvdG9vbGJhci9tZW51L3RydS10b29sYmFyLW1lbnVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvbWVudS90cnUtdG9vbGJhci1tZW51LW1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvdG9vbGJhci9idXR0b24vdHJ1LXRvb2xiYXItYnV0dG9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy90b29sYmFyL2J1dHRvbi90cnUtdG9vbGJhci1idXR0b24tbW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy90b29sYmFyL2Ryb3Bkb3duL3RydS10b29sYmFyLWRyb3Bkb3duXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy90b29sYmFyL2Ryb3Bkb3duL3RydS10b29sYmFyLWRyb3Bkb3duLW1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvdG9vbGJhci9zZXBhcmF0b3IvdHJ1LXRvb2xiYXItc2VwYXJhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy90b29sYmFyL3NlcGFyYXRvci90cnUtdG9vbGJhci1zZXBhcmF0b3ItbW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy90b29sYmFyL2NvbnRleHQtZmlsdGVyL3RydS10b29sYmFyLWNvbnRleHQtZmlsdGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy90b29sYmFyL2NvbnRleHQtZmlsdGVyL3RydS10b29sYmFyLWNvbnRleHQtZmlsdGVyLW1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvdG9vbGJhci90ZXh0L3RydS10b29sYmFyLXRleHRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvdGV4dC90cnUtdG9vbGJhci10ZXh0LW1vZHVsZVwiO1xuXG4vKlxuICogU2VydmljZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtYnJlZXplLWNvbnRleHQtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtY29tcG9uZW50LWxvb2t1cCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS1lbnRpdHktYWNjZXNzb3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LXByZWRpY2F0ZS1tYXAnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LXRleHQtbWFuYWdlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS11c2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS1zZWFyY2gtZ3JvdXAtZXZlbnQtaGFuZGxlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtd2luZG93LWFjdGlvbi1ldmVudC1oYW5kbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XG5cbi8qXG4gKiBNb2R1bGVzXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9hc3NldHMvdHJ1LXNlYXJjaC1pY29uLW1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL3RydS1jb21tb24tbW9kdWxlXCI7XG4iXX0=
|
|
@@ -2966,7 +2966,13 @@ TruToolbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
2966
2966
|
TruToolbarDropdownModule,
|
|
2967
2967
|
TruToolbarSeparatorModule,
|
|
2968
2968
|
TruToolbarContextFilterModule,
|
|
2969
|
-
TruToolbarTextModule], exports: [TruToolbar
|
|
2969
|
+
TruToolbarTextModule], exports: [TruToolbar,
|
|
2970
|
+
TruToolbarMenuModule,
|
|
2971
|
+
TruToolbarButtonModule,
|
|
2972
|
+
TruToolbarDropdownModule,
|
|
2973
|
+
TruToolbarSeparatorModule,
|
|
2974
|
+
TruToolbarContextFilterModule,
|
|
2975
|
+
TruToolbarTextModule] });
|
|
2970
2976
|
TruToolbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruToolbarModule, imports: [CommonModule,
|
|
2971
2977
|
FormsModule,
|
|
2972
2978
|
TruToolbarMenuModule,
|
|
@@ -2974,6 +2980,11 @@ TruToolbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
|
|
|
2974
2980
|
TruToolbarDropdownModule,
|
|
2975
2981
|
TruToolbarSeparatorModule,
|
|
2976
2982
|
TruToolbarContextFilterModule,
|
|
2983
|
+
TruToolbarTextModule, TruToolbarMenuModule,
|
|
2984
|
+
TruToolbarButtonModule,
|
|
2985
|
+
TruToolbarDropdownModule,
|
|
2986
|
+
TruToolbarSeparatorModule,
|
|
2987
|
+
TruToolbarContextFilterModule,
|
|
2977
2988
|
TruToolbarTextModule] });
|
|
2978
2989
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruToolbarModule, decorators: [{
|
|
2979
2990
|
type: NgModule,
|
|
@@ -2989,7 +3000,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
2989
3000
|
TruToolbarContextFilterModule,
|
|
2990
3001
|
TruToolbarTextModule
|
|
2991
3002
|
],
|
|
2992
|
-
exports: [TruToolbar
|
|
3003
|
+
exports: [TruToolbar,
|
|
3004
|
+
TruToolbarMenuModule,
|
|
3005
|
+
TruToolbarButtonModule,
|
|
3006
|
+
TruToolbarDropdownModule,
|
|
3007
|
+
TruToolbarSeparatorModule,
|
|
3008
|
+
TruToolbarContextFilterModule,
|
|
3009
|
+
TruToolbarTextModule
|
|
3010
|
+
]
|
|
2993
3011
|
}]
|
|
2994
3012
|
}] });
|
|
2995
3013
|
|
|
@@ -3211,6 +3229,198 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
3211
3229
|
}]
|
|
3212
3230
|
}] });
|
|
3213
3231
|
|
|
3232
|
+
class TruPredicateMap {
|
|
3233
|
+
constructor() { }
|
|
3234
|
+
}
|
|
3235
|
+
TruPredicateMap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruPredicateMap, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3236
|
+
TruPredicateMap.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruPredicateMap });
|
|
3237
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruPredicateMap, decorators: [{
|
|
3238
|
+
type: Injectable
|
|
3239
|
+
}], ctorParameters: function () { return []; } });
|
|
3240
|
+
|
|
3241
|
+
class TruTextManager {
|
|
3242
|
+
constructor() {
|
|
3243
|
+
/**
|
|
3244
|
+
* If text.length exceeds length, then returns a string that is the first length chars
|
|
3245
|
+
* of text plus suffix. Otherwise, returns text.
|
|
3246
|
+
* @param {string} text
|
|
3247
|
+
* @param {number} length
|
|
3248
|
+
* @param {string} suffix
|
|
3249
|
+
* @return {string}
|
|
3250
|
+
*/
|
|
3251
|
+
this.truncate = (text, length, suffix) => {
|
|
3252
|
+
return text.length > length ? text.substr(0, length) + suffix : text.toString();
|
|
3253
|
+
};
|
|
3254
|
+
this.isMac = () => {
|
|
3255
|
+
return navigator.platform.toUpperCase().indexOf('MAC') >= 0;
|
|
3256
|
+
};
|
|
3257
|
+
/**
|
|
3258
|
+
* Formats the text to use for the window title.
|
|
3259
|
+
* @param {string} text
|
|
3260
|
+
* @return {string} - Window title.
|
|
3261
|
+
*/
|
|
3262
|
+
this.formatWindowTitle = (text) => {
|
|
3263
|
+
return this.truncate(text, 60, '...');
|
|
3264
|
+
};
|
|
3265
|
+
/**
|
|
3266
|
+
* Returns a message indicating that an entity or entities were deleted in another view.
|
|
3267
|
+
* @param {string} entityTypeLabel - Description of the entity type.
|
|
3268
|
+
* @param [{string}] entityTypePluralLabel - Description of more than one of the entity type.
|
|
3269
|
+
* @param [{number}] count - Number of entities.
|
|
3270
|
+
*/
|
|
3271
|
+
this.fmtEntityDeletedInOtherView = (entityTypeLabel, entityTypePluralLabel, count) => {
|
|
3272
|
+
if (!count || count === 1)
|
|
3273
|
+
return entityTypeLabel + ' deleted in another view';
|
|
3274
|
+
return count + ' ' + entityTypePluralLabel + ' deleted in another view';
|
|
3275
|
+
};
|
|
3276
|
+
/**
|
|
3277
|
+
* Returns a message used to confirm deletion of an entity or entities.
|
|
3278
|
+
* @param {string} entityTypeLabel - Description of the entity type.
|
|
3279
|
+
* @param [{string}] entityTypePluralLabel - Description of more than one of the entity type.
|
|
3280
|
+
* @param [{number}] count - Number of entities.
|
|
3281
|
+
*/
|
|
3282
|
+
this.fmtDeleteConfirmation = (entityTypeLabel, entityTypePluralLabel = null, count = null) => {
|
|
3283
|
+
if (count === null)
|
|
3284
|
+
return 'Are you sure you want to delete this ' + entityTypeLabel + '?';
|
|
3285
|
+
if (count === 1)
|
|
3286
|
+
return 'Are you sure you want to delete 1 ' + entityTypeLabel + '?';
|
|
3287
|
+
return 'Are you sure you want to delete ' + count + ' ' + entityTypePluralLabel + '?';
|
|
3288
|
+
};
|
|
3289
|
+
/**
|
|
3290
|
+
* Returns a message formatted from an error object.
|
|
3291
|
+
* @param {error|string} error
|
|
3292
|
+
* @returns {string}
|
|
3293
|
+
*/
|
|
3294
|
+
this.fmtErrorToShow = (error) => {
|
|
3295
|
+
if (typeof error === 'string')
|
|
3296
|
+
error = new Error(error);
|
|
3297
|
+
var lines = [];
|
|
3298
|
+
lines.push(error.message);
|
|
3299
|
+
var exception = error.detail;
|
|
3300
|
+
while (exception) {
|
|
3301
|
+
var message = exception.ExceptionMessage;
|
|
3302
|
+
if (!_.contains(lines, message))
|
|
3303
|
+
lines.push(message);
|
|
3304
|
+
exception = exception.InnerException;
|
|
3305
|
+
}
|
|
3306
|
+
if (error.entityErrors) {
|
|
3307
|
+
error.entityErrors.forEach((entityError) => {
|
|
3308
|
+
lines.push('Entity <' + entityError.propertyName + '>: ' + entityError.errorMessage);
|
|
3309
|
+
});
|
|
3310
|
+
}
|
|
3311
|
+
if (error.stack)
|
|
3312
|
+
lines.push(error.stack);
|
|
3313
|
+
var text = lines.join('\r\n\r\n');
|
|
3314
|
+
if (!text)
|
|
3315
|
+
text = _.map(error, (value, key) => { return key + ': ' + value; }).join('\r\n');
|
|
3316
|
+
return text;
|
|
3317
|
+
};
|
|
3318
|
+
/**
|
|
3319
|
+
* Returns a message formatted from an exception object.
|
|
3320
|
+
* @param {object} exception
|
|
3321
|
+
* @returns {string}
|
|
3322
|
+
*/
|
|
3323
|
+
this.fmtExceptionToShow = (exception) => {
|
|
3324
|
+
var lines = [];
|
|
3325
|
+
while (exception) {
|
|
3326
|
+
var message = exception.Message;
|
|
3327
|
+
if (!_.contains(lines, message))
|
|
3328
|
+
lines.push(message);
|
|
3329
|
+
exception = exception.InnerException;
|
|
3330
|
+
}
|
|
3331
|
+
return lines.join('\r\n\r\n');
|
|
3332
|
+
};
|
|
3333
|
+
/**
|
|
3334
|
+
* Returns a message for a data error type.
|
|
3335
|
+
* @param {string} typeName
|
|
3336
|
+
* @returns {string}
|
|
3337
|
+
*/
|
|
3338
|
+
this.fmtDataError = (typeName) => {
|
|
3339
|
+
if (typeName.indexOf('OptimisticLockViolation') >= 0)
|
|
3340
|
+
return 'The record was edited already, by another user. Please reload and attempt your edit again.';
|
|
3341
|
+
if (typeName.indexOf('DataConstraintViolation') >= 0)
|
|
3342
|
+
return 'Foreign key constraint violation';
|
|
3343
|
+
if (typeName.indexOf('DuplicateKeyError') >= 0)
|
|
3344
|
+
return 'Duplicate key error';
|
|
3345
|
+
return typeName;
|
|
3346
|
+
};
|
|
3347
|
+
this.msgModifierKeyLabel = this.isMac() ? 'Cmd' : 'Ctrl';
|
|
3348
|
+
this.msgConfirmExitWithChangesPending = 'You have unsaved changes that will be lost.';
|
|
3349
|
+
this.msgDeleteSuccessful = 'Delete succeeded';
|
|
3350
|
+
this.msgSaveSuccessful = 'Save succeeded';
|
|
3351
|
+
this.msgNoChangesToSave = 'No changes to save';
|
|
3352
|
+
this.msgSaveInProgress = 'Save in progress';
|
|
3353
|
+
this.msgInvalidData = 'Invalid data';
|
|
3354
|
+
this.msgDirtyPreventsReadOnly = 'Save or revert before disabling editing';
|
|
3355
|
+
this.msgDirtyPreventsNavigate = 'Save or revert before navigating';
|
|
3356
|
+
this.msgDirtyPreventsClose = 'Save or revert before closing window';
|
|
3357
|
+
this.msgDirtyPreventsDeleteExistingRecord = 'Save or revert before deleting';
|
|
3358
|
+
this.msgNoDeleteAccess = 'Contact administrator about delete access';
|
|
3359
|
+
this.msgCannotDeleteNewAndExistingRecords = 'Delete new or existing records - but not both';
|
|
3360
|
+
this.msgDeleteReferencingRecordsFirst = 'Delete all referencing records first';
|
|
3361
|
+
}
|
|
3362
|
+
}
|
|
3363
|
+
TruTextManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruTextManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3364
|
+
TruTextManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruTextManager, providedIn: 'root' });
|
|
3365
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruTextManager, decorators: [{
|
|
3366
|
+
type: Injectable,
|
|
3367
|
+
args: [{
|
|
3368
|
+
providedIn: 'root',
|
|
3369
|
+
}]
|
|
3370
|
+
}], ctorParameters: function () { return []; } });
|
|
3371
|
+
|
|
3372
|
+
class TruUser {
|
|
3373
|
+
constructor() {
|
|
3374
|
+
this._ref = -1;
|
|
3375
|
+
this._username = null;
|
|
3376
|
+
this._firstName = null;
|
|
3377
|
+
this._lastName = null;
|
|
3378
|
+
this._roles = null;
|
|
3379
|
+
this.hasRoles = (roles) => {
|
|
3380
|
+
if (this._roles === null)
|
|
3381
|
+
return true;
|
|
3382
|
+
return true; //_.intersection(roles, this._roles).length > 0;
|
|
3383
|
+
};
|
|
3384
|
+
}
|
|
3385
|
+
get activeUserRef() {
|
|
3386
|
+
if (this._ref < 0)
|
|
3387
|
+
throw new Error('Inavlid User.');
|
|
3388
|
+
return this._ref;
|
|
3389
|
+
}
|
|
3390
|
+
set activeUserRef(ref) {
|
|
3391
|
+
this._ref = ref;
|
|
3392
|
+
}
|
|
3393
|
+
get username() {
|
|
3394
|
+
return this._username;
|
|
3395
|
+
}
|
|
3396
|
+
set username(username) {
|
|
3397
|
+
this._username = username;
|
|
3398
|
+
}
|
|
3399
|
+
get firstName() {
|
|
3400
|
+
return this._firstName;
|
|
3401
|
+
}
|
|
3402
|
+
set firstName(firstName) {
|
|
3403
|
+
this._firstName = firstName;
|
|
3404
|
+
}
|
|
3405
|
+
get lastName() {
|
|
3406
|
+
return this._lastName;
|
|
3407
|
+
}
|
|
3408
|
+
set lastName(lastName) {
|
|
3409
|
+
this._lastName = lastName;
|
|
3410
|
+
}
|
|
3411
|
+
set roles(roles) {
|
|
3412
|
+
this._roles = roles;
|
|
3413
|
+
}
|
|
3414
|
+
}
|
|
3415
|
+
TruUser.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruUser, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3416
|
+
TruUser.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruUser, providedIn: 'root' });
|
|
3417
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: TruUser, decorators: [{
|
|
3418
|
+
type: Injectable,
|
|
3419
|
+
args: [{
|
|
3420
|
+
providedIn: 'root',
|
|
3421
|
+
}]
|
|
3422
|
+
}], ctorParameters: function () { return []; } });
|
|
3423
|
+
|
|
3214
3424
|
class TruSearchGroupEventHandler {
|
|
3215
3425
|
constructor() {
|
|
3216
3426
|
this.search$ = new EventEmitter();
|
|
@@ -3339,5 +3549,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
3339
3549
|
* Generated bundle index. Do not edit.
|
|
3340
3550
|
*/
|
|
3341
3551
|
|
|
3342
|
-
export { TruCommonModule, TruComponentLookup, TruConfirmDialog, TruConfirmDialogConfig, TruConfirmDialogModule, TruDesktop, TruDesktopModule, TruEntityBase, TruExportDialog, TruExportDialogConfig, TruExportDialogModule, TruPredicate, TruPropertyConfigBase, TruQueryPredicateManager, TruSearchComponentBase, TruSearchComponentConfigBase, TruSearchGroupEventHandler, TruSearchIconModule, TruToolbar, TruToolbarModule, TruWindowActionEventHandler, TruWindowAddViewEvent, TruWindowEvent, TruWindowEventHandler };
|
|
3552
|
+
export { TruAppEnvironment, TruBreezeContext, TruBreezeContextFactory, TruCommonModule, TruComponentLookup, TruConfirmDialog, TruConfirmDialogConfig, TruConfirmDialogModule, TruDataContext, TruDesktop, TruDesktopModule, TruEntityAccessor, TruEntityBase, TruExportDialog, TruExportDialogConfig, TruExportDialogModule, TruPredicate, TruPredicateMap, TruPropertyConfigBase, TruQueryPredicateManager, TruSearchComponentBase, TruSearchComponentConfigBase, TruSearchGroupEventHandler, TruSearchIconModule, TruTextManager, TruToolbar, TruToolbarButton, TruToolbarButtonModule, TruToolbarContextFilter, TruToolbarContextFilterModule, TruToolbarDropdown, TruToolbarDropdownModule, TruToolbarMenu, TruToolbarMenuModule, TruToolbarModule, TruToolbarSeparator, TruToolbarSeparatorModule, TruToolbarText, TruToolbarTextModule, TruUiNotification, TruUser, TruWindowActionEventHandler, TruWindowAddViewEvent, TruWindowEvent, TruWindowEventHandler };
|
|
3343
3553
|
//# sourceMappingURL=trudb-tru-common-lib.mjs.map
|