@meshmakers/shared-ui 3.2.7-0 → 3.2.11-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/meshmakers-shared-ui.mjs +55 -55
- package/fesm2022/meshmakers-shared-ui.mjs.map +1 -1
- package/package.json +1 -3
- package/esm2022/lib/mm-autocomplete-input/mm-autocomplete-input.component.mjs +0 -302
- package/esm2022/lib/mm-breadcrumb/mm-breadcrumb.component.mjs +0 -113
- package/esm2022/lib/mm-confirmation-window/mm-confirmation-window.component.mjs +0 -75
- package/esm2022/lib/mm-entity-select-input/mm-entity-select-input.component.mjs +0 -305
- package/esm2022/lib/mm-file-upload/mm-file-upload.component.mjs +0 -103
- package/esm2022/lib/mm-message-details/mm-message-details.component.mjs +0 -26
- package/esm2022/lib/mm-multiple-entity-select-input/mm-multiple-entity-select-input.component.mjs +0 -316
- package/esm2022/lib/mm-notification-bar/mm-notification-bar.component.mjs +0 -41
- package/esm2022/lib/mm-progress-window/mm-progress-window.component.mjs +0 -34
- package/esm2022/lib/mm-shared-ui.module.mjs +0 -129
- package/esm2022/lib/mm-table-simple/mm-table-simple.component.mjs +0 -42
- package/esm2022/lib/models/abstractDetailsComponent.mjs +0 -53
- package/esm2022/lib/models/commonValidators.mjs +0 -36
- package/esm2022/lib/models/confirmation.mjs +0 -15
- package/esm2022/lib/models/progressValue.mjs +0 -9
- package/esm2022/lib/services/breadcrumbData.mjs +0 -11
- package/esm2022/lib/services/confirmation.service.mjs +0 -69
- package/esm2022/lib/services/file-upload.service.mjs +0 -38
- package/esm2022/lib/services/progress-notifier.service.mjs +0 -63
- package/esm2022/meshmakers-shared-ui.mjs +0 -5
- package/esm2022/public-api.mjs +0 -19
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshmakers/shared-ui",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.11-0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^18.2.8",
|
|
6
6
|
"@angular/core": "^18.2.8"
|
|
@@ -17,8 +17,6 @@
|
|
|
17
17
|
},
|
|
18
18
|
".": {
|
|
19
19
|
"types": "./index.d.ts",
|
|
20
|
-
"esm2022": "./esm2022/meshmakers-shared-ui.mjs",
|
|
21
|
-
"esm": "./esm2022/meshmakers-shared-ui.mjs",
|
|
22
20
|
"default": "./fesm2022/meshmakers-shared-ui.mjs"
|
|
23
21
|
}
|
|
24
22
|
}
|
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, forwardRef, HostBinding, Input, ViewChild } from "@angular/core";
|
|
2
|
-
import { MatFormFieldControl } from "@angular/material/form-field";
|
|
3
|
-
import { FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl } from "@angular/forms";
|
|
4
|
-
import { coerceBooleanProperty } from "@angular/cdk/coercion";
|
|
5
|
-
import { debounceTime, filter, map, switchMap, tap } from "rxjs/operators";
|
|
6
|
-
import { of, Subject } from "rxjs";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/cdk/a11y";
|
|
9
|
-
import * as i2 from "@angular/common";
|
|
10
|
-
import * as i3 from "@angular/material/autocomplete";
|
|
11
|
-
import * as i4 from "@angular/material/core";
|
|
12
|
-
import * as i5 from "@angular/material/input";
|
|
13
|
-
import * as i6 from "@angular/material/progress-spinner";
|
|
14
|
-
import * as i7 from "@angular/forms";
|
|
15
|
-
export class MmAutocompleteInputComponent {
|
|
16
|
-
elRef;
|
|
17
|
-
injector;
|
|
18
|
-
fm;
|
|
19
|
-
static nextId = 0;
|
|
20
|
-
searchFormControl;
|
|
21
|
-
isLoading;
|
|
22
|
-
filteredStrings = [];
|
|
23
|
-
ngControl;
|
|
24
|
-
errorState;
|
|
25
|
-
focused;
|
|
26
|
-
stateChanges = new Subject();
|
|
27
|
-
id = `ia-autocomplete-${MmAutocompleteInputComponent.nextId++}`;
|
|
28
|
-
valueChange = new EventEmitter();
|
|
29
|
-
_selectedString;
|
|
30
|
-
inputField;
|
|
31
|
-
describedBy = "";
|
|
32
|
-
activatedValue;
|
|
33
|
-
constructor(elRef, injector, fm) {
|
|
34
|
-
this.elRef = elRef;
|
|
35
|
-
this.injector = injector;
|
|
36
|
-
this.fm = fm;
|
|
37
|
-
this.ngControl = null;
|
|
38
|
-
this.errorState = false;
|
|
39
|
-
this._selectedString = null;
|
|
40
|
-
this.inputField = null;
|
|
41
|
-
this._dataSource = null;
|
|
42
|
-
this._placeholder = "";
|
|
43
|
-
this._prefix = "";
|
|
44
|
-
this.searchFormControl = new FormControl();
|
|
45
|
-
this.isLoading = false;
|
|
46
|
-
this._disabled = false;
|
|
47
|
-
this.focused = false;
|
|
48
|
-
fm.monitor(elRef.nativeElement, true).subscribe((origin) => {
|
|
49
|
-
this.focused = !!origin;
|
|
50
|
-
this.stateChanges.next();
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
_dataSource;
|
|
54
|
-
get dataSource() {
|
|
55
|
-
return this._dataSource;
|
|
56
|
-
}
|
|
57
|
-
set dataSource(value) {
|
|
58
|
-
this._dataSource = value;
|
|
59
|
-
}
|
|
60
|
-
_disabled = false;
|
|
61
|
-
get disabled() {
|
|
62
|
-
return this._disabled;
|
|
63
|
-
}
|
|
64
|
-
set disabled(dis) {
|
|
65
|
-
this._disabled = coerceBooleanProperty(dis);
|
|
66
|
-
if (this._disabled) {
|
|
67
|
-
this.searchFormControl.disable();
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
this.searchFormControl.enable();
|
|
71
|
-
}
|
|
72
|
-
this.stateChanges.next();
|
|
73
|
-
}
|
|
74
|
-
_placeholder;
|
|
75
|
-
get placeholder() {
|
|
76
|
-
return this._placeholder;
|
|
77
|
-
}
|
|
78
|
-
set placeholder(plh) {
|
|
79
|
-
this._placeholder = plh;
|
|
80
|
-
this.stateChanges.next();
|
|
81
|
-
}
|
|
82
|
-
_required = false;
|
|
83
|
-
get required() {
|
|
84
|
-
return this._required;
|
|
85
|
-
}
|
|
86
|
-
set required(req) {
|
|
87
|
-
this._required = coerceBooleanProperty(req);
|
|
88
|
-
if (this.inputField != null) {
|
|
89
|
-
this.inputField.required = this._required;
|
|
90
|
-
}
|
|
91
|
-
this.stateChanges.next();
|
|
92
|
-
}
|
|
93
|
-
_prefix;
|
|
94
|
-
get prefix() {
|
|
95
|
-
return this._prefix;
|
|
96
|
-
}
|
|
97
|
-
set prefix(value) {
|
|
98
|
-
if (value !== this._prefix) {
|
|
99
|
-
this._prefix = value;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
get value() {
|
|
103
|
-
return this._selectedString;
|
|
104
|
-
}
|
|
105
|
-
set value(value) {
|
|
106
|
-
if (value !== this._selectedString) {
|
|
107
|
-
this._selectedString = value;
|
|
108
|
-
this.searchFormControl.setValue(value);
|
|
109
|
-
this.valueChange.emit(value);
|
|
110
|
-
this._propagateChange(this._selectedString);
|
|
111
|
-
this.stateChanges.next();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
get empty() {
|
|
115
|
-
const n = this.searchFormControl.value;
|
|
116
|
-
return !n;
|
|
117
|
-
}
|
|
118
|
-
get shouldLabelFloat() {
|
|
119
|
-
return this.focused || !this.empty;
|
|
120
|
-
}
|
|
121
|
-
ngOnInit() {
|
|
122
|
-
this.ngControl = this.injector.get(NgControl, null);
|
|
123
|
-
if (this.ngControl != null) {
|
|
124
|
-
this.ngControl.valueAccessor = this;
|
|
125
|
-
}
|
|
126
|
-
// If prefix defined, usually this is used for a code scanner.
|
|
127
|
-
// The goal is to select the entity in direct way.
|
|
128
|
-
if (this._prefix) {
|
|
129
|
-
this.searchFormControl.valueChanges
|
|
130
|
-
.pipe(debounceTime(300), filter((value) => typeof value === "string"), filter((value) => value.startsWith(this._prefix)), tap(() => (this.value = null)), tap(() => (this.isLoading = true)), map((value) => this._dataSource?.onPreprocessSearchString(value) ?? ""), switchMap((value) => this._dataSource?.onFilter(value) ?? of(null)))
|
|
131
|
-
.subscribe((resultSet) => {
|
|
132
|
-
if (resultSet?.list != null) {
|
|
133
|
-
if (resultSet.list.length === 1) {
|
|
134
|
-
this.value = resultSet.list[0];
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
this.filteredStrings = resultSet.list;
|
|
138
|
-
this.searchFormControl.patchValue(resultSet.searchTerm, {
|
|
139
|
-
emitEvent: false
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
this.isLoading = false;
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
// This is the search functionality when search by human.
|
|
147
|
-
this.searchFormControl.valueChanges
|
|
148
|
-
.pipe(debounceTime(300), tap((_) => {
|
|
149
|
-
this.filteredStrings = [];
|
|
150
|
-
}), filter((value) => value != null && value.toString().length >= 1), tap(() => (this.isLoading = true)), map((value) => this._dataSource?.onPreprocessSearchString(value)), tap((value) => (this.value = value)), switchMap((value) => {
|
|
151
|
-
if (value !== null) {
|
|
152
|
-
return this._dataSource?.onFilter(String(value)) ?? of(null);
|
|
153
|
-
}
|
|
154
|
-
return of(null);
|
|
155
|
-
}))
|
|
156
|
-
.subscribe((resultSet) => {
|
|
157
|
-
if (resultSet?.list != null) {
|
|
158
|
-
this.filteredStrings = resultSet.list;
|
|
159
|
-
this.searchFormControl.patchValue(resultSet.searchTerm, {
|
|
160
|
-
emitEvent: false
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
this.isLoading = false;
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
ngOnDestroy() {
|
|
167
|
-
this.stateChanges.complete();
|
|
168
|
-
this.fm.stopMonitoring(this.elRef.nativeElement);
|
|
169
|
-
}
|
|
170
|
-
ngDoCheck() {
|
|
171
|
-
if (this.ngControl != null) {
|
|
172
|
-
this.errorState = (this.ngControl.invalid && this.ngControl.touched) ?? false;
|
|
173
|
-
this.stateChanges.next();
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
clear() {
|
|
177
|
-
this.filteredStrings = [];
|
|
178
|
-
this.searchFormControl.reset(null);
|
|
179
|
-
}
|
|
180
|
-
focus() {
|
|
181
|
-
this.elRef.nativeElement.querySelector("input")?.focus();
|
|
182
|
-
}
|
|
183
|
-
onOptionSelected(event) {
|
|
184
|
-
this.value = event.option.value;
|
|
185
|
-
this.filteredStrings = [];
|
|
186
|
-
}
|
|
187
|
-
onOptionActivated(event) {
|
|
188
|
-
this.activatedValue = event.option?.value;
|
|
189
|
-
}
|
|
190
|
-
onAutoCompleteClosed() {
|
|
191
|
-
if (this.activatedValue) {
|
|
192
|
-
this.value = this.activatedValue;
|
|
193
|
-
this.activatedValue = null;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
reset() {
|
|
197
|
-
this.value = null;
|
|
198
|
-
}
|
|
199
|
-
onFocusOut() {
|
|
200
|
-
if (this.filteredStrings.length === 1) {
|
|
201
|
-
this.activatedValue = this.filteredStrings[0];
|
|
202
|
-
this.value = this.filteredStrings[0];
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
onTouched() {
|
|
206
|
-
this._onTouched();
|
|
207
|
-
this.stateChanges.next();
|
|
208
|
-
}
|
|
209
|
-
registerOnChange(fn) {
|
|
210
|
-
this._propagateChange = fn;
|
|
211
|
-
}
|
|
212
|
-
registerOnTouched(fn) {
|
|
213
|
-
this.onTouched = fn;
|
|
214
|
-
}
|
|
215
|
-
writeValue(obj) {
|
|
216
|
-
this.clear();
|
|
217
|
-
this.value = obj;
|
|
218
|
-
}
|
|
219
|
-
setDisabledState(isDisabled) {
|
|
220
|
-
this.disabled = isDisabled;
|
|
221
|
-
}
|
|
222
|
-
onContainerClick(event) {
|
|
223
|
-
if (event.target.tagName.toLowerCase() !== "input") {
|
|
224
|
-
this.focus();
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
setDescribedByIds(ids) {
|
|
228
|
-
this.describedBy = ids.join(" ");
|
|
229
|
-
}
|
|
230
|
-
validate(control) {
|
|
231
|
-
const selection = control.value;
|
|
232
|
-
if (typeof selection === "string" && selection.length < 1) {
|
|
233
|
-
return { incorrect: true };
|
|
234
|
-
}
|
|
235
|
-
return null;
|
|
236
|
-
}
|
|
237
|
-
_propagateChange = (_) => {
|
|
238
|
-
};
|
|
239
|
-
_onTouched = () => {
|
|
240
|
-
};
|
|
241
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MmAutocompleteInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i1.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component });
|
|
242
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MmAutocompleteInputComponent, selector: "mm-autocomplete", inputs: { dataSource: "dataSource", disabled: "disabled", placeholder: "placeholder", required: "required", prefix: "prefix" }, host: { properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy", "class.floating": "this.shouldLabelFloat" } }, providers: [
|
|
243
|
-
{
|
|
244
|
-
provide: NG_VALUE_ACCESSOR,
|
|
245
|
-
useExisting: forwardRef(() => MmAutocompleteInputComponent),
|
|
246
|
-
multi: true
|
|
247
|
-
},
|
|
248
|
-
{
|
|
249
|
-
provide: MatFormFieldControl,
|
|
250
|
-
useExisting: MmAutocompleteInputComponent
|
|
251
|
-
},
|
|
252
|
-
{
|
|
253
|
-
provide: NG_VALIDATORS,
|
|
254
|
-
useExisting: forwardRef(() => MmAutocompleteInputComponent),
|
|
255
|
-
multi: true
|
|
256
|
-
}
|
|
257
|
-
], viewQueries: [{ propertyName: "inputField", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\" [matAutocomplete]=\"auto\"\n [placeholder]=\"placeholder\" matInput>\n<mat-autocomplete #auto=\"matAutocomplete\"\n (closed)=\"onAutoCompleteClosed()\" (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let str of filteredStrings\" [value]=\"str\">\n {{str}}\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n", styles: ["span{opacity:0;transition:opacity .2s}:host.floating span{opacity:1}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
258
|
-
}
|
|
259
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MmAutocompleteInputComponent, decorators: [{
|
|
260
|
-
type: Component,
|
|
261
|
-
args: [{ selector: "mm-autocomplete", host: {
|
|
262
|
-
"[id]": "id",
|
|
263
|
-
"[attr.aria-describedby]": "describedBy"
|
|
264
|
-
}, providers: [
|
|
265
|
-
{
|
|
266
|
-
provide: NG_VALUE_ACCESSOR,
|
|
267
|
-
useExisting: forwardRef(() => MmAutocompleteInputComponent),
|
|
268
|
-
multi: true
|
|
269
|
-
},
|
|
270
|
-
{
|
|
271
|
-
provide: MatFormFieldControl,
|
|
272
|
-
useExisting: MmAutocompleteInputComponent
|
|
273
|
-
},
|
|
274
|
-
{
|
|
275
|
-
provide: NG_VALIDATORS,
|
|
276
|
-
useExisting: forwardRef(() => MmAutocompleteInputComponent),
|
|
277
|
-
multi: true
|
|
278
|
-
}
|
|
279
|
-
], template: "<input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\" [matAutocomplete]=\"auto\"\n [placeholder]=\"placeholder\" matInput>\n<mat-autocomplete #auto=\"matAutocomplete\"\n (closed)=\"onAutoCompleteClosed()\" (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let str of filteredStrings\" [value]=\"str\">\n {{str}}\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n", styles: ["span{opacity:0;transition:opacity .2s}:host.floating span{opacity:1}\n"] }]
|
|
280
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Injector }, { type: i1.FocusMonitor }], propDecorators: { id: [{
|
|
281
|
-
type: HostBinding
|
|
282
|
-
}], inputField: [{
|
|
283
|
-
type: ViewChild,
|
|
284
|
-
args: ["input"]
|
|
285
|
-
}], describedBy: [{
|
|
286
|
-
type: HostBinding,
|
|
287
|
-
args: ["attr.aria-describedby"]
|
|
288
|
-
}], dataSource: [{
|
|
289
|
-
type: Input
|
|
290
|
-
}], disabled: [{
|
|
291
|
-
type: Input
|
|
292
|
-
}], placeholder: [{
|
|
293
|
-
type: Input
|
|
294
|
-
}], required: [{
|
|
295
|
-
type: Input
|
|
296
|
-
}], prefix: [{
|
|
297
|
-
type: Input
|
|
298
|
-
}], shouldLabelFloat: [{
|
|
299
|
-
type: HostBinding,
|
|
300
|
-
args: ["class.floating"]
|
|
301
|
-
}] } });
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW0tYXV0b2NvbXBsZXRlLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lc2htYWtlcnMvc2hhcmVkLXVpL3NyYy9saWIvbW0tYXV0b2NvbXBsZXRlLWlucHV0L21tLWF1dG9jb21wbGV0ZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC11aS9zcmMvbGliL21tLWF1dG9jb21wbGV0ZS1pbnB1dC9tbS1hdXRvY29tcGxldGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFHVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFFWCxLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFHTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixTQUFTLEVBR1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNFLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7QUE2Qm5DLE1BQU0sT0FBTyw0QkFBNEI7SUFtQjlCO0lBQ1U7SUFDQTtJQXBCWCxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNWLGlCQUFpQixDQUFjO0lBQ3hDLFNBQVMsQ0FBVTtJQUNuQixlQUFlLEdBQWEsRUFBRSxDQUFDO0lBQy9CLFNBQVMsQ0FBbUI7SUFDNUIsVUFB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S0FBSztnQkFhSyxRQUFRO3NCQURsQixLQUFLO2dCQWdCSyxNQUFNO3NCQURoQixLQUFLO2dCQStCSyxnQkFBZ0I7c0JBRDFCLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBOZ0NvbnRyb2wsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29lcmNpb25cIjtcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudCwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XG5pbXBvcnQgeyBvZiwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2ExMXlcIjtcbmltcG9ydCB7IEF1dG9Db21wbGV0ZURhdGFTb3VyY2UgfSBmcm9tIFwiQG1lc2htYWtlcnMvc2hhcmVkLXNlcnZpY2VzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtbS1hdXRvY29tcGxldGVcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9tbS1hdXRvY29tcGxldGUtaW5wdXQuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL21tLWF1dG9jb21wbGV0ZS1pbnB1dC5jb21wb25lbnQuY3NzXCJdLFxuICBob3N0OiB7XG4gICAgXCJbaWRdXCI6IFwiaWRcIixcbiAgICBcIlthdHRyLmFyaWEtZGVzY3JpYmVkYnldXCI6IFwiZGVzY3JpYmVkQnlcIlxuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1tQXV0b2NvbXBsZXRlSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsXG4gICAgICB1c2VFeGlzdGluZzogTW1BdXRvY29tcGxldGVJbnB1dENvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1tQXV0b2NvbXBsZXRlSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTW1BdXRvY29tcGxldGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBEb0NoZWNrLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+LCBWYWxpZGF0b3Ige1xuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuO1xuICBwdWJsaWMgZmlsdGVyZWRTdHJpbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsO1xuICBwdWJsaWMgZXJyb3JTdGF0ZTogYm9vbGVhbjtcbiAgcHVibGljIGZvY3VzZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBASG9zdEJpbmRpbmcoKVxuICBwdWJsaWMgcmVhZG9ubHkgaWQgPSBgaWEtYXV0b2NvbXBsZXRlLSR7TW1BdXRvY29tcGxldGVJbnB1dENvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gIHB1YmxpYyB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRTdHJpbmc6IHN0cmluZyB8IG51bGw7XG4gIEBWaWV3Q2hpbGQoXCJpbnB1dFwiKSBwcml2YXRlIHJlYWRvbmx5IGlucHV0RmllbGQ6IE1hdElucHV0IHwgbnVsbDtcbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XCIpIHByaXZhdGUgZGVzY3JpYmVkQnkgPSBcIlwiO1xuICBwcml2YXRlIGFjdGl2YXRlZFZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZtOiBGb2N1c01vbml0b3JcbiAgKSB7XG4gICAgdGhpcy5uZ0NvbnRyb2wgPSBudWxsO1xuICAgIHRoaXMuZXJyb3JTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3NlbGVjdGVkU3RyaW5nID0gbnVsbDtcbiAgICB0aGlzLmlucHV0RmllbGQgPSBudWxsO1xuICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBudWxsO1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gXCJcIjtcbiAgICB0aGlzLl9wcmVmaXggPSBcIlwiO1xuXG4gICAgdGhpcy5zZWFyY2hGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICBmbS5tb25pdG9yKGVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpLnN1YnNjcmliZSgob3JpZ2luKSA9PiB7XG4gICAgICB0aGlzLmZvY3VzZWQgPSAhIW9yaWdpbjtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2RhdGFTb3VyY2U6IEF1dG9Db21wbGV0ZURhdGFTb3VyY2UgfCBudWxsO1xuXG4gIHB1YmxpYyBnZXQgZGF0YVNvdXJjZSgpOiBBdXRvQ29tcGxldGVEYXRhU291cmNlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2U7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGFTb3VyY2UodmFsdWU6IEF1dG9Db21wbGV0ZURhdGFTb3VyY2UgfCBudWxsKSB7XG4gICAgdGhpcy5fZGF0YVNvdXJjZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQoZGlzKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoZGlzKTtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaEZvcm1Db250cm9sLmVuYWJsZSgpO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0IHBsYWNlaG9sZGVyKHBsaDogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSBwbGg7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgcmVxdWlyZWQocmVxKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocmVxKTtcbiAgICBpZiAodGhpcy5pbnB1dEZpZWxkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuaW5wdXRGaWVsZC5yZXF1aXJlZCA9IHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9wcmVmaXg6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHByZWZpeCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wcmVmaXg7XG4gIH1cblxuICBwdWJsaWMgc2V0IHByZWZpeCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9wcmVmaXgpIHtcbiAgICAgIHRoaXMuX3ByZWZpeCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRTdHJpbmc7XG4gIH1cblxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX3NlbGVjdGVkU3RyaW5nKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZFN0cmluZyA9IHZhbHVlO1xuICAgICAgdGhpcy5zZWFyY2hGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlKHRoaXMuX3NlbGVjdGVkU3RyaW5nKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG4gPSB0aGlzLnNlYXJjaEZvcm1Db250cm9sLnZhbHVlO1xuICAgIHJldHVybiAhbjtcbiAgfVxuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmZsb2F0aW5nXCIpXG4gIHB1YmxpYyBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICAvLyBJZiBwcmVmaXggZGVmaW5lZCwgdXN1YWxseSB0aGlzIGlzIHVzZWQgZm9yIGEgY29kZSBzY2FubmVyLlxuICAgIC8vIFRoZSBnb2FsIGlzIHRvIHNlbGVjdCB0aGUgZW50aXR5IGluIGRpcmVjdCB3YXkuXG4gICAgaWYgKHRoaXMuX3ByZWZpeCkge1xuICAgICAgdGhpcy5zZWFyY2hGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgICAgZmlsdGVyKCh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSxcbiAgICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZS5zdGFydHNXaXRoKHRoaXMuX3ByZWZpeCkpLFxuICAgICAgICAgIHRhcCgoKSA9PiAodGhpcy52YWx1ZSA9IG51bGwpKSxcbiAgICAgICAgICB0YXAoKCkgPT4gKHRoaXMuaXNMb2FkaW5nID0gdHJ1ZSkpLFxuICAgICAgICAgIG1hcCgodmFsdWU6IHN0cmluZykgPT4gdGhpcy5fZGF0YVNvdXJjZT8ub25QcmVwcm9jZXNzU2VhcmNoU3RyaW5nKHZhbHVlKSA/PyBcIlwiKSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiB0aGlzLl9kYXRhU291cmNlPy5vbkZpbHRlcih2YWx1ZSkgPz8gb2YobnVsbCkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0U2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdFNldD8ubGlzdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0U2V0Lmxpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWUgPSByZXN1bHRTZXQubGlzdFswXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRTdHJpbmdzID0gcmVzdWx0U2V0Lmxpc3Q7XG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShyZXN1bHRTZXQuc2VhcmNoVGVybSwge1xuICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgdGhlIHNlYXJjaCBmdW5jdGlvbmFsaXR5IHdoZW4gc2VhcmNoIGJ5IGh1bWFuLlxuICAgIHRoaXMuc2VhcmNoRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgIHRhcCgoXykgPT4ge1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWRTdHJpbmdzID0gW107XG4gICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSAhPSBudWxsICYmIHZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoID49IDEpLFxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMuaXNMb2FkaW5nID0gdHJ1ZSkpLFxuICAgICAgICBtYXAoKHZhbHVlOiBzdHJpbmcpID0+IHRoaXMuX2RhdGFTb3VyY2U/Lm9uUHJlcHJvY2Vzc1NlYXJjaFN0cmluZyh2YWx1ZSkpLFxuICAgICAgICB0YXAoKHZhbHVlKSA9PiAodGhpcy52YWx1ZSA9IHZhbHVlKSksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlPy5vbkZpbHRlcihTdHJpbmcodmFsdWUpKSA/PyBvZihudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0U2V0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHRTZXQ/Lmxpc3QgIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWRTdHJpbmdzID0gcmVzdWx0U2V0Lmxpc3Q7XG4gICAgICAgICAgdGhpcy5zZWFyY2hGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHJlc3VsdFNldC5zZWFyY2hUZXJtLCB7XG4gICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcbiAgICB0aGlzLmZtLnN0b3BNb25pdG9yaW5nKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZXJyb3JTdGF0ZSA9ICh0aGlzLm5nQ29udHJvbC5pbnZhbGlkICYmIHRoaXMubmdDb250cm9sLnRvdWNoZWQpID8/IGZhbHNlO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcmVkU3RyaW5ncyA9IFtdO1xuICAgIHRoaXMuc2VhcmNoRm9ybUNvbnRyb2wucmVzZXQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKT8uZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk9wdGlvblNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IGV2ZW50Lm9wdGlvbi52YWx1ZTtcbiAgICB0aGlzLmZpbHRlcmVkU3RyaW5ncyA9IFtdO1xuICB9XG5cbiAgcHVibGljIG9uT3B0aW9uQWN0aXZhdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZhdGVkVmFsdWUgPSBldmVudC5vcHRpb24/LnZhbHVlO1xuICB9XG5cbiAgcHVibGljIG9uQXV0b0NvbXBsZXRlQ2xvc2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2YXRlZFZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5hY3RpdmF0ZWRWYWx1ZTtcbiAgICAgIHRoaXMuYWN0aXZhdGVkVmFsdWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBvbkZvY3VzT3V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbHRlcmVkU3RyaW5ncy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVkVmFsdWUgPSB0aGlzLmZpbHRlcmVkU3RyaW5nc1swXTtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmZpbHRlcmVkU3RyaW5nc1swXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Ub3VjaGVkKCk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHRoaXMudmFsdWUgPSBvYmo7XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICgoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gXCJpbnB1dFwiKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oXCIgXCIpO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHNlbGVjdGlvbjogYW55ID0gY29udHJvbC52YWx1ZTtcbiAgICBpZiAodHlwZW9mIHNlbGVjdGlvbiA9PT0gXCJzdHJpbmdcIiAmJiBzZWxlY3Rpb24ubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuIHsgaW5jb3JyZWN0OiB0cnVlIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHtcbiAgfTtcbn1cbiIsIjxpbnB1dCAjaW5wdXQgKGJsdXIpPVwib25Ub3VjaGVkKClcIiAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaEZvcm1Db250cm9sXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBtYXRJbnB1dD5cbjxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgIChjbG9zZWQpPVwib25BdXRvQ29tcGxldGVDbG9zZWQoKVwiIChvcHRpb25BY3RpdmF0ZWQpPVwib25PcHRpb25BY3RpdmF0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQpXCI+XG4gIDxtYXQtb3B0aW9uICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJpcy1sb2FkaW5nXCI+XG4gICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiNTBcIj48L21hdC1zcGlubmVyPlxuICA8L21hdC1vcHRpb24+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHN0ciBvZiBmaWx0ZXJlZFN0cmluZ3NcIiBbdmFsdWVdPVwic3RyXCI+XG4gICAgICB7e3N0cn19XG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cbiJdfQ==
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { NavigationEnd, PRIMARY_OUTLET } from '@angular/router';
|
|
3
|
-
import { filter, map } from 'rxjs/operators';
|
|
4
|
-
import { BreadcrumbData } from "../services/breadcrumbData";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/router";
|
|
7
|
-
import * as i2 from "@meshmakers/shared-services";
|
|
8
|
-
import * as i3 from "@angular/common";
|
|
9
|
-
import * as i4 from "@angular/material/list";
|
|
10
|
-
export class MmBreadcrumbComponent {
|
|
11
|
-
activatedRoute;
|
|
12
|
-
router;
|
|
13
|
-
breadcrumbService;
|
|
14
|
-
breadcrumbData = [];
|
|
15
|
-
fontSize = '18px';
|
|
16
|
-
fontColor = '#0275d8';
|
|
17
|
-
lastLinkColor = '#000';
|
|
18
|
-
symbol = ' / ';
|
|
19
|
-
constructor(activatedRoute, router, breadcrumbService) {
|
|
20
|
-
this.activatedRoute = activatedRoute;
|
|
21
|
-
this.router = router;
|
|
22
|
-
this.breadcrumbService = breadcrumbService;
|
|
23
|
-
this.breadCrumbData();
|
|
24
|
-
}
|
|
25
|
-
ngOnInit() {
|
|
26
|
-
this.breadcrumbService.breadcrumbLabels.subscribe((labelData) => {
|
|
27
|
-
Object.entries(labelData).forEach(([key, value]) => {
|
|
28
|
-
this.breadcrumbData.forEach((breadcrumbData) => {
|
|
29
|
-
const labelParams = breadcrumbData.labelTemplate.match(/[^{{]+(?=}})/g);
|
|
30
|
-
if (labelParams) {
|
|
31
|
-
for (const labelParam of labelParams) {
|
|
32
|
-
if (labelParam === key) {
|
|
33
|
-
breadcrumbData.label = breadcrumbData.labelTemplate.replace('{{' + labelParam + '}}', value);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
this.breadcrumbService.newBreadcrumb.subscribe((breadcrumb) => {
|
|
41
|
-
if (breadcrumb.length > 0) {
|
|
42
|
-
this.updateData(this.activatedRoute, breadcrumb);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
breadCrumbData() {
|
|
47
|
-
this.router.events
|
|
48
|
-
.pipe(filter((event) => event instanceof NavigationEnd))
|
|
49
|
-
.pipe(map(() => this.activatedRoute))
|
|
50
|
-
.pipe(map((route) => {
|
|
51
|
-
while (route.firstChild) {
|
|
52
|
-
route = route.firstChild;
|
|
53
|
-
}
|
|
54
|
-
return route;
|
|
55
|
-
}))
|
|
56
|
-
.pipe(filter((route) => route.outlet === PRIMARY_OUTLET))
|
|
57
|
-
.subscribe((route) => {
|
|
58
|
-
this.updateData(route, null);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
updateData(route, newBreadcrumb) {
|
|
62
|
-
if (route.snapshot.data['breadcrumb'] || newBreadcrumb) {
|
|
63
|
-
const data = route.snapshot.data['breadcrumb'] ? route.snapshot.data['breadcrumb'] : newBreadcrumb;
|
|
64
|
-
const breadcrumb = JSON.parse(JSON.stringify(data));
|
|
65
|
-
const breadcrumbData = new Array();
|
|
66
|
-
breadcrumb.forEach((crumb) => {
|
|
67
|
-
const breadcrumbDataItem = new BreadcrumbData(crumb.label, crumb.label, crumb.url);
|
|
68
|
-
breadcrumbData.push(breadcrumbDataItem);
|
|
69
|
-
if (breadcrumbDataItem.url) {
|
|
70
|
-
const urlChunks = breadcrumbDataItem.url.split('/');
|
|
71
|
-
for (const chunk of urlChunks) {
|
|
72
|
-
if (chunk.includes(':')) {
|
|
73
|
-
const paramID = chunk.replace(':', '');
|
|
74
|
-
const routerParamID = route.snapshot.params[paramID];
|
|
75
|
-
breadcrumbDataItem.url = crumb.url.replace(`:${paramID}`, routerParamID);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
const labelParams = breadcrumbDataItem.labelTemplate.match(/[^{{]+(?=}})/g);
|
|
80
|
-
if (labelParams) {
|
|
81
|
-
for (const labelParam of labelParams) {
|
|
82
|
-
const routerParamID = decodeURIComponent(route.snapshot.params[labelParam.trim()]);
|
|
83
|
-
if (routerParamID) {
|
|
84
|
-
breadcrumbDataItem.label = breadcrumbDataItem.labelTemplate.replace('{{' + labelParam + '}}', routerParamID);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
breadcrumbDataItem.label = breadcrumbDataItem.labelTemplate.replace('{{' + labelParam + '}}', '');
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
this.breadcrumbData = breadcrumbData;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
this.breadcrumbData = [];
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MmBreadcrumbComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.BreadcrumbService }], target: i0.ɵɵFactoryTarget.Component });
|
|
99
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MmBreadcrumbComponent, selector: "mm-breadcrumb", inputs: { fontSize: "fontSize", fontColor: "fontColor", lastLinkColor: "lastLinkColor", symbol: "symbol" }, ngImport: i0, template: "<mat-list class=\"mat-bread-crumb-list\" *ngIf=\"breadcrumbData.length\">\n <mat-list-item>\n <span class=\"mat-bread-crumb-spacer\">\n <span *ngFor=\"let item of breadcrumbData; let i = index\">\n <a *ngIf=\"item?.url\" [routerLink]=\"item?.url\"\n class=\"mat-bread-crumb-list-item\">{{ item.label }}</a>\n <span *ngIf=\"!item?.url\" class=\"mat-bread-crumb-list-item\">{{ item.label }}</span>\n <span *ngIf=\"breadcrumbData.length !== i+1\" class=\"mat-bread-crumb-list-item\">{{symbol}}</span>\n </span>\n </span>\n </mat-list-item>\n</mat-list>\n", styles: [".mat-bread-crumb{height:30px}.mat-bread-crumb-list{padding-bottom:10px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
100
|
-
}
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MmBreadcrumbComponent, decorators: [{
|
|
102
|
-
type: Component,
|
|
103
|
-
args: [{ selector: 'mm-breadcrumb', template: "<mat-list class=\"mat-bread-crumb-list\" *ngIf=\"breadcrumbData.length\">\n <mat-list-item>\n <span class=\"mat-bread-crumb-spacer\">\n <span *ngFor=\"let item of breadcrumbData; let i = index\">\n <a *ngIf=\"item?.url\" [routerLink]=\"item?.url\"\n class=\"mat-bread-crumb-list-item\">{{ item.label }}</a>\n <span *ngIf=\"!item?.url\" class=\"mat-bread-crumb-list-item\">{{ item.label }}</span>\n <span *ngIf=\"breadcrumbData.length !== i+1\" class=\"mat-bread-crumb-list-item\">{{symbol}}</span>\n </span>\n </span>\n </mat-list-item>\n</mat-list>\n", styles: [".mat-bread-crumb{height:30px}.mat-bread-crumb-list{padding-bottom:10px}\n"] }]
|
|
104
|
-
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.BreadcrumbService }], propDecorators: { fontSize: [{
|
|
105
|
-
type: Input
|
|
106
|
-
}], fontColor: [{
|
|
107
|
-
type: Input
|
|
108
|
-
}], lastLinkColor: [{
|
|
109
|
-
type: Input
|
|
110
|
-
}], symbol: [{
|
|
111
|
-
type: Input
|
|
112
|
-
}] } });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW0tYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC11aS9zcmMvbGliL21tLWJyZWFkY3J1bWIvbW0tYnJlYWRjcnVtYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC11aS9zcmMvbGliL21tLWJyZWFkY3J1bWIvbW0tYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQWtCLGFBQWEsRUFBRSxjQUFjLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBTzVELE1BQU0sT0FBTyxxQkFBcUI7SUFRYjtJQUNBO0lBQ0E7SUFUVCxjQUFjLEdBQXFCLEVBQUUsQ0FBQztJQUN2QyxRQUFRLEdBQUcsTUFBTSxDQUFDO0lBQ2xCLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDdEIsYUFBYSxHQUFHLE1BQU0sQ0FBQztJQUN2QixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRXhCLFlBQ21CLGNBQThCLEVBQzlCLE1BQWMsRUFDZCxpQkFBb0M7UUFGcEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRXJELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMs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QyxDQUFDO3dCQUMvRyxDQUFDOzZCQUFNLENBQUM7NEJBQ04sa0JBQWtCLENBQUMsS0FBSyxHQUFHLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLFVBQVUsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3BHLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO3dHQTVGVSxxQkFBcUI7NEZBQXJCLHFCQUFxQixpS0NYbEMsOG5CQVlBOzs0RkREYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsZUFBZTt3SUFNaEIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUFJJTUFSWV9PVVRMRVQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCcmVhZGNydW1iLCBCcmVhZGNydW1iU2VydmljZSB9IGZyb20gJ0BtZXNobWFrZXJzL3NoYXJlZC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJyZWFkY3J1bWJEYXRhIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2JyZWFkY3J1bWJEYXRhXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21tLWJyZWFkY3J1bWInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW0tYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9tbS1icmVhZGNydW1iLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIE1tQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBicmVhZGNydW1iRGF0YTogQnJlYWRjcnVtYkRhdGFbXSA9IFtdO1xuICBASW5wdXQoKSBmb250U2l6ZSA9ICcxOHB4JztcbiAgQElucHV0KCkgZm9udENvbG9yID0gJyMwMjc1ZDgnO1xuICBASW5wdXQoKSBsYXN0TGlua0NvbG9yID0gJyMwMDAnO1xuICBASW5wdXQoKSBzeW1ib2wgPSAnIC8gJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYnJlYWRDcnVtYkRhdGEoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2UuYnJlYWRjcnVtYkxhYmVscy5zdWJzY3JpYmUoKGxhYmVsRGF0YTogb2JqZWN0KSA9PiB7XG4gICAgICBPYmplY3QuZW50cmllcyhsYWJlbERhdGEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICB0aGlzLmJyZWFkY3J1bWJEYXRhLmZvckVhY2goKGJyZWFkY3J1bWJEYXRhOiBCcmVhZGNydW1iRGF0YSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGxhYmVsUGFyYW1zID0gYnJlYWRjcnVtYkRhdGEubGFiZWxUZW1wbGF0ZS5tYXRjaCgvW157e10rKD89fX0pL2cpO1xuICAgICAgICAgIGlmIChsYWJlbFBhcmFtcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBsYWJlbFBhcmFtIG9mIGxhYmVsUGFyYW1zKSB7XG4gICAgICAgICAgICAgIGlmIChsYWJlbFBhcmFtID09PSBrZXkpIHtcbiAgICAgICAgICAgICAgICBicmVhZGNydW1iRGF0YS5sYWJlbCA9IGJyZWFkY3J1bWJEYXRhLmxhYmVsVGVtcGxhdGUucmVwbGFjZSgne3snICsgbGFiZWxQYXJhbSArICd9fScsICh2YWx1ZSBhcyBzdHJpbmcpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2UubmV3QnJlYWRjcnVtYi5zdWJzY3JpYmUoKGJyZWFkY3J1bWI6IEJyZWFkY3J1bWJbXSkgPT4ge1xuICAgICAgaWYgKGJyZWFkY3J1bWIubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnVwZGF0ZURhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSwgYnJlYWRjcnVtYik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBicmVhZENydW1iRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAucGlwZShtYXAoKCkgPT4gdGhpcy5hY3RpdmF0ZWRSb3V0ZSkpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyb3V0ZSkgPT4ge1xuICAgICAgICAgIHdoaWxlIChyb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICByb3V0ZSA9IHJvdXRlLmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByb3V0ZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKGZpbHRlcigocm91dGUpID0+IHJvdXRlLm91dGxldCA9PT0gUFJJTUFSWV9PVVRMRVQpKVxuICAgICAgLnN1YnNjcmliZSgocm91dGUpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKHJvdXRlLCBudWxsKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEYXRhKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgbmV3QnJlYWRjcnVtYjogQnJlYWRjcnVtYltdIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChyb3V0ZS5zbmFwc2hvdC5kYXRhWydicmVhZGNydW1iJ10gfHwgbmV3QnJlYWRjcnVtYikge1xuICAgICAgY29uc3QgZGF0YSA9IHJvdXRlLnNuYXBzaG90LmRhdGFbJ2JyZWFkY3J1bWInXSA/IHJvdXRlLnNuYXBzaG90LmRhdGFbJ2JyZWFkY3J1bWInXSA6IG5ld0JyZWFkY3J1bWI7XG4gICAgICBjb25zdCBicmVhZGNydW1iID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSkgYXMgQnJlYWRjcnVtYltdO1xuICAgICAgY29uc3QgYnJlYWRjcnVtYkRhdGEgPSBuZXcgQXJyYXk8QnJlYWRjcnVtYkRhdGE+KCk7XG4gICAgICBicmVhZGNydW1iLmZvckVhY2goKGNydW1iIDogQnJlYWRjcnVtYikgPT4ge1xuICAgICAgICBjb25zdCBicmVhZGNydW1iRGF0YUl0ZW0gPSBuZXcgQnJlYWRjcnVtYkRhdGEoY3J1bWIubGFiZWwsIGNydW1iLmxhYmVsLCBjcnVtYi51cmwpO1xuICAgICAgICBicmVhZGNydW1iRGF0YS5wdXNoKGJyZWFkY3J1bWJEYXRhSXRlbSk7XG5cbiAgICAgICAgaWYgKGJyZWFkY3J1bWJEYXRhSXRlbS51cmwpIHtcbiAgICAgICAgICBjb25zdCB1cmxDaHVua3MgPSBicmVhZGNydW1iRGF0YUl0ZW0udXJsLnNwbGl0KCcvJyk7XG4gICAgICAgICAgZm9yIChjb25zdCBjaHVuayBvZiB1cmxDaHVua3MpIHtcbiAgICAgICAgICAgIGlmIChjaHVuay5pbmNsdWRlcygnOicpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtSUQgPSBjaHVuay5yZXBsYWNlKCc6JywgJycpO1xuICAgICAgICAgICAgICBjb25zdCByb3V0ZXJQYXJhbUlEID0gcm91dGUuc25hcHNob3QucGFyYW1zW3BhcmFtSURdIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGFJdGVtLnVybCA9IGNydW1iLnVybC5yZXBsYWNlKGA6JHtwYXJhbUlEfWAsIHJvdXRlclBhcmFtSUQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhYmVsUGFyYW1zID0gYnJlYWRjcnVtYkRhdGFJdGVtLmxhYmVsVGVtcGxhdGUubWF0Y2goL1tee3tdKyg/PX19KS9nKTtcbiAgICAgICAgaWYgKGxhYmVsUGFyYW1zKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBsYWJlbFBhcmFtIG9mIGxhYmVsUGFyYW1zKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZXJQYXJhbUlEID0gZGVjb2RlVVJJQ29tcG9uZW50KChyb3V0ZS5zbmFwc2hvdC5wYXJhbXNbbGFiZWxQYXJhbS50cmltKCldIGFzIHN0cmluZykpO1xuICAgICAgICAgICAgaWYgKHJvdXRlclBhcmFtSUQpIHtcbiAgICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGFJdGVtLmxhYmVsID0gYnJlYWRjcnVtYkRhdGFJdGVtLmxhYmVsVGVtcGxhdGUucmVwbGFjZSgne3snICsgbGFiZWxQYXJhbSArICd9fScsIHJvdXRlclBhcmFtSUQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGFJdGVtLmxhYmVsID0gYnJlYWRjcnVtYkRhdGFJdGVtLmxhYmVsVGVtcGxhdGUucmVwbGFjZSgne3snICsgbGFiZWxQYXJhbSArICd9fScsICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5icmVhZGNydW1iRGF0YSA9IGJyZWFkY3J1bWJEYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJyZWFkY3J1bWJEYXRhID0gW107XG4gICAgfVxuICB9XG59XG4iLCI8bWF0LWxpc3QgY2xhc3M9XCJtYXQtYnJlYWQtY3J1bWItbGlzdFwiICpuZ0lmPVwiYnJlYWRjcnVtYkRhdGEubGVuZ3RoXCI+XG4gIDxtYXQtbGlzdC1pdGVtPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtYnJlYWQtY3J1bWItc3BhY2VyXCI+XG4gICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2YgYnJlYWRjcnVtYkRhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPGEgKm5nSWY9XCJpdGVtPy51cmxcIiBbcm91dGVyTGlua109XCJpdGVtPy51cmxcIlxuICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1icmVhZC1jcnVtYi1saXN0LWl0ZW1cIj57eyBpdGVtLmxhYmVsIH19PC9hPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtPy51cmxcIiBjbGFzcz1cIm1hdC1icmVhZC1jcnVtYi1saXN0LWl0ZW1cIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImJyZWFkY3J1bWJEYXRhLmxlbmd0aCAhPT0gaSsxXCIgY2xhc3M9XCJtYXQtYnJlYWQtY3J1bWItbGlzdC1pdGVtXCI+e3tzeW1ib2x9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gIDwvbWF0LWxpc3QtaXRlbT5cbjwvbWF0LWxpc3Q+XG4iXX0=
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Component, Inject } from '@angular/core';
|
|
2
|
-
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
-
import { ButtonTypes, DialogType } from "../models/confirmation";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/material/dialog";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "@angular/material/button";
|
|
8
|
-
export class MmConfirmationWindowComponent {
|
|
9
|
-
dialogRef;
|
|
10
|
-
data;
|
|
11
|
-
button1Text;
|
|
12
|
-
button1Result;
|
|
13
|
-
button2Text;
|
|
14
|
-
button2Result;
|
|
15
|
-
button3Text;
|
|
16
|
-
button3Result;
|
|
17
|
-
constructor(dialogRef, data) {
|
|
18
|
-
this.dialogRef = dialogRef;
|
|
19
|
-
this.data = data;
|
|
20
|
-
this.button2Text = null;
|
|
21
|
-
this.button2Result = null;
|
|
22
|
-
this.button3Text = null;
|
|
23
|
-
this.button3Result = null;
|
|
24
|
-
if (data.dialogType === DialogType.OkCancel) {
|
|
25
|
-
this.button1Text = 'OK';
|
|
26
|
-
this.button1Result = ButtonTypes.Ok;
|
|
27
|
-
this.button2Text = 'Cancel';
|
|
28
|
-
this.button2Result = ButtonTypes.Cancel;
|
|
29
|
-
}
|
|
30
|
-
else if (data.dialogType === DialogType.YesNoCancel) {
|
|
31
|
-
this.button1Text = 'Yes';
|
|
32
|
-
this.button1Result = ButtonTypes.Yes;
|
|
33
|
-
this.button2Text = 'No';
|
|
34
|
-
this.button2Result = ButtonTypes.No;
|
|
35
|
-
this.button3Text = 'Cancel';
|
|
36
|
-
this.button3Result = ButtonTypes.Cancel;
|
|
37
|
-
}
|
|
38
|
-
else if (data.dialogType === DialogType.Ok) {
|
|
39
|
-
this.button1Text = 'OK';
|
|
40
|
-
this.button1Result = ButtonTypes.Ok;
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
this.button1Text = 'Yes';
|
|
44
|
-
this.button1Result = ButtonTypes.Yes;
|
|
45
|
-
this.button2Text = 'No';
|
|
46
|
-
this.button2Result = ButtonTypes.No;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
ngOnInit() { }
|
|
50
|
-
onButton1() {
|
|
51
|
-
this.dialogRef.close({
|
|
52
|
-
result: this.button1Result
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
onButton2() {
|
|
56
|
-
this.dialogRef.close({
|
|
57
|
-
result: this.button2Result
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
onButton3() {
|
|
61
|
-
this.dialogRef.close({
|
|
62
|
-
result: this.button3Result
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MmConfirmationWindowComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
66
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MmConfirmationWindowComponent, selector: "mm-confirmation-window", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>{{data.message}}</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onButton1()\" class=\"primary-button\" mat-flat-button>{{button1Text}}</button>\n <button (click)=\"onButton2()\" *ngIf=\"button2Text\" mat-flat-button>{{button2Text}}</button>\n <button (click)=\"onButton3()\" *ngIf=\"button3Text\" mat-flat-button>{{button3Text}}</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] });
|
|
67
|
-
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MmConfirmationWindowComponent, decorators: [{
|
|
69
|
-
type: Component,
|
|
70
|
-
args: [{ selector: 'mm-confirmation-window', template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>{{data.message}}</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onButton1()\" class=\"primary-button\" mat-flat-button>{{button1Text}}</button>\n <button (click)=\"onButton2()\" *ngIf=\"button2Text\" mat-flat-button>{{button2Text}}</button>\n <button (click)=\"onButton3()\" *ngIf=\"button3Text\" mat-flat-button>{{button3Text}}</button>\n</div>\n" }]
|
|
71
|
-
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
72
|
-
type: Inject,
|
|
73
|
-
args: [MAT_DIALOG_DATA]
|
|
74
|
-
}] }] });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW0tY29uZmlybWF0aW9uLXdpbmRvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC11aS9zcmMvbGliL21tLWNvbmZpcm1hdGlvbi13aW5kb3cvbW0tY29uZmlybWF0aW9uLXdpbmRvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC11aS9zcmMvbGliL21tLWNvbmZpcm1hdGlvbi13aW5kb3cvbW0tY29uZmlybWF0aW9uLXdpbmRvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBQyxXQUFXLEVBQW9ELFVBQVUsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7OztBQU9qSCxNQUFNLE9BQU8sNkJBQTZCO0lBU3JCO0lBQ2U7SUFUbEMsV0FBVyxDQUFTO0lBQ3BCLGFBQWEsQ0FBYztJQUMzQixXQUFXLENBQWdCO0lBQzNCLGFBQWEsQ0FBcUI7SUFDbEMsV0FBVyxDQUFnQjtJQUMzQixhQUFhLENBQXFCO0lBRWxDLFlBQ21CLFNBQXNELEVBQ3ZDLElBQTRCO1FBRDNDLGNBQVMsR0FBVCxTQUFTLENBQTZDO1FBQ3ZDLFNBQUksR0FBSixJQUFJLENBQXdCO1FBRTVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTFCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUMxQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUMxQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUSxLQUFVLENBQUM7SUFFbkIsU0FBUztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFFO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFFO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFFO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNFLENBQUMsQ0FBQztJQUNsQyxDQUFDO3dHQTFEVSw2QkFBNkIsOENBVTlCLGVBQWU7NEZBVmQsNkJBQTZCLDhEQ1QxQyw0Y0FPQTs7NEZERWEsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLHdCQUF3Qjs7MEJBYy9CLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7QnV0dG9uVHlwZXMsIENvbmZpcm1hdGlvbldpbmRvd0RhdGEsIENvbmZpcm1hdGlvbldpbmRvd1Jlc3VsdCwgRGlhbG9nVHlwZX0gZnJvbSBcIi4uL21vZGVscy9jb25maXJtYXRpb25cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW0tY29uZmlybWF0aW9uLXdpbmRvdycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tbS1jb25maXJtYXRpb24td2luZG93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW0tY29uZmlybWF0aW9uLXdpbmRvdy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTW1Db25maXJtYXRpb25XaW5kb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBidXR0b24xVGV4dDogc3RyaW5nO1xuICBidXR0b24xUmVzdWx0OiBCdXR0b25UeXBlcztcbiAgYnV0dG9uMlRleHQ6IHN0cmluZyB8IG51bGw7XG4gIGJ1dHRvbjJSZXN1bHQ6IEJ1dHRvblR5cGVzIHwgbnVsbDtcbiAgYnV0dG9uM1RleHQ6IHN0cmluZyB8IG51bGw7XG4gIGJ1dHRvbjNSZXN1bHQ6IEJ1dHRvblR5cGVzIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE1tQ29uZmlybWF0aW9uV2luZG93Q29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IENvbmZpcm1hdGlvbldpbmRvd0RhdGFcbiAgKSB7XG4gICAgdGhpcy5idXR0b24yVGV4dCA9IG51bGw7XG4gICAgdGhpcy5idXR0b24yUmVzdWx0ID0gbnVsbDtcbiAgICB0aGlzLmJ1dHRvbjNUZXh0ID0gbnVsbDtcbiAgICB0aGlzLmJ1dHRvbjNSZXN1bHQgPSBudWxsO1xuXG4gICAgaWYgKGRhdGEuZGlhbG9nVHlwZSA9PT0gRGlhbG9nVHlwZS5Pa0NhbmNlbCkge1xuICAgICAgdGhpcy5idXR0b24xVGV4dCA9ICdPSyc7XG4gICAgICB0aGlzLmJ1dHRvbjFSZXN1bHQgPSBCdXR0b25UeXBlcy5PaztcbiAgICAgIHRoaXMuYnV0dG9uMlRleHQgPSAnQ2FuY2VsJztcbiAgICAgIHRoaXMuYnV0dG9uMlJlc3VsdCA9IEJ1dHRvblR5cGVzLkNhbmNlbDtcbiAgICB9IGVsc2UgaWYgKGRhdGEuZGlhbG9nVHlwZSA9PT0gRGlhbG9nVHlwZS5ZZXNOb0NhbmNlbCkge1xuICAgICAgdGhpcy5idXR0b24xVGV4dCA9ICdZZXMnO1xuICAgICAgdGhpcy5idXR0b24xUmVzdWx0ID0gQnV0dG9uVHlwZXMuWWVzO1xuICAgICAgdGhpcy5idXR0b24yVGV4dCA9ICdObyc7XG4gICAgICB0aGlzLmJ1dHRvbjJSZXN1bHQgPSBCdXR0b25UeXBlcy5ObztcbiAgICAgIHRoaXMuYnV0dG9uM1RleHQgPSAnQ2FuY2VsJztcbiAgICAgIHRoaXMuYnV0dG9uM1Jlc3VsdCA9IEJ1dHRvblR5cGVzLkNhbmNlbDtcbiAgICB9IGVsc2UgaWYgKGRhdGEuZGlhbG9nVHlwZSA9PT0gRGlhbG9nVHlwZS5Paykge1xuICAgICAgdGhpcy5idXR0b24xVGV4dCA9ICdPSyc7XG4gICAgICB0aGlzLmJ1dHRvbjFSZXN1bHQgPSBCdXR0b25UeXBlcy5PaztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idXR0b24xVGV4dCA9ICdZZXMnO1xuICAgICAgdGhpcy5idXR0b24xUmVzdWx0ID0gQnV0dG9uVHlwZXMuWWVzO1xuICAgICAgdGhpcy5idXR0b24yVGV4dCA9ICdObyc7XG4gICAgICB0aGlzLmJ1dHRvbjJSZXN1bHQgPSBCdXR0b25UeXBlcy5ObztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgb25CdXR0b24xKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCh7XG4gICAgICByZXN1bHQ6IHRoaXMuYnV0dG9uMVJlc3VsdFxuICAgIH0gYXMgQ29uZmlybWF0aW9uV2luZG93UmVzdWx0KSk7XG4gIH1cblxuICBvbkJ1dHRvbjIoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKHtcbiAgICAgIHJlc3VsdDogdGhpcy5idXR0b24yUmVzdWx0XG4gICAgfSBhcyBDb25maXJtYXRpb25XaW5kb3dSZXN1bHQpKTtcbiAgfVxuXG4gIG9uQnV0dG9uMygpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgoe1xuICAgICAgcmVzdWx0OiB0aGlzLmJ1dHRvbjNSZXN1bHRcbiAgICB9IGFzIENvbmZpcm1hdGlvbldpbmRvd1Jlc3VsdCkpO1xuICB9XG59XG4iLCI8aDEgbWF0LWRpYWxvZy10aXRsZT57e2RhdGEudGl0bGV9fTwvaDE+XG48ZGl2IG1hdC1kaWFsb2ctY29udGVudD57e2RhdGEubWVzc2FnZX19PC9kaXY+XG48ZGl2IHN0eWxlPVwianVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcIiBtYXQtZGlhbG9nLWFjdGlvbnM+XG4gIDxidXR0b24gKGNsaWNrKT1cIm9uQnV0dG9uMSgpXCIgY2xhc3M9XCJwcmltYXJ5LWJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbj57e2J1dHRvbjFUZXh0fX08L2J1dHRvbj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwib25CdXR0b24yKClcIiAqbmdJZj1cImJ1dHRvbjJUZXh0XCIgbWF0LWZsYXQtYnV0dG9uPnt7YnV0dG9uMlRleHR9fTwvYnV0dG9uPlxuICA8YnV0dG9uIChjbGljayk9XCJvbkJ1dHRvbjMoKVwiICpuZ0lmPVwiYnV0dG9uM1RleHRcIiBtYXQtZmxhdC1idXR0b24+e3tidXR0b24zVGV4dH19PC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|