ng-configcat-publicapi-ui 4.2.2 → 5.0.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/README.md +2 -2
- package/fesm2022/ng-configcat-publicapi-ui.mjs +4240 -3534
- package/fesm2022/ng-configcat-publicapi-ui.mjs.map +1 -1
- package/index.d.ts +476 -3
- package/package.json +11 -10
- package/src/css/button.scss +83 -0
- package/src/css/controls.scss +390 -0
- package/src/css/dialog.scss +63 -0
- package/src/css/icon.scss +7 -0
- package/src/css/slider.scss +82 -0
- package/src/css/snackbar.scss +16 -0
- package/src/css/table.scss +142 -0
- package/src/css/theme.scss +47 -0
- package/src/css/tooltip.scss +12 -0
- package/src/css/variables.scss +324 -0
- package/src/css/vars/auth.scss +24 -0
- package/src/css/vars/banner.scss +116 -0
- package/src/css/vars/box.scss +48 -0
- package/src/css/vars/config-overview.scss +27 -0
- package/src/css/vars/flag.scss +146 -0
- package/src/css/vars/header.scss +24 -0
- package/src/css/vars/icon.scss +33 -0
- package/src/css/vars/logo.scss +19 -0
- package/src/css/vars/notification.scss +38 -0
- package/src/css/vars/overview.scss +51 -0
- package/src/css/vars/prism.scss +44 -0
- package/src/css/vars/sidenav.scss +42 -0
- package/src/css/vars/theme.scss +78 -0
- package/src/public-api.scss +208 -0
- package/esm2022/lib/_directives/index.mjs +0 -2
- package/esm2022/lib/_directives/input-display-normalizer.directive.mjs +0 -38
- package/esm2022/lib/_models/deleteSettingModel.mjs +0 -2
- package/esm2022/lib/_models/flag-state.mjs +0 -2
- package/esm2022/lib/_models/index.mjs +0 -4
- package/esm2022/lib/_models/setting-value-formgroup.mjs +0 -2
- package/esm2022/lib/_models/settingValuesModel.mjs +0 -2
- package/esm2022/lib/_models/updateSettingValuesModel.mjs +0 -2
- package/esm2022/lib/_models/user-comparator.mjs +0 -100
- package/esm2022/lib/_services/app-data-adapter.mjs +0 -18
- package/esm2022/lib/_services/comparison-value-list-helper.mjs +0 -72
- package/esm2022/lib/_services/date-helper.mjs +0 -56
- package/esm2022/lib/_services/form-generator.mjs +0 -359
- package/esm2022/lib/_services/form-helper.mjs +0 -163
- package/esm2022/lib/_services/index.mjs +0 -3
- package/esm2022/lib/_services/messaging.service.mjs +0 -26
- package/esm2022/lib/_services/platform-helper.mjs +0 -7
- package/esm2022/lib/_services/public-api.service.mjs +0 -77
- package/esm2022/lib/_services/setting-list-form-helper.mjs +0 -171
- package/esm2022/lib/_services/tracking.directive.mjs +0 -16
- package/esm2022/lib/ace-editor/ace-editor.component.mjs +0 -137
- package/esm2022/lib/authorization/authorization.component.mjs +0 -62
- package/esm2022/lib/base/base-select.component.mjs +0 -27
- package/esm2022/lib/base/base.component.mjs +0 -48
- package/esm2022/lib/bootstrap.mjs +0 -11
- package/esm2022/lib/configuration.mjs +0 -14
- package/esm2022/lib/dialogs/confirmation-dialog/confirmation-dialog.mjs +0 -28
- package/esm2022/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.mjs +0 -27
- package/esm2022/lib/dialogs/expand-dialog/expand-dialog.component.mjs +0 -80
- package/esm2022/lib/dialogs/info-dialog/info-dialog.mjs +0 -29
- package/esm2022/lib/dialogs/reason-dialog/reason-dialog.component.mjs +0 -36
- package/esm2022/lib/dialogs/reroute-dialog/reroute-dialog.mjs +0 -28
- package/esm2022/lib/dialogs/save-snackbar/save-snackbar.component.mjs +0 -14
- package/esm2022/lib/ng-configcat-publicapi-ui.module.mjs +0 -288
- package/esm2022/lib/selects/config-select/config-select.component.mjs +0 -60
- package/esm2022/lib/selects/environment-select/environment-select.component.mjs +0 -47
- package/esm2022/lib/selects/product-select/product-select.component.mjs +0 -40
- package/esm2022/lib/selects/setting-select/setting-select.component.mjs +0 -47
- package/esm2022/lib/setting-item/setting-item.component.mjs +0 -118
- package/esm2022/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.mjs +0 -81
- package/esm2022/lib/setting-list/setting/rollout-rules/rollout-rules.component.mjs +0 -293
- package/esm2022/lib/setting-list/setting/setting.component.mjs +0 -136
- package/esm2022/lib/setting-list/setting/value/value.component.mjs +0 -37
- package/esm2022/lib/setting-list/setting-list.component.mjs +0 -194
- package/esm2022/lib/v2/feature-flag/date-time-picker/date-time-picker.component.mjs +0 -123
- package/esm2022/lib/v2/feature-flag/dependees-dialog/dependees-dialog.component.mjs +0 -30
- package/esm2022/lib/v2/feature-flag/evaluation-formula/evaluation-formula.component.mjs +0 -220
- package/esm2022/lib/v2/feature-flag/evaluation-formula/feature-flag-value/feature-flag-value.component.mjs +0 -61
- package/esm2022/lib/v2/feature-flag/evaluation-formula/popout-text-editor-dialog/popout-text-editor-dialog.component.mjs +0 -72
- package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/condition-chip/condition-chip.component.mjs +0 -25
- package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/conditions.component.mjs +0 -105
- package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/prerequisite-flag-condition/prerequisite-flag-condition.component.mjs +0 -75
- package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/segment-condition/segment-condition.component.mjs +0 -48
- package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/comparator-dialog/comparator-dialog.component.mjs +0 -113
- package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/popout-list-editor-dialog/popout-list-editor-dialog.component.mjs +0 -251
- package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/user-condition.component.mjs +0 -444
- package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/percentage-options/percentage-options.component.mjs +0 -84
- package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/targeting-rule.component.mjs +0 -129
- package/esm2022/lib/v2/feature-flag/feature-flag.component.mjs +0 -190
- package/esm2022/lib/v2/feature-flag/percentage-evaluation-attribute-dialog/percentage-evaluation-attribute-dialog.component.mjs +0 -65
- package/esm2022/lib/v2/feature-flag-item.component.mjs +0 -330
- package/esm2022/ng-configcat-publicapi-ui.mjs +0 -5
- package/esm2022/public-api.mjs +0 -15
- package/lib/_directives/index.d.ts +0 -1
- package/lib/_directives/input-display-normalizer.directive.d.ts +0 -13
- package/lib/_models/deleteSettingModel.d.ts +0 -6
- package/lib/_models/flag-state.d.ts +0 -20
- package/lib/_models/index.d.ts +0 -3
- package/lib/_models/setting-value-formgroup.d.ts +0 -69
- package/lib/_models/settingValuesModel.d.ts +0 -11
- package/lib/_models/updateSettingValuesModel.d.ts +0 -7
- package/lib/_models/user-comparator.d.ts +0 -84
- package/lib/_services/app-data-adapter.d.ts +0 -7
- package/lib/_services/comparison-value-list-helper.d.ts +0 -17
- package/lib/_services/date-helper.d.ts +0 -6
- package/lib/_services/form-generator.d.ts +0 -59
- package/lib/_services/form-helper.d.ts +0 -21
- package/lib/_services/index.d.ts +0 -2
- package/lib/_services/messaging.service.d.ts +0 -12
- package/lib/_services/platform-helper.d.ts +0 -3
- package/lib/_services/public-api.service.d.ts +0 -21
- package/lib/_services/setting-list-form-helper.d.ts +0 -19
- package/lib/_services/tracking.directive.d.ts +0 -6
- package/lib/ace-editor/ace-editor.component.d.ts +0 -32
- package/lib/authorization/authorization.component.d.ts +0 -21
- package/lib/base/base-select.component.d.ts +0 -10
- package/lib/base/base.component.d.ts +0 -18
- package/lib/bootstrap.d.ts +0 -13
- package/lib/configuration.d.ts +0 -9
- package/lib/dialogs/confirmation-dialog/confirmation-dialog.d.ts +0 -19
- package/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.d.ts +0 -17
- package/lib/dialogs/expand-dialog/expand-dialog.component.d.ts +0 -25
- package/lib/dialogs/info-dialog/info-dialog.d.ts +0 -17
- package/lib/dialogs/reason-dialog/reason-dialog.component.d.ts +0 -15
- package/lib/dialogs/reroute-dialog/reroute-dialog.d.ts +0 -20
- package/lib/dialogs/save-snackbar/save-snackbar.component.d.ts +0 -8
- package/lib/ng-configcat-publicapi-ui.module.d.ts +0 -75
- package/lib/selects/config-select/config-select.component.d.ts +0 -17
- package/lib/selects/environment-select/environment-select.component.d.ts +0 -17
- package/lib/selects/product-select/product-select.component.d.ts +0 -14
- package/lib/selects/setting-select/setting-select.component.d.ts +0 -17
- package/lib/setting-item/setting-item.component.d.ts +0 -37
- package/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.d.ts +0 -27
- package/lib/setting-list/setting/rollout-rules/rollout-rules.component.d.ts +0 -61
- package/lib/setting-list/setting/setting.component.d.ts +0 -43
- package/lib/setting-list/setting/value/value.component.d.ts +0 -20
- package/lib/setting-list/setting-list.component.d.ts +0 -53
- package/lib/v2/feature-flag/date-time-picker/date-time-picker.component.d.ts +0 -25
- package/lib/v2/feature-flag/dependees-dialog/dependees-dialog.component.d.ts +0 -27
- package/lib/v2/feature-flag/evaluation-formula/evaluation-formula.component.d.ts +0 -41
- package/lib/v2/feature-flag/evaluation-formula/feature-flag-value/feature-flag-value.component.d.ts +0 -18
- package/lib/v2/feature-flag/evaluation-formula/popout-text-editor-dialog/popout-text-editor-dialog.component.d.ts +0 -30
- package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/condition-chip/condition-chip.component.d.ts +0 -10
- package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/conditions.component.d.ts +0 -27
- package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/prerequisite-flag-condition/prerequisite-flag-condition.component.d.ts +0 -36
- package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/segment-condition/segment-condition.component.d.ts +0 -21
- package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/comparator-dialog/comparator-dialog.component.d.ts +0 -79
- package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/popout-list-editor-dialog/popout-list-editor-dialog.component.d.ts +0 -63
- package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/user-condition.component.d.ts +0 -94
- package/lib/v2/feature-flag/evaluation-formula/targeting-rule/percentage-options/percentage-options.component.d.ts +0 -31
- package/lib/v2/feature-flag/evaluation-formula/targeting-rule/targeting-rule.component.d.ts +0 -33
- package/lib/v2/feature-flag/feature-flag.component.d.ts +0 -49
- package/lib/v2/feature-flag/percentage-evaluation-attribute-dialog/percentage-evaluation-attribute-dialog.component.d.ts +0 -28
- package/lib/v2/feature-flag-item.component.d.ts +0 -66
- package/public-api.d.ts +0 -11
- package/public-api.scss +0 -350
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
|
-
import { UntypedFormArray } from '@angular/forms';
|
|
3
|
-
import { PlatformHelper } from './platform-helper';
|
|
4
|
-
export const percentageRegex = '^[0-9]*$';
|
|
5
|
-
export const wholeNumberRegex = '^[-+]?[0-9]\\d*$';
|
|
6
|
-
export const timeRegex = /^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/;
|
|
7
|
-
export const featureFlagKeyRegex = '^[a-zA-Z]+[a-zA-Z0-9_-]*$';
|
|
8
|
-
export class FormHelper {
|
|
9
|
-
static getErrorMessage(control, hint = '') {
|
|
10
|
-
if (!control || control.valid) {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
if (control.hasError('validateNumberNan')) {
|
|
14
|
-
return `Invalid value.`;
|
|
15
|
-
}
|
|
16
|
-
if (control.hasError('matDatepickerParse')) {
|
|
17
|
-
return `Invalid date value.`;
|
|
18
|
-
}
|
|
19
|
-
if (control.hasError('required')) {
|
|
20
|
-
if (control instanceof UntypedFormArray) {
|
|
21
|
-
return 'The list must contain min 1 items.';
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
return hint ? `${hint} The field is required.` : `The field is required.`;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (control.hasError('emails')) {
|
|
28
|
-
return control.errors.emails;
|
|
29
|
-
}
|
|
30
|
-
if (control.hasError('minlength')) {
|
|
31
|
-
if (control instanceof UntypedFormArray) {
|
|
32
|
-
return 'The list must contain min ' + control.errors.minlength.requiredLength + ' items.';
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
return 'The field must be at least ' + control.errors.minlength.requiredLength + ' characters long.';
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
if (control.hasError('maxlength')) {
|
|
39
|
-
if (control instanceof UntypedFormArray) {
|
|
40
|
-
return 'The list must contain max ' + control.errors.maxlength.requiredLength + ' items.';
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
return 'The field must be at max ' + control.errors.maxlength.requiredLength + ' characters long.';
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (control.hasError('serverSide')) {
|
|
47
|
-
return control.errors.serverSide;
|
|
48
|
-
}
|
|
49
|
-
if (control.hasError('pattern') && control.errors.pattern.requiredPattern === percentageRegex) {
|
|
50
|
-
return 'The percentage value must be a whole number.';
|
|
51
|
-
}
|
|
52
|
-
if (control.hasError('pattern') && control.errors.pattern.requiredPattern === wholeNumberRegex) {
|
|
53
|
-
return 'Please enter a whole number e.g. 42.';
|
|
54
|
-
}
|
|
55
|
-
if (control.hasError('pattern') && control.errors.pattern.requiredPattern === timeRegex) {
|
|
56
|
-
return 'Invalid time value.';
|
|
57
|
-
}
|
|
58
|
-
if (control.hasError('pattern') && control.errors.pattern.requiredPattern === featureFlagKeyRegex) {
|
|
59
|
-
return 'Invalid key. Keys must start with a letter, followed by a combination of numbers, letters, underscores and hyphens.';
|
|
60
|
-
}
|
|
61
|
-
if (control.hasError('pattern')) {
|
|
62
|
-
return 'Not a valid e-mail address.';
|
|
63
|
-
}
|
|
64
|
-
if (control.hasError('alreadyExists')) {
|
|
65
|
-
return control.errors.alreadyExists;
|
|
66
|
-
}
|
|
67
|
-
if (control.hasError('validateSemVer')) {
|
|
68
|
-
return 'Invalid semantic version.';
|
|
69
|
-
}
|
|
70
|
-
if (control.hasError('validatePercentageSum')) {
|
|
71
|
-
return 'The sum of percentages must be equal to 100.';
|
|
72
|
-
}
|
|
73
|
-
if (control.hasError('min')) {
|
|
74
|
-
return 'The value must be greater than ' + (control.errors.min.min - 1) + '.';
|
|
75
|
-
}
|
|
76
|
-
if (control.hasError('max')) {
|
|
77
|
-
return 'The value must be less than ' + (control.errors.max.max + 1) + '.';
|
|
78
|
-
}
|
|
79
|
-
return '';
|
|
80
|
-
}
|
|
81
|
-
static handleErrors(formGroup, error) {
|
|
82
|
-
if (error instanceof HttpErrorResponse) {
|
|
83
|
-
const response = error;
|
|
84
|
-
switch (response.status) {
|
|
85
|
-
case 400:
|
|
86
|
-
let unknownFieldName = false;
|
|
87
|
-
for (const fieldName in error.error) {
|
|
88
|
-
if (error.error.hasOwnProperty(fieldName) && error.error[fieldName] &&
|
|
89
|
-
(error.error[fieldName]?.length > 0 || error.error[fieldName]?.Errors?.length > 0)) {
|
|
90
|
-
let jsonFieldName = fieldName;
|
|
91
|
-
if (jsonFieldName.length > 0) {
|
|
92
|
-
jsonFieldName = jsonFieldName[0].toLowerCase() + jsonFieldName.slice(1);
|
|
93
|
-
}
|
|
94
|
-
const errorMessage = error.error[fieldName]?.Errors?.length > 0 ?
|
|
95
|
-
(error.error[fieldName]?.Errors.map((e) => e.ErrorMessage)).join(', ')
|
|
96
|
-
: error.error[fieldName];
|
|
97
|
-
if (formGroup.controls.hasOwnProperty(jsonFieldName)) {
|
|
98
|
-
formGroup.controls[jsonFieldName].setErrors({ serverSide: errorMessage });
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
unknownFieldName = true;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
if (unknownFieldName) {
|
|
106
|
-
formGroup.setErrors({ serverSide: 'Something went wrong.' });
|
|
107
|
-
}
|
|
108
|
-
break;
|
|
109
|
-
// in these cases we do not show errors on the form, they're handled by the http
|
|
110
|
-
// interceptor in src\app\_interceptors\httpstatuscode.interceptor.ts
|
|
111
|
-
case 402:
|
|
112
|
-
case 429:
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
formGroup.setErrors({ serverSide: 'Something went wrong on our side. This is not your fault. Please try again.' });
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Converts a value representing a number to a `number` value.
|
|
122
|
-
* Returns `NaN` in the case of non-numerical values.
|
|
123
|
-
*/
|
|
124
|
-
static normalizeNumber(value) {
|
|
125
|
-
switch (typeof value) {
|
|
126
|
-
case "number":
|
|
127
|
-
return value;
|
|
128
|
-
case "string":
|
|
129
|
-
// NOTE: `Number()` converts whitespace strings to 0.
|
|
130
|
-
return value.trim() === '' ? NaN : Number(value);
|
|
131
|
-
case "bigint":
|
|
132
|
-
return Number(value);
|
|
133
|
-
default:
|
|
134
|
-
return NaN;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Converts a value representing a number to the normalized `string`
|
|
139
|
-
* representation of the number. (e.g. `.1` --> `'0.1'`, `3.14e2` --> `'314'`).
|
|
140
|
-
* Returns `''` in the case of non-numerical values or non-finite numerical values.
|
|
141
|
-
*/
|
|
142
|
-
static normalizeNumberStoredAsString(value) {
|
|
143
|
-
value = FormHelper.normalizeNumber(value);
|
|
144
|
-
// NOTE: `NaN` is not considered finite.
|
|
145
|
-
return isFinite(value) ? value + '' : '';
|
|
146
|
-
}
|
|
147
|
-
static formatNumberForDisplay(value) {
|
|
148
|
-
if (!isFinite(value)) {
|
|
149
|
-
return '';
|
|
150
|
-
}
|
|
151
|
-
// Chromium-based browsers don't respect the `lang` attribute,
|
|
152
|
-
// they use a display format corresponding to the browser's language setting.
|
|
153
|
-
if (PlatformHelper.isChromium()) {
|
|
154
|
-
return value.toLocaleString();
|
|
155
|
-
}
|
|
156
|
-
// Firefox (and probably other browsers) respect the `lang` attribute,
|
|
157
|
-
// which is currently set to the fixed value of "en" (see index.html),
|
|
158
|
-
// so in these cases dot should be used as the decimal separator.
|
|
159
|
-
// (In case localization is implemented in the application, this logic should be revised!)
|
|
160
|
-
return value + '';
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvX3NlcnZpY2VzL2Zvcm0taGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBd0MsZ0JBQWdCLEVBQThCLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLDJDQUEyQyxDQUFDO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLDJCQUEyQixDQUFDO0FBRS9ELE1BQU0sT0FBTyxVQUFVO0lBRVosTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFtRixFQUFFLElBQUksR0FBRyxFQUFFO1FBQ3hILElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sZ0JBQWdCLENBQUE7UUFDekIsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxxQkFBcUIsQ0FBQTtRQUM5QixDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDakMsSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUUsQ0FBQztnQkFD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b250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUFycmF5LCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBsYXRmb3JtSGVscGVyIH0gZnJvbSAnLi9wbGF0Zm9ybS1oZWxwZXInO1xuXG5leHBvcnQgY29uc3QgcGVyY2VudGFnZVJlZ2V4ID0gJ15bMC05XSokJztcbmV4cG9ydCBjb25zdCB3aG9sZU51bWJlclJlZ2V4ID0gJ15bLStdP1swLTldXFxcXGQqJCc7XG5leHBvcnQgY29uc3QgdGltZVJlZ2V4ID0gL14oWzAtOV18MFswLTldfDFbMC05XXwyWzAtM10pOlswLTVdWzAtOV0kLztcbmV4cG9ydCBjb25zdCBmZWF0dXJlRmxhZ0tleVJlZ2V4ID0gJ15bYS16QS1aXStbYS16QS1aMC05Xy1dKiQnO1xuXG5leHBvcnQgY2xhc3MgRm9ybUhlbHBlciB7XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEVycm9yTWVzc2FnZShjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgfCBVbnR5cGVkRm9ybUdyb3VwIHwgVW50eXBlZEZvcm1BcnJheSB8IEFic3RyYWN0Q29udHJvbCwgaGludCA9ICcnKSB7XG4gICAgICAgIGlmICghY29udHJvbCB8fCBjb250cm9sLnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcigndmFsaWRhdGVOdW1iZXJOYW4nKSkge1xuICAgICAgICAgICAgcmV0dXJuIGBJbnZhbGlkIHZhbHVlLmBcbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcignbWF0RGF0ZXBpY2tlclBhcnNlJykpIHtcbiAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBkYXRlIHZhbHVlLmBcbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG4gICAgICAgICAgICAgIHJldHVybiAnVGhlIGxpc3QgbXVzdCBjb250YWluIG1pbiAxIGl0ZW1zLic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gaGludCA/IGAke2hpbnR9IFRoZSBmaWVsZCBpcyByZXF1aXJlZC5gIDogYFRoZSBmaWVsZCBpcyByZXF1aXJlZC5gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdlbWFpbHMnKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2wuZXJyb3JzLmVtYWlscztcbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuICAgICAgICAgICAgICByZXR1cm4gJ1RoZSBsaXN0IG11c3QgY29udGFpbiBtaW4gJyArIGNvbnRyb2wuZXJyb3JzLm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aCArICcgaXRlbXMuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiAnVGhlIGZpZWxkIG11c3QgYmUgYXQgbGVhc3QgJyArIGNvbnRyb2wuZXJyb3JzLm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aCArICcgY2hhcmFjdGVycyBsb25nLic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgXG4gICAgICAgICAgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ21heGxlbmd0aCcpKSB7XG4gICAgICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICdUaGUgbGlzdCBtdXN0IGNvbnRhaW4gbWF4ICcgKyBjb250cm9sLmVycm9ycy5tYXhsZW5ndGgucmVxdWlyZWRMZW5ndGggKyAnIGl0ZW1zLic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gJ1RoZSBmaWVsZCBtdXN0IGJlIGF0IG1heCAnICsgY29udHJvbC5lcnJvcnMubWF4bGVuZ3RoLnJlcXVpcmVkTGVuZ3RoICsgJyBjaGFyYWN0ZXJzIGxvbmcuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcignc2VydmVyU2lkZScpKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbC5lcnJvcnMuc2VydmVyU2lkZTtcbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcigncGF0dGVybicpICYmIGNvbnRyb2wuZXJyb3JzLnBhdHRlcm4ucmVxdWlyZWRQYXR0ZXJuID09PSBwZXJjZW50YWdlUmVnZXgpIHtcbiAgICAgICAgICAgIHJldHVybiAnVGhlIHBlcmNlbnRhZ2UgdmFsdWUgbXVzdCBiZSBhIHdob2xlIG51bWJlci4nO1xuICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdwYXR0ZXJuJykgJiYgY29udHJvbC5lcnJvcnMucGF0dGVybi5yZXF1aXJlZFBhdHRlcm4gPT09IHdob2xlTnVtYmVyUmVnZXgpIHtcbiAgICAgICAgICAgIHJldHVybiAnUGxlYXNlIGVudGVyIGEgd2hvbGUgbnVtYmVyIGUuZy4gNDIuJztcbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcigncGF0dGVybicpICYmIGNvbnRyb2wuZXJyb3JzLnBhdHRlcm4ucmVxdWlyZWRQYXR0ZXJuID09PSB0aW1lUmVnZXgpIHtcbiAgICAgICAgICAgIHJldHVybiAnSW52YWxpZCB0aW1lIHZhbHVlLic7XG4gICAgICAgICAgfVxuICAgICAgXG4gICAgICAgICAgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ3BhdHRlcm4nKSAmJiBjb250cm9sLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybiA9PT0gZmVhdHVyZUZsYWdLZXlSZWdleCkge1xuICAgICAgICAgICAgcmV0dXJuICdJbnZhbGlkIGtleS4gS2V5cyBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIsIGZvbGxvd2VkIGJ5IGEgY29tYmluYXRpb24gb2YgbnVtYmVycywgbGV0dGVycywgdW5kZXJzY29yZXMgYW5kIGh5cGhlbnMuJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcigncGF0dGVybicpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ05vdCBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLic7XG4gICAgICAgICAgfSBcbiAgICAgIFxuICAgICAgICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdhbHJlYWR5RXhpc3RzJykpIHtcbiAgICAgICAgICAgIHJldHVybiBjb250cm9sLmVycm9ycy5hbHJlYWR5RXhpc3RzO1xuICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCd2YWxpZGF0ZVNlbVZlcicpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ0ludmFsaWQgc2VtYW50aWMgdmVyc2lvbi4nO1xuICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCd2YWxpZGF0ZVBlcmNlbnRhZ2VTdW0nKSkge1xuICAgICAgICAgICAgcmV0dXJuICdUaGUgc3VtIG9mIHBlcmNlbnRhZ2VzIG11c3QgYmUgZXF1YWwgdG8gMTAwLic7XG4gICAgICAgICAgfVxuICAgICAgXG4gICAgICAgICAgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ21pbicpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1RoZSB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAnICsgKGNvbnRyb2wuZXJyb3JzLm1pbi5taW4gLSAxKSArICcuJztcbiAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcignbWF4JykpIHtcbiAgICAgICAgICAgIHJldHVybiAnVGhlIHZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICcgKyAoY29udHJvbC5lcnJvcnMubWF4Lm1heCArIDEpICsgJy4nO1xuICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cblxuICAgIHB1YmxpYyBzdGF0aWMgaGFuZGxlRXJyb3JzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBlcnJvcjogYW55KSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGVycm9yIGFzIEh0dHBFcnJvclJlc3BvbnNlO1xuICAgICAgICAgICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDQwMDpcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVua25vd25GaWVsZE5hbWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZE5hbWUgaW4gZXJyb3IuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5oYXNPd25Qcm9wZXJ0eShmaWVsZE5hbWUpICYmIGVycm9yLmVycm9yW2ZpZWxkTmFtZV0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IuZXJyb3JbZmllbGROYW1lXT8ubGVuZ3RoID4gMCB8fCBlcnJvci5lcnJvcltmaWVsZE5hbWVdPy5FcnJvcnM/Lmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb25GaWVsZE5hbWUgPSBmaWVsZE5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpzb25GaWVsZE5hbWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uRmllbGROYW1lID0ganNvbkZpZWxkTmFtZVswXS50b0xvd2VyQ2FzZSgpICsganNvbkZpZWxkTmFtZS5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvcltmaWVsZE5hbWVdPy5FcnJvcnM/Lmxlbmd0aCA+IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IuZXJyb3JbZmllbGROYW1lXT8uRXJyb3JzLm1hcCgoZTogYW55KSA9PiBlLkVycm9yTWVzc2FnZSkpLmpvaW4oJywgJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlcnJvci5lcnJvcltmaWVsZE5hbWVdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1Hcm91cC5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShqc29uRmllbGROYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuY29udHJvbHNbanNvbkZpZWxkTmFtZV0uc2V0RXJyb3JzKHsgc2VydmVyU2lkZTogZXJyb3JNZXNzYWdlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd25GaWVsZE5hbWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodW5rbm93bkZpZWxkTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLnNldEVycm9ycyh7IHNlcnZlclNpZGU6ICdTb21ldGhpbmcgd2VudCB3cm9uZy4nIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIC8vIGluIHRoZXNlIGNhc2VzIHdlIGRvIG5vdCBzaG93IGVycm9ycyBvbiB0aGUgZm9ybSwgdGhleSdyZSBoYW5kbGVkIGJ5IHRoZSBodHRwXG4gICAgICAgICAgICAgICAgLy8gaW50ZXJjZXB0b3IgaW4gc3JjXFxhcHBcXF9pbnRlcmNlcHRvcnNcXGh0dHBzdGF0dXNjb2RlLmludGVyY2VwdG9yLnRzXG4gICAgICAgICAgICAgICAgY2FzZSA0MDI6XG4gICAgICAgICAgICAgICAgY2FzZSA0Mjk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1Hcm91cC5zZXRFcnJvcnMoeyBzZXJ2ZXJTaWRlOiAnU29tZXRoaW5nIHdlbnQgd3Jvbmcgb24gb3VyIHNpZGUuIFRoaXMgaXMgbm90IHlvdXIgZmF1bHQuIFBsZWFzZSB0cnkgYWdhaW4uJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGEgdmFsdWUgcmVwcmVzZW50aW5nIGEgbnVtYmVyIHRvIGEgYG51bWJlcmAgdmFsdWUuXG4gICAgICogUmV0dXJucyBgTmFOYCBpbiB0aGUgY2FzZSBvZiBub24tbnVtZXJpY2FsIHZhbHVlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIG5vcm1hbGl6ZU51bWJlcih2YWx1ZTogYW55KTogbnVtYmVyIHtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgLy8gTk9URTogYE51bWJlcigpYCBjb252ZXJ0cyB3aGl0ZXNwYWNlIHN0cmluZ3MgdG8gMC5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudHJpbSgpID09PSAnJyA/IE5hTiA6IE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhIHZhbHVlIHJlcHJlc2VudGluZyBhIG51bWJlciB0byB0aGUgbm9ybWFsaXplZCBgc3RyaW5nYFxuICAgICAqIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuIChlLmcuIGAuMWAgLS0+IGAnMC4xJ2AsIGAzLjE0ZTJgIC0tPiBgJzMxNCdgKS5cbiAgICAgKiBSZXR1cm5zIGAnJ2AgaW4gdGhlIGNhc2Ugb2Ygbm9uLW51bWVyaWNhbCB2YWx1ZXMgb3Igbm9uLWZpbml0ZSBudW1lcmljYWwgdmFsdWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbm9ybWFsaXplTnVtYmVyU3RvcmVkQXNTdHJpbmcodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHZhbHVlID0gRm9ybUhlbHBlci5ub3JtYWxpemVOdW1iZXIodmFsdWUpO1xuICAgICAgICAvLyBOT1RFOiBgTmFOYCBpcyBub3QgY29uc2lkZXJlZCBmaW5pdGUuXG4gICAgICAgIHJldHVybiBpc0Zpbml0ZSh2YWx1ZSkgPyB2YWx1ZSArICcnIDogJyc7XG4gICAgfVxuXG4gICAgXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0TnVtYmVyRm9yRGlzcGxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCFpc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyBDaHJvbWl1bS1iYXNlZCBicm93c2VycyBkb24ndCByZXNwZWN0IHRoZSBgbGFuZ2AgYXR0cmlidXRlLFxuICAgIC8vIHRoZXkgdXNlIGEgZGlzcGxheSBmb3JtYXQgY29ycmVzcG9uZGluZyB0byB0aGUgYnJvd3NlcidzIGxhbmd1YWdlIHNldHRpbmcuXG4gICAgaWYgKFBsYXRmb3JtSGVscGVyLmlzQ2hyb21pdW0oKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgLy8gRmlyZWZveCAoYW5kIHByb2JhYmx5IG90aGVyIGJyb3dzZXJzKSByZXNwZWN0IHRoZSBgbGFuZ2AgYXR0cmlidXRlLFxuICAgIC8vIHdoaWNoIGlzIGN1cnJlbnRseSBzZXQgdG8gdGhlIGZpeGVkIHZhbHVlIG9mIFwiZW5cIiAoc2VlIGluZGV4Lmh0bWwpLFxuICAgIC8vIHNvIGluIHRoZXNlIGNhc2VzIGRvdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZGVjaW1hbCBzZXBhcmF0b3IuXG4gICAgLy8gKEluIGNhc2UgbG9jYWxpemF0aW9uIGlzIGltcGxlbWVudGVkIGluIHRoZSBhcHBsaWNhdGlvbiwgdGhpcyBsb2dpYyBzaG91bGQgYmUgcmV2aXNlZCEpXG4gICAgcmV0dXJuIHZhbHVlICsgJyc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './public-api.service';
|
|
2
|
-
export * from './form-helper';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvX3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0taGVscGVyJztcbiJdfQ==
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/material/snack-bar";
|
|
4
|
-
export class MessagingService {
|
|
5
|
-
constructor(snackBar) {
|
|
6
|
-
this.snackBar = snackBar;
|
|
7
|
-
}
|
|
8
|
-
showErrorSnack(message = 'Something went wrong.', action = 'Dismiss', durationMs = 60000) {
|
|
9
|
-
this.snackBar.open(`Ooops. ${message} Please try again or contact us.`, action, { duration: durationMs, panelClass: 'red-snackbar' });
|
|
10
|
-
}
|
|
11
|
-
showSuccessSnack(message = 'Success.', action = null, durationMs = 2500) {
|
|
12
|
-
this.snackBar.open(message, action, { duration: durationMs, panelClass: 'green-snackbar' });
|
|
13
|
-
}
|
|
14
|
-
showWarningSnack(message = 'Success.', action = 'Dismiss', durationMs = 5000) {
|
|
15
|
-
this.snackBar.open(message, action, { duration: durationMs, panelClass: 'yellow-snackbar' });
|
|
16
|
-
}
|
|
17
|
-
dismissCurrentSnack() {
|
|
18
|
-
this.snackBar.dismiss();
|
|
19
|
-
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingService, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingService }); }
|
|
22
|
-
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingService, decorators: [{
|
|
24
|
-
type: Injectable
|
|
25
|
-
}], ctorParameters: () => [{ type: i1.MatSnackBar }] });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvX3NlcnZpY2VzL21lc3NhZ2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUkzQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRXpCLFlBQW9CLFFBQXFCO1FBQXJCLGFBQVEsR0FBUixRQUFRLENBQWE7SUFBSSxDQUFDO0lBRTlDLGNBQWMsQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFBRSxVQUFVLEdBQUcsS0FBSztRQUNwRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDZCxVQUFVLE9BQU8sa0NBQWtDLEVBQ25ELE1BQU0sRUFDTixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxDQUN2RCxDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQU8sR0FBRyxVQUFVLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxVQUFVLEdBQUcsSUFBSTtRQUNuRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDZCxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsQ0FDMUUsQ0FBQztJQUNOLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQUUsVUFBVSxHQUFHLElBQUk7UUFDeEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2QsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLENBQzNFLENBQUM7SUFDTixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QixDQUFDOytHQTFCUSxnQkFBZ0I7bUhBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2luZ1NlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIpIHsgfVxuXG4gICAgc2hvd0Vycm9yU25hY2sobWVzc2FnZSA9ICdTb21ldGhpbmcgd2VudCB3cm9uZy4nLCBhY3Rpb24gPSAnRGlzbWlzcycsIGR1cmF0aW9uTXMgPSA2MDAwMCkge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oXG4gICAgICAgICAgICBgT29vcHMuICR7bWVzc2FnZX0gUGxlYXNlIHRyeSBhZ2FpbiBvciBjb250YWN0IHVzLmAsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICB7IGR1cmF0aW9uOiBkdXJhdGlvbk1zLCBwYW5lbENsYXNzOiAncmVkLXNuYWNrYmFyJyB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2hvd1N1Y2Nlc3NTbmFjayhtZXNzYWdlID0gJ1N1Y2Nlc3MuJywgYWN0aW9uID0gbnVsbCwgZHVyYXRpb25NcyA9IDI1MDApIHtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFxuICAgICAgICAgICAgbWVzc2FnZSwgYWN0aW9uLCB7IGR1cmF0aW9uOiBkdXJhdGlvbk1zLCBwYW5lbENsYXNzOiAnZ3JlZW4tc25hY2tiYXInIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzaG93V2FybmluZ1NuYWNrKG1lc3NhZ2UgPSAnU3VjY2Vzcy4nLCBhY3Rpb24gPSAnRGlzbWlzcycsIGR1cmF0aW9uTXMgPSA1MDAwKSB7XG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcbiAgICAgICAgICAgIG1lc3NhZ2UsIGFjdGlvbiwgeyBkdXJhdGlvbjogZHVyYXRpb25NcywgcGFuZWxDbGFzczogJ3llbGxvdy1zbmFja2JhcicgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRpc21pc3NDdXJyZW50U25hY2soKSB7XG4gICAgICAgIHRoaXMuc25hY2tCYXIuZGlzbWlzcygpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export class PlatformHelper {
|
|
2
|
-
static isChromium() {
|
|
3
|
-
// https://stackoverflow.com/a/62797156/8656352
|
|
4
|
-
return !!window.chrome;
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0taGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL19zZXJ2aWNlcy9wbGF0Zm9ybS1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGNBQWM7SUFDbEIsTUFBTSxDQUFDLFVBQVU7UUFDdEIsK0NBQStDO1FBQy9DLE9BQU8sQ0FBQyxDQUFFLE1BQWMsQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFBsYXRmb3JtSGVscGVyIHtcbiAgcHVibGljIHN0YXRpYyBpc0Nocm9taXVtKCkge1xuICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS82Mjc5NzE1Ni84NjU2MzUyXG4gICAgcmV0dXJuICEhKHdpbmRvdyBhcyBhbnkpLmNocm9tZTtcbiAgfVxufVxuIl19
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { Configuration as PublicApiConfiguration, ProductsService, EnvironmentsService, ConfigsService, FeatureFlagsSettingsService, FeatureFlagSettingValuesService, MeService, IntegrationLinksService, SegmentsService, FeatureFlagSettingValuesV2Service } from 'ng-configcat-publicapi';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common/http";
|
|
5
|
-
import * as i2 from "../configuration";
|
|
6
|
-
export class PublicApiService {
|
|
7
|
-
constructor(httpClient, configuration) {
|
|
8
|
-
this.httpClient = httpClient;
|
|
9
|
-
this.configuration = configuration;
|
|
10
|
-
}
|
|
11
|
-
createMeService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
|
|
12
|
-
return new MeService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
|
|
13
|
-
username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
|
|
14
|
-
password: basicAuthPassword ?? this.configuration?.basicAuthPassword
|
|
15
|
-
}));
|
|
16
|
-
}
|
|
17
|
-
createProductsService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
|
|
18
|
-
return new ProductsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
|
|
19
|
-
username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
|
|
20
|
-
password: basicAuthPassword ?? this.configuration?.basicAuthPassword
|
|
21
|
-
}));
|
|
22
|
-
}
|
|
23
|
-
createConfigsService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
|
|
24
|
-
return new ConfigsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
|
|
25
|
-
username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
|
|
26
|
-
password: basicAuthPassword ?? this.configuration?.basicAuthPassword
|
|
27
|
-
}));
|
|
28
|
-
}
|
|
29
|
-
createEnvironmentsService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
|
|
30
|
-
return new EnvironmentsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
|
|
31
|
-
username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
|
|
32
|
-
password: basicAuthPassword ?? this.configuration?.basicAuthPassword
|
|
33
|
-
}));
|
|
34
|
-
}
|
|
35
|
-
createSettingsService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
|
|
36
|
-
return new FeatureFlagsSettingsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
|
|
37
|
-
username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
|
|
38
|
-
password: basicAuthPassword ?? this.configuration?.basicAuthPassword
|
|
39
|
-
}));
|
|
40
|
-
}
|
|
41
|
-
createSettingValuesV2Service(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
|
|
42
|
-
return new FeatureFlagSettingValuesV2Service(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
|
|
43
|
-
username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
|
|
44
|
-
password: basicAuthPassword ?? this.configuration?.basicAuthPassword
|
|
45
|
-
}));
|
|
46
|
-
}
|
|
47
|
-
createSettingValuesService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
|
|
48
|
-
return new FeatureFlagSettingValuesService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
|
|
49
|
-
username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
|
|
50
|
-
password: basicAuthPassword ?? this.configuration?.basicAuthPassword
|
|
51
|
-
}));
|
|
52
|
-
}
|
|
53
|
-
createIntegrationLinksService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
|
|
54
|
-
return new IntegrationLinksService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
|
|
55
|
-
username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
|
|
56
|
-
password: basicAuthPassword ?? this.configuration?.basicAuthPassword
|
|
57
|
-
}));
|
|
58
|
-
}
|
|
59
|
-
createSegmentsService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
|
|
60
|
-
return new SegmentsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
|
|
61
|
-
username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
|
|
62
|
-
password: basicAuthPassword ?? this.configuration?.basicAuthPassword
|
|
63
|
-
}));
|
|
64
|
-
}
|
|
65
|
-
getDashboardBasePath() {
|
|
66
|
-
return this.configuration?.dashboardBasePath ?? 'https://app.configcat.com';
|
|
67
|
-
}
|
|
68
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PublicApiService, deps: [{ token: i1.HttpClient }, { token: i2.Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
69
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PublicApiService, providedIn: 'root' }); }
|
|
70
|
-
}
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PublicApiService, decorators: [{
|
|
72
|
-
type: Injectable,
|
|
73
|
-
args: [{ providedIn: 'root' }]
|
|
74
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.Configuration, decorators: [{
|
|
75
|
-
type: Optional
|
|
76
|
-
}] }] });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL19zZXJ2aWNlcy9wdWJsaWMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUNILGFBQWEsSUFBSSxzQkFBc0IsRUFDdkMsZUFBZSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFDcEQsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUUsU0FBUyxFQUN2RSx1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLGlDQUFpQyxFQUNwQyxNQUFNLHdCQUF3QixDQUFDOzs7O0FBSWhDLE1BQU0sT0FBTyxnQkFBZ0I7SUFFekIsWUFDWSxVQUFzQixFQUNWLGFBQTRCO1FBRHhDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUNwRCxDQUFDO0lBRUQsZUFBZSxDQUFDLG9CQUFtQyxJQUFJLEVBQUUsb0JBQW1DLElBQUksRUFBRSxXQUEwQixJQUFJO1FBQzVILE9BQU8sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQzFFLElBQUksc0JBQXNCLENBQUM7WUFDdkIsUUFBUSxFQUFFLGlCQUFpQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsaUJBQWlCO1lBQ3BFLFFBQVEsRUFBRSxpQkFBaUIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLGlCQUFpQjtTQUN2RSxDQUFDLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxvQkFBbUMsSUFBSSxFQUFFLG9CQUFtQyxJQUFJLEVBQUUsV0FBMEIsSUFBSTtRQUNsSSxPQUFPLElBQUksZUFB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QUFtQyxJQUFJLEVBQUUsV0FBMEIsSUFBSTtRQUMxSSxPQUFPLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQztZQUNySCxRQUFRLEVBQUUsaUJBQWlCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxpQkFBaUI7WUFDcEUsUUFBUSxFQUFFLGlCQUFpQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsaUJBQWlCO1NBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELHFCQUFxQixDQUFDLG9CQUFtQyxJQUFJLEVBQUUsb0JBQW1DLElBQUksRUFBRSxXQUEwQixJQUFJO1FBQ2xJLE9BQU8sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQztZQUM3RyxRQUFRLEVBQUUsaUJBQWlCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxpQkFBaUI7WUFDcEUsUUFBUSxFQUFFLGlCQUFpQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsaUJBQWlCO1NBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLElBQUksMkJBQTJCLENBQUM7SUFDaEYsQ0FBQzsrR0ExRVEsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBS3pCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gICAgQ29uZmlndXJhdGlvbiBhcyBQdWJsaWNBcGlDb25maWd1cmF0aW9uLFxuICAgIFByb2R1Y3RzU2VydmljZSwgRW52aXJvbm1lbnRzU2VydmljZSwgQ29uZmlnc1NlcnZpY2UsXG4gICAgRmVhdHVyZUZsYWdzU2V0dGluZ3NTZXJ2aWNlLCBGZWF0dXJlRmxhZ1NldHRpbmdWYWx1ZXNTZXJ2aWNlLCBNZVNlcnZpY2UsXG4gICAgSW50ZWdyYXRpb25MaW5rc1NlcnZpY2UsXG4gICAgU2VnbWVudHNTZXJ2aWNlLFxuICAgIEZlYXR1cmVGbGFnU2V0dGluZ1ZhbHVlc1YyU2VydmljZVxufSBmcm9tICduZy1jb25maWdjYXQtcHVibGljYXBpJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9jb25maWd1cmF0aW9uJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQdWJsaWNBcGlTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlndXJhdGlvbjogQ29uZmlndXJhdGlvbikge1xuICAgIH1cblxuICAgIGNyZWF0ZU1lU2VydmljZShiYXNpY0F1dGhVc2VybmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGJhc2ljQXV0aFBhc3N3b3JkOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYmFzZVBhdGg6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgTWVTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCwgYmFzZVBhdGggPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNlUGF0aCxcbiAgICAgICAgICAgIG5ldyBQdWJsaWNBcGlDb25maWd1cmF0aW9uKHtcbiAgICAgICAgICAgICAgICB1c2VybmFtZTogYmFzaWNBdXRoVXNlcm5hbWUgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhVc2VybmFtZSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogYmFzaWNBdXRoUGFzc3dvcmQgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhQYXNzd29yZFxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNyZWF0ZVByb2R1Y3RzU2VydmljZShiYXNpY0F1dGhVc2VybmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGJhc2ljQXV0aFBhc3N3b3JkOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYmFzZVBhdGg6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvZHVjdHNTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCwgYmFzZVBhdGggPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNlUGF0aCxcbiAgICAgICAgICAgIG5ldyBQdWJsaWNBcGlDb25maWd1cmF0aW9uKHtcbiAgICAgICAgICAgICAgICB1c2VybmFtZTogYmFzaWNBdXRoVXNlcm5hbWUgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhVc2VybmFtZSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogYmFzaWNBdXRoUGFzc3dvcmQgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhQYXNzd29yZFxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNyZWF0ZUNvbmZpZ3NTZXJ2aWNlKGJhc2ljQXV0aFVzZXJuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYmFzaWNBdXRoUGFzc3dvcmQ6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNlUGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb25maWdzU2VydmljZSh0aGlzLmh0dHBDbGllbnQsIGJhc2VQYXRoID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzZVBhdGgsIG5ldyBQdWJsaWNBcGlDb25maWd1cmF0aW9uKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiBiYXNpY0F1dGhVc2VybmFtZSA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2ljQXV0aFVzZXJuYW1lLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IGJhc2ljQXV0aFBhc3N3b3JkID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzaWNBdXRoUGFzc3dvcmRcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNyZWF0ZUVudmlyb25tZW50c1NlcnZpY2UoYmFzaWNBdXRoVXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNpY0F1dGhQYXNzd29yZDogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGJhc2VQYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IEVudmlyb25tZW50c1NlcnZpY2UodGhpcy5odHRwQ2xpZW50LCBiYXNlUGF0aCA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2VQYXRoLCBuZXcgUHVibGljQXBpQ29uZmlndXJhdGlvbih7XG4gICAgICAgICAgICB1c2VybmFtZTogYmFzaWNBdXRoVXNlcm5hbWUgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhVc2VybmFtZSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiBiYXNpY0F1dGhQYXNzd29yZCA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2ljQXV0aFBhc3N3b3JkXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjcmVhdGVTZXR0aW5nc1NlcnZpY2UoYmFzaWNBdXRoVXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNpY0F1dGhQYXNzd29yZDogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGJhc2VQYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IEZlYXR1cmVGbGFnc1NldHRpbmdzU2VydmljZSh0aGlzLmh0dHBDbGllbnQsIGJhc2VQYXRoID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzZVBhdGgsIG5ldyBQdWJsaWNBcGlDb25maWd1cmF0aW9uKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiBiYXNpY0F1dGhVc2VybmFtZSA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2ljQXV0aFVzZXJuYW1lLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IGJhc2ljQXV0aFBhc3N3b3JkID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzaWNBdXRoUGFzc3dvcmRcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNyZWF0ZVNldHRpbmdWYWx1ZXNWMlNlcnZpY2UoYmFzaWNBdXRoVXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNpY0F1dGhQYXNzd29yZDogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGJhc2VQYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IEZlYXR1cmVGbGFnU2V0dGluZ1ZhbHVlc1YyU2VydmljZSh0aGlzLmh0dHBDbGllbnQsIGJhc2VQYXRoID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzZVBhdGgsIG5ldyBQdWJsaWNBcGlDb25maWd1cmF0aW9uKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiBiYXNpY0F1dGhVc2VybmFtZSA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2ljQXV0aFVzZXJuYW1lLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IGJhc2ljQXV0aFBhc3N3b3JkID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzaWNBdXRoUGFzc3dvcmRcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNyZWF0ZVNldHRpbmdWYWx1ZXNTZXJ2aWNlKGJhc2ljQXV0aFVzZXJuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYmFzaWNBdXRoUGFzc3dvcmQ6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNlUGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGZWF0dXJlRmxhZ1NldHRpbmdWYWx1ZXNTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCwgYmFzZVBhdGggPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNlUGF0aCwgbmV3IFB1YmxpY0FwaUNvbmZpZ3VyYXRpb24oe1xuICAgICAgICAgICAgdXNlcm5hbWU6IGJhc2ljQXV0aFVzZXJuYW1lID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzaWNBdXRoVXNlcm5hbWUsXG4gICAgICAgICAgICBwYXNzd29yZDogYmFzaWNBdXRoUGFzc3dvcmQgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhQYXNzd29yZFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgY3JlYXRlSW50ZWdyYXRpb25MaW5rc1NlcnZpY2UoYmFzaWNBdXRoVXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNpY0F1dGhQYXNzd29yZDogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGJhc2VQYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IEludGVncmF0aW9uTGlua3NTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCwgYmFzZVBhdGggPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNlUGF0aCwgbmV3IFB1YmxpY0FwaUNvbmZpZ3VyYXRpb24oe1xuICAgICAgICAgICAgdXNlcm5hbWU6IGJhc2ljQXV0aFVzZXJuYW1lID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzaWNBdXRoVXNlcm5hbWUsXG4gICAgICAgICAgICBwYXNzd29yZDogYmFzaWNBdXRoUGFzc3dvcmQgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhQYXNzd29yZFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgY3JlYXRlU2VnbWVudHNTZXJ2aWNlKGJhc2ljQXV0aFVzZXJuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYmFzaWNBdXRoUGFzc3dvcmQ6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNlUGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZWdtZW50c1NlcnZpY2UodGhpcy5odHRwQ2xpZW50LCBiYXNlUGF0aCA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2VQYXRoLCBuZXcgUHVibGljQXBpQ29uZmlndXJhdGlvbih7XG4gICAgICAgICAgICB1c2VybmFtZTogYmFzaWNBdXRoVXNlcm5hbWUgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhVc2VybmFtZSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiBiYXNpY0F1dGhQYXNzd29yZCA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2ljQXV0aFBhc3N3b3JkXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBnZXREYXNoYm9hcmRCYXNlUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbj8uZGFzaGJvYXJkQmFzZVBhdGggPz8gJ2h0dHBzOi8vYXBwLmNvbmZpZ2NhdC5jb20nO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Validators } from '@angular/forms';
|
|
3
|
-
import { RolloutRuleComparator, SettingType } from 'ng-configcat-publicapi';
|
|
4
|
-
import { FormHelper } from './form-helper';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/forms";
|
|
7
|
-
export class SettingListFormHelper {
|
|
8
|
-
constructor(formBuilder) {
|
|
9
|
-
this.formBuilder = formBuilder;
|
|
10
|
-
}
|
|
11
|
-
createSettingValuesFormGroup(settingValuesModel) {
|
|
12
|
-
const formGroup = this.formBuilder.group({
|
|
13
|
-
settingValues: this.formBuilder.array(settingValuesModel.settingValues.map(sv => {
|
|
14
|
-
return this.createSettingValueFormGroup(sv, settingValuesModel.readOnly);
|
|
15
|
-
})),
|
|
16
|
-
// Decorator
|
|
17
|
-
environment: this.formBuilder.group({
|
|
18
|
-
environmentId: [{ value: settingValuesModel.environment.environmentId, disabled: true }],
|
|
19
|
-
name: [{ value: settingValuesModel.environment.name, disabled: true }],
|
|
20
|
-
}),
|
|
21
|
-
comparisonAttributes: [[]]
|
|
22
|
-
});
|
|
23
|
-
const rolloutRules = this.getAllRolloutRules(formGroup);
|
|
24
|
-
const comparisonAttributes = this.getComparisonAttributes(rolloutRules);
|
|
25
|
-
formGroup.patchValue({ comparisonAttributes: comparisonAttributes });
|
|
26
|
-
return formGroup;
|
|
27
|
-
}
|
|
28
|
-
createSettingValueFormGroup(settingValueModel, readOnly) {
|
|
29
|
-
if (!settingValueModel.setting) {
|
|
30
|
-
return this.formBuilder.group({});
|
|
31
|
-
}
|
|
32
|
-
return this.formBuilder.group({
|
|
33
|
-
settingId: [settingValueModel.setting.settingId],
|
|
34
|
-
value: [
|
|
35
|
-
{ value: settingValueModel.value, disabled: readOnly },
|
|
36
|
-
this.getValidatorsForSettingType(settingValueModel.setting.settingType)
|
|
37
|
-
],
|
|
38
|
-
rolloutPercentageItems: settingValueModel.rolloutPercentageItems
|
|
39
|
-
? this.formBuilder.array(settingValueModel.rolloutPercentageItems.map(p => {
|
|
40
|
-
// @ts-ignore()
|
|
41
|
-
return this.createRolloutPercentageItemFormGroup(p, readOnly, settingValueModel.setting.settingType);
|
|
42
|
-
}))
|
|
43
|
-
: this.formBuilder.array([]), rolloutRules: settingValueModel.rolloutRules
|
|
44
|
-
? this.formBuilder.array(settingValueModel.rolloutRules.map(r => {
|
|
45
|
-
// @ts-ignore()
|
|
46
|
-
return this.createRolloutRuleFormGroup(r, readOnly, settingValueModel.setting.settingType);
|
|
47
|
-
}))
|
|
48
|
-
: this.formBuilder.array([]),
|
|
49
|
-
updatedAt: [{ value: settingValueModel.updatedAt, disabled: true }],
|
|
50
|
-
lastUpdaterUserEmail: [{ value: settingValueModel.lastUpdaterUserEmail, disabled: true }],
|
|
51
|
-
lastUpdaterUserFullName: [{ value: settingValueModel.lastUpdaterUserFullName, disabled: true }],
|
|
52
|
-
rolloutPercentageItemsSum: [{ value: 100, disabled: false }, [Validators.min(100), Validators.max(100)]],
|
|
53
|
-
// Decoration
|
|
54
|
-
setting: this.formBuilder.group({
|
|
55
|
-
settingId: [{ value: settingValueModel.setting.settingId, disabled: true }],
|
|
56
|
-
key: [{ value: settingValueModel.setting.key, disabled: true }],
|
|
57
|
-
name: [{ value: settingValueModel.setting.name, disabled: true }],
|
|
58
|
-
hint: [{ value: settingValueModel.setting.hint, disabled: true }],
|
|
59
|
-
settingType: [{ value: settingValueModel.setting.settingType, disabled: true }],
|
|
60
|
-
creatorEmail: [{ value: settingValueModel.setting.creatorEmail, disabled: true }],
|
|
61
|
-
creatorFullName: [{ value: settingValueModel.setting.creatorFullName, disabled: true }],
|
|
62
|
-
createdAt: [{ value: settingValueModel.setting.createdAt, disabled: true }]
|
|
63
|
-
}),
|
|
64
|
-
integrationLinks: settingValueModel.integrationLinks ? this.formBuilder.array(settingValueModel.integrationLinks.map(il => {
|
|
65
|
-
return this.formBuilder.group({
|
|
66
|
-
key: [{ value: il.key, disabled: true }],
|
|
67
|
-
description: [{ value: il.description, disabled: true }],
|
|
68
|
-
integrationLinkType: [{ value: il.integrationLinkType, disabled: true }],
|
|
69
|
-
url: [{ value: il.url, disabled: true }],
|
|
70
|
-
});
|
|
71
|
-
})) : this.formBuilder.array([])
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
createRolloutPercentageItemFormGroup(p, readOnly, settingType) {
|
|
75
|
-
return this.formBuilder.group({
|
|
76
|
-
percentage: [{ value: p.percentage, disabled: readOnly }, [Validators.required, Validators.min(0), Validators.max(100)]],
|
|
77
|
-
value: [
|
|
78
|
-
{ value: p.value, disabled: readOnly },
|
|
79
|
-
this.getValidatorsForSettingType(settingType)
|
|
80
|
-
],
|
|
81
|
-
valueDisabled: [
|
|
82
|
-
{ value: p.value, disabled: true }, // For percentage item value
|
|
83
|
-
]
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
createRolloutRuleFormGroup(r, readOnly, settingType) {
|
|
87
|
-
if (r.comparator) {
|
|
88
|
-
return this.formBuilder.group({
|
|
89
|
-
type: [{ value: 0, disabled: true }],
|
|
90
|
-
comparisonAttribute: [{ value: r.comparisonAttribute, disabled: readOnly }, [Validators.required]],
|
|
91
|
-
comparator: [{ value: r.comparator, disabled: readOnly }, [Validators.required]],
|
|
92
|
-
comparisonValue: [{ value: r.comparisonValue, disabled: readOnly }, [Validators.required]],
|
|
93
|
-
value: [
|
|
94
|
-
{ value: r.value, disabled: readOnly },
|
|
95
|
-
this.getValidatorsForSettingType(settingType)
|
|
96
|
-
],
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
else if (r.segmentComparator) {
|
|
100
|
-
return this.formBuilder.group({
|
|
101
|
-
type: [{ value: 1, disabled: true }],
|
|
102
|
-
segmentComparator: [{ value: r.segmentComparator, disabled: readOnly }, [Validators.required]],
|
|
103
|
-
segmentId: [{ value: r.segmentId, disabled: readOnly }, [Validators.required]],
|
|
104
|
-
value: [
|
|
105
|
-
{ value: r.value, disabled: readOnly },
|
|
106
|
-
this.getValidatorsForSettingType(settingType)
|
|
107
|
-
],
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
throw new Error('Invalid rollout rule');
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
getValidatorsForSettingType(settingType) {
|
|
115
|
-
switch (settingType) {
|
|
116
|
-
case SettingType.Int:
|
|
117
|
-
return [Validators.required,
|
|
118
|
-
Validators.min(-2147483648), Validators.max(2147483647), Validators.pattern('^[-+]?[0-9]\\d*$')];
|
|
119
|
-
case SettingType.Double:
|
|
120
|
-
return [Validators.required, Validators.min(-1.79769313486232E+308), Validators.max(1.79769313486232E+308)];
|
|
121
|
-
case SettingType.String:
|
|
122
|
-
case SettingType.Boolean:
|
|
123
|
-
return [Validators.required];
|
|
124
|
-
default:
|
|
125
|
-
return [];
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
getAllRolloutRules(formGroup) {
|
|
129
|
-
const settingValues = formGroup.get('settingValues');
|
|
130
|
-
const rolloutRules = settingValues.controls.map(cv => cv.get('rolloutRules').value);
|
|
131
|
-
return rolloutRules.length === 0 ? rolloutRules : rolloutRules.reduce((a, b) => a.concat(b));
|
|
132
|
-
}
|
|
133
|
-
getComparisonAttributes(rolloutRules) {
|
|
134
|
-
if (rolloutRules.length > 0) {
|
|
135
|
-
const currentComparisonAttributes = rolloutRules.map(r => r.comparisonAttribute);
|
|
136
|
-
const defaultComparisonAttributes = ['Identifier', 'Email', 'Country'];
|
|
137
|
-
const comparisonAttributes = currentComparisonAttributes.filter(c => defaultComparisonAttributes.indexOf(c) === -1);
|
|
138
|
-
return Array.from(new Set(comparisonAttributes));
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
return [];
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
getComparisonValueType(comparator) {
|
|
145
|
-
switch (comparator) {
|
|
146
|
-
case RolloutRuleComparator.NumberEquals:
|
|
147
|
-
case RolloutRuleComparator.NumberDoesNotEqual:
|
|
148
|
-
case RolloutRuleComparator.NumberLess:
|
|
149
|
-
case RolloutRuleComparator.NumberLessOrEquals:
|
|
150
|
-
case RolloutRuleComparator.NumberGreater:
|
|
151
|
-
case RolloutRuleComparator.NumberGreaterOrEquals:
|
|
152
|
-
return 'number';
|
|
153
|
-
default:
|
|
154
|
-
return 'text';
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
normalizeComparisonValue(comparator, comparisonValue) {
|
|
158
|
-
// In the case of number inputs value is a number but API expects
|
|
159
|
-
// a string, so we need to make sure that it's converted to string.
|
|
160
|
-
return comparator && this.getComparisonValueType(comparator) === "number"
|
|
161
|
-
? FormHelper.normalizeNumberStoredAsString(comparisonValue)
|
|
162
|
-
: comparisonValue;
|
|
163
|
-
}
|
|
164
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SettingListFormHelper, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
165
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SettingListFormHelper, providedIn: 'root' }); }
|
|
166
|
-
}
|
|
167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SettingListFormHelper, decorators: [{
|
|
168
|
-
type: Injectable,
|
|
169
|
-
args: [{ providedIn: 'root' }]
|
|
170
|
-
}], ctorParameters: () => [{ type: i1.UntypedFormBuilder }] });
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1saXN0LWZvcm0taGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL19zZXJ2aWNlcy9zZXR0aW5nLWxpc3QtZm9ybS1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQXNCLFVBQVUsRUFBc0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRyxPQUFPLEVBQThCLHFCQUFxQixFQUFvQixXQUFXLEVBQXFCLE1BQU0sd0JBQXdCLENBQUM7QUFDN0ksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRzNDLE1BQU0sT0FBTyxxQkFBcUI7SUFFOUIsWUFBb0IsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO0lBQUksQ0FBQztJQUV4RCw0QkFBNEIsQ0FBQyxrQkFBc0M7UUFDL0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDckMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUNqQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0UsQ0FBQyxDQUFDLENBQUM7WUFFUCxZQUFZO1lBQ1osV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUNoQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDeEYsSUFBSSxFQUFFLENBQUMsRUFB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O1FBQ3JELENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0wsQ0FBQztJQUVELHNCQUFzQixDQUFDLFVBQWlDO1FBQ3BELFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDakIsS0FBSyxxQkFBcUIsQ0FBQyxZQUFZLENBQUM7WUFDeEMsS0FBSyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQztZQUM5QyxLQUFLLHFCQUFxQixDQUFDLFVBQVUsQ0FBQztZQUN0QyxLQUFLLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDO1lBQzlDLEtBQUsscUJBQXFCLENBQUMsYUFBYSxDQUFDO1lBQ3pDLEtBQUsscUJBQXFCLENBQUMscUJBQXFCO2dCQUM1QyxPQUFPLFFBQVEsQ0FBQztZQUNwQjtnQkFDSSxPQUFPLE1BQU0sQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztJQUVELHdCQUF3QixDQUFDLFVBQTZDLEVBQUUsZUFBb0I7UUFDeEYsaUVBQWlFO1FBQ2pFLG1FQUFtRTtRQUNuRSxPQUFPLFVBQVUsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssUUFBUTtZQUNyRSxDQUFDLENBQUMsVUFBVSxDQUFDLDZCQUE2QixDQUFDLGVBQWUsQ0FBQztZQUMzRCxDQUFDLENBQUMsZUFBZSxDQUFDO0lBQzFCLENBQUM7K0dBMUtRLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRFIsTUFBTTs7NEZBQ25CLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZXR0aW5nVmFsdWVzTW9kZWwgfSBmcm9tICcuLi9fbW9kZWxzL3NldHRpbmdWYWx1ZXNNb2RlbCc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMsIFVudHlwZWRGb3JtR3JvdXAsIFVudHlwZWRGb3JtQXJyYXkgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbCwgUm9sbG91dFJ1bGVDb21wYXJhdG9yLCBSb2xsb3V0UnVsZU1vZGVsLCBTZXR0aW5nVHlwZSwgU2V0dGluZ1ZhbHVlTW9kZWwgfSBmcm9tICduZy1jb25maWdjYXQtcHVibGljYXBpJztcbmltcG9ydCB7IEZvcm1IZWxwZXIgfSBmcm9tICcuL2Zvcm0taGVscGVyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nTGlzdEZvcm1IZWxwZXIge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyKSB7IH1cblxuICAgIGNyZWF0ZVNldHRpbmdWYWx1ZXNGb3JtR3JvdXAoc2V0dGluZ1ZhbHVlc01vZGVsOiBTZXR0aW5nVmFsdWVzTW9kZWwpIHtcbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBzZXR0aW5nVmFsdWVzOiB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFxuICAgICAgICAgICAgICAgIHNldHRpbmdWYWx1ZXNNb2RlbC5zZXR0aW5nVmFsdWVzLm1hcChzdiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNldHRpbmdWYWx1ZUZvcm1Hcm91cChzdiwgc2V0dGluZ1ZhbHVlc01vZGVsLnJlYWRPbmx5KTtcbiAgICAgICAgICAgICAgICB9KSksXG5cbiAgICAgICAgICAgIC8vIERlY29yYXRvclxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgICAgIGVudmlyb25tZW50SWQ6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVzTW9kZWwuZW52aXJvbm1lbnQuZW52aXJvbm1lbnRJZCwgZGlzYWJsZWQ6IHRydWUgfV0sXG4gICAgICAgICAgICAgICAgbmFtZTogW3sgdmFsdWU6IHNldHRpbmdWYWx1ZXNNb2RlbC5lbnZpcm9ubWVudC5uYW1lLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBjb21wYXJpc29uQXR0cmlidXRlczogW1tdXVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByb2xsb3V0UnVsZXMgPSB0aGlzLmdldEFsbFJvbGxvdXRSdWxlcyhmb3JtR3JvdXApO1xuICAgICAgICBjb25zdCBjb21wYXJpc29uQXR0cmlidXRlcyA9IHRoaXMuZ2V0Q29tcGFyaXNvbkF0dHJpYnV0ZXMocm9sbG91dFJ1bGVzKTtcbiAgICAgICAgZm9ybUdyb3VwLnBhdGNoVmFsdWUoeyBjb21wYXJpc29uQXR0cmlidXRlczogY29tcGFyaXNvbkF0dHJpYnV0ZXMgfSk7XG4gICAgICAgIHJldHVybiBmb3JtR3JvdXA7XG4gICAgfVxuXG5cbiAgICBjcmVhdGVTZXR0aW5nVmFsdWVGb3JtR3JvdXAoc2V0dGluZ1ZhbHVlTW9kZWw6IFNldHRpbmdWYWx1ZU1vZGVsLCByZWFkT25seTogYm9vbGVhbikge1xuICAgICAgICBpZiAoIXNldHRpbmdWYWx1ZU1vZGVsLnNldHRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHt9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBzZXR0aW5nSWQ6IFtzZXR0aW5nVmFsdWVNb2RlbC5zZXR0aW5nLnNldHRpbmdJZF0sXG4gICAgICAgICAgICB2YWx1ZTogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6IHNldHRpbmdWYWx1ZU1vZGVsLnZhbHVlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSxcbiAgICAgICAgICAgICAgICB0aGlzLmdldFZhbGlkYXRvcnNGb3JTZXR0aW5nVHlwZShzZXR0aW5nVmFsdWVNb2RlbC5zZXR0aW5nLnNldHRpbmdUeXBlKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJvbGxvdXRQZXJjZW50YWdlSXRlbXM6IHNldHRpbmdWYWx1ZU1vZGVsLnJvbGxvdXRQZXJjZW50YWdlSXRlbXNcbiAgICAgICAgICAgICAgICA/IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoc2V0dGluZ1ZhbHVlTW9kZWwucm9sbG91dFBlcmNlbnRhZ2VJdGVtcy5tYXAocCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUoKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXAocCwgcmVhZE9ubHksIHNldHRpbmdWYWx1ZU1vZGVsLnNldHRpbmcuc2V0dGluZ1R5cGUpO1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIDogdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXSksIHJvbGxvdXRSdWxlczogc2V0dGluZ1ZhbHVlTW9kZWwucm9sbG91dFJ1bGVzXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5mb3JtQnVpbGRlci5hcnJheShzZXR0aW5nVmFsdWVNb2RlbC5yb2xsb3V0UnVsZXMubWFwKHIgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSb2xsb3V0UnVsZUZvcm1Hcm91cChyLCByZWFkT25seSwgc2V0dGluZ1ZhbHVlTW9kZWwuc2V0dGluZy5zZXR0aW5nVHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW10pLFxuXG4gICAgICAgICAgICB1cGRhdGVkQXQ6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVNb2RlbC51cGRhdGVkQXQsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgbGFzdFVwZGF0ZXJVc2VyRW1haWw6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVNb2RlbC5sYXN0VXBkYXRlclVzZXJFbWFpbCwgZGlzYWJsZWQ6IHRydWUgfV0sXG4gICAgICAgICAgICBsYXN0VXBkYXRlclVzZXJGdWxsTmFtZTogW3sgdmFsdWU6IHNldHRpbmdWYWx1ZU1vZGVsLmxhc3RVcGRhdGVyVXNlckZ1bGxOYW1lLCBkaXNhYmxlZDogdHJ1ZSB9XSxcblxuICAgICAgICAgICAgcm9sbG91dFBlcmNlbnRhZ2VJdGVtc1N1bTogW3sgdmFsdWU6IDEwMCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFtWYWxpZGF0b3JzLm1pbigxMDApLCBWYWxpZGF0b3JzLm1heCgxMDApXV0sXG4gICAgICAgICAgICAvLyBEZWNvcmF0aW9uXG4gICAgICAgICAgICBzZXR0aW5nOiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgICAgICBzZXR0aW5nSWQ6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVNb2RlbC5zZXR0aW5nLnNldHRpbmdJZCwgZGlzYWJsZWQ6IHRydWUgfV0sXG4gICAgICAgICAgICAgICAga2V5OiBbeyB2YWx1ZTogc2V0dGluZ1ZhbHVlTW9kZWwuc2V0dGluZy5rZXksIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgIG5hbWU6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVNb2RlbC5zZXR0aW5nLm5hbWUsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgIGhpbnQ6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVNb2RlbC5zZXR0aW5nLmhpbnQsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgIHNldHRpbmdUeXBlOiBbeyB2YWx1ZTogc2V0dGluZ1ZhbHVlTW9kZWwuc2V0dGluZy5zZXR0aW5nVHlwZSwgZGlzYWJsZWQ6IHRydWUgfV0sXG4gICAgICAgICAgICAgICAgY3JlYXRvckVtYWlsOiBbeyB2YWx1ZTogc2V0dGluZ1ZhbHVlTW9kZWwuc2V0dGluZy5jcmVhdG9yRW1haWwsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgIGNyZWF0b3JGdWxsTmFtZTogW3sgdmFsdWU6IHNldHRpbmdWYWx1ZU1vZGVsLnNldHRpbmcuY3JlYXRvckZ1bGxOYW1lLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVNb2RlbC5zZXR0aW5nLmNyZWF0ZWRBdCwgZGlzYWJsZWQ6IHRydWUgfV1cbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBpbnRlZ3JhdGlvbkxpbmtzOiBzZXR0aW5nVmFsdWVNb2RlbC5pbnRlZ3JhdGlvbkxpbmtzID8gdGhpcy5mb3JtQnVpbGRlci5hcnJheShzZXR0aW5nVmFsdWVNb2RlbC5pbnRlZ3JhdGlvbkxpbmtzLm1hcChpbCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFt7IHZhbHVlOiBpbC5rZXksIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogW3sgdmFsdWU6IGlsLmRlc2NyaXB0aW9uLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgICAgICAgICAgICAgICAgaW50ZWdyYXRpb25MaW5rVHlwZTogW3sgdmFsdWU6IGlsLmludGVncmF0aW9uTGlua1R5cGUsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IFt7IHZhbHVlOiBpbC51cmwsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkpIDogdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXSlcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUm9sbG91dFBlcmNlbnRhZ2VJdGVtRm9ybUdyb3VwKHA6IFJvbGxvdXRQZXJjZW50YWdlSXRlbU1vZGVsLCByZWFkT25seTogYm9vbGVhbiwgc2V0dGluZ1R5cGU6IFNldHRpbmdUeXBlIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIHBlcmNlbnRhZ2U6IFt7IHZhbHVlOiBwLnBlcmNlbnRhZ2UsIGRpc2FibGVkOiByZWFkT25seSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMCksIFZhbGlkYXRvcnMubWF4KDEwMCldXSxcbiAgICAgICAgICAgIHZhbHVlOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogcC52YWx1ZSwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRWYWxpZGF0b3JzRm9yU2V0dGluZ1R5cGUoc2V0dGluZ1R5cGUpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgdmFsdWVEaXNhYmxlZDogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6IHAudmFsdWUsIGRpc2FibGVkOiB0cnVlIH0sIC8vIEZvciBwZXJjZW50YWdlIGl0ZW0gdmFsdWVcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUm9sbG91dFJ1bGVGb3JtR3JvdXAocjogUm9sbG91dFJ1bGVNb2RlbCwgcmVhZE9ubHk6IGJvb2xlYW4sIHNldHRpbmdUeXBlOiBTZXR0aW5nVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoci5jb21wYXJhdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAgICAgdHlwZTogW3sgdmFsdWU6IDAsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25BdHRyaWJ1dGU6IFt7IHZhbHVlOiByLmNvbXBhcmlzb25BdHRyaWJ1dGUsIGRpc2FibGVkOiByZWFkT25seSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgIGNvbXBhcmF0b3I6IFt7IHZhbHVlOiByLmNvbXBhcmF0b3IsIGRpc2FibGVkOiByZWFkT25seSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25WYWx1ZTogW3sgdmFsdWU6IHIuY29tcGFyaXNvblZhbHVlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogW1xuICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiByLnZhbHVlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRWYWxpZGF0b3JzRm9yU2V0dGluZ1R5cGUoc2V0dGluZ1R5cGUpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHIuc2VnbWVudENvbXBhcmF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBbeyB2YWx1ZTogMSwgZGlzYWJsZWQ6IHRydWUgfV0sXG4gICAgICAgICAgICAgICAgc2VnbWVudENvbXBhcmF0b3I6IFt7IHZhbHVlOiByLnNlZ21lbnRDb21wYXJhdG9yLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICBzZWdtZW50SWQ6IFt7IHZhbHVlOiByLnNlZ21lbnRJZCwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IFtcbiAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogci52YWx1ZSwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VmFsaWRhdG9yc0ZvclNldHRpbmdUeXBlKHNldHRpbmdUeXBlKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByb2xsb3V0IHJ1bGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRhdG9yc0ZvclNldHRpbmdUeXBlKHNldHRpbmdUeXBlOiBTZXR0aW5nVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgICAgICBzd2l0Y2ggKHNldHRpbmdUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkludDpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1ZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5taW4oLTIxNDc0ODM2NDgpLCBWYWxpZGF0b3JzLm1heCgyMTQ3NDgzNjQ3KSwgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWy0rXT9bMC05XVxcXFxkKiQnKV07XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkRvdWJsZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKC0xLjc5NzY5MzEzNDg2MjMyRSszMDgpLCBWYWxpZGF0b3JzLm1heCgxLjc5NzY5MzEzNDg2MjMyRSszMDgpXTtcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuU3RyaW5nOlxuICAgICAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIHJldHVybiBbVmFsaWRhdG9ycy5yZXF1aXJlZF07XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxsUm9sbG91dFJ1bGVzKGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgICAgICBjb25zdCBzZXR0aW5nVmFsdWVzID0gZm9ybUdyb3VwLmdldCgnc2V0dGluZ1ZhbHVlcycpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gICAgICAgIGNvbnN0IHJvbGxvdXRSdWxlcyA9IHNldHRpbmdWYWx1ZXMuY29udHJvbHMubWFwKGN2ID0+IChjdi5nZXQoJ3JvbGxvdXRSdWxlcycpIGFzIFVudHlwZWRGb3JtQXJyYXkpLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHJvbGxvdXRSdWxlcy5sZW5ndGggPT09IDAgPyByb2xsb3V0UnVsZXMgOiByb2xsb3V0UnVsZXMucmVkdWNlKChhLCBiKSA9PiBhLmNvbmNhdChiKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb21wYXJpc29uQXR0cmlidXRlcyhyb2xsb3V0UnVsZXM6IGFueVtdKSB7XG4gICAgICAgIGlmIChyb2xsb3V0UnVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudENvbXBhcmlzb25BdHRyaWJ1dGVzID0gcm9sbG91dFJ1bGVzLm1hcChyID0+IHIuY29tcGFyaXNvbkF0dHJpYnV0ZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21wYXJpc29uQXR0cmlidXRlcyA9IFsnSWRlbnRpZmllcicsICdFbWFpbCcsICdDb3VudHJ5J107XG4gICAgICAgICAgICBjb25zdCBjb21wYXJpc29uQXR0cmlidXRlcyA9IGN1cnJlbnRDb21wYXJpc29uQXR0cmlidXRlcy5maWx0ZXIoYyA9PiBkZWZhdWx0Q29tcGFyaXNvbkF0dHJpYnV0ZXMuaW5kZXhPZihjKSA9PT0gLTEpO1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChjb21wYXJpc29uQXR0cmlidXRlcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q29tcGFyaXNvblZhbHVlVHlwZShjb21wYXJhdG9yOiBSb2xsb3V0UnVsZUNvbXBhcmF0b3IpIHtcbiAgICAgICAgc3dpdGNoIChjb21wYXJhdG9yKSB7XG4gICAgICAgICAgICBjYXNlIFJvbGxvdXRSdWxlQ29tcGFyYXRvci5OdW1iZXJFcXVhbHM6XG4gICAgICAgICAgICBjYXNlIFJvbGxvdXRSdWxlQ29tcGFyYXRvci5OdW1iZXJEb2VzTm90RXF1YWw6XG4gICAgICAgICAgICBjYXNlIFJvbGxvdXRSdWxlQ29tcGFyYXRvci5OdW1iZXJMZXNzOlxuICAgICAgICAgICAgY2FzZSBSb2xsb3V0UnVsZUNvbXBhcmF0b3IuTnVtYmVyTGVzc09yRXF1YWxzOlxuICAgICAgICAgICAgY2FzZSBSb2xsb3V0UnVsZUNvbXBhcmF0b3IuTnVtYmVyR3JlYXRlcjpcbiAgICAgICAgICAgIGNhc2UgUm9sbG91dFJ1bGVDb21wYXJhdG9yLk51bWJlckdyZWF0ZXJPckVxdWFsczpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ251bWJlcic7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAndGV4dCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBub3JtYWxpemVDb21wYXJpc29uVmFsdWUoY29tcGFyYXRvcjogUm9sbG91dFJ1bGVDb21wYXJhdG9yIHwgdW5kZWZpbmVkLCBjb21wYXJpc29uVmFsdWU6IGFueSkge1xuICAgICAgICAvLyBJbiB0aGUgY2FzZSBvZiBudW1iZXIgaW5wdXRzIHZhbHVlIGlzIGEgbnVtYmVyIGJ1dCBBUEkgZXhwZWN0c1xuICAgICAgICAvLyBhIHN0cmluZywgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBpdCdzIGNvbnZlcnRlZCB0byBzdHJpbmcuXG4gICAgICAgIHJldHVybiBjb21wYXJhdG9yICYmIHRoaXMuZ2V0Q29tcGFyaXNvblZhbHVlVHlwZShjb21wYXJhdG9yKSA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgPyBGb3JtSGVscGVyLm5vcm1hbGl6ZU51bWJlclN0b3JlZEFzU3RyaW5nKGNvbXBhcmlzb25WYWx1ZSlcbiAgICAgICAgICAgIDogY29tcGFyaXNvblZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class TrackingDirective {
|
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TrackingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: TrackingDirective, selector: "[track]", inputs: { track: "track" }, ngImport: i0 }); }
|
|
6
|
-
}
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TrackingDirective, decorators: [{
|
|
8
|
-
type: Directive,
|
|
9
|
-
args: [{
|
|
10
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
11
|
-
selector: '[track]'
|
|
12
|
-
}]
|
|
13
|
-
}], propDecorators: { track: [{
|
|
14
|
-
type: Input
|
|
15
|
-
}] } });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL19zZXJ2aWNlcy90cmFja2luZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTWpELE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjttR0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLFNBQVM7aUJBQ3RCOzhCQUVZLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1t0cmFja10nXG59KVxuZXhwb3J0IGNsYXNzIFRyYWNraW5nRGlyZWN0aXZlIHtcbiAgICBASW5wdXQoKSB0cmFjazogc3RyaW5nW107XG4gICAgLy8gSW50ZW50aW9uYWxseSBlbXB0eSBjbGFzcywgdG8gYmUgZWFzaWVyIHRvIGNvcHkgdGhlIHNvdXJjZSBmcm9tIHRoZSBEYXNoYm9hcmQsIHdlIGhhZCB0byBjcmVhdGUgdGhpcyBkaXJlY3RpdmUsIGJ1dCB3ZSBkbyBub3Qgd2FudCB0byB0cmFjayBpbiBpbnRlZ3JhdGlvbnMuXG59XG4iXX0=
|