@energycap/components 0.44.8 → 0.44.9-Angular19Upgrade.20260217-1620
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/energycap-components.mjs +379 -354
- package/fesm2022/energycap-components.mjs.map +1 -1
- package/lib/controls/button/copy-button-base.directive.d.ts +1 -1
- package/lib/controls/date-input/date-input.component.d.ts +1 -1
- package/lib/controls/form-control-base.d.ts +1 -1
- package/lib/core/date-time-helper.d.ts +2 -2
- package/lib/display/hierarchy/hierarchy-base.d.ts +1 -1
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +1 -1
- package/lib/display/resizable/resizable-base.d.ts +1 -1
- package/lib/shared/display/pipes/date-display.pipe.d.ts +1 -1
- package/lib/shared/page/page-base/page-base.component.d.ts +1 -1
- package/lib/shared/testing/public-mocks.spec.d.ts +1 -1
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +1 -1
- package/package.json +1 -3
- package/schematics/utilities/typescript.js +3 -4
- package/schematics/utilities/typescript.js.map +1 -1
- package/schematics/utilities/workspace.d.ts +0 -8
- package/schematics/utilities/workspace.js +48 -71
- package/schematics/utilities/workspace.js.map +1 -1
- package/esm2022/energycap-components.mjs +0 -5
- package/esm2022/lib/components.module.mjs +0 -425
- package/esm2022/lib/controls/banner/banner.component.mjs +0 -112
- package/esm2022/lib/controls/button/button.component.mjs +0 -114
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2022/lib/controls/button/copy-button.directive.mjs +0 -28
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -91
- package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -251
- package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -2
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +0 -38
- package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
- package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -466
- package/esm2022/lib/controls/date-input/date-input.types.mjs +0 -44
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -110
- package/esm2022/lib/controls/form-control-base.mjs +0 -151
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2022/lib/controls/help-popover/help-popover.component.mjs +0 -31
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2022/lib/controls/link-button/link-button.component.mjs +0 -11
- package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2022/lib/controls/navigation/link-item.mjs +0 -2
- package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2022/lib/controls/navigation/nav-item.mjs +0 -2
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2022/lib/controls/radio-button/radio-button-option.mjs +0 -3
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2022/lib/controls/select/select.component.mjs +0 -88
- package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2022/lib/core/cache.service.mjs +0 -105
- package/esm2022/lib/core/custom-validators.mjs +0 -29
- package/esm2022/lib/core/date-time-helper.mjs +0 -228
- package/esm2022/lib/core/error.service.mjs +0 -61
- package/esm2022/lib/core/router-helper.service.mjs +0 -111
- package/esm2022/lib/core/scroll.service.mjs +0 -89
- package/esm2022/lib/core/telemetry-tracker.service.mjs +0 -16
- package/esm2022/lib/core/telemetry.service.mjs +0 -38
- package/esm2022/lib/core/validation-message.service.mjs +0 -185
- package/esm2022/lib/core/validation-patterns.mjs +0 -31
- package/esm2022/lib/core/window.service.mjs +0 -186
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -49
- package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2022/lib/display/dialog/dialog-content.mjs +0 -2
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2022/lib/display/dialog/dialog-types.mjs +0 -77
- package/esm2022/lib/display/dialog/dialog.component.mjs +0 -287
- package/esm2022/lib/display/dialog/dialog.service.mjs +0 -71
- package/esm2022/lib/display/help/help-types.mjs +0 -2
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +0 -54
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -65
- package/esm2022/lib/display/item-display/item-display.component.mjs +0 -83
- package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2022/lib/display/resizable/resizable.component.mjs +0 -57
- package/esm2022/lib/display/spinner/spinner.component.mjs +0 -12
- package/esm2022/lib/display/splash/splash.component.mjs +0 -61
- package/esm2022/lib/display/splash/splash.service.mjs +0 -35
- package/esm2022/lib/display/table/resizable-column.component.mjs +0 -20
- package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2022/lib/display/table/searchable-table.component.mjs +0 -344
- package/esm2022/lib/display/table/table-detail-row.component.mjs +0 -28
- package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2022/lib/display/table/table-master-header-row.component.mjs +0 -14
- package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2022/lib/display/table/table.component.mjs +0 -257
- package/esm2022/lib/display/tags/tag.mjs +0 -18
- package/esm2022/lib/display/tags/tags.component.mjs +0 -82
- package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2022/lib/display/toast/toast-types.mjs +0 -8
- package/esm2022/lib/display/toast/toast.service.mjs +0 -35
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2022/lib/display/tooltip/tooltip.component.mjs +0 -28
- package/esm2022/lib/display/tooltip/tooltip.service.mjs +0 -78
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2022/lib/display/tree/tree.component.mjs +0 -139
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -103
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
- package/esm2022/lib/shared/display/pipes/date-display-2.pipe.mjs +0 -39
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -51
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2022/lib/shared/display.mjs +0 -6
- package/esm2022/lib/shared/form-group.helper.mjs +0 -67
- package/esm2022/lib/shared/json-helper.mjs +0 -19
- package/esm2022/lib/shared/lodash-helper.mjs +0 -52
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2022/lib/shared/page/page-statuses.mjs +0 -23
- package/esm2022/lib/shared/page/page-title/page-title.component.mjs +0 -23
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +0 -38
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2022/lib/shared/testing/public-mocks.spec.mjs +0 -148
- package/esm2022/lib/shared/testing/spy-factory.spec.mjs +0 -40
- package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +0 -57
- package/esm2022/lib/shared/user-preference.service.mjs +0 -17
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +0 -68
- package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +0 -18
- package/esm2022/public-api.mjs +0 -115
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { forkJoin, lastValueFrom } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@ngx-translate/core";
|
|
5
|
-
import * as i2 from "../shared/display/pipes/date-display.pipe";
|
|
6
|
-
/**
|
|
7
|
-
* "Weak Type" describing interpolation parameters for NumericBox
|
|
8
|
-
*/
|
|
9
|
-
class NumericBoxInterpolationParameters {
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Service to take {@link ValidationErrors} and return meaningful error messages
|
|
13
|
-
*/
|
|
14
|
-
export class ValidationMessageService {
|
|
15
|
-
constructor(translate, dateDisplayPipe) {
|
|
16
|
-
this.translate = translate;
|
|
17
|
-
this.dateDisplayPipe = dateDisplayPipe;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Get meaningful error messages from {@link ValidationErrors}
|
|
21
|
-
*/
|
|
22
|
-
getErrorMessages(errors) {
|
|
23
|
-
/** Array of observables returned from the TranslateService. */
|
|
24
|
-
let translationObservables = new Array();
|
|
25
|
-
if (errors !== null) {
|
|
26
|
-
for (var errorKey in errors) {
|
|
27
|
-
// it would be nice to have typing on the ValidationErrors
|
|
28
|
-
let error = errors[errorKey];
|
|
29
|
-
switch (errorKey) {
|
|
30
|
-
case 'email':
|
|
31
|
-
translationObservables.push(this.translate.get('InvalidEmailValidationMessage_LC'));
|
|
32
|
-
break;
|
|
33
|
-
case 'required':
|
|
34
|
-
translationObservables.push(this.translate.get('is required'));
|
|
35
|
-
break;
|
|
36
|
-
case 'requiredPlural':
|
|
37
|
-
translationObservables.push(this.translate.get('RequiredPluralValidationMessage_LC'));
|
|
38
|
-
break;
|
|
39
|
-
case 'minlength':
|
|
40
|
-
translationObservables.push(this.translate
|
|
41
|
-
.get('MinLengthValidationMessage_LC', { minLength: error.requiredLength }));
|
|
42
|
-
break;
|
|
43
|
-
case 'maxlength':
|
|
44
|
-
translationObservables.push(this.translate
|
|
45
|
-
.get(`MaxLengthValidationMessage`, { maxLength: error.requiredLength }));
|
|
46
|
-
break;
|
|
47
|
-
case 'pattern':
|
|
48
|
-
translationObservables.push(this.translate.get('IncorrectFormat_LC'));
|
|
49
|
-
break;
|
|
50
|
-
case 'min':
|
|
51
|
-
translationObservables.push(this.translate
|
|
52
|
-
.get('MinValueValidationMessage_LC', { minValue: error.min }));
|
|
53
|
-
break;
|
|
54
|
-
case 'max':
|
|
55
|
-
translationObservables.push(this.translate
|
|
56
|
-
.get('MaxValueValidationMessage_LC', { maxValue: error.max }));
|
|
57
|
-
break;
|
|
58
|
-
case 'zipCodeInvalidFormat':
|
|
59
|
-
translationObservables.push(this.translate.get('must be 5–9 numbers'));
|
|
60
|
-
break;
|
|
61
|
-
case 'postalCodeInvalidFormat':
|
|
62
|
-
translationObservables.push(this.translate
|
|
63
|
-
.get('must be 6 characters, alternating letters and numbers'));
|
|
64
|
-
break;
|
|
65
|
-
case 'zipCodeNotFound':
|
|
66
|
-
translationObservables.push(this.translate
|
|
67
|
-
.get('ZipCodeNotFoundValidationMessage_LC'));
|
|
68
|
-
break;
|
|
69
|
-
// Custom validator from the NumericboxComponent
|
|
70
|
-
case 'numericbox':
|
|
71
|
-
translationObservables.push(this.getNumericBoxValidationMessages(error));
|
|
72
|
-
break;
|
|
73
|
-
case 'addnew':
|
|
74
|
-
translationObservables.push(this.translate.get('CouldNotBeAddedValidationMessage_LC'));
|
|
75
|
-
break;
|
|
76
|
-
// Kendo datepicker min error
|
|
77
|
-
case 'minError':
|
|
78
|
-
case 'minDate':
|
|
79
|
-
var value = this.dateDisplayPipe.transform(error.minValue);
|
|
80
|
-
translationObservables.push(this.translate
|
|
81
|
-
.get('MinValueValidationMessage_LC', { minValue: value }));
|
|
82
|
-
break;
|
|
83
|
-
// Kendo datepicker max error
|
|
84
|
-
case 'maxError':
|
|
85
|
-
case 'maxDate':
|
|
86
|
-
var value = this.dateDisplayPipe.transform(error.maxValue, true);
|
|
87
|
-
translationObservables.push(this.translate
|
|
88
|
-
.get('MaxValueValidationMessage_LC', { maxValue: value }));
|
|
89
|
-
break;
|
|
90
|
-
// Custom validator for the DateRangeComponent
|
|
91
|
-
case 'dateRange':
|
|
92
|
-
translationObservables.push(this.translate.get('DateRangeValidationMessage_LC'));
|
|
93
|
-
break;
|
|
94
|
-
case 'password':
|
|
95
|
-
translationObservables.push(this.translate.get('PasswordValidationMessage_LC'));
|
|
96
|
-
break;
|
|
97
|
-
// Custom validator from the TextboxComponent
|
|
98
|
-
case 'textbox':
|
|
99
|
-
translationObservables.push(this.getTextBoxValidationMessages(error));
|
|
100
|
-
break;
|
|
101
|
-
case 'notUnique':
|
|
102
|
-
translationObservables.push(this.translate.get('MustBeUnique_LC'));
|
|
103
|
-
break;
|
|
104
|
-
case 'json':
|
|
105
|
-
translationObservables.push(this.translate.get('JsonValidationMessage_SC'));
|
|
106
|
-
break;
|
|
107
|
-
case 'passwordInvalid':
|
|
108
|
-
translationObservables.push(this.translate.get('PasswordInvalidValidationMessage_LC'));
|
|
109
|
-
break;
|
|
110
|
-
case 'domain':
|
|
111
|
-
translationObservables.push(this.translate.get('DomainValidationMessage_SC'));
|
|
112
|
-
break;
|
|
113
|
-
case 'invalidFile':
|
|
114
|
-
case 'invalidFormula':
|
|
115
|
-
translationObservables.push(this.translate.get('is invalid'));
|
|
116
|
-
break;
|
|
117
|
-
default:
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
if (translationObservables.length > 0) {
|
|
122
|
-
// forkJoin returns an Observable that emits when all its observables complete.
|
|
123
|
-
// When forkjoin emits, it emits an array containing the last value returned from
|
|
124
|
-
// each of its observables.
|
|
125
|
-
// @see https://www.learnrxjs.io/operators/combination/forkjoin.html
|
|
126
|
-
// We convert this to a promise so the form controls can display the error messages
|
|
127
|
-
// asynchronously.
|
|
128
|
-
return lastValueFrom(forkJoin(translationObservables));
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return Promise.resolve(new Array());
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Get proper validation message for @see NumericBoxComponent
|
|
135
|
-
*/
|
|
136
|
-
getNumericBoxValidationMessages(error) {
|
|
137
|
-
let interpolationParameters = {};
|
|
138
|
-
let type = 'Integer';
|
|
139
|
-
if (error.decimals) {
|
|
140
|
-
interpolationParameters.precision = error.decimals;
|
|
141
|
-
type = 'Decimal';
|
|
142
|
-
}
|
|
143
|
-
if (error.min !== undefined && error.max !== undefined) {
|
|
144
|
-
interpolationParameters.minValue = error.min;
|
|
145
|
-
interpolationParameters.maxValue = error.max;
|
|
146
|
-
return this.translate.get(`${type}BetweenValidationMessage_LC`, interpolationParameters);
|
|
147
|
-
}
|
|
148
|
-
if (error.min !== undefined) {
|
|
149
|
-
interpolationParameters.minValue = error.min;
|
|
150
|
-
return this.translate.get(`${type}MinValidationMessage_LC`, interpolationParameters);
|
|
151
|
-
}
|
|
152
|
-
if (error.max !== undefined) {
|
|
153
|
-
interpolationParameters.maxValue = error.max;
|
|
154
|
-
return this.translate.get(`${type}MaxValidationMessage_LC`, interpolationParameters);
|
|
155
|
-
}
|
|
156
|
-
if (error.maxPrecisionDigits) {
|
|
157
|
-
interpolationParameters.maxPrecisionDigits = error.maxPrecisionDigits;
|
|
158
|
-
return this.translate.get('MaxPrecisionDigitsValidationMessage_LC', interpolationParameters);
|
|
159
|
-
}
|
|
160
|
-
if (error.decimals) {
|
|
161
|
-
return this.translate.get('DecimalValidationMessage_LC', interpolationParameters);
|
|
162
|
-
}
|
|
163
|
-
return this.translate.get('IncorrectFormat_LC');
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Given the advanced textbox validation params construct the error message
|
|
167
|
-
*/
|
|
168
|
-
getTextBoxValidationMessages(error) {
|
|
169
|
-
if (error.unique) {
|
|
170
|
-
return this.translate.get('TextboxRequiredAndUnique_LC', { minLength: error.minLength, maxLength: error.maxLength });
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
return this.translate.get('TextboxRequired_LC', { minLength: error.minLength, maxLength: error.maxLength });
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ValidationMessageService, deps: [{ token: i1.TranslateService }, { token: i2.DateDisplayPipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
177
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ValidationMessageService, providedIn: 'root' }); }
|
|
178
|
-
}
|
|
179
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ValidationMessageService, decorators: [{
|
|
180
|
-
type: Injectable,
|
|
181
|
-
args: [{
|
|
182
|
-
providedIn: 'root'
|
|
183
|
-
}]
|
|
184
|
-
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.DateDisplayPipe }] });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1tZXNzYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29yZS92YWxpZGF0aW9uLW1lc3NhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxRQUFRLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBSzNEOztHQUVHO0FBQ0gsTUFBTSxpQ0FBaUM7Q0FNdEM7QUFFRDs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFFbkMsWUFDWSxTQUEyQixFQUMzQixlQUFnQztRQURoQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFDeEMsQ0FBQztJQUdMOztPQUVHO0lBQ0ksZ0JBQWdCLENBQUMsTUFBK0I7UUFFbkQsK0RBQStEO1FBQy9ELElBQUksc0JBQXNCLEdBQUcsSUFBSSxLQUFLLEVBQXNCLENBQUM7UUFFN0QsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFFbEIsS0FBSyxJQUFJLFFBQVEsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDMUIsMERBQTBEO2dCQUMxRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRTdCLFFBQVEsUUFBUSxFQUFFLENBQUM7b0JBQ2YsS0FBSyxPQUFPO3dCQUNSLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUM7d0JBQ3BGLE1BQU07b0JBRVYsS0FBSyxVQUFVO3dCQUNYLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO3dC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U0FBUyxFQUFFLENBQUMsQ0FBQztRQUN6SCxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEgsQ0FBQztJQUNMLENBQUM7K0dBeE1VLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVGV4dGJveFZhbGlkYXRvclBhcmFtZXRlcnMgfSBmcm9tICcuLi9jb250cm9scy90ZXh0Ym94L3RleHRib3guY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVEaXNwbGF5UGlwZSB9IGZyb20gJy4uL3NoYXJlZC9kaXNwbGF5L3BpcGVzL2RhdGUtZGlzcGxheS5waXBlJztcblxuLyoqXG4gKiBcIldlYWsgVHlwZVwiIGRlc2NyaWJpbmcgaW50ZXJwb2xhdGlvbiBwYXJhbWV0ZXJzIGZvciBOdW1lcmljQm94XG4gKi9cbmNsYXNzIE51bWVyaWNCb3hJbnRlcnBvbGF0aW9uUGFyYW1ldGVycyB7XG4gICAgcHVibGljIHByZWNpc2lvbj86IG51bWJlcjtcbiAgICBwdWJsaWMgbWluVmFsdWU/OiBudW1iZXI7XG4gICAgcHVibGljIG1heFZhbHVlPzogbnVtYmVyO1xuICAgIHB1YmxpYyBtaW5NYXhSYW5nZT86IHN0cmluZztcbiAgICBwdWJsaWMgbWF4UHJlY2lzaW9uRGlnaXRzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFNlcnZpY2UgdG8gdGFrZSB7QGxpbmsgVmFsaWRhdGlvbkVycm9yc30gYW5kIHJldHVybiBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2VzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgIHByaXZhdGUgZGF0ZURpc3BsYXlQaXBlOiBEYXRlRGlzcGxheVBpcGVcbiAgKSB7IH1cblxuXG4gIC8qKlxuICAgKiBHZXQgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlcyBmcm9tIHtAbGluayBWYWxpZGF0aW9uRXJyb3JzfVxuICAgKi9cbiAgcHVibGljIGdldEVycm9yTWVzc2FnZXMoZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCk6IFByb21pc2U8QXJyYXk8YW55Pj4ge1xuXG4gICAgICAvKiogQXJyYXkgb2Ygb2JzZXJ2YWJsZXMgcmV0dXJuZWQgZnJvbSB0aGUgVHJhbnNsYXRlU2VydmljZS4gKi9cbiAgICAgIGxldCB0cmFuc2xhdGlvbk9ic2VydmFibGVzID0gbmV3IEFycmF5PE9ic2VydmFibGU8c3RyaW5nPj4oKTtcblxuICAgICAgaWYgKGVycm9ycyAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgZm9yICh2YXIgZXJyb3JLZXkgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICAgIC8vIGl0IHdvdWxkIGJlIG5pY2UgdG8gaGF2ZSB0eXBpbmcgb24gdGhlIFZhbGlkYXRpb25FcnJvcnNcbiAgICAgICAgICAgICAgbGV0IGVycm9yID0gZXJyb3JzW2Vycm9yS2V5XTtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKGVycm9yS2V5KSB7XG4gICAgICAgICAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmdldCgnSW52YWxpZEVtYWlsVmFsaWRhdGlvbk1lc3NhZ2VfTEMnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkJzpcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGUuZ2V0KCdpcyByZXF1aXJlZCcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXF1aXJlZFBsdXJhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGUuZ2V0KCdSZXF1aXJlZFBsdXJhbFZhbGlkYXRpb25NZXNzYWdlX0xDJykpO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICBjYXNlICdtaW5sZW5ndGgnOlxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdNaW5MZW5ndGhWYWxpZGF0aW9uTWVzc2FnZV9MQycsIHsgbWluTGVuZ3RoOiBlcnJvci5yZXF1aXJlZExlbmd0aCB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGNhc2UgJ21heGxlbmd0aCc6XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoYE1heExlbmd0aFZhbGlkYXRpb25NZXNzYWdlYCwgeyBtYXhMZW5ndGg6IGVycm9yLnJlcXVpcmVkTGVuZ3RoIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgY2FzZSAncGF0dGVybic6XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmdldCgnSW5jb3JyZWN0Rm9ybWF0X0xDJykpO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICBjYXNlICdtaW4nOlxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdNaW5WYWx1ZVZhbGlkYXRpb25NZXNzYWdlX0xDJywgeyBtaW5WYWx1ZTogZXJyb3IubWluIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgY2FzZSAnbWF4JzpcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnTWF4VmFsdWVWYWxpZGF0aW9uTWVzc2FnZV9MQycsIHsgbWF4VmFsdWU6IGVycm9yLm1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3ppcENvZGVJbnZhbGlkRm9ybWF0JzpcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGUuZ2V0KCdtdXN0IGJlIDXigJM5IG51bWJlcnMnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bvc3RhbENvZGVJbnZhbGlkRm9ybWF0JzpcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnbXVzdCBiZSA2IGNoYXJhY3RlcnMsIGFsdGVybmF0aW5nIGxldHRlcnMgYW5kIG51bWJlcnMnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3ppcENvZGVOb3RGb3VuZCc6XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ1ppcENvZGVOb3RGb3VuZFZhbGlkYXRpb25NZXNzYWdlX0xDJykpO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAvLyBDdXN0b20gdmFsaWRhdG9yIGZyb20gdGhlIE51bWVyaWNib3hDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ251bWVyaWNib3gnOlxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLmdldE51bWVyaWNCb3hWYWxpZGF0aW9uTWVzc2FnZXMoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgY2FzZSAnYWRkbmV3JzpcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGUuZ2V0KCdDb3VsZE5vdEJlQWRkZWRWYWxpZGF0aW9uTWVzc2FnZV9MQycpKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgLy8gS2VuZG8gZGF0ZXBpY2tlciBtaW4gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ21pbkVycm9yJzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ21pbkRhdGUnOlxuICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuZGF0ZURpc3BsYXlQaXBlLnRyYW5zZm9ybShlcnJvci5taW5WYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ01pblZhbHVlVmFsaWRhdGlvbk1lc3NhZ2VfTEMnLCB7IG1pblZhbHVlOiB2YWx1ZSB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIC8vIEtlbmRvIGRhdGVwaWNrZXIgbWF4IGVycm9yXG4gICAgICAgICAgICAgICAgICBjYXNlICdtYXhFcnJvcic6XG4gICAgICAgICAgICAgICAgICBjYXNlICdtYXhEYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLmRhdGVEaXNwbGF5UGlwZS50cmFuc2Zvcm0oZXJyb3IubWF4VmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdNYXhWYWx1ZVZhbGlkYXRpb25NZXNzYWdlX0xDJywgeyBtYXhWYWx1ZTogdmFsdWUgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAvLyBDdXN0b20gdmFsaWRhdG9yIGZvciB0aGUgRGF0ZVJhbmdlQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICBjYXNlICdkYXRlUmFuZ2UnOlxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0RhdGVSYW5nZVZhbGlkYXRpb25NZXNzYWdlX0xDJykpO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICBjYXNlICdwYXNzd29yZCc6XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmdldCgnUGFzc3dvcmRWYWxpZGF0aW9uTWVzc2FnZV9MQycpKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgLy8gQ3VzdG9tIHZhbGlkYXRvciBmcm9tIHRoZSBUZXh0Ym94Q29tcG9uZW50XG4gICAgICAgICAgICAgICAgICBjYXNlICd0ZXh0Ym94JzpcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy5nZXRUZXh0Qm94VmFsaWRhdGlvbk1lc3NhZ2VzKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGNhc2UgJ25vdFVuaXF1ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmdldCgnTXVzdEJlVW5pcXVlX0xDJykpO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGUuZ2V0KCdKc29uVmFsaWRhdGlvbk1lc3NhZ2VfU0MnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bhc3N3b3JkSW52YWxpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmdldCgnUGFzc3dvcmRJbnZhbGlkVmFsaWRhdGlvbk1lc3NhZ2VfTEMnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGNhc2UgJ2RvbWFpbic6XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmdldCgnRG9tYWluVmFsaWRhdGlvbk1lc3NhZ2VfU0MnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICdpbnZhbGlkRmlsZSc6XG4gICAgICAgICAgICAgICAgICBjYXNlICdpbnZhbGlkRm9ybXVsYSc6XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmdldCgnaXMgaW52YWxpZCcpKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodHJhbnNsYXRpb25PYnNlcnZhYmxlcy5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICAgICAgLy8gZm9ya0pvaW4gcmV0dXJucyBhbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBhbGwgaXRzIG9ic2VydmFibGVzIGNvbXBsZXRlLlxuICAgICAgICAgICAgICAvLyBXaGVuIGZvcmtqb2luIGVtaXRzLCBpdCBlbWl0cyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBsYXN0IHZhbHVlIHJldHVybmVkIGZyb21cbiAgICAgICAgICAgICAgLy8gZWFjaCBvZiBpdHMgb2JzZXJ2YWJsZXMuXG4gICAgICAgICAgICAgIC8vIEBzZWUgaHR0cHM6Ly93d3cubGVhcm5yeGpzLmlvL29wZXJhdG9ycy9jb21iaW5hdGlvbi9mb3Jram9pbi5odG1sXG4gICAgICAgICAgICAgIC8vIFdlIGNvbnZlcnQgdGhpcyB0byBhIHByb21pc2Ugc28gdGhlIGZvcm0gY29udHJvbHMgY2FuIGRpc3BsYXkgdGhlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgIC8vIGFzeW5jaHJvbm91c2x5LlxuICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbShmb3JrSm9pbih0cmFuc2xhdGlvbk9ic2VydmFibGVzKSk7XG4gICAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBBcnJheTxzdHJpbmc+KCkpO1xuICB9XG5cblxuICAvKipcbiAgICogR2V0IHByb3BlciB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIEBzZWUgTnVtZXJpY0JveENvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBnZXROdW1lcmljQm94VmFsaWRhdGlvbk1lc3NhZ2VzKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgbGV0IGludGVycG9sYXRpb25QYXJhbWV0ZXJzOiBOdW1lcmljQm94SW50ZXJwb2xhdGlvblBhcmFtZXRlcnMgPSB7fTtcbiAgICAgIGxldCB0eXBlOiBzdHJpbmcgPSAnSW50ZWdlcic7XG5cbiAgICAgIGlmIChlcnJvci5kZWNpbWFscykge1xuICAgICAgICAgIGludGVycG9sYXRpb25QYXJhbWV0ZXJzLnByZWNpc2lvbiA9IGVycm9yLmRlY2ltYWxzO1xuICAgICAgICAgIHR5cGUgPSAnRGVjaW1hbCc7XG4gICAgICB9XG5cbiAgICAgIGlmIChlcnJvci5taW4gIT09IHVuZGVmaW5lZCAmJiBlcnJvci5tYXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGludGVycG9sYXRpb25QYXJhbWV0ZXJzLm1pblZhbHVlID0gZXJyb3IubWluO1xuICAgICAgICAgIGludGVycG9sYXRpb25QYXJhbWV0ZXJzLm1heFZhbHVlID0gZXJyb3IubWF4O1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoYCR7dHlwZX1CZXR3ZWVuVmFsaWRhdGlvbk1lc3NhZ2VfTENgLCBpbnRlcnBvbGF0aW9uUGFyYW1ldGVycyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlcnJvci5taW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGludGVycG9sYXRpb25QYXJhbWV0ZXJzLm1pblZhbHVlID0gZXJyb3IubWluO1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoYCR7dHlwZX1NaW5WYWxpZGF0aW9uTWVzc2FnZV9MQ2AsIGludGVycG9sYXRpb25QYXJhbWV0ZXJzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVycm9yLm1heCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaW50ZXJwb2xhdGlvblBhcmFtZXRlcnMubWF4VmFsdWUgPSBlcnJvci5tYXg7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmdldChgJHt0eXBlfU1heFZhbGlkYXRpb25NZXNzYWdlX0xDYCwgaW50ZXJwb2xhdGlvblBhcmFtZXRlcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3IubWF4UHJlY2lzaW9uRGlnaXRzKSB7XG4gICAgICAgICAgaW50ZXJwb2xhdGlvblBhcmFtZXRlcnMubWF4UHJlY2lzaW9uRGlnaXRzID0gZXJyb3IubWF4UHJlY2lzaW9uRGlnaXRzO1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ01heFByZWNpc2lvbkRpZ2l0c1ZhbGlkYXRpb25NZXNzYWdlX0xDJywgaW50ZXJwb2xhdGlvblBhcmFtZXRlcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3IuZGVjaW1hbHMpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0KCdEZWNpbWFsVmFsaWRhdGlvbk1lc3NhZ2VfTEMnLCBpbnRlcnBvbGF0aW9uUGFyYW1ldGVycyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ0luY29ycmVjdEZvcm1hdF9MQycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIHRoZSBhZHZhbmNlZCB0ZXh0Ym94IHZhbGlkYXRpb24gcGFyYW1zIGNvbnN0cnVjdCB0aGUgZXJyb3IgbWVzc2FnZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUZXh0Qm94VmFsaWRhdGlvbk1lc3NhZ2VzKGVycm9yOiBUZXh0Ym94VmFsaWRhdG9yUGFyYW1ldGVycyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICBpZiAoZXJyb3IudW5pcXVlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmdldCgnVGV4dGJveFJlcXVpcmVkQW5kVW5pcXVlX0xDJywgeyBtaW5MZW5ndGg6IGVycm9yLm1pbkxlbmd0aCwgbWF4TGVuZ3RoOiBlcnJvci5tYXhMZW5ndGggfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ1RleHRib3hSZXF1aXJlZF9MQycsIHsgbWluTGVuZ3RoOiBlcnJvci5taW5MZW5ndGgsIG1heExlbmd0aDogZXJyb3IubWF4TGVuZ3RoIH0pO1xuICAgICAgfVxuICB9XG5cblxufVxuIl19
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/** Regex to flag all spaces */
|
|
2
|
-
export const findAllSpacesPattern = / /g;
|
|
3
|
-
/** Pattern to validate United States zip codes. Allows numbers and dash only */
|
|
4
|
-
export const unitedStatesZipCodeRegex = /^[0-9-]+$/;
|
|
5
|
-
/** Pattern to validate Canadian postal codes,
|
|
6
|
-
* must follow the 'letter number letter space number letter number' pattern */
|
|
7
|
-
export const canadianPostalCodeRegex = /^[a-zA-Z][0-9][a-zA-Z] [0-9][a-zA-Z][0-9]$/;
|
|
8
|
-
/** Pattern to validate other country zip codes, anything goes */
|
|
9
|
-
export const otherZipCodeRegex = /.*/;
|
|
10
|
-
/** Pattern to validate a correct date format */
|
|
11
|
-
export const dateInputFormatRegex = /^[0-9./-]+$/;
|
|
12
|
-
/** Pattern to validate integer numbers. Negative sign is optional and will not
|
|
13
|
-
* invalidate if just a minus sign is entered in the input, any digit `0-9` is allowed
|
|
14
|
-
*/
|
|
15
|
-
export const integerPattern = new RegExp("^(-)?([\\d]+)?$");
|
|
16
|
-
/** Pattern to validate most public domains */
|
|
17
|
-
export const domainPattern = /^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$/i;
|
|
18
|
-
/**
|
|
19
|
-
* Function to return a decimal RegExp. Takes in the number of decimals to validate
|
|
20
|
-
* against
|
|
21
|
-
*/
|
|
22
|
-
export const getDecimalPattern = (decimals) => {
|
|
23
|
-
let decimalPattern;
|
|
24
|
-
// Decimal portion, allowing zero to the maximum allowed decimals
|
|
25
|
-
// This enables us to allow a number like "1." or "." and not invalidate
|
|
26
|
-
let decimalPortion = "{0," + decimals.toString() + "}";
|
|
27
|
-
// Negative sign is optional as well as the decimal, any digit 0-9 is allowed
|
|
28
|
-
decimalPattern = new RegExp(`^((((-)?\\d+\\.?\\d${decimalPortion}?)|((-)?\\.?\\d${decimalPortion})))?$`);
|
|
29
|
-
return decimalPattern;
|
|
30
|
-
};
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1wYXR0ZXJucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlL3ZhbGlkYXRpb24tcGF0dGVybnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFXLElBQUksQ0FBQztBQUVqRCxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQVcsV0FBVyxDQUFDO0FBRTVEO2dGQUNnRjtBQUNoRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBVyw0Q0FBNEMsQ0FBQztBQUU1RixpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQVcsSUFBSSxDQUFDO0FBRTlDLGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBVyxhQUFhLENBQUM7QUFFMUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQVcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUVwRSw4Q0FBOEM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFXLCtFQUErRSxDQUFDO0FBRXJIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFO0lBQ2xELElBQUksY0FBc0IsQ0FBQztJQUUzQixpRUFBaUU7SUFDakUsd0VBQXdFO0lBQ3hFLElBQUksY0FBYyxHQUFXLEtBQUssR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQy9ELDZFQUE2RTtJQUM3RSxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUMsc0JBQXNCLGNBQWMsa0JBQWtCLGNBQWMsT0FBTyxDQUFDLENBQUM7SUFFekcsT0FBTyxjQUFjLENBQUM7QUFDMUIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFJlZ2V4IHRvIGZsYWcgYWxsIHNwYWNlcyAqL1xuZXhwb3J0IGNvbnN0IGZpbmRBbGxTcGFjZXNQYXR0ZXJuOiBSZWdFeHAgPSAvIC9nO1xuXG4vKiogUGF0dGVybiB0byB2YWxpZGF0ZSBVbml0ZWQgU3RhdGVzIHppcCBjb2Rlcy4gIEFsbG93cyBudW1iZXJzIGFuZCBkYXNoIG9ubHkgKi9cbmV4cG9ydCBjb25zdCB1bml0ZWRTdGF0ZXNaaXBDb2RlUmVnZXg6IFJlZ0V4cCA9IC9eWzAtOS1dKyQvO1xuXG4vKiogUGF0dGVybiB0byB2YWxpZGF0ZSBDYW5hZGlhbiBwb3N0YWwgY29kZXMsXG4gKiAgbXVzdCBmb2xsb3cgdGhlICdsZXR0ZXIgbnVtYmVyIGxldHRlciBzcGFjZSBudW1iZXIgbGV0dGVyIG51bWJlcicgcGF0dGVybiAqL1xuZXhwb3J0IGNvbnN0IGNhbmFkaWFuUG9zdGFsQ29kZVJlZ2V4OiBSZWdFeHAgPSAvXlthLXpBLVpdWzAtOV1bYS16QS1aXSBbMC05XVthLXpBLVpdWzAtOV0kLztcblxuLyoqIFBhdHRlcm4gdG8gdmFsaWRhdGUgb3RoZXIgY291bnRyeSB6aXAgY29kZXMsIGFueXRoaW5nIGdvZXMgKi9cbmV4cG9ydCBjb25zdCBvdGhlclppcENvZGVSZWdleDogUmVnRXhwID0gLy4qLztcblxuLyoqIFBhdHRlcm4gdG8gdmFsaWRhdGUgYSBjb3JyZWN0IGRhdGUgZm9ybWF0ICovXG5leHBvcnQgY29uc3QgZGF0ZUlucHV0Rm9ybWF0UmVnZXg6IFJlZ0V4cCA9IC9eWzAtOS4vLV0rJC87XG5cbi8qKiBQYXR0ZXJuIHRvIHZhbGlkYXRlIGludGVnZXIgbnVtYmVycy4gIE5lZ2F0aXZlIHNpZ24gaXMgb3B0aW9uYWwgYW5kIHdpbGwgbm90XG4gKiAgaW52YWxpZGF0ZSBpZiBqdXN0IGEgbWludXMgc2lnbiBpcyBlbnRlcmVkIGluIHRoZSBpbnB1dCwgYW55IGRpZ2l0IGAwLTlgIGlzIGFsbG93ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGludGVnZXJQYXR0ZXJuOiBSZWdFeHAgPSBuZXcgUmVnRXhwKFwiXigtKT8oW1xcXFxkXSspPyRcIik7XG5cbi8qKiBQYXR0ZXJuIHRvIHZhbGlkYXRlIG1vc3QgcHVibGljIGRvbWFpbnMgKi9cbmV4cG9ydCBjb25zdCBkb21haW5QYXR0ZXJuOiBSZWdFeHAgPSAvXig/OlthLXowLTldKD86W2EtejAtOS1dezAsNjF9W2EtejAtOV0pP1xcLikrW2EtejAtOV1bYS16MC05LV17MCw2MX1bYS16MC05XSQvaTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byByZXR1cm4gYSBkZWNpbWFsIFJlZ0V4cC4gIFRha2VzIGluIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdG8gdmFsaWRhdGVcbiAqIGFnYWluc3RcbiAqL1xuZXhwb3J0IGNvbnN0IGdldERlY2ltYWxQYXR0ZXJuID0gKGRlY2ltYWxzOiBudW1iZXIpID0+IHtcbiAgICBsZXQgZGVjaW1hbFBhdHRlcm46IFJlZ0V4cDtcblxuICAgIC8vIERlY2ltYWwgcG9ydGlvbiwgYWxsb3dpbmcgemVybyB0byB0aGUgbWF4aW11bSBhbGxvd2VkIGRlY2ltYWxzXG4gICAgLy8gVGhpcyBlbmFibGVzIHVzIHRvIGFsbG93IGEgbnVtYmVyIGxpa2UgXCIxLlwiIG9yIFwiLlwiIGFuZCBub3QgaW52YWxpZGF0ZVxuICAgIGxldCBkZWNpbWFsUG9ydGlvbjogc3RyaW5nID0gXCJ7MCxcIiArIGRlY2ltYWxzLnRvU3RyaW5nKCkgKyBcIn1cIjtcbiAgICAvLyBOZWdhdGl2ZSBzaWduIGlzIG9wdGlvbmFsIGFzIHdlbGwgYXMgdGhlIGRlY2ltYWwsIGFueSBkaWdpdCAwLTkgaXMgYWxsb3dlZFxuICAgIGRlY2ltYWxQYXR0ZXJuID0gbmV3IFJlZ0V4cChgXigoKCgtKT9cXFxcZCtcXFxcLj9cXFxcZCR7ZGVjaW1hbFBvcnRpb259Pyl8KCgtKT9cXFxcLj9cXFxcZCR7ZGVjaW1hbFBvcnRpb259KSkpPyRgKTtcblxuICAgIHJldHVybiBkZWNpbWFsUGF0dGVybjtcbn1cbiJdfQ==
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { fromEvent } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/router";
|
|
5
|
-
/**
|
|
6
|
-
* Service to help with interfacing with the window object
|
|
7
|
-
* and navigating around the application (going outside of the Angular 2+ router)
|
|
8
|
-
*/
|
|
9
|
-
export class WindowService {
|
|
10
|
-
/**
|
|
11
|
-
* Tracks if there are any unsaved changes that the user could lose.
|
|
12
|
-
*
|
|
13
|
-
* It is set up as `get` only because it is set with `addNavigateAwayPrompt`.
|
|
14
|
-
*
|
|
15
|
-
* This also includes adding a prompt to the window itself (in addition to
|
|
16
|
-
* working with the `CanDeactivateUnsavedChanges` guard) to cover page reloads
|
|
17
|
-
* which do not trigger router events.
|
|
18
|
-
*/
|
|
19
|
-
get hasUnsavedChanges() {
|
|
20
|
-
return this._hasUnsavedChanges;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Expose the innerWidth on the window global. Protects against errors when code
|
|
24
|
-
* is running on a non-browser platform.
|
|
25
|
-
*/
|
|
26
|
-
get innerWidth() {
|
|
27
|
-
return window ? window.innerWidth : undefined;
|
|
28
|
-
}
|
|
29
|
-
constructor(router, activatedRoute) {
|
|
30
|
-
this.router = router;
|
|
31
|
-
this.activatedRoute = activatedRoute;
|
|
32
|
-
this._hasUnsavedChanges = false;
|
|
33
|
-
/**
|
|
34
|
-
* Function called when the window `beforeunload` event is fired.
|
|
35
|
-
*
|
|
36
|
-
* A reference to the function that was passed to `window.addEventListener`
|
|
37
|
-
* must be retained for `window.removeEventListener` to function properly.
|
|
38
|
-
*
|
|
39
|
-
* Some browsers require the event's `returnValue` to be set to show the confirmation
|
|
40
|
-
* dialog.
|
|
41
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
|
|
42
|
-
*/
|
|
43
|
-
this.beforeUnloadFunction = (event) => {
|
|
44
|
-
// Cancel the event as stated by the standard.
|
|
45
|
-
event.preventDefault();
|
|
46
|
-
// Chrome requires returnValue to be set.
|
|
47
|
-
event.returnValue = '';
|
|
48
|
-
};
|
|
49
|
-
if (window) {
|
|
50
|
-
this.resized = fromEvent(window, 'resize');
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Navigates to the previous page the user had visited
|
|
55
|
-
*/
|
|
56
|
-
goBack() {
|
|
57
|
-
window.history.back();
|
|
58
|
-
}
|
|
59
|
-
/**An abstraction around the browsers window history length.
|
|
60
|
-
* Returns zero if unable to access or running outside a browser context
|
|
61
|
-
*/
|
|
62
|
-
getHistoryLength() {
|
|
63
|
-
return window?.history?.length || 0;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Navigate to any url you know the path to
|
|
67
|
-
* @param url The URL to navigate to
|
|
68
|
-
*
|
|
69
|
-
* @deprecated For legacy support only; use `router.navigateByUrl` instead
|
|
70
|
-
*/
|
|
71
|
-
async navigateToUrl(url) {
|
|
72
|
-
try {
|
|
73
|
-
if (url.indexOf('/app/') === 0) {
|
|
74
|
-
await this.router.navigateByUrl(url.substring(5));
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
await this.router.navigateByUrl(url);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
catch (e) {
|
|
81
|
-
// If the router throws we will try to navigate to the fully qualified url as a last ditch effort.
|
|
82
|
-
// This can happen if we missed a link that needs to be converted to ng5 or our ng1Href directive
|
|
83
|
-
// didn't handle a link correctly
|
|
84
|
-
window.location.href = url;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Adds a `beforeunload` function to the window to alert the user that there are about to leave
|
|
89
|
-
* the current page and ask if they'd like to leave or stay
|
|
90
|
-
*/
|
|
91
|
-
addNavigateAwayPrompt() {
|
|
92
|
-
this._hasUnsavedChanges = true;
|
|
93
|
-
window.addEventListener("beforeunload", this.beforeUnloadFunction);
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Removes the `beforeunload` function added to the window
|
|
97
|
-
*/
|
|
98
|
-
removeNavigateAwayPrompt() {
|
|
99
|
-
this._hasUnsavedChanges = false;
|
|
100
|
-
window.removeEventListener("beforeunload", this.beforeUnloadFunction);
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Send data to another window.
|
|
104
|
-
*
|
|
105
|
-
* __SECURITY RISK__ - Always use a specific target origin. Failing to provide a specific target origin can allow
|
|
106
|
-
* malicious sites to receive the message.
|
|
107
|
-
*
|
|
108
|
-
* @param targetWindow - Window to send the message to
|
|
109
|
-
* @param message - Data to send
|
|
110
|
-
* @param targetOrigin - What the URI of the target window must be for the message to be sent.
|
|
111
|
-
* If sending data to another EnergyCAP window, this should always be `window.location.origin` to ensure
|
|
112
|
-
* that only instances of EnergyCAP app receive the message.
|
|
113
|
-
*/
|
|
114
|
-
postMessage(targetWindow, message, targetOrigin) {
|
|
115
|
-
targetWindow.postMessage(message, targetOrigin);
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Open a new window
|
|
119
|
-
* @param url - The URL of the resource to be loaded
|
|
120
|
-
*/
|
|
121
|
-
openNew(url) {
|
|
122
|
-
window.open(url, '_blank');
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* A wrapper around the router for changing the query params for the current url
|
|
126
|
-
* without creating a new history entry or removing any existing query parameters.
|
|
127
|
-
* The provided params are updated if they already exist or added to the url if they don't
|
|
128
|
-
*
|
|
129
|
-
* @returns a promise that resolves to true if the navigation succeeds, false if something (like a guard) blocks it.
|
|
130
|
-
* In normal use, the navigation should succeed unless we use query params to block access to a route the user is already on
|
|
131
|
-
*/
|
|
132
|
-
async modifyHistoryQueryParamsSubset(queryParams) {
|
|
133
|
-
return this.router.navigate([], {
|
|
134
|
-
relativeTo: this.activatedRoute,
|
|
135
|
-
replaceUrl: true,
|
|
136
|
-
queryParams: queryParams,
|
|
137
|
-
queryParamsHandling: 'merge',
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
/**A wrapper around the default javascript confirm dialog to allow us to unit test dependent code.
|
|
141
|
-
* Of course eventually we'd like to have pretty confirmations for everything, but in some cases it wasn't worth the extra time
|
|
142
|
-
* so we're using this instead.
|
|
143
|
-
*/
|
|
144
|
-
confirm(prompt) {
|
|
145
|
-
return Promise.resolve(confirm(prompt));
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Close the current window or a window instance if one is provided
|
|
149
|
-
* @param windowInstance - Window to close (optional)
|
|
150
|
-
*/
|
|
151
|
-
closeWindow(windowInstance) {
|
|
152
|
-
if (windowInstance) {
|
|
153
|
-
windowInstance.close();
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
window.close();
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
getLocation() {
|
|
160
|
-
return window.location.pathname + window.location.hash;
|
|
161
|
-
}
|
|
162
|
-
/** Get the current value of the full url, including protocol, host and path */
|
|
163
|
-
getFullUrl() {
|
|
164
|
-
return window.location.href;
|
|
165
|
-
}
|
|
166
|
-
/** Get the current value of the base url, including protocol, domain and port (if explicitly specified) */
|
|
167
|
-
getBaseUrl() {
|
|
168
|
-
return window.location.origin;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Reloads the browser window.
|
|
172
|
-
* NOT RECOMMENDED. Seek other options for reloading content within Angular before resorting to this.
|
|
173
|
-
*/
|
|
174
|
-
reloadWindow() {
|
|
175
|
-
window.location.reload();
|
|
176
|
-
}
|
|
177
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WindowService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
178
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WindowService, providedIn: 'root' }); }
|
|
179
|
-
}
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WindowService, decorators: [{
|
|
181
|
-
type: Injectable,
|
|
182
|
-
args: [{
|
|
183
|
-
providedIn: 'root'
|
|
184
|
-
}]
|
|
185
|
-
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }] });
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29yZS93aW5kb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUU3Qzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sYUFBYTtJQUV0Qjs7Ozs7Ozs7T0FRRztJQUNILElBQVcsaUJBQWlCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFBO0lBQ2xDLENBQUM7SUFHRDs7O09BR0c7SUFDSCxJQUFXLFVBQVU7UUFDakIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRCxDQUFDO0lBT0QsWUFDWSxNQUFhLEVBQ2IsY0FBOEI7UUFEOUIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWpCbEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBZ0s1Qzs7Ozs7Ozs7O1dBU0c7UUFDSyx5QkFBb0IsR0FBRyxDQUFDLEtBQXdCLEVBQUUsRUFBRTtZQUN4RCw4Q0FBOEM7WUFDOUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLHlDQUF5QztZQUN6QyxLQUFLLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUM7UUE1SkUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNULE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFF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TUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQzsrR0E1S1EsYUFBYTttSEFBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU2VydmljZSB0byBoZWxwIHdpdGggaW50ZXJmYWNpbmcgd2l0aCB0aGUgd2luZG93IG9iamVjdFxuICogYW5kIG5hdmlnYXRpbmcgYXJvdW5kIHRoZSBhcHBsaWNhdGlvbiAoZ29pbmcgb3V0c2lkZSBvZiB0aGUgQW5ndWxhciAyKyByb3V0ZXIpXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgV2luZG93U2VydmljZSB7XG5cbiAgICAvKipcbiAgICAgKiBUcmFja3MgaWYgdGhlcmUgYXJlIGFueSB1bnNhdmVkIGNoYW5nZXMgdGhhdCB0aGUgdXNlciBjb3VsZCBsb3NlLlxuICAgICAqXG4gICAgICogSXQgaXMgc2V0IHVwIGFzIGBnZXRgIG9ubHkgYmVjYXVzZSBpdCBpcyBzZXQgd2l0aCBgYWRkTmF2aWdhdGVBd2F5UHJvbXB0YC5cbiAgICAgKlxuICAgICAqIFRoaXMgYWxzbyBpbmNsdWRlcyBhZGRpbmcgYSBwcm9tcHQgdG8gdGhlIHdpbmRvdyBpdHNlbGYgKGluIGFkZGl0aW9uIHRvXG4gICAgICogd29ya2luZyB3aXRoIHRoZSBgQ2FuRGVhY3RpdmF0ZVVuc2F2ZWRDaGFuZ2VzYCBndWFyZCkgdG8gY292ZXIgcGFnZSByZWxvYWRzXG4gICAgICogd2hpY2ggZG8gbm90IHRyaWdnZXIgcm91dGVyIGV2ZW50cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhhc1Vuc2F2ZWRDaGFuZ2VzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzVW5zYXZlZENoYW5nZXNcbiAgICB9XG4gICAgcHJpdmF0ZSBfaGFzVW5zYXZlZENoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBcbiAgICAgKiBFeHBvc2UgdGhlIGlubmVyV2lkdGggb24gdGhlIHdpbmRvdyBnbG9iYWwuIFByb3RlY3RzIGFnYWluc3QgZXJyb3JzIHdoZW4gY29kZVxuICAgICAqIGlzIHJ1bm5pbmcgb24gYSBub24tYnJvd3NlciBwbGF0Zm9ybS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlubmVyV2lkdGgoKTogbnVtYmVyfHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB3aW5kb3cgPyB3aW5kb3cuaW5uZXJXaWR0aCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnNlcnZhYmxlIG9mIHRoZSB3aW5kb3cgcmVzaXplIGV2ZW50XG4gICAgICovXG4gICAgcHVibGljIHJlc2l6ZWQ/OiBPYnNlcnZhYmxlPEV2ZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJvdXRlcjpSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICAgKSB7IFxuICAgICAgICBpZiAod2luZG93KSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZWQgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHByZXZpb3VzIHBhZ2UgdGhlIHVzZXIgaGFkIHZpc2l0ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ29CYWNrKCkge1xuICAgICAgICB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XG4gICAgfVxuXG4gICAgLyoqQW4gYWJzdHJhY3Rpb24gYXJvdW5kIHRoZSBicm93c2VycyB3aW5kb3cgaGlzdG9yeSBsZW5ndGguXG4gICAgICogUmV0dXJucyB6ZXJvIGlmIHVuYWJsZSB0byBhY2Nlc3Mgb3IgcnVubmluZyBvdXRzaWRlIGEgYnJvd3NlciBjb250ZXh0XG4gICAgICovXG4gICAgcHVibGljIGdldEhpc3RvcnlMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdz8uaGlzdG9yeT8ubGVuZ3RoIHx8IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGUgdG8gYW55IHVybCB5b3Uga25vdyB0aGUgcGF0aCB0b1xuICAgICAqIEBwYXJhbSB1cmwgVGhlIFVSTCB0byBuYXZpZ2F0ZSB0b1xuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWQgRm9yIGxlZ2FjeSBzdXBwb3J0IG9ubHk7IHVzZSBgcm91dGVyLm5hdmlnYXRlQnlVcmxgIGluc3RlYWRcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgbmF2aWdhdGVUb1VybCh1cmw6IHN0cmluZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCcvYXBwLycpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwuc3Vic3RyaW5nKDUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgcm91dGVyIHRocm93cyB3ZSB3aWxsIHRyeSB0byBuYXZpZ2F0ZSB0byB0aGUgZnVsbHkgcXVhbGlmaWVkIHVybCBhcyBhIGxhc3QgZGl0Y2ggZWZmb3J0LlxuICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHdlIG1pc3NlZCBhIGxpbmsgdGhhdCBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gbmc1IG9yIG91ciBuZzFIcmVmIGRpcmVjdGl2ZVxuICAgICAgICAgICAgLy8gZGlkbid0IGhhbmRsZSBhIGxpbmsgY29ycmVjdGx5XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBgYmVmb3JldW5sb2FkYCBmdW5jdGlvbiB0byB0aGUgd2luZG93IHRvIGFsZXJ0IHRoZSB1c2VyIHRoYXQgdGhlcmUgYXJlIGFib3V0IHRvIGxlYXZlXG4gICAgICogdGhlIGN1cnJlbnQgcGFnZSBhbmQgYXNrIGlmIHRoZXknZCBsaWtlIHRvIGxlYXZlIG9yIHN0YXlcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkTmF2aWdhdGVBd2F5UHJvbXB0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYXNVbnNhdmVkQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsIHRoaXMuYmVmb3JlVW5sb2FkRnVuY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIGBiZWZvcmV1bmxvYWRgIGZ1bmN0aW9uIGFkZGVkIHRvIHRoZSB3aW5kb3dcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlTmF2aWdhdGVBd2F5UHJvbXB0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCB0aGlzLmJlZm9yZVVubG9hZEZ1bmN0aW9uKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFNlbmQgZGF0YSB0byBhbm90aGVyIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIF9fU0VDVVJJVFkgUklTS19fIC0gQWx3YXlzIHVzZSBhIHNwZWNpZmljIHRhcmdldCBvcmlnaW4uIEZhaWxpbmcgdG8gcHJvdmlkZSBhIHNwZWNpZmljIHRhcmdldCBvcmlnaW4gY2FuIGFsbG93XG4gICAgICogbWFsaWNpb3VzIHNpdGVzIHRvIHJlY2VpdmUgdGhlIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFyZ2V0V2luZG93IC0gV2luZG93IHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG9cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSAtIERhdGEgdG8gc2VuZFxuICAgICAqIEBwYXJhbSB0YXJnZXRPcmlnaW4gLSBXaGF0IHRoZSBVUkkgb2YgdGhlIHRhcmdldCB3aW5kb3cgbXVzdCBiZSBmb3IgdGhlIG1lc3NhZ2UgdG8gYmUgc2VudC5cbiAgICAgKiBJZiBzZW5kaW5nIGRhdGEgdG8gYW5vdGhlciBFbmVyZ3lDQVAgd2luZG93LCB0aGlzIHNob3VsZCBhbHdheXMgYmUgYHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5gIHRvIGVuc3VyZVxuICAgICAqIHRoYXQgb25seSBpbnN0YW5jZXMgb2YgRW5lcmd5Q0FQIGFwcCByZWNlaXZlIHRoZSBtZXNzYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBwb3N0TWVzc2FnZSh0YXJnZXRXaW5kb3c6IFdpbmRvdywgbWVzc2FnZTogYW55LCB0YXJnZXRPcmlnaW46IHN0cmluZykge1xuICAgICAgICB0YXJnZXRXaW5kb3cucG9zdE1lc3NhZ2UobWVzc2FnZSwgdGFyZ2V0T3JpZ2luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVuIGEgbmV3IHdpbmRvd1xuICAgICAqIEBwYXJhbSB1cmwgLSBUaGUgVVJMIG9mIHRoZSByZXNvdXJjZSB0byBiZSBsb2FkZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgb3Blbk5ldyh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHdyYXBwZXIgYXJvdW5kIHRoZSByb3V0ZXIgZm9yIGNoYW5naW5nIHRoZSBxdWVyeSBwYXJhbXMgZm9yIHRoZSBjdXJyZW50IHVybCBcbiAgICAgKiB3aXRob3V0IGNyZWF0aW5nIGEgbmV3IGhpc3RvcnkgZW50cnkgb3IgcmVtb3ZpbmcgYW55IGV4aXN0aW5nIHF1ZXJ5IHBhcmFtZXRlcnMuXG4gICAgICogVGhlIHByb3ZpZGVkIHBhcmFtcyBhcmUgdXBkYXRlZCBpZiB0aGV5IGFscmVhZHkgZXhpc3Qgb3IgYWRkZWQgdG8gdGhlIHVybCBpZiB0aGV5IGRvbid0XG4gICAgICogXG4gICAgICogQHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgbmF2aWdhdGlvbiBzdWNjZWVkcywgZmFsc2UgaWYgc29tZXRoaW5nIChsaWtlIGEgZ3VhcmQpIGJsb2NrcyBpdC5cbiAgICAgKiBJbiBub3JtYWwgdXNlLCB0aGUgbmF2aWdhdGlvbiBzaG91bGQgc3VjY2VlZCB1bmxlc3Mgd2UgdXNlIHF1ZXJ5IHBhcmFtcyB0byBibG9jayBhY2Nlc3MgdG8gYSByb3V0ZSB0aGUgdXNlciBpcyBhbHJlYWR5IG9uXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIG1vZGlmeUhpc3RvcnlRdWVyeVBhcmFtc1N1YnNldChxdWVyeVBhcmFtczogUGFyYW1zKSA6IFByb21pc2U8Ym9vbGVhbj57XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZSggW10sIHtcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJywgXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKkEgd3JhcHBlciBhcm91bmQgdGhlIGRlZmF1bHQgamF2YXNjcmlwdCBjb25maXJtIGRpYWxvZyB0byBhbGxvdyB1cyB0byB1bml0IHRlc3QgZGVwZW5kZW50IGNvZGUuXG4gICAgICogT2YgY291cnNlIGV2ZW50dWFsbHkgd2UnZCBsaWtlIHRvIGhhdmUgcHJldHR5IGNvbmZpcm1hdGlvbnMgZm9yIGV2ZXJ5dGhpbmcsIGJ1dCBpbiBzb21lIGNhc2VzIGl0IHdhc24ndCB3b3J0aCB0aGUgZXh0cmEgdGltZVxuICAgICAqIHNvIHdlJ3JlIHVzaW5nIHRoaXMgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uZmlybShwcm9tcHQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNvbmZpcm0ocHJvbXB0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgdGhlIGN1cnJlbnQgd2luZG93IG9yIGEgd2luZG93IGluc3RhbmNlIGlmIG9uZSBpcyBwcm92aWRlZFxuICAgICAqIEBwYXJhbSB3aW5kb3dJbnN0YW5jZSAtIFdpbmRvdyB0byBjbG9zZSAob3B0aW9uYWwpXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlV2luZG93KHdpbmRvd0luc3RhbmNlPzogV2luZG93KTogdm9pZCB7XG4gICAgICAgIGlmICh3aW5kb3dJbnN0YW5jZSkge1xuICAgICAgICAgICAgd2luZG93SW5zdGFuY2UuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldExvY2F0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyB3aW5kb3cubG9jYXRpb24uaGFzaDtcbiAgICB9XG5cbiAgICAvKiogR2V0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmdWxsIHVybCwgaW5jbHVkaW5nIHByb3RvY29sLCBob3N0IGFuZCBwYXRoICovXG4gICAgcHVibGljIGdldEZ1bGxVcmwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIH1cblxuICAgIC8qKiBHZXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGJhc2UgdXJsLCBpbmNsdWRpbmcgcHJvdG9jb2wsIGRvbWFpbiBhbmQgcG9ydCAoaWYgZXhwbGljaXRseSBzcGVjaWZpZWQpICovXG4gICAgcHVibGljIGdldEJhc2VVcmwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVsb2FkcyB0aGUgYnJvd3NlciB3aW5kb3cuXG4gICAgICogTk9UIFJFQ09NTUVOREVELiBTZWVrIG90aGVyIG9wdGlvbnMgZm9yIHJlbG9hZGluZyBjb250ZW50IHdpdGhpbiBBbmd1bGFyIGJlZm9yZSByZXNvcnRpbmcgdG8gdGhpcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVsb2FkV2luZG93KCkge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIHdpbmRvdyBgYmVmb3JldW5sb2FkYCBldmVudCBpcyBmaXJlZC5cbiAgICAgKlxuICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHdhcyBwYXNzZWQgdG8gYHdpbmRvdy5hZGRFdmVudExpc3RlbmVyYFxuICAgICAqIG11c3QgYmUgcmV0YWluZWQgZm9yIGB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcmAgdG8gZnVuY3Rpb24gcHJvcGVybHkuXG4gICAgICpcbiAgICAgKiBTb21lIGJyb3dzZXJzIHJlcXVpcmUgdGhlIGV2ZW50J3MgYHJldHVyblZhbHVlYCB0byBiZSBzZXQgdG8gc2hvdyB0aGUgY29uZmlybWF0aW9uXG4gICAgICogZGlhbG9nLlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy9iZWZvcmV1bmxvYWRfZXZlbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGJlZm9yZVVubG9hZEZ1bmN0aW9uID0gKGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkgPT4ge1xuICAgICAgICAvLyBDYW5jZWwgdGhlIGV2ZW50IGFzIHN0YXRlZCBieSB0aGUgc3RhbmRhcmQuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIC8vIENocm9tZSByZXF1aXJlcyByZXR1cm5WYWx1ZSB0byBiZSBzZXQuXG4gICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gJyc7XG4gICAgfTtcbn1cbiJdfQ==
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../avatar/avatar.service";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
import * as i3 from "../../controls/dropdown/dropdown.component";
|
|
6
|
-
import * as i4 from "../avatar/avatar.component";
|
|
7
|
-
export class AppBarComponent {
|
|
8
|
-
constructor(avatarService) {
|
|
9
|
-
this.avatarService = avatarService;
|
|
10
|
-
this.userMenuItems = [];
|
|
11
|
-
this.userMenuWidth = 0;
|
|
12
|
-
this.userMenuMinWidth = 160;
|
|
13
|
-
this.userMenuTabindex = 0;
|
|
14
|
-
this.iconPath = '/assets/images/icon.svg';
|
|
15
|
-
this.hideAppIcon = false;
|
|
16
|
-
this.menuItems = [];
|
|
17
|
-
this.userItem = [];
|
|
18
|
-
}
|
|
19
|
-
ngOnChanges() {
|
|
20
|
-
if (this.user) {
|
|
21
|
-
this.userItem[0] = { label: this.avatarService.getAvatarLabels(this.user).full || '', display: 'heading' };
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
this.userItem = [];
|
|
25
|
-
}
|
|
26
|
-
this.menuItems = [...this.userItem, ...this.userMenuItems];
|
|
27
|
-
}
|
|
28
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppBarComponent, deps: [{ token: i1.AvatarService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppBarComponent, selector: "ec-app-bar", inputs: { user: "user", userMenuItems: "userMenuItems", userMenuWidth: "userMenuWidth", userMenuMinWidth: "userMenuMinWidth", userMenuTabindex: "userMenuTabindex", iconPath: "iconPath", hideAppIcon: "hideAppIcon" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"logo-container\">\n @if(!hideAppIcon) {\n <img src=\"{{iconPath}}\" alt=\"EnergyCAP Platform\">\n }\n <ng-content select=\".app-bar-logo\"></ng-content>\n</section>\n\n<section class=\"title-container\">\n <ng-content select=\".app-bar-title\"></ng-content>\n</section>\n\n<section class=\"actions-container\">\n <ng-content select=\".app-bar-actions\"></ng-content>\n <ec-dropdown id=\"AppBarUserMenu\"\n *ngIf=\"userMenuItems.length; else avatar\"\n [items]=\"menuItems\"\n [buttonCustomTemplate]=\"avatar\"\n [showArrow]=\"false\"\n [menuWidth]=\"userMenuWidth\"\n [menuMinWidth]=\"userMenuMinWidth\"\n [tabindex]=\"userMenuTabindex\"></ec-dropdown>\n</section>\n\n<ng-template #avatar>\n <ec-avatar [user]=\"user\"></ec-avatar>\n</ng-template>", styles: [":host{display:flex;height:3rem;align-items:center;width:100%;padding:0 .75rem 0 1rem;background-color:var(--ec-background-color);position:relative;z-index:var(--ec-z-index-navbar)}:host ::ng-deep .app-bar-actions{display:flex;align-items:center;justify-content:flex-end;margin-right:.25rem}section{flex:1 1}.logo-container img{width:2rem;height:2rem}.title-container{text-align:center}.actions-container{display:flex;justify-content:flex-end}#AppBarUserMenu ::ng-deep ec-button{--ec-border-radius: 50%}#AppBarUserMenu ::ng-deep ec-button.active>.ec-button-custom{background-color:transparent;border-color:var(--ec-color-primary-light)}#AppBarUserMenu ::ng-deep ec-button .ec-button-custom:focus{background-color:var(--ec-background-color)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DropdownComponent, selector: "ec-dropdown", inputs: ["id", "autofocus", "status", "disabled", "label", "icon", "buttonType", "buttonAlignment", "buttonTitle", "tabindex", "showArrow", "items", "menuTemplateType", "menuTitle", "menuHeight", "menuWidth", "menuMinWidth", "menuPosition", "menuFooter", "popupFixed", "buttonCustomTemplate", "pending"], outputs: ["itemSelected", "popupOpened"] }, { kind: "component", type: i4.AvatarComponent, selector: "ec-avatar", inputs: ["user"] }] }); }
|
|
30
|
-
}
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppBarComponent, decorators: [{
|
|
32
|
-
type: Component,
|
|
33
|
-
args: [{ selector: 'ec-app-bar', template: "<section class=\"logo-container\">\n @if(!hideAppIcon) {\n <img src=\"{{iconPath}}\" alt=\"EnergyCAP Platform\">\n }\n <ng-content select=\".app-bar-logo\"></ng-content>\n</section>\n\n<section class=\"title-container\">\n <ng-content select=\".app-bar-title\"></ng-content>\n</section>\n\n<section class=\"actions-container\">\n <ng-content select=\".app-bar-actions\"></ng-content>\n <ec-dropdown id=\"AppBarUserMenu\"\n *ngIf=\"userMenuItems.length; else avatar\"\n [items]=\"menuItems\"\n [buttonCustomTemplate]=\"avatar\"\n [showArrow]=\"false\"\n [menuWidth]=\"userMenuWidth\"\n [menuMinWidth]=\"userMenuMinWidth\"\n [tabindex]=\"userMenuTabindex\"></ec-dropdown>\n</section>\n\n<ng-template #avatar>\n <ec-avatar [user]=\"user\"></ec-avatar>\n</ng-template>", styles: [":host{display:flex;height:3rem;align-items:center;width:100%;padding:0 .75rem 0 1rem;background-color:var(--ec-background-color);position:relative;z-index:var(--ec-z-index-navbar)}:host ::ng-deep .app-bar-actions{display:flex;align-items:center;justify-content:flex-end;margin-right:.25rem}section{flex:1 1}.logo-container img{width:2rem;height:2rem}.title-container{text-align:center}.actions-container{display:flex;justify-content:flex-end}#AppBarUserMenu ::ng-deep ec-button{--ec-border-radius: 50%}#AppBarUserMenu ::ng-deep ec-button.active>.ec-button-custom{background-color:transparent;border-color:var(--ec-color-primary-light)}#AppBarUserMenu ::ng-deep ec-button .ec-button-custom:focus{background-color:var(--ec-background-color)}\n"] }]
|
|
34
|
-
}], ctorParameters: () => [{ type: i1.AvatarService }], propDecorators: { user: [{
|
|
35
|
-
type: Input
|
|
36
|
-
}], userMenuItems: [{
|
|
37
|
-
type: Input
|
|
38
|
-
}], userMenuWidth: [{
|
|
39
|
-
type: Input
|
|
40
|
-
}], userMenuMinWidth: [{
|
|
41
|
-
type: Input
|
|
42
|
-
}], userMenuTabindex: [{
|
|
43
|
-
type: Input
|
|
44
|
-
}], iconPath: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}], hideAppIcon: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9hcHAtYmFyL2FwcC1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvYXBwLWJhci9hcHAtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVNUQsTUFBTSxPQUFPLGVBQWU7SUFhMUIsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFYdkMsa0JBQWEsR0FBZSxFQUFFLENBQUM7UUFDL0Isa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIscUJBQWdCLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQixhQUFRLEdBQUcseUJBQXlCLENBQUM7UUFDckMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFdEMsY0FBUyxHQUFlLEVBQUUsQ0FBQTtRQUVsQixhQUFRLEdBQWUsRUFBRSxDQUFDO0lBRWtCLENBQUM7SUFFOUMsV0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBQyxDQUFDO1FBQzNHLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0QsQ0FBQzsrR0F2QlUsZUFBZTttR0FBZixlQUFlLCtSQ1Y1QiwwMkJBeUJjOzs0RkRmRCxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFlBQVk7a0ZBS2IsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICcuLi8uLi9jb250cm9scy9tZW51L21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEF2YXRhclVzZXIgfSBmcm9tICcuLi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdmF0YXJTZXJ2aWNlIH0gZnJvbSAnLi4vYXZhdGFyL2F2YXRhci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWMtYXBwLWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLWJhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFwcEJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHVzZXI/OiBBdmF0YXJVc2VyO1xuICBASW5wdXQoKSB1c2VyTWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XG4gIEBJbnB1dCgpIHVzZXJNZW51V2lkdGggPSAwO1xuICBASW5wdXQoKSB1c2VyTWVudU1pbldpZHRoID0gMTYwO1xuICBASW5wdXQoKSB1c2VyTWVudVRhYmluZGV4ID0gMDtcbiAgQElucHV0KCkgaWNvblBhdGggPSAnL2Fzc2V0cy9pbWFnZXMvaWNvbi5zdmcnO1xuICBASW5wdXQoKSBoaWRlQXBwSWNvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdXG5cbiAgcHJpdmF0ZSB1c2VySXRlbTogTWVudUl0ZW1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXZhdGFyU2VydmljZTogQXZhdGFyU2VydmljZSkgeyB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVzZXIpIHtcbiAgICAgIHRoaXMudXNlckl0ZW1bMF0gPSB7bGFiZWw6IHRoaXMuYXZhdGFyU2VydmljZS5nZXRBdmF0YXJMYWJlbHModGhpcy51c2VyKS5mdWxsIHx8ICcnLCBkaXNwbGF5OiAnaGVhZGluZyd9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVzZXJJdGVtID0gW107XG4gICAgfVxuXG4gICAgdGhpcy5tZW51SXRlbXMgPSBbLi4udGhpcy51c2VySXRlbSwgLi4udGhpcy51c2VyTWVudUl0ZW1zXTtcbiAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJsb2dvLWNvbnRhaW5lclwiPlxuICBAaWYoIWhpZGVBcHBJY29uKSB7XG4gICAgPGltZyBzcmM9XCJ7e2ljb25QYXRofX1cIiBhbHQ9XCJFbmVyZ3lDQVAgUGxhdGZvcm1cIj5cbiAgfVxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuYXBwLWJhci1sb2dvXCI+PC9uZy1jb250ZW50PlxuPC9zZWN0aW9uPlxuXG48c2VjdGlvbiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuYXBwLWJhci10aXRsZVwiPjwvbmctY29udGVudD5cbjwvc2VjdGlvbj5cblxuPHNlY3Rpb24gY2xhc3M9XCJhY3Rpb25zLWNvbnRhaW5lclwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuYXBwLWJhci1hY3Rpb25zXCI+PC9uZy1jb250ZW50PlxuICA8ZWMtZHJvcGRvd24gaWQ9XCJBcHBCYXJVc2VyTWVudVwiXG4gICAgICAgICAgICAgICAqbmdJZj1cInVzZXJNZW51SXRlbXMubGVuZ3RoOyBlbHNlIGF2YXRhclwiXG4gICAgICAgICAgICAgICBbaXRlbXNdPVwibWVudUl0ZW1zXCJcbiAgICAgICAgICAgICAgIFtidXR0b25DdXN0b21UZW1wbGF0ZV09XCJhdmF0YXJcIlxuICAgICAgICAgICAgICAgW3Nob3dBcnJvd109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICBbbWVudVdpZHRoXT1cInVzZXJNZW51V2lkdGhcIlxuICAgICAgICAgICAgICAgW21lbnVNaW5XaWR0aF09XCJ1c2VyTWVudU1pbldpZHRoXCJcbiAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ1c2VyTWVudVRhYmluZGV4XCI+PC9lYy1kcm9wZG93bj5cbjwvc2VjdGlvbj5cblxuPG5nLXRlbXBsYXRlICNhdmF0YXI+XG4gIDxlYy1hdmF0YXIgW3VzZXJdPVwidXNlclwiPjwvZWMtYXZhdGFyPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./avatar.service";
|
|
4
|
-
export class AvatarComponent {
|
|
5
|
-
constructor(el, renderer, avatarService) {
|
|
6
|
-
this.el = el;
|
|
7
|
-
this.renderer = renderer;
|
|
8
|
-
this.avatarService = avatarService;
|
|
9
|
-
/** Color map base on the first let of the label */
|
|
10
|
-
this.colors = {
|
|
11
|
-
abcde01: 'red',
|
|
12
|
-
fghij23: 'orange',
|
|
13
|
-
klmn15: 'yellow',
|
|
14
|
-
opqr67: 'green',
|
|
15
|
-
stuv8: 'blue',
|
|
16
|
-
wxyz9: 'purple'
|
|
17
|
-
};
|
|
18
|
-
/** Label is defaulted to HI in the rare case the user does not have a first name, last name, email or username */
|
|
19
|
-
this.label = 'HI';
|
|
20
|
-
/** Track the current CSS class so we can remove it if the user changes before setting the next one */
|
|
21
|
-
this.currentCSSClass = '';
|
|
22
|
-
}
|
|
23
|
-
ngOnChanges(changes) {
|
|
24
|
-
if (!changes.user.firstChange && !this.user) {
|
|
25
|
-
console.error(`AvatarComponent expected a value for the [user] input but got ${this.user} instead.`);
|
|
26
|
-
}
|
|
27
|
-
this.updateLabel();
|
|
28
|
-
this.updateColor();
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Update the Avatar label
|
|
32
|
-
*
|
|
33
|
-
*/
|
|
34
|
-
updateLabel() {
|
|
35
|
-
if (this.user) {
|
|
36
|
-
this.label = this.avatarService.getAvatarLabels(this.user).abbreviation;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Sets the color of the Avatar based on the first letter of the label. If the label is HI or is not
|
|
41
|
-
* a letter, default to gray.
|
|
42
|
-
*/
|
|
43
|
-
updateColor() {
|
|
44
|
-
if (this.currentCSSClass) {
|
|
45
|
-
this.renderer.removeClass(this.el.nativeElement, this.currentCSSClass);
|
|
46
|
-
}
|
|
47
|
-
let color = 'gray';
|
|
48
|
-
if (this.label !== 'HI' && this.label) {
|
|
49
|
-
for (let key in this.colors) {
|
|
50
|
-
if (key.includes(this.label[0].toLowerCase())) {
|
|
51
|
-
color = this.colors[key];
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
this.currentCSSClass = `avatar-${color}`;
|
|
56
|
-
this.renderer.addClass(this.el.nativeElement, this.currentCSSClass);
|
|
57
|
-
}
|
|
58
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AvatarComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.AvatarService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AvatarComponent, selector: "ec-avatar", inputs: { user: "user" }, usesOnChanges: true, ngImport: i0, template: '{{label}}', isInline: true, styles: [":host{display:flex;width:2.25rem;height:2.25rem;align-items:center;justify-content:center;font-size:1rem;line-height:1.25rem;border-radius:50%;color:var(--ec-color-primary-light);text-transform:uppercase}:host.avatar-red{background-color:var(--ec-avatar-background-color-red, var(--ec-color-red-5));color:var(--ec-avatar-color-red, var(--ec-color-primary-light))}:host.avatar-orange{background-color:var(--ec-avatar-background-color-orange, var(--ec-color-orange-5));color:var(--ec-avatar-color-orange, var(--ec-color-primary-light))}:host.avatar-yellow{background-color:var(--ec-avatar-background-color-yellow, var(--ec-color-yellow-5));color:var(--ec-avatar-color-yellow, var(--ec-color-secondary-dark))}:host.avatar-green{background-color:var(--ec-avatar-background-color-green, var(--ec-color-green-5));color:var(--ec-avatar-color-green, var(--ec-color-primary-light))}:host.avatar-blue{background-color:var(--ec-avatar-background-color-blue, var(--ec-color-blue-5));color:var(--ec-avatar-color-blue, var(--ec-color-primary-light))}:host.avatar-purple{background-color:var(--ec-avatar-background-color-purple, var(--ec-color-purple-5));color:var(--ec-avatar-color-purple, var(--ec-color-primary-light))}:host.avatar-gray{background-color:var(--ec-avatar-background-color-gray, var(--ec-color-gray-3));color:var(--ec-avatar-color-gray, var(--ec-color-primary-light))}\n"] }); }
|
|
60
|
-
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AvatarComponent, decorators: [{
|
|
62
|
-
type: Component,
|
|
63
|
-
args: [{ selector: 'ec-avatar', template: '{{label}}', styles: [":host{display:flex;width:2.25rem;height:2.25rem;align-items:center;justify-content:center;font-size:1rem;line-height:1.25rem;border-radius:50%;color:var(--ec-color-primary-light);text-transform:uppercase}:host.avatar-red{background-color:var(--ec-avatar-background-color-red, var(--ec-color-red-5));color:var(--ec-avatar-color-red, var(--ec-color-primary-light))}:host.avatar-orange{background-color:var(--ec-avatar-background-color-orange, var(--ec-color-orange-5));color:var(--ec-avatar-color-orange, var(--ec-color-primary-light))}:host.avatar-yellow{background-color:var(--ec-avatar-background-color-yellow, var(--ec-color-yellow-5));color:var(--ec-avatar-color-yellow, var(--ec-color-secondary-dark))}:host.avatar-green{background-color:var(--ec-avatar-background-color-green, var(--ec-color-green-5));color:var(--ec-avatar-color-green, var(--ec-color-primary-light))}:host.avatar-blue{background-color:var(--ec-avatar-background-color-blue, var(--ec-color-blue-5));color:var(--ec-avatar-color-blue, var(--ec-color-primary-light))}:host.avatar-purple{background-color:var(--ec-avatar-background-color-purple, var(--ec-color-purple-5));color:var(--ec-avatar-color-purple, var(--ec-color-primary-light))}:host.avatar-gray{background-color:var(--ec-avatar-background-color-gray, var(--ec-color-gray-3));color:var(--ec-avatar-color-gray, var(--ec-color-primary-light))}\n"] }]
|
|
64
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.AvatarService }], propDecorators: { user: [{
|
|
65
|
-
type: Input
|
|
66
|
-
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2F2YXRhci9hdmF0YXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUF1QyxNQUFNLGVBQWUsQ0FBQzs7O0FBZWxHLE1BQU0sT0FBTyxlQUFlO0lBb0IxQixZQUFvQixFQUFjLEVBQVUsUUFBbUIsRUFBVSxhQUE0QjtRQUFqRixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBbEJyRyxtREFBbUQ7UUFDM0MsV0FBTSxHQUE0QjtZQUN4QyxPQUFPLEVBQUUsS0FBSztZQUNkLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsS0FBSyxFQUFFLE1BQU07WUFDYixLQUFLLEVBQUUsUUFBUTtTQUNoQixDQUFBO1FBSUQsa0hBQWtIO1FBQzNHLFVBQUssR0FBRyxJQUFJLENBQUM7UUFFcEIsc0dBQXNHO1FBQzlGLG9CQUFlLEdBQUcsRUFBRSxDQUFDO0lBRTJFLENBQUM7SUFFekcsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1QyxPQUFPLENBQUMsS0FBSyxDQUFDLGlFQUFpRSxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUN2RyxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFdBQVc7UUFDakIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEMsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzVCLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDOUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxLQUFLLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEUsQ0FBQzsrR0E1RFUsZUFBZTttR0FBZixlQUFlLGdHQUhoQixXQUFXOzs0RkFHVixlQUFlO2tCQUwzQixTQUFTOytCQUNFLFdBQVcsWUFDWCxXQUFXO21JQWVaLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdmF0YXJTZXJ2aWNlIH0gZnJvbSAnLi9hdmF0YXIuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXZhdGFyVXNlciB7XG4gIGZpcnN0TmFtZT86IHN0cmluZztcbiAgbGFzdE5hbWU/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICB1c2VybmFtZT86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWMtYXZhdGFyJyxcbiAgdGVtcGxhdGU6ICd7e2xhYmVsfX0nLFxuICBzdHlsZVVybHM6IFsnLi9hdmF0YXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIC8qKiBDb2xvciBtYXAgYmFzZSBvbiB0aGUgZmlyc3QgbGV0IG9mIHRoZSBsYWJlbCAqL1xuICBwcml2YXRlIGNvbG9yczogeyBbazogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgYWJjZGUwMTogJ3JlZCcsXG4gICAgZmdoaWoyMzogJ29yYW5nZScsXG4gICAga2xtbjE1OiAneWVsbG93JyxcbiAgICBvcHFyNjc6ICdncmVlbicsXG4gICAgc3R1djg6ICdibHVlJyxcbiAgICB3eHl6OTogJ3B1cnBsZSdcbiAgfVxuXG4gIEBJbnB1dCgpIHVzZXIhOiBBdmF0YXJVc2VyO1xuXG4gIC8qKiBMYWJlbCBpcyBkZWZhdWx0ZWQgdG8gSEkgaW4gdGhlIHJhcmUgY2FzZSB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIGEgZmlyc3QgbmFtZSwgbGFzdCBuYW1lLCBlbWFpbCBvciB1c2VybmFtZSAqL1xuICBwdWJsaWMgbGFiZWwgPSAnSEknO1xuXG4gIC8qKiBUcmFjayB0aGUgY3VycmVudCBDU1MgY2xhc3Mgc28gd2UgY2FuIHJlbW92ZSBpdCBpZiB0aGUgdXNlciBjaGFuZ2VzIGJlZm9yZSBzZXR0aW5nIHRoZSBuZXh0IG9uZSAqL1xuICBwcml2YXRlIGN1cnJlbnRDU1NDbGFzcyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBhdmF0YXJTZXJ2aWNlOiBBdmF0YXJTZXJ2aWNlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoIWNoYW5nZXMudXNlci5maXJzdENoYW5nZSAmJiAhdGhpcy51c2VyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBdmF0YXJDb21wb25lbnQgZXhwZWN0ZWQgYSB2YWx1ZSBmb3IgdGhlIFt1c2VyXSBpbnB1dCBidXQgZ290ICR7dGhpcy51c2VyfSBpbnN0ZWFkLmApO1xuICAgIH0gXG4gICAgICBcbiAgICB0aGlzLnVwZGF0ZUxhYmVsKCk7XG4gICAgdGhpcy51cGRhdGVDb2xvcigpOyAgICBcbiAgfVxuXG4gIC8qKiBcbiAgICogVXBkYXRlIHRoZSBBdmF0YXIgbGFiZWwgXG4gICAqIFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVMYWJlbCgpIHtcbiAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICB0aGlzLmxhYmVsID0gdGhpcy5hdmF0YXJTZXJ2aWNlLmdldEF2YXRhckxhYmVscyh0aGlzLnVzZXIpLmFiYnJldmlhdGlvbjtcbiAgICB9XG4gIH1cblxuICAvKiogXG4gICAqIFNldHMgdGhlIGNvbG9yIG9mIHRoZSBBdmF0YXIgYmFzZWQgb24gdGhlIGZpcnN0IGxldHRlciBvZiB0aGUgbGFiZWwuIElmIHRoZSBsYWJlbCBpcyBISSBvciBpcyBub3RcbiAgICogYSBsZXR0ZXIsIGRlZmF1bHQgdG8gZ3JheS5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlQ29sb3IoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudENTU0NsYXNzKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5jdXJyZW50Q1NTQ2xhc3MpO1xuICAgIH1cblxuICAgIGxldCBjb2xvciA9ICdncmF5JztcbiAgICBpZiAodGhpcy5sYWJlbCAhPT0gJ0hJJyAmJiB0aGlzLmxhYmVsKSB7XG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5jb2xvcnMpIHtcbiAgICAgICAgaWYgKGtleS5pbmNsdWRlcyh0aGlzLmxhYmVsWzBdLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgY29sb3IgPSB0aGlzLmNvbG9yc1trZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY3VycmVudENTU0NsYXNzID0gYGF2YXRhci0ke2NvbG9yfWA7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMuY3VycmVudENTU0NsYXNzKTtcbiAgfVxufSJdfQ==
|