@trudb/tru-common-lib 0.1.609 → 0.1.611
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/esm2022/lib/base-classes/tru-property-config-base.mjs +2 -1
- package/esm2022/lib/components/clone-view/tru-clone-view.mjs +254 -20
- package/esm2022/lib/components/desktop/services/tru-window-event-handler.mjs +8 -1
- package/esm2022/lib/components/desktop/window/tru-desktop-window.mjs +5 -2
- package/esm2022/lib/services/tru-entity-accessor.mjs +7 -1
- package/fesm2022/trudb-tru-common-lib.mjs +281 -34
- package/fesm2022/trudb-tru-common-lib.mjs.map +1 -1
- package/lib/base-classes/tru-property-config-base.d.ts +1 -0
- package/lib/components/clone-view/tru-clone-view.d.ts +47 -5
- package/lib/components/desktop/services/tru-window-event-handler.d.ts +3 -0
- package/lib/services/tru-entity-accessor.d.ts +1 -0
- package/package.json +1 -1
|
@@ -11,5 +11,6 @@ export class TruPropertyConfigBase {
|
|
|
11
11
|
formatter = undefined;
|
|
12
12
|
choices = undefined;
|
|
13
13
|
validation = undefined;
|
|
14
|
+
excludeFromCloning = false;
|
|
14
15
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXByb3BlcnR5LWNvbmZpZy1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9iYXNlLWNsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsZ0JBQWdCLENBQUM7SUFFakIsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUM1QixVQUFVLEdBQStCLEtBQUssQ0FBQztJQUMvQyxPQUFPLEdBQStCLEtBQUssQ0FBQztJQUM1QyxRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0IsZ0JBQWdCLEdBQVksS0FBSyxDQUFDO0lBQ2xDLFFBQVEsR0FBdUIsU0FBUyxDQUFDO0lBQ3pDLGFBQWEsR0FBdUIsU0FBUyxDQUFDO0lBQzlDLFNBQVMsR0FBNEQsU0FBUyxDQUFDO0lBQy9FLE9BQU8sR0FBUSxTQUFTLENBQUM7SUFDekIsVUFBVSxHQUF1QixTQUFTLENBQUM7SUFDM0Msa0JBQWtCLEdBQVksS0FBSyxDQUFDO0NBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFRydVByb3BlcnR5Q29uZmlnQmFzZSB7XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgaXNOdWxsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNhbkRpc3BsYXk6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkID0gZmFsc2U7XHJcbiAgY2FuRWRpdDogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQgPSBmYWxzZTtcclxuICByZWFkT25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdsb2JhbENhY2hlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdW5pcXVlQ29uc3RyYWludDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHR5cGVOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgZm9ybWF0dGVyTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIGZvcm1hdHRlcjogKCh2YWx1ZTogYW55KSA9PiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBjaG9pY2VzOiBhbnkgPSB1bmRlZmluZWQ7XHJcbiAgdmFsaWRhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIGV4Y2x1ZGVGcm9tQ2xvbmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG59XHJcbiJdfQ==
|
|
@@ -4,24 +4,30 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
import * as i1 from "../../services/tru-text-manager";
|
|
5
5
|
import * as i2 from "../desktop/services/tru-window-event-handler";
|
|
6
6
|
import * as i3 from "../../services/tru-data-context";
|
|
7
|
-
import * as i4 from "
|
|
8
|
-
import * as i5 from "
|
|
9
|
-
import * as i6 from "
|
|
10
|
-
import * as i7 from "
|
|
11
|
-
import * as i8 from "
|
|
7
|
+
import * as i4 from "../../services/tru-model-table-lookup";
|
|
8
|
+
import * as i5 from "../../services/tru-model-property-lookup";
|
|
9
|
+
import * as i6 from "../../services/tru-model-type-lookup";
|
|
10
|
+
import * as i7 from "../../services/tru-ui-notification";
|
|
11
|
+
import * as i8 from "@angular/material/button";
|
|
12
|
+
import * as i9 from "../toolbar/tru-toolbar";
|
|
13
|
+
import * as i10 from "../toolbar/button/tru-toolbar-button";
|
|
14
|
+
import * as i11 from "../toolbar/dropdown/tru-toolbar-dropdown";
|
|
15
|
+
import * as i12 from "../toolbar/text/tru-toolbar-text";
|
|
12
16
|
export class TruCloneView extends TruViewBase {
|
|
13
17
|
textManager;
|
|
14
18
|
windowEventHandler;
|
|
15
19
|
dataContext;
|
|
20
|
+
modelTableLookup;
|
|
21
|
+
modelPropertyLookup;
|
|
22
|
+
modelTypeLookup;
|
|
23
|
+
uiNotification;
|
|
16
24
|
loading = true;
|
|
17
25
|
loadingMessage = 'Searching for related records...';
|
|
18
26
|
numberOfCopies;
|
|
19
27
|
selectedNumberOfCopies;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
//childLookups = [];
|
|
24
|
-
//rootNode = new Node(null, this.tableName, this.tableName, false, true, null, null, true);
|
|
28
|
+
contextFilters = null;
|
|
29
|
+
childLookups = [];
|
|
30
|
+
rootNode = new Node(null, this.tableName, this.tableName, false, true, null, null, true, null, null);
|
|
25
31
|
ignorePropertyList = [
|
|
26
32
|
'CreatedRef',
|
|
27
33
|
'Created',
|
|
@@ -45,11 +51,17 @@ export class TruCloneView extends TruViewBase {
|
|
|
45
51
|
flatList = [];
|
|
46
52
|
childFlatList = [];
|
|
47
53
|
processedCount = 0;
|
|
48
|
-
|
|
54
|
+
doneProcessing = false;
|
|
55
|
+
displayTree = [this.rootNode];
|
|
56
|
+
constructor(textManager, windowEventHandler, dataContext, modelTableLookup, modelPropertyLookup, modelTypeLookup, uiNotification) {
|
|
49
57
|
super(textManager, windowEventHandler);
|
|
50
58
|
this.textManager = textManager;
|
|
51
59
|
this.windowEventHandler = windowEventHandler;
|
|
52
60
|
this.dataContext = dataContext;
|
|
61
|
+
this.modelTableLookup = modelTableLookup;
|
|
62
|
+
this.modelPropertyLookup = modelPropertyLookup;
|
|
63
|
+
this.modelTypeLookup = modelTypeLookup;
|
|
64
|
+
this.uiNotification = uiNotification;
|
|
53
65
|
this.numberOfCopies = this.getNumberOfCopies();
|
|
54
66
|
this.selectedNumberOfCopies = this.numberOfCopies[0];
|
|
55
67
|
}
|
|
@@ -63,26 +75,248 @@ export class TruCloneView extends TruViewBase {
|
|
|
63
75
|
}
|
|
64
76
|
return copies;
|
|
65
77
|
};
|
|
78
|
+
propertyIsAllowed = (propertyName, tableName) => {
|
|
79
|
+
if (propertyName === tableName + 'Ref')
|
|
80
|
+
return false;
|
|
81
|
+
if (propertyName.startsWith('o'))
|
|
82
|
+
return false;
|
|
83
|
+
let property = this.modelPropertyLookup.lookup.get(propertyName);
|
|
84
|
+
if (property && property.excludeFromCloning)
|
|
85
|
+
return false;
|
|
86
|
+
if (this.ignorePropertyList.some(function (propertyToIgnore) { return propertyToIgnore === propertyName; })) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return true;
|
|
90
|
+
};
|
|
91
|
+
getPrototypeProperties = (obj) => {
|
|
92
|
+
var result = [];
|
|
93
|
+
for (var prop in obj) {
|
|
94
|
+
if (!obj.hasOwnProperty(prop)) {
|
|
95
|
+
result.push(prop);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return result;
|
|
99
|
+
};
|
|
100
|
+
getChildPropertiesForCurrentEntity = (currentEntity) => {
|
|
101
|
+
//var propertyNames = Object.keys(Object.getPrototypeOf(currentEntity));
|
|
102
|
+
let propertyNames = Object.keys(currentEntity);
|
|
103
|
+
let navigationPropertyNames = propertyNames.filter((n) => { return n.startsWith('o'); });
|
|
104
|
+
let childNavigationPropertyNames = navigationPropertyNames.filter((n) => {
|
|
105
|
+
return this.childLookups.some((lookup) => { return 'o' + lookup.pluralTableName === n; });
|
|
106
|
+
});
|
|
107
|
+
let childProperties = [];
|
|
108
|
+
childNavigationPropertyNames.filter(function (n) {
|
|
109
|
+
if (currentEntity[n] && currentEntity[n].length)
|
|
110
|
+
childProperties.push(currentEntity[n]);
|
|
111
|
+
});
|
|
112
|
+
return childProperties;
|
|
113
|
+
};
|
|
114
|
+
getTypeFromEntityTypeName = (typeName) => {
|
|
115
|
+
var p1s = typeName.split(',')[0];
|
|
116
|
+
var p2s = p1s.split('.');
|
|
117
|
+
return p2s[p2s.length - 1];
|
|
118
|
+
};
|
|
119
|
+
buildCloneTree = (currentEntity, node) => {
|
|
120
|
+
var childProperties = this.getChildPropertiesForCurrentEntity(currentEntity);
|
|
121
|
+
childProperties.forEach((childEntities) => {
|
|
122
|
+
let type = this.getTypeFromEntityTypeName(childEntities[0].$type);
|
|
123
|
+
let childLookup = this.modelTableLookup.lookup.get(type);
|
|
124
|
+
let groupNode = new Node(null, childEntities[0].constructor.name, childLookup?.pluralLabel, false, true, [], '', false, node, null);
|
|
125
|
+
this.flatList.push(groupNode);
|
|
126
|
+
childEntities.forEach((childEntity) => {
|
|
127
|
+
let type = this.getTypeFromEntityTypeName(childEntity.$type);
|
|
128
|
+
let childNode = new Node(childEntity[type + 'Ref'], type, type, true, true, [], '', false, groupNode, childEntity);
|
|
129
|
+
this.childFlatList.push(childNode);
|
|
130
|
+
groupNode.nodes.push(childNode);
|
|
131
|
+
this.buildCloneTree(childEntity, childNode);
|
|
132
|
+
});
|
|
133
|
+
node.nodes.push(groupNode);
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
asyncForEachRecordId = (arr, cb) => {
|
|
137
|
+
return arr.reduce((p, c) => {
|
|
138
|
+
return p.then(() => cb(c));
|
|
139
|
+
}, Promise.resolve());
|
|
140
|
+
};
|
|
141
|
+
fetchRecordId = (child) => {
|
|
142
|
+
var c = child;
|
|
143
|
+
var data = {
|
|
144
|
+
ref: c.ref,
|
|
145
|
+
tableName: c.tableName
|
|
146
|
+
};
|
|
147
|
+
data = this.textManager.formatAsUrlParameters(data);
|
|
148
|
+
return new Promise((resolve) => {
|
|
149
|
+
c.displayName = child.entity.HID;
|
|
150
|
+
this.processedCount++;
|
|
151
|
+
this.loadingMessage = 'Formatting data...processed (' + this.processedCount + '/' + this.childFlatList.length + ') records';
|
|
152
|
+
if (this.processedCount >= this.childFlatList.length)
|
|
153
|
+
this.loadingMessage = 'Rendering tree...';
|
|
154
|
+
resolve();
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
done = () => {
|
|
158
|
+
this.doneProcessing = true;
|
|
159
|
+
};
|
|
160
|
+
traverse = (node, currentEntity) => {
|
|
161
|
+
var group = !node.child;
|
|
162
|
+
if (group) {
|
|
163
|
+
var groupNodes = node.nodes;
|
|
164
|
+
groupNodes.forEach((groupNode) => {
|
|
165
|
+
if (groupNode.checked)
|
|
166
|
+
groupNode.nodes.forEach((childNode) => {
|
|
167
|
+
this.traverse(childNode, currentEntity);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
if (node.checked) {
|
|
173
|
+
let tableType = this.modelTypeLookup.getType(this.tableName);
|
|
174
|
+
let newEntity = this.dataContext.entityAccess().add(tableType, this.contextFilters);
|
|
175
|
+
this.getPrototypeProperties(newEntity).forEach((propertyName) => {
|
|
176
|
+
if (this.propertyIsAllowed(propertyName, node.tableName)) {
|
|
177
|
+
newEntity[propertyName] = node.entity[propertyName];
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
newEntity.setProperty('_associatedDataCached', true);
|
|
181
|
+
let childLookup = this.modelTableLookup.lookup.get(node.tableName);
|
|
182
|
+
currentEntity['o' + childLookup.pluralName].push(newEntity);
|
|
183
|
+
let childNodes = node.nodes;
|
|
184
|
+
childNodes.forEach((childNode) => {
|
|
185
|
+
if (childNode.checked)
|
|
186
|
+
childNode.nodes.forEach((groupNode) => {
|
|
187
|
+
this.traverse(groupNode, newEntity);
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
getDataForCloning = () => {
|
|
194
|
+
this.dataContext.entityAccess().clone({
|
|
195
|
+
ref: this.entity.Ref,
|
|
196
|
+
tableName: this.tableName
|
|
197
|
+
}).subscribe({
|
|
198
|
+
next: (response) => {
|
|
199
|
+
this.dataTree = response.data[0];
|
|
200
|
+
this.buildCloneTree(this.dataTree, this.rootNode);
|
|
201
|
+
this.loadingMessage = 'Formatting data...(0/' + this.childFlatList.length + ') records';
|
|
202
|
+
this.asyncForEachRecordId(this.childFlatList, this.fetchRecordId).then(this.done);
|
|
203
|
+
this.displayTree = [this.rootNode];
|
|
204
|
+
},
|
|
205
|
+
error: (ex) => {
|
|
206
|
+
console.log('error', this.uiNotification.error('Server Error: ' + ex.status, [ex.error.Message]));
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
};
|
|
210
|
+
onClone = () => {
|
|
211
|
+
let copies = this.selectedNumberOfCopies.value;
|
|
212
|
+
for (let i = 0; i < copies; i++) {
|
|
213
|
+
let tableType = this.modelTypeLookup.getType(this.tableName);
|
|
214
|
+
let newEntity = this.dataContext.entityAccess().add(tableType, this.contextFilters);
|
|
215
|
+
this.getPrototypeProperties(this.entity).forEach((propertyName) => {
|
|
216
|
+
if (this.propertyIsAllowed(propertyName, this.tableName)) {
|
|
217
|
+
newEntity[propertyName] = this.entity[propertyName];
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
newEntity.setProperty('_associatedDataCached', true);
|
|
221
|
+
this.traverse(this.displayTree[0], newEntity);
|
|
222
|
+
//this.view.data.add(newEntity);
|
|
223
|
+
}
|
|
224
|
+
this.windowEventHandler.close();
|
|
225
|
+
};
|
|
226
|
+
onCancel = () => {
|
|
227
|
+
this.windowEventHandler.close();
|
|
228
|
+
};
|
|
66
229
|
onExpandClicked = () => {
|
|
67
230
|
};
|
|
68
231
|
onCollapseClicked = () => {
|
|
69
232
|
};
|
|
70
233
|
onNumberOfCopiesChanged = (event) => {
|
|
71
234
|
};
|
|
72
|
-
onCancelClicked = () => {
|
|
73
|
-
};
|
|
74
|
-
onCloneClicked = () => {
|
|
75
|
-
};
|
|
76
235
|
ngOnInit() {
|
|
236
|
+
this.tableName = this.view.window.tableName;
|
|
77
237
|
this.entities = this.view.entities;
|
|
78
238
|
this.entity = this.entities[this.view.entityIndex];
|
|
79
239
|
this.setEntityDisplayValues(this.view.window.tableName);
|
|
240
|
+
this.getDataForCloning();
|
|
80
241
|
}
|
|
81
|
-
|
|
82
|
-
|
|
242
|
+
ngOnDestroy() {
|
|
243
|
+
this.dataTree.length = 0;
|
|
244
|
+
this.flatList.length = 0;
|
|
245
|
+
this.childFlatList.length = 0;
|
|
246
|
+
this.childLookups.length = 0;
|
|
247
|
+
}
|
|
248
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruCloneView, deps: [{ token: i1.TruTextManager }, { token: i2.TruWindowEventHandler }, { token: i3.TruDataContext }, { token: i4.TruModelTableLookup }, { token: i5.TruModelPropertyLookup }, { token: i6.TruModelTypeLookup }, { token: i7.TruUiNotification }], target: i0.ɵɵFactoryTarget.Component });
|
|
249
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruCloneView, selector: "tru-clone-view", usesInheritance: true, ngImport: i0, template: "<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"loading\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"loading\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"loading\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content\">\r\n\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onClone()\" (keyup.enter)=\"onClone()\">Clone</button>\r\n </div>\r\n</div>\r\n", styles: [".tru-dialog-footer{position:absolute;left:0;right:0;bottom:0;padding:4px 15px 5px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px #fff}.tru-dialog-footer button{height:30px}::ng-deep tru-toolbar-button svg{height:20px!important}\n"], dependencies: [{ kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i9.TruToolbar, selector: "tru-toolbar", inputs: ["config"] }, { kind: "component", type: i10.TruToolbarButton, selector: "tru-toolbar-button", inputs: ["config", "icon", "text", "disabled", "tooltip", "type"], outputs: ["onClick", "onKeydown"] }, { kind: "component", type: i11.TruToolbarDropdown, selector: "tru-toolbar-dropdown", inputs: ["config", "options", "tooltip", "multiple", "filterable", "filterTooltip", "width", "selectedOption", "disabled"], outputs: ["selectedOptionChange", "selectionChange"] }, { kind: "component", type: i12.TruToolbarText, selector: "tru-toolbar-text", inputs: ["config", "icon", "text", "tooltip"] }] });
|
|
83
250
|
}
|
|
84
251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruCloneView, decorators: [{
|
|
85
252
|
type: Component,
|
|
86
|
-
args: [{ selector: 'tru-clone-view', template: "<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"loading\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"loading\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"loading\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content\">\r\n\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (click)=\"
|
|
87
|
-
}], ctorParameters: () => [{ type: i1.TruTextManager }, { type: i2.TruWindowEventHandler }, { type: i3.TruDataContext }] });
|
|
88
|
-
|
|
253
|
+
args: [{ selector: 'tru-clone-view', template: "<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"loading\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"loading\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"loading\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content\">\r\n\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onClone()\" (keyup.enter)=\"onClone()\">Clone</button>\r\n </div>\r\n</div>\r\n", styles: [".tru-dialog-footer{position:absolute;left:0;right:0;bottom:0;padding:4px 15px 5px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px #fff}.tru-dialog-footer button{height:30px}::ng-deep tru-toolbar-button svg{height:20px!important}\n"] }]
|
|
254
|
+
}], ctorParameters: () => [{ type: i1.TruTextManager }, { type: i2.TruWindowEventHandler }, { type: i3.TruDataContext }, { type: i4.TruModelTableLookup }, { type: i5.TruModelPropertyLookup }, { type: i6.TruModelTypeLookup }, { type: i7.TruUiNotification }] });
|
|
255
|
+
class Node {
|
|
256
|
+
ref;
|
|
257
|
+
tableName;
|
|
258
|
+
displayName;
|
|
259
|
+
checked;
|
|
260
|
+
child;
|
|
261
|
+
childNodes;
|
|
262
|
+
showEntities = false;
|
|
263
|
+
pathFromRoot;
|
|
264
|
+
nodes;
|
|
265
|
+
root;
|
|
266
|
+
parent;
|
|
267
|
+
entity;
|
|
268
|
+
constructor(ref, tableName, displayName, child, checked, childEntities, pathFromRoot, root, parent, entity) {
|
|
269
|
+
this.ref = ref;
|
|
270
|
+
this.tableName = tableName;
|
|
271
|
+
this.displayName = displayName;
|
|
272
|
+
this.checked = checked;
|
|
273
|
+
this.child = child;
|
|
274
|
+
this.childNodes = childEntities;
|
|
275
|
+
this.pathFromRoot = pathFromRoot;
|
|
276
|
+
this.root = root;
|
|
277
|
+
this.parent = parent;
|
|
278
|
+
this.entity = entity;
|
|
279
|
+
}
|
|
280
|
+
onGroupDisplay = () => {
|
|
281
|
+
var currentValue = this.showEntities = !this.showEntities;
|
|
282
|
+
this.nodes.find((n) => {
|
|
283
|
+
n.showEntities = currentValue;
|
|
284
|
+
});
|
|
285
|
+
};
|
|
286
|
+
onCheckedChanged = () => {
|
|
287
|
+
if (this.checked) {
|
|
288
|
+
if (this.child) {
|
|
289
|
+
var p = this.parent;
|
|
290
|
+
while (p) {
|
|
291
|
+
p.checked = true;
|
|
292
|
+
p = p.parent;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
this.nodes.find((n) => { n.checked = true; });
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
if (this.child) {
|
|
301
|
+
var allUnchecked = this.parent.nodes.every((n) => {
|
|
302
|
+
return n.checked === false;
|
|
303
|
+
});
|
|
304
|
+
if (allUnchecked)
|
|
305
|
+
this.parent.checked = false;
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
var uncheckChildNodes = (node) => {
|
|
309
|
+
node.nodes.find((n) => {
|
|
310
|
+
uncheckChildNodes(n);
|
|
311
|
+
n.checked = false;
|
|
312
|
+
});
|
|
313
|
+
};
|
|
314
|
+
this.nodes.find((n) => {
|
|
315
|
+
uncheckChildNodes(n);
|
|
316
|
+
n.checked = false;
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNsb25lLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xvbmUtdmlldy90cnUtY2xvbmUtdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jbG9uZS12aWV3L3RydS1jbG9uZS12aWV3Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZ0I3RCxNQUFNLE9BQU8sWUFBYSxTQUFRLFdBQVc7SUFtQy9CO0lBQ0E7SUFDRjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBeENWLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsY0FBYyxHQUFXLGtDQUFrQyxDQUFDO0lBQzVELGNBQWMsQ0FBa0M7SUFDaEQsc0JBQXNCLENBQTRCO0lBQ2xELGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdEIsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUNsQixRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRyxrQkFBa0IsR0FBRztRQUNuQixZQUFZO1FBQ1osU0FBUztRQUNULFlBQVk7UUFDWixTQUFTO1FBQ1QsUUFBUTtRQUNSLHlCQUF5QjtRQUN6QixjQUFjO1FBQ2QsdUJBQXVCO1FBQ3ZCLGVBQWU7UUFDZixjQUFjO1FBQ2QsWUFBWTtRQUNaLFlBQVk7UUFDWixlQUFlO1FBQ2Ys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QkFDZixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtvQkFDcEQsT0FBTyxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxZQUFZO29CQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNoQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxpQkFBaUIsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO29CQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO3dCQUN6QixpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3BCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQztnQkFDRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO29CQUN6QixpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDckIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcnVWaWV3QmFzZSB9IGZyb20gJy4uLy4uL2Jhc2Utdmlld3MvdHJ1LXZpZXctYmFzZSc7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi90b29sYmFyL2NsYXNzZXMvdHJ1LXRvb2xiYXItZHJvcGRvd24tb3B0aW9uJztcclxuaW1wb3J0IHsgVHJ1VGV4dE1hbmFnZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdGV4dC1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vZGVza3RvcC9zZXJ2aWNlcy90cnUtd2luZG93LWV2ZW50LWhhbmRsZXInO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFRhYmxlTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLXRhYmxlLWxvb2t1cCc7XHJcbmltcG9ydCB7IFRydVVpTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXVpLW5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IFRydU1vZGVsUHJvcGVydHlMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtcHJvcGVydHktbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxUeXBlTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLXR5cGUtbG9va3VwJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS1jbG9uZS12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWNsb25lLXZpZXcuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWNsb25lLXZpZXcuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydUNsb25lVmlldyBleHRlbmRzIFRydVZpZXdCYXNlIHtcclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBsb2FkaW5nTWVzc2FnZTogc3RyaW5nID0gJ1NlYXJjaGluZyBmb3IgcmVsYXRlZCByZWNvcmRzLi4uJztcclxuICBudW1iZXJPZkNvcGllczogQXJyYXk8SVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbj5cclxuICBzZWxlY3RlZE51bWJlck9mQ29waWVzOiBJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uO1xyXG4gIGNvbnRleHRGaWx0ZXJzID0gbnVsbDtcclxuICBjaGlsZExvb2t1cHMgPSBbXTtcclxuICByb290Tm9kZSA9IG5ldyBOb2RlKG51bGwsIHRoaXMudGFibGVOYW1lLCB0aGlzLnRhYmxlTmFtZSwgZmFsc2UsIHRydWUsIG51bGwsIG51bGwsIHRydWUsIG51bGwsIG51bGwpO1xyXG4gIGlnbm9yZVByb3BlcnR5TGlzdCA9IFtcclxuICAgICdDcmVhdGVkUmVmJyxcclxuICAgICdDcmVhdGVkJyxcclxuICAgICdVcGRhdGVkUmVmJyxcclxuICAgICdVcGRhdGVkJyxcclxuICAgICdyb3d2ZXInLFxyXG4gICAgJ19jdXN0b21WYWxpZGF0aW9uRXJyb3JzJyxcclxuICAgICdlbnRpdHlBc3BlY3QnLFxyXG4gICAgJ19hc3NvY2lhdGVkRGF0YUNhY2hlZCcsXHJcbiAgICAnX2JhY2tpbmdTdG9yZScsXHJcbiAgICAnX3NldERlZmF1bHRzJyxcclxuICAgICdfJHR5cGVOYW1lJyxcclxuICAgICdlbnRpdHlUeXBlJyxcclxuICAgICdfJGludGVyY2VwdG9yJyxcclxuICAgICdnZXRQcm9wZXJ0eScsXHJcbiAgICAnc2V0UHJvcGVydHknLFxyXG4gICAgJ19wZW5kaW5nQmFja2luZ1N0b3JlcycsXHJcbiAgICAnUmVmJ1xyXG4gIF07XHJcbiAgZGF0YVRyZWUgPSBbXTtcclxuICBmbGF0TGlzdDogQXJyYXk8Tm9kZT4gPSBbXTtcclxuICBjaGlsZEZsYXRMaXN0OiBBcnJheTxOb2RlPiA9IFtdO1xyXG4gIHByb2Nlc3NlZENvdW50OiBudW1iZXIgPSAwO1xyXG4gIGRvbmVQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlzcGxheVRyZWUgPSBbdGhpcy5yb290Tm9kZV07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHRleHRNYW5hZ2VyOiBUcnVUZXh0TWFuYWdlcixcclxuICAgIHByb3RlY3RlZCB3aW5kb3dFdmVudEhhbmRsZXI6IFRydVdpbmRvd0V2ZW50SGFuZGxlcixcclxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJpdmF0ZSBtb2RlbFRhYmxlTG9va3VwOiBUcnVNb2RlbFRhYmxlTG9va3VwLFxyXG4gICAgcHJpdmF0ZSBtb2RlbFByb3BlcnR5TG9va3VwOiBUcnVNb2RlbFByb3BlcnR5TG9va3VwLFxyXG4gICAgcHJpdmF0ZSBtb2RlbFR5cGVMb29rdXA6IFRydU1vZGVsVHlwZUxvb2t1cCxcclxuICAgIHByaXZhdGUgdWlOb3RpZmljYXRpb246IFRydVVpTm90aWZpY2F0aW9uKSB7XHJcbiAgICBzdXBlcih0ZXh0TWFuYWdlciwgd2luZG93RXZlbnRIYW5kbGVyKTtcclxuICAgIHRoaXMubnVtYmVyT2ZDb3BpZXMgPSB0aGlzLmdldE51bWJlck9mQ29waWVzKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkTnVtYmVyT2ZDb3BpZXMgPSB0aGlzLm51bWJlck9mQ29waWVzWzBdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXROdW1iZXJPZkNvcGllcyA9ICgpOiBBcnJheTxJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uPiA9PiB7XHJcbiAgICBsZXQgY29waWVzOiBBcnJheTxJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uPiA9IFtdO1xyXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMjU7IGkrKykge1xyXG4gICAgICBjb3BpZXMucHVzaCh7XHJcbiAgICAgICAgdmFsdWU6IGksXHJcbiAgICAgICAgbGFiZWw6IGkudG9TdHJpbmcoKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb3BpZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb3BlcnR5SXNBbGxvd2VkID0gKHByb3BlcnR5TmFtZTogc3RyaW5nLCB0YWJsZU5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gdGFibGVOYW1lICsgJ1JlZicpIHJldHVybiBmYWxzZTtcclxuICAgIGlmIChwcm9wZXJ0eU5hbWUuc3RhcnRzV2l0aCgnbycpKSByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgcHJvcGVydHkgPSB0aGlzLm1vZGVsUHJvcGVydHlMb29rdXAubG9va3VwLmdldChwcm9wZXJ0eU5hbWUpO1xyXG4gICAgaWYgKHByb3BlcnR5ICYmIHByb3BlcnR5LmV4Y2x1ZGVGcm9tQ2xvbmluZykgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuaWdub3JlUHJvcGVydHlMaXN0LnNvbWUoZnVuY3Rpb24gKHByb3BlcnR5VG9JZ25vcmUpIHsgcmV0dXJuIHByb3BlcnR5VG9JZ25vcmUgPT09IHByb3BlcnR5TmFtZTsgfSkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlICBnZXRQcm90b3R5cGVQcm9wZXJ0aWVzID0gKG9iajogYW55KSA9PiB7XHJcbiAgICB2YXIgcmVzdWx0ID0gW107XHJcbiAgICBmb3IgKHZhciBwcm9wIGluIG9iaikge1xyXG4gICAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKHByb3ApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDaGlsZFByb3BlcnRpZXNGb3JDdXJyZW50RW50aXR5ID0gKGN1cnJlbnRFbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgLy92YXIgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5rZXlzKE9iamVjdC5nZXRQcm90b3R5cGVPZihjdXJyZW50RW50aXR5KSk7XHJcbiAgICBsZXQgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5rZXlzKGN1cnJlbnRFbnRpdHkpO1xyXG4gICAgbGV0IG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzID0gcHJvcGVydHlOYW1lcy5maWx0ZXIoKG4pID0+IHsgcmV0dXJuIG4uc3RhcnRzV2l0aCgnbycpOyB9KTtcclxuICAgIGxldCBjaGlsZE5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzID0gbmF2aWdhdGlvblByb3BlcnR5TmFtZXMuZmlsdGVyKChuKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkTG9va3Vwcy5zb21lKChsb29rdXA6IGFueSkgPT4geyByZXR1cm4gJ28nICsgbG9va3VwLnBsdXJhbFRhYmxlTmFtZSA9PT0gbjsgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgY2hpbGRQcm9wZXJ0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBjaGlsZE5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzLmZpbHRlcihmdW5jdGlvbiAobikge1xyXG4gICAgICBpZiAoY3VycmVudEVudGl0eVtuXSAmJiBjdXJyZW50RW50aXR5W25dLmxlbmd0aCkgY2hpbGRQcm9wZXJ0aWVzLnB1c2goY3VycmVudEVudGl0eVtuXSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gY2hpbGRQcm9wZXJ0aWVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSAgZ2V0VHlwZUZyb21FbnRpdHlUeXBlTmFtZSA9ICh0eXBlTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICB2YXIgcDFzID0gdHlwZU5hbWUuc3BsaXQoJywnKVswXTtcclxuICAgIHZhciBwMnMgPSBwMXMuc3BsaXQoJy4nKTtcclxuICAgIHJldHVybiBwMnNbcDJzLmxlbmd0aCAtIDFdO1xyXG4gIH1cclxuXHJcbnByaXZhdGUgYnVpbGRDbG9uZVRyZWUgPSAoY3VycmVudEVudGl0eTogYW55LCBub2RlOiBhbnkpID0+IHtcclxuICB2YXIgY2hpbGRQcm9wZXJ0aWVzID0gdGhpcy5nZXRDaGlsZFByb3BlcnRpZXNGb3JDdXJyZW50RW50aXR5KGN1cnJlbnRFbnRpdHkpO1xyXG4gIGNoaWxkUHJvcGVydGllcy5mb3JFYWNoKChjaGlsZEVudGl0aWVzOiBhbnkpID0+IHtcclxuICAgIGxldCB0eXBlID0gdGhpcy5nZXRUeXBlRnJvbUVudGl0eVR5cGVOYW1lKGNoaWxkRW50aXRpZXNbMF0uJHR5cGUpO1xyXG4gICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbFRhYmxlTG9va3VwLmxvb2t1cC5nZXQodHlwZSk7XHJcbiAgICBsZXQgZ3JvdXBOb2RlID0gbmV3IE5vZGUoXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGNoaWxkRW50aXRpZXNbMF0uY29uc3RydWN0b3IubmFtZSxcclxuICAgICAgY2hpbGRMb29rdXA/LnBsdXJhbExhYmVsIGFzIHN0cmluZyxcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIHRydWUsXHJcbiAgICAgIFtdLFxyXG4gICAgICAnJyxcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIG5vZGUsXHJcbiAgICAgIG51bGxcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5mbGF0TGlzdC5wdXNoKGdyb3VwTm9kZSk7XHJcblxyXG4gICAgY2hpbGRFbnRpdGllcy5mb3JFYWNoKChjaGlsZEVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0eXBlID0gdGhpcy5nZXRUeXBlRnJvbUVudGl0eVR5cGVOYW1lKGNoaWxkRW50aXR5LiR0eXBlKTtcclxuICAgICAgbGV0IGNoaWxkTm9kZSA9IG5ldyBOb2RlKFxyXG4gICAgICAgIGNoaWxkRW50aXR5W3R5cGUgKyAnUmVmJ10sXHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIHRydWUsXHJcbiAgICAgICAgdHJ1ZSxcclxuICAgICAgICBbXSxcclxuICAgICAgICAnJyxcclxuICAgICAgICBmYWxzZSxcclxuICAgICAgICBncm91cE5vZGUsXHJcbiAgICAgICAgY2hpbGRFbnRpdHlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuY2hpbGRGbGF0TGlzdC5wdXNoKGNoaWxkTm9kZSk7XHJcbiAgICAgIGdyb3VwTm9kZS5ub2Rlcy5wdXNoKGNoaWxkTm9kZSk7XHJcbiAgICAgIHRoaXMuYnVpbGRDbG9uZVRyZWUoY2hpbGRFbnRpdHksIGNoaWxkTm9kZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBub2RlLm5vZGVzLnB1c2goZ3JvdXBOb2RlKTtcclxuICB9KTtcclxufVxyXG5cclxuICBwcml2YXRlIGFzeW5jRm9yRWFjaFJlY29yZElkID0gKGFycjogYW55LCBjYjogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gYXJyLnJlZHVjZSgocDogYW55LCBjOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHAudGhlbigoKSA9PiBjYihjKSk7XHJcbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoUmVjb3JkSWQgPSAoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgdmFyIGMgPSBjaGlsZDtcclxuICAgIHZhciBkYXRhID0ge1xyXG4gICAgICByZWY6IGMucmVmLFxyXG4gICAgICB0YWJsZU5hbWU6IGMudGFibGVOYW1lXHJcbiAgICB9O1xyXG4gICAgZGF0YSA9IHRoaXMudGV4dE1hbmFnZXIuZm9ybWF0QXNVcmxQYXJhbWV0ZXJzKGRhdGEpO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55KSA9PiB7XHJcbiAgICAgIGMuZGlzcGxheU5hbWUgPSBjaGlsZC5lbnRpdHkuSElEO1xyXG4gICAgICB0aGlzLnByb2Nlc3NlZENvdW50Kys7XHJcbiAgICAgIHRoaXMubG9hZGluZ01lc3NhZ2UgPSAnRm9ybWF0dGluZyBkYXRhLi4ucHJvY2Vzc2VkICgnICsgdGhpcy5wcm9jZXNzZWRDb3VudCArICcvJyArIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggKyAnKSByZWNvcmRzJztcclxuICAgICAgaWYgKHRoaXMucHJvY2Vzc2VkQ291bnQgPj0gdGhpcy5jaGlsZEZsYXRMaXN0Lmxlbmd0aClcclxuICAgICAgICB0aGlzLmxvYWRpbmdNZXNzYWdlID0gJ1JlbmRlcmluZyB0cmVlLi4uJztcclxuICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRvbmUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmRvbmVQcm9jZXNzaW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhdmVyc2UgPSAobm9kZTogYW55LCBjdXJyZW50RW50aXR5OiBhbnkpID0+IHtcclxuICAgIHZhciBncm91cCA9ICFub2RlLmNoaWxkO1xyXG4gICAgaWYgKGdyb3VwKSB7XHJcbiAgICAgIHZhciBncm91cE5vZGVzID0gbm9kZS5ub2RlcztcclxuICAgICAgZ3JvdXBOb2Rlcy5mb3JFYWNoKChncm91cE5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChncm91cE5vZGUuY2hlY2tlZClcclxuICAgICAgICAgIGdyb3VwTm9kZS5ub2Rlcy5mb3JFYWNoKChjaGlsZE5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRyYXZlcnNlKGNoaWxkTm9kZSwgY3VycmVudEVudGl0eSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAobm9kZS5jaGVja2VkKSB7XHJcbiAgICAgICAgbGV0IHRhYmxlVHlwZSA9IHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUodGhpcy50YWJsZU5hbWUpO1xyXG4gICAgICAgIGxldCBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0YWJsZVR5cGUsIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgICB0aGlzLmdldFByb3RvdHlwZVByb3BlcnRpZXMobmV3RW50aXR5KS5mb3JFYWNoKChwcm9wZXJ0eU5hbWUpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5SXNBbGxvd2VkKHByb3BlcnR5TmFtZSwgbm9kZS50YWJsZU5hbWUpKSB7XHJcbiAgICAgICAgICAgIG5ld0VudGl0eVtwcm9wZXJ0eU5hbWUgYXMgT2JqZWN0S2V5XSA9IG5vZGUuZW50aXR5W3Byb3BlcnR5TmFtZV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIG5ld0VudGl0eS5zZXRQcm9wZXJ0eSEoJ19hc3NvY2lhdGVkRGF0YUNhY2hlZCcsIHRydWUpO1xyXG5cclxuICAgICAgICBsZXQgY2hpbGRMb29rdXAgPSB0aGlzLm1vZGVsVGFibGVMb29rdXAubG9va3VwLmdldChub2RlLnRhYmxlTmFtZSk7XHJcbiAgICAgICAgY3VycmVudEVudGl0eVsnbycgKyBjaGlsZExvb2t1cCEucGx1cmFsTmFtZV0ucHVzaChuZXdFbnRpdHkpO1xyXG4gICAgICAgIGxldCBjaGlsZE5vZGVzID0gbm9kZS5ub2RlcztcclxuICAgICAgICBjaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hpbGROb2RlLmNoZWNrZWQpXHJcbiAgICAgICAgICAgIGNoaWxkTm9kZS5ub2Rlcy5mb3JFYWNoKChncm91cE5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudHJhdmVyc2UoZ3JvdXBOb2RlLCBuZXdFbnRpdHkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YUZvckNsb25pbmcgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmNsb25lKHtcclxuICAgICAgcmVmOiB0aGlzLmVudGl0eS5SZWYsXHJcbiAgICAgIHRhYmxlTmFtZTogdGhpcy50YWJsZU5hbWVcclxuICAgIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhVHJlZSA9IHJlc3BvbnNlLmRhdGFbMF07XHJcbiAgICAgICAgdGhpcy5idWlsZENsb25lVHJlZSh0aGlzLmRhdGFUcmVlLCB0aGlzLnJvb3ROb2RlKTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nTWVzc2FnZSA9ICdGb3JtYXR0aW5nIGRhdGEuLi4oMC8nICsgdGhpcy5jaGlsZEZsYXRMaXN0Lmxlbmd0aCArICcpIHJlY29yZHMnO1xyXG4gICAgICAgIHRoaXMuYXN5bmNGb3JFYWNoUmVjb3JkSWQodGhpcy5jaGlsZEZsYXRMaXN0LCB0aGlzLmZldGNoUmVjb3JkSWQpLnRoZW4odGhpcy5kb25lKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5VHJlZSA9IFt0aGlzLnJvb3ROb2RlXTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChleDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yJywgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcignU2VydmVyIEVycm9yOiAnICsgZXguc3RhdHVzLCBbZXguZXJyb3IuTWVzc2FnZV0pKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2xvbmUgPSAoKSA9PiB7XHJcbiAgICBsZXQgY29waWVzID0gdGhpcy5zZWxlY3RlZE51bWJlck9mQ29waWVzLnZhbHVlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3BpZXM7IGkrKykge1xyXG4gICAgICBsZXQgdGFibGVUeXBlID0gdGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSh0aGlzLnRhYmxlTmFtZSk7XHJcbiAgICAgIGxldCBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0YWJsZVR5cGUsIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgIHRoaXMuZ2V0UHJvdG90eXBlUHJvcGVydGllcyh0aGlzLmVudGl0eSkuZm9yRWFjaCgocHJvcGVydHlOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eUlzQWxsb3dlZChwcm9wZXJ0eU5hbWUsIHRoaXMudGFibGVOYW1lKSkge1xyXG4gICAgICAgICAgbmV3RW50aXR5W3Byb3BlcnR5TmFtZSBhcyBPYmplY3RLZXldID0gdGhpcy5lbnRpdHlbcHJvcGVydHlOYW1lXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbmV3RW50aXR5LnNldFByb3BlcnR5ISgnX2Fzc29jaWF0ZWREYXRhQ2FjaGVkJywgdHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLnRyYXZlcnNlKHRoaXMuZGlzcGxheVRyZWVbMF0sIG5ld0VudGl0eSk7XHJcbiAgICAgIC8vdGhpcy52aWV3LmRhdGEuYWRkKG5ld0VudGl0eSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLndpbmRvd0V2ZW50SGFuZGxlci5jbG9zZSgpO1xyXG4gIH07XHJcblxyXG4gIG9uQ2FuY2VsID0gKCkgPT4ge1xyXG4gICAgdGhpcy53aW5kb3dFdmVudEhhbmRsZXIuY2xvc2UoKTtcclxuICB9O1xyXG5cclxuICBvbkV4cGFuZENsaWNrZWQgPSAoKSA9PiB7XHJcblxyXG4gIH1cclxuICAgICBcclxuICBvbkNvbGxhcHNlQ2xpY2tlZCA9ICgpID0+IHtcclxuXHJcbiAgfVxyXG5cclxuICBvbk51bWJlck9mQ29waWVzQ2hhbmdlZCA9IChldmVudDogYW55KSA9PiB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRhYmxlTmFtZSA9IHRoaXMudmlldy53aW5kb3cudGFibGVOYW1lO1xyXG4gICAgdGhpcy5lbnRpdGllcyA9IHRoaXMudmlldy5lbnRpdGllcyBhcyBhbnk7XHJcbiAgICB0aGlzLmVudGl0eSA9IHRoaXMuZW50aXRpZXNbdGhpcy52aWV3LmVudGl0eUluZGV4XTtcclxuICAgIHRoaXMuc2V0RW50aXR5RGlzcGxheVZhbHVlcyh0aGlzLnZpZXcud2luZG93LnRhYmxlTmFtZSk7XHJcbiAgICB0aGlzLmdldERhdGFGb3JDbG9uaW5nKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGF0YVRyZWUubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuZmxhdExpc3QubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5jaGlsZExvb2t1cHMubGVuZ3RoID0gMDtcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIE5vZGUge1xyXG4gIHJlZjogbnVtYmVyIHwgbnVsbDtcclxuICB0YWJsZU5hbWU6IHN0cmluZztcclxuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG4gIGNoZWNrZWQ6IGJvb2xlYW47XHJcbiAgY2hpbGQ6IGFueTtcclxuICBjaGlsZE5vZGVzOiBhbnk7XHJcbiAgc2hvd0VudGl0aWVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGF0aEZyb21Sb290OiBzdHJpbmcgfCBudWxsO1xyXG4gIG5vZGVzOiBhbnk7XHJcbiAgcm9vdDogYW55O1xyXG4gIHBhcmVudDogYW55O1xyXG4gIGVudGl0eTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHJlZjogbnVtYmVyIHwgbnVsbCxcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZyxcclxuICAgIGNoaWxkOiBhbnksXHJcbiAgICBjaGVja2VkOiBib29sZWFuLFxyXG4gICAgY2hpbGRFbnRpdGllczogYW55LFxyXG4gICAgcGF0aEZyb21Sb290OiBzdHJpbmcgfCBudWxsLFxyXG4gICAgcm9vdDogYm9vbGVhbixcclxuICAgIHBhcmVudDogYW55LFxyXG4gICAgZW50aXR5OiBhbnkpIHtcclxuICAgIHRoaXMucmVmID0gcmVmO1xyXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWU7XHJcbiAgICB0aGlzLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XHJcbiAgICB0aGlzLmNoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgdGhpcy5jaGlsZCA9IGNoaWxkO1xyXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGRFbnRpdGllcztcclxuICAgIHRoaXMucGF0aEZyb21Sb290ID0gcGF0aEZyb21Sb290O1xyXG4gICAgdGhpcy5yb290ID0gcm9vdDtcclxuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xyXG4gICAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XHJcbiAgfVxyXG5cclxuICBvbkdyb3VwRGlzcGxheSA9ICgpID0+IHtcclxuICAgIHZhciBjdXJyZW50VmFsdWUgPSB0aGlzLnNob3dFbnRpdGllcyA9ICF0aGlzLnNob3dFbnRpdGllcztcclxuICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgIG4uc2hvd0VudGl0aWVzID0gY3VycmVudFZhbHVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrZWRDaGFuZ2VkID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tlZCkge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZCkge1xyXG4gICAgICAgIHZhciBwID0gdGhpcy5wYXJlbnQ7XHJcbiAgICAgICAgd2hpbGUgKHApIHtcclxuICAgICAgICAgIHAuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICBwID0gcC5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7IG4uY2hlY2tlZCA9IHRydWU7IH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZCkge1xyXG4gICAgICAgIHZhciBhbGxVbmNoZWNrZWQgPSB0aGlzLnBhcmVudC5ub2Rlcy5ldmVyeSgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gbi5jaGVja2VkID09PSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoYWxsVW5jaGVja2VkKVxyXG4gICAgICAgICAgdGhpcy5wYXJlbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB1bmNoZWNrQ2hpbGROb2RlcyA9IChub2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgIG5vZGUubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHVuY2hlY2tDaGlsZE5vZGVzKG4pO1xyXG4gICAgICAgICAgICBuLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5maW5kKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgIHVuY2hlY2tDaGlsZE5vZGVzKG4pO1xyXG4gICAgICAgICAgbi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIjxkaXY+XHJcbiAgPHRydS10b29sYmFyPlxyXG4gICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCInZXhwYW5kLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0V4cGFuZCdcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIChvbkNsaWNrKT1cIm9uRXhwYW5kQ2xpY2tlZCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIidjb2xsYXBzZS1pY29uJ1wiIFt0b29sdGlwXT1cIidDb2xsYXBzZSdcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIChvbkNsaWNrKT1cIm9uQ29sbGFwc2VDbGlja2VkKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgIDx0cnUtdG9vbGJhci10ZXh0IFt0ZXh0XT1cIidDb3BpZXM6J1wiPjwvdHJ1LXRvb2xiYXItdGV4dD5cclxuICAgIDx0cnUtdG9vbGJhci1kcm9wZG93biBbb3B0aW9uc109XCJudW1iZXJPZkNvcGllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZE9wdGlvbildPVwic2VsZWN0ZWROdW1iZXJPZkNvcGllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25OdW1iZXJPZkNvcGllc0NoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgPC90cnUtdG9vbGJhci1kcm9wZG93bj5cclxuICA8L3RydS10b29sYmFyPlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGlhbG9nLWNvbnRlbnRcIj5cclxuXHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1kaWFsb2ctZm9vdGVyXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9uQ2xvbmUoKVwiIChrZXl1cC5lbnRlcik9XCJvbkNsb25lKClcIj5DbG9uZTwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -2,9 +2,16 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class TruWindowEventHandler {
|
|
5
|
+
close$ = new Subject();
|
|
5
6
|
addView$ = new Subject();
|
|
6
7
|
setWindowTitle$ = new Subject();
|
|
7
8
|
removeForwadViews$ = new Subject();
|
|
9
|
+
onClose() {
|
|
10
|
+
return this.close$;
|
|
11
|
+
}
|
|
12
|
+
close() {
|
|
13
|
+
this.close$.next(null);
|
|
14
|
+
}
|
|
8
15
|
onAddView() {
|
|
9
16
|
return this.addView$;
|
|
10
17
|
}
|
|
@@ -29,4 +36,4 @@ export class TruWindowEventHandler {
|
|
|
29
36
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruWindowEventHandler, decorators: [{
|
|
30
37
|
type: Injectable
|
|
31
38
|
}] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXdpbmRvdy1ldmVudC1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2t0b3Avc2VydmljZXMvdHJ1LXdpbmRvdy1ldmVudC1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFPL0IsTUFBTSxPQUFPLHFCQUFxQjtJQUN4QixNQUFNLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7SUFDNUMsUUFBUSxHQUFrQyxJQUFJLE9BQU8sRUFBd0IsQ0FBQztJQUM5RSxlQUFlLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7SUFDekQsa0JBQWtCLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7SUFFaEUsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxPQUFPLENBQUMsa0JBQXdDO1FBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQzt1R0FwQ1UscUJBQXFCOzJHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFRydVdpbmRvd0V2ZW50QXJncyB9IGZyb20gJy4vdHJ1LXdpbmRvdy1ldmVudC1hcmdzJztcclxuaW1wb3J0IHsgVHJ1RGVza3RvcFZpZXdDb25maWcgfSBmcm9tICcuLi9jbGFzc2VzL3RydS1kZXNrdG9wLXZpZXctY29uZmlnJztcclxuaW1wb3J0IHsgVHJ1RW50aXR5QmFzZSB9IGZyb20gJy4uLy4uLy4uL2Jhc2UtY2xhc3Nlcy90cnUtZW50aXR5LWJhc2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJ1V2luZG93RXZlbnRIYW5kbGVyIHtcclxuICBwcml2YXRlIGNsb3NlJDogU3ViamVjdDxudWxsPiA9IG5ldyBTdWJqZWN0PG51bGw+KCk7XHJcbiAgcHJpdmF0ZSBhZGRWaWV3JDogU3ViamVjdDxUcnVEZXNrdG9wVmlld0NvbmZpZz4gPSBuZXcgU3ViamVjdDxUcnVEZXNrdG9wVmlld0NvbmZpZz4oKTtcclxuICBwcml2YXRlIHNldFdpbmRvd1RpdGxlJDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHByaXZhdGUgcmVtb3ZlRm9yd2FkVmlld3MkOiBTdWJqZWN0PG51bGw+ID0gbmV3IFN1YmplY3Q8bnVsbD4oKTtcclxuXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNsb3NlJDtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5jbG9zZSQubmV4dChudWxsKTtcclxuICB9XHJcblxyXG4gIG9uQWRkVmlldygpIHtcclxuICAgIHJldHVybiB0aGlzLmFkZFZpZXckO1xyXG4gIH1cclxuXHJcbiAgYWRkVmlldyh3aW5kb3dBZGRWaWV3RXZlbnQ6IFRydURlc2t0b3BWaWV3Q29uZmlnKSB7XHJcbiAgICB0aGlzLmFkZFZpZXckLm5leHQod2luZG93QWRkVmlld0V2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uUmVtb3ZlRm9yd2FyZFZpZXdzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlRm9yd2FkVmlld3MkO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRm9yd2FyZFZpZXdzKCkge1xyXG4gICAgdGhpcy5yZW1vdmVGb3J3YWRWaWV3cyQubmV4dChudWxsKTtcclxuICB9XHJcblxyXG4gIG9uU2V0V2luZG93VGl0bGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXRXaW5kb3dUaXRsZSQ7XHJcbiAgfVxyXG5cclxuICBzZXRXaW5kb3dUaXRsZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNldFdpbmRvd1RpdGxlJC5uZXh0KHZhbHVlKTtcclxuICB9XHJcbn1cclxuIl19
|