ng-configcat-publicapi-ui 2.3.2 → 2.5.1
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/{esm2015/lib/_models/index.js → esm2020/lib/_models/index.mjs} +0 -0
- package/{esm2015/lib/_models/settingValuesModel.js → esm2020/lib/_models/settingValuesModel.mjs} +0 -0
- package/{esm2015/lib/_models/updateSettingValuesModel.js → esm2020/lib/_models/updateSettingValuesModel.mjs} +0 -0
- package/esm2020/lib/_services/form-helper.mjs +21 -0
- package/{esm2015/lib/_services/index.js → esm2020/lib/_services/index.mjs} +0 -0
- package/esm2020/lib/_services/public-api.service.mjs +68 -0
- package/esm2020/lib/_services/setting-list-form-helper.mjs +152 -0
- package/esm2020/lib/authorization/authorization.component.mjs +50 -0
- package/esm2020/lib/base/base.component.mjs +45 -0
- package/esm2020/lib/configuration.mjs +13 -0
- package/esm2020/lib/dialogs/concurrent-dialog/concurrent-dialog.component.mjs +25 -0
- package/esm2020/lib/dialogs/expand-dialog/expand-dialog.component.mjs +77 -0
- package/esm2020/lib/dialogs/reason-dialog/reason-dialog.component.mjs +36 -0
- package/esm2020/lib/dialogs/save-snackbar/save-snackbar.component.mjs +14 -0
- package/esm2020/lib/ng-configcat-publicapi-ui.module.mjs +160 -0
- package/esm2020/lib/selects/config-select/config-select.component.mjs +56 -0
- package/esm2020/lib/selects/environment-select/environment-select.component.mjs +43 -0
- package/esm2020/lib/selects/product-select/product-select.component.mjs +36 -0
- package/esm2020/lib/selects/setting-select/setting-select.component.mjs +43 -0
- package/esm2020/lib/setting-item/setting-item.component.mjs +129 -0
- package/esm2020/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.mjs +81 -0
- package/esm2020/lib/setting-list/setting/rollout-rules/rollout-rules.component.mjs +295 -0
- package/esm2020/lib/setting-list/setting/setting.component.mjs +137 -0
- package/esm2020/lib/setting-list/setting/value/value.component.mjs +32 -0
- package/esm2020/lib/setting-list/setting-list.component.mjs +200 -0
- package/esm2020/ng-configcat-publicapi-ui.mjs +5 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/ng-configcat-publicapi-ui.mjs +1588 -0
- package/fesm2015/ng-configcat-publicapi-ui.mjs.map +1 -0
- package/fesm2020/ng-configcat-publicapi-ui.mjs +1569 -0
- package/fesm2020/ng-configcat-publicapi-ui.mjs.map +1 -0
- package/lib/_services/form-helper.d.ts +1 -1
- package/lib/_services/public-api.service.d.ts +12 -8
- package/lib/_services/setting-list-form-helper.d.ts +5 -2
- package/lib/authorization/authorization.component.d.ts +4 -1
- package/lib/base/base.component.d.ts +7 -3
- package/lib/configuration.d.ts +3 -0
- package/lib/dialogs/concurrent-dialog/concurrent-dialog.component.d.ts +3 -0
- package/lib/dialogs/expand-dialog/expand-dialog.component.d.ts +7 -3
- package/lib/dialogs/reason-dialog/reason-dialog.component.d.ts +3 -0
- package/lib/dialogs/save-snackbar/save-snackbar.component.d.ts +3 -0
- package/lib/ng-configcat-publicapi-ui.module.d.ts +38 -0
- package/lib/selects/config-select/config-select.component.d.ts +3 -0
- package/lib/selects/environment-select/environment-select.component.d.ts +3 -0
- package/lib/selects/product-select/product-select.component.d.ts +3 -0
- package/lib/selects/setting-select/setting-select.component.d.ts +3 -0
- package/lib/setting-item/setting-item.component.d.ts +7 -1
- package/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.d.ts +7 -2
- package/lib/setting-list/setting/rollout-rules/rollout-rules.component.d.ts +19 -5
- package/lib/setting-list/setting/setting.component.d.ts +7 -1
- package/lib/setting-list/setting/value/value.component.d.ts +3 -0
- package/lib/setting-list/setting-list.component.d.ts +9 -1
- package/ng-configcat-publicapi-ui.d.ts +1 -14
- package/package.json +26 -15
- package/bundles/ng-configcat-publicapi-ui.umd.js +0 -1820
- package/bundles/ng-configcat-publicapi-ui.umd.js.map +0 -1
- package/esm2015/lib/_services/form-helper.js +0 -21
- package/esm2015/lib/_services/public-api.service.js +0 -71
- package/esm2015/lib/_services/setting-list-form-helper.js +0 -128
- package/esm2015/lib/authorization/authorization.component.js +0 -49
- package/esm2015/lib/base/base.component.js +0 -40
- package/esm2015/lib/configuration.js +0 -10
- package/esm2015/lib/dialogs/concurrent-dialog/concurrent-dialog.component.js +0 -26
- package/esm2015/lib/dialogs/expand-dialog/expand-dialog.component.js +0 -70
- package/esm2015/lib/dialogs/reason-dialog/reason-dialog.component.js +0 -35
- package/esm2015/lib/dialogs/save-snackbar/save-snackbar.component.js +0 -15
- package/esm2015/lib/ng-configcat-publicapi-ui.module.js +0 -101
- package/esm2015/lib/selects/config-select/config-select.component.js +0 -48
- package/esm2015/lib/selects/environment-select/environment-select.component.js +0 -40
- package/esm2015/lib/selects/product-select/product-select.component.js +0 -34
- package/esm2015/lib/selects/setting-select/setting-select.component.js +0 -40
- package/esm2015/lib/setting-item/setting-item.component.js +0 -106
- package/esm2015/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.js +0 -69
- package/esm2015/lib/setting-list/setting/rollout-rules/rollout-rules.component.js +0 -260
- package/esm2015/lib/setting-list/setting/setting.component.js +0 -112
- package/esm2015/lib/setting-list/setting/value/value.component.js +0 -31
- package/esm2015/lib/setting-list/setting-list.component.js +0 -179
- package/esm2015/ng-configcat-publicapi-ui.js +0 -19
- package/fesm2015/ng-configcat-publicapi-ui.js +0 -1416
- package/fesm2015/ng-configcat-publicapi-ui.js.map +0 -1
- package/ng-configcat-publicapi-ui.metadata.json +0 -1
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';
|
|
2
|
-
import { RolloutRuleComparator, SettingType } from 'ng-configcat-publicapi';
|
|
3
|
-
import { SettingListFormHelper } from '../../_services/setting-list-form-helper';
|
|
4
|
-
export class SettingComponent {
|
|
5
|
-
constructor(formHelper, cdRef) {
|
|
6
|
-
this.formHelper = formHelper;
|
|
7
|
-
this.cdRef = cdRef;
|
|
8
|
-
this.deleteSettingText = 'Delete setting';
|
|
9
|
-
this.showEnvironmentName = false;
|
|
10
|
-
this.editSettingRequested = new EventEmitter();
|
|
11
|
-
this.deleteSettingRequested = new EventEmitter();
|
|
12
|
-
this.rulesBeingRendered = false;
|
|
13
|
-
this.SettingType = SettingType;
|
|
14
|
-
}
|
|
15
|
-
ngOnInit() { }
|
|
16
|
-
environment() {
|
|
17
|
-
return this.formGroup.root.get('environment').value;
|
|
18
|
-
}
|
|
19
|
-
setting() {
|
|
20
|
-
return this.formGroup.get('setting').value;
|
|
21
|
-
}
|
|
22
|
-
integrationLinks() {
|
|
23
|
-
return this.formGroup.get('integrationLinks');
|
|
24
|
-
}
|
|
25
|
-
rolloutRules() {
|
|
26
|
-
return this.formGroup.get('rolloutRules');
|
|
27
|
-
}
|
|
28
|
-
rolloutPercentageItems() {
|
|
29
|
-
return this.formGroup.get('rolloutPercentageItems');
|
|
30
|
-
}
|
|
31
|
-
value() {
|
|
32
|
-
return this.formGroup.get('value');
|
|
33
|
-
}
|
|
34
|
-
addRolloutRule() {
|
|
35
|
-
this.rolloutRules().push(this.formHelper.createRolloutRuleFormGroup({
|
|
36
|
-
comparisonAttribute: 'Identifier',
|
|
37
|
-
comparator: RolloutRuleComparator.SensitiveIsOneOf,
|
|
38
|
-
comparisonValue: '',
|
|
39
|
-
value: this.setting().settingType === SettingType.Boolean ? false : null
|
|
40
|
-
}, this.readOnly, this.setting().settingType));
|
|
41
|
-
this.rolloutRules().markAsDirty();
|
|
42
|
-
}
|
|
43
|
-
removeRolloutRules() {
|
|
44
|
-
this.rolloutRules().clear();
|
|
45
|
-
this.rolloutRules().markAsDirty();
|
|
46
|
-
}
|
|
47
|
-
addRolloutPercentageItem() {
|
|
48
|
-
if (this.rolloutPercentageItems().length === 0) {
|
|
49
|
-
switch (this.setting().settingType) {
|
|
50
|
-
case SettingType.Boolean:
|
|
51
|
-
this.rolloutPercentageItems().push(this.formHelper.createRolloutPercentageItemFormGroup({
|
|
52
|
-
percentage: 0,
|
|
53
|
-
value: true
|
|
54
|
-
}, this.readOnly, this.setting().settingType));
|
|
55
|
-
this.rolloutPercentageItems().push(this.formHelper.createRolloutPercentageItemFormGroup({
|
|
56
|
-
percentage: 100,
|
|
57
|
-
value: false
|
|
58
|
-
}, this.readOnly, this.setting().settingType));
|
|
59
|
-
break;
|
|
60
|
-
case SettingType.String:
|
|
61
|
-
case SettingType.Int:
|
|
62
|
-
case SettingType.Double:
|
|
63
|
-
for (let i = 0; i < 4; i++) {
|
|
64
|
-
this.rolloutPercentageItems().push(this.formHelper.createRolloutPercentageItemFormGroup({
|
|
65
|
-
percentage: 25,
|
|
66
|
-
value: null
|
|
67
|
-
}, this.readOnly, this.setting().settingType));
|
|
68
|
-
}
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
else if (this.setting().settingType !== SettingType.Boolean) {
|
|
73
|
-
this.rolloutPercentageItems().push(this.formHelper.createRolloutPercentageItemFormGroup({
|
|
74
|
-
percentage: 0,
|
|
75
|
-
value: null
|
|
76
|
-
}, this.readOnly, this.setting().settingType));
|
|
77
|
-
}
|
|
78
|
-
this.rolloutPercentageItems().markAsDirty();
|
|
79
|
-
}
|
|
80
|
-
removeRolloutPercentageItems() {
|
|
81
|
-
this.rolloutPercentageItems().clear();
|
|
82
|
-
this.rolloutPercentageItems().markAsDirty();
|
|
83
|
-
}
|
|
84
|
-
editSetting() {
|
|
85
|
-
this.editSettingRequested.emit({ setting: this.setting() });
|
|
86
|
-
}
|
|
87
|
-
deleteSetting() {
|
|
88
|
-
this.deleteSettingRequested.emit({ setting: this.setting() });
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
SettingComponent.decorators = [
|
|
92
|
-
{ type: Component, args: [{
|
|
93
|
-
selector: 'setting',
|
|
94
|
-
template: "<div class=\"setting-full\"\n [formGroup]=\"formGroup\">\n <div class=\"delete\" (click)=\"deleteSetting()\" *ngIf=\"canDeleteSetting\" [matTooltip]=\"deleteSettingText\"\n data-robot=\"deleteSetting\">\n <mat-icon>cancel</mat-icon>\n </div>\n <div class=\"setting-header flex\">\n <div class=\"setting-name flex\">\n <div class=\"name\" data-robot=\"settingName\">\n {{setting().name}}\n <span *ngIf=\"showEnvironmentName\"> ({{environment().name}})</span>\n </div>\n <div class=\"edit\" matTooltip=\"Edit name and description\" (click)=\"editSetting()\" *ngIf=\"canEditSetting\"\n data-robot=\"renameSetting\">\n <mat-icon>edit</mat-icon>\n </div>\n </div>\n </div>\n <div class=\"setting-content\">\n <div class=\"setting-details\">\n <div class=\"setting-key\"><code data-robot=\"settingKey\">{{setting().key}}</code></div>\n <span *ngIf=\"setting().hint\" class=\"description\">{{setting().hint}}</span>\n </div>\n\n <div class=\"rules-list\">\n <div>\n <configcat-rollout-rules *ngIf=\"rolloutRules().controls.length !== 0\" [formGroup]=\"formGroup\">\n </configcat-rollout-rules>\n </div>\n\n <configcat-rollout-percentage-items *ngIf=\"rolloutPercentageItems().controls.length !== 0\"\n [formGroup]=\"formGroup\">\n </configcat-rollout-percentage-items>\n\n <div class=\"all-other flex\">\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length !== 0\"\n data-tooltip=\"This value will be served to all users who the above rules don't apply.\">\n <mat-chip-list>\n <mat-chip class=\"chip\">To all other users, serve:</mat-chip>\n </mat-chip-list>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length !== 0\"\n data-tooltip=\"This fallback value will be served in case the user can't be identified.\">\n <mat-chip-list>\n <mat-chip class=\"chip\">To unidentified users, serve:</mat-chip>\n </mat-chip-list>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length === 0\">\n <mat-chip-list>\n <mat-chip class=\"chip\">To all users, serve:</mat-chip>\n </mat-chip-list>\n </div>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value()\" [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"buttons\">\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target specific users' : 'Add new targeting rule'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutPercentageItem()\"\n *ngIf=\"!readOnly\"\n [disabled]=\"setting().settingType === SettingType.Boolean && rolloutPercentageItems().length !== 0\">\n {{rolloutPercentageItems().length === 0 ? 'Target % of users' : 'Add new % option'}}\n </button>\n </div>\n </div>\n </div>\n</div>\n",
|
|
95
|
-
styles: [".setting-full{position:relative;display:flex;flex-wrap:nowrap;flex-direction:column;border-radius:3px}.setting-full .delete{position:absolute;right:-15px;top:-10px;color:#d6a9a9;cursor:pointer}.setting-full .delete:hover{color:#ed5251}.setting-full .delete mat-icon{font-size:20px}.setting-full .setting-header{padding:1.5em 1.5em 0}.setting-full .setting-header .setting-name{flex-direction:row}.setting-full .setting-header .setting-name:hover>.edit{visibility:visible}.setting-full .setting-header .setting-name .name{font-weight:bold;word-wrap:break-word;max-width:100%}.setting-full .setting-header .setting-name .edit{margin:5px 0 0 5px;cursor:pointer;visibility:hidden;color:gray}.setting-full .setting-header .setting-name .edit:hover{visibility:visible}.setting-full .setting-header .setting-name .edit mat-icon{font-size:18px}.setting-full .setting-header .setting-meta{margin-left:auto;margin-right:14px;font-size:.7em;color:gray}.setting-full .setting-content{display:flex}.setting-full .setting-content .setting-details{display:flex;flex-direction:column;width:400px;padding:0 0 1em 1em}.setting-full .setting-content .setting-details>*{margin:.5em}.setting-full .setting-content .setting-details .integrations{font-size:.8rem}.setting-full .setting-content .setting-details .integrations>div{margin:3px}.setting-full .setting-content .setting-details .integrations>div>a:hover{text-decoration:underline}.setting-full .setting-content .setting-details .setting-key{word-wrap:break-word}.setting-full .setting-content .setting-details .description{font-size:.8em;white-space:pre-wrap;word-wrap:break-word;max-width:300px}.setting-full .setting-content .setting-details code{background-color:#d3d3d3;padding:3px 6px}.setting-full .setting-content .rules-list{width:100%;padding:0 1em 1em}.setting-full .setting-content .targeting-button{margin-left:.5rem;margin-right:.5rem;margin-bottom:1em}.all-other{min-height:40px;justify-content:flex-start;border:1px solid #d5d5d5;border-radius:4px;background-color:#fff;margin:.5em 1em;padding:4px 0 4px .5em}.all-other .chip{background-color:#67b1fc3d}.all-other .served-value{margin-left:auto;min-width:100px}.end{margin-left:auto}.buttons{display:flex;margin-left:.5rem;margin-right:.5rem}.buttons .updated-date{font-size:.7em;margin-left:auto;margin-right:22px;color:gray}.flex{display:flex;flex-wrap:wrap;align-items:center}.show-hide-toggle{margin-left:1em;cursor:pointer}.show-hide-toggle a{font-size:.8rem}.sige-button{background-color:#d9eadc;color:#363636;cursor:pointer;justify-content:center;padding:.375em .75em;text-align:center;white-space:nowrap;border-radius:2px;font-size:.75rem;border:1px solid #dbdbdb;box-shadow:none;display:inline-flex;font-family:Montserrat,Roboto,\"Helvetica Neue\",sans-serif}.sige-button:hover{background-color:#bad0be}.sige-button:disabled{background-color:#fff;color:#b3b3b3}@media (max-width: 1200px){.setting-details{width:300px}}@media (max-width: 700px){.setting-full .setting-content{flex-wrap:wrap}.setting-full .setting-content .rules-list{padding:0}.buttons{flex-direction:column}.updated-date{display:none}.setting-details{padding:.2em 0 .2em .2em}.all-other{margin:.5em .3em}}\n"]
|
|
96
|
-
},] }
|
|
97
|
-
];
|
|
98
|
-
SettingComponent.ctorParameters = () => [
|
|
99
|
-
{ type: SettingListFormHelper },
|
|
100
|
-
{ type: ChangeDetectorRef }
|
|
101
|
-
];
|
|
102
|
-
SettingComponent.propDecorators = {
|
|
103
|
-
formGroup: [{ type: Input }],
|
|
104
|
-
readOnly: [{ type: Input }],
|
|
105
|
-
canEditSetting: [{ type: Input }],
|
|
106
|
-
canDeleteSetting: [{ type: Input }],
|
|
107
|
-
deleteSettingText: [{ type: Input }],
|
|
108
|
-
showEnvironmentName: [{ type: Input }],
|
|
109
|
-
editSettingRequested: [{ type: Output }],
|
|
110
|
-
deleteSettingRequested: [{ type: Output }]
|
|
111
|
-
};
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvc2V0dGluZy1saXN0L3NldHRpbmcvc2V0dGluZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQThCLHFCQUFxQixFQUFvQixXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQU9qRixNQUFNLE9BQU8sZ0JBQWdCO0lBZ0IzQixZQUFvQixVQUFpQyxFQUMzQyxLQUF3QjtRQURkLGVBQVUsR0FBVixVQUFVLENBQXVCO1FBQzNDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBWHpCLHNCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQ3JDLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUUzQix5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFDLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEQsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRTNCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO0lBR1ksQ0FBQztJQUV2QyxRQUFRLEtBQUksQ0FBQztJQUViLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM3QyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBYyxDQUFDO0lBQzdELENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQWMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQWMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFnQixDQUFDO0lBQ3BELENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLDBCQUEwQixDQUMvQztZQUNoQixtQkFBbUIsRUFBRSxZQUFZO1lBQ2pDLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxnQkFBZ0I7WUFDbEQsZUFBZSxFQUFFLEVBQUU7WUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNwRixFQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsd0JBQXdCO1FBRXRCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM5QyxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUU7Z0JBQ2xDLEtBQUssV0FBVyxDQUFDLE9BQU87b0JBQ3RCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG9DQUFvQyxDQUN6RDt3QkFDMUIsVUFBVSxFQUFFLENBQUM7d0JBQ2IsS0FBSyxFQUFFLElBQWU7cUJBQ3ZCLEVBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsb0NBQW9DLENBQ3pEO3dCQUMxQixVQUFVLEVBQUUsR0FBRzt3QkFDZixLQUFLLEVBQUUsS0FBZ0I7cUJBQ3hCLEVBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDOUMsTUFBTTtnQkFFUixLQUFLLFdBQVcsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hCLEtBQUssV0FBVyxDQUFDLEdBQUcsQ0FBQztnQkFDckIsS0FBSyxXQUFXLENBQUMsTUFBTTtvQkFDckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTt3QkFDMUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsb0NBQW9DLENBQ3pEOzRCQUMxQixVQUFVLEVBQUUsRUFBRTs0QkFDZCxLQUFLLEVBQUUsSUFBSTt5QkFDWixFQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7cUJBQy9DO29CQUVELE1BQU07YUFDVDtTQUNGO2FBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDN0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsb0NBQW9DLENBQ3pEO2dCQUMxQixVQUFVLEVBQUUsQ0FBQztnQkFDYixLQUFLLEVBQUUsSUFBSTthQUNaLEVBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztTQUMvQztRQUVELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCw0QkFBNEI7UUFDMUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7O1lBM0hGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsU0FBUztnQkFDbkIsbXBHQUF1Qzs7YUFFeEM7OztZQU5RLHFCQUFxQjtZQUgyQixpQkFBaUI7Ozt3QkFZdkUsS0FBSzt1QkFDTCxLQUFLOzZCQUNMLEtBQUs7K0JBQ0wsS0FBSztnQ0FDTCxLQUFLO2tDQUNMLEtBQUs7bUNBRUwsTUFBTTtxQ0FDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvbGxvdXRQZXJjZW50YWdlSXRlbU1vZGVsLCBSb2xsb3V0UnVsZUNvbXBhcmF0b3IsIFJvbGxvdXRSdWxlTW9kZWwsIFNldHRpbmdUeXBlIH0gZnJvbSAnbmctY29uZmlnY2F0LXB1YmxpY2FwaSc7XG5pbXBvcnQgeyBTZXR0aW5nTGlzdEZvcm1IZWxwZXIgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvc2V0dGluZy1saXN0LWZvcm0taGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2V0dGluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXR0aW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2V0dGluZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSByZWFkT25seTogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuRWRpdFNldHRpbmc6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkRlbGV0ZVNldHRpbmc6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRlbGV0ZVNldHRpbmdUZXh0ID0gJ0RlbGV0ZSBzZXR0aW5nJztcbiAgQElucHV0KCkgc2hvd0Vudmlyb25tZW50TmFtZSA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBlZGl0U2V0dGluZ1JlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcnVsZXNCZWluZ1JlbmRlcmVkID0gZmFsc2U7XG4gIFxuICBTZXR0aW5nVHlwZSA9IFNldHRpbmdUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUhlbHBlcjogU2V0dGluZ0xpc3RGb3JtSGVscGVyLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgZW52aXJvbm1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLnJvb3QuZ2V0KCdlbnZpcm9ubWVudCcpLnZhbHVlO1xuICB9XG5cbiAgc2V0dGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdzZXR0aW5nJykudmFsdWU7XG4gIH1cblxuICBpbnRlZ3JhdGlvbkxpbmtzKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2ludGVncmF0aW9uTGlua3MnKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICByb2xsb3V0UnVsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgncm9sbG91dFJ1bGVzJykgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgcm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdyb2xsb3V0UGVyY2VudGFnZUl0ZW1zJykgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgndmFsdWUnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGFkZFJvbGxvdXRSdWxlKCkge1xuICAgIHRoaXMucm9sbG91dFJ1bGVzKCkucHVzaCh0aGlzLmZvcm1IZWxwZXIuY3JlYXRlUm9sbG91dFJ1bGVGb3JtR3JvdXAoXG4gICAgICA8Um9sbG91dFJ1bGVNb2RlbD57XG4gICAgICAgIGNvbXBhcmlzb25BdHRyaWJ1dGU6ICdJZGVudGlmaWVyJyxcbiAgICAgICAgY29tcGFyYXRvcjogUm9sbG91dFJ1bGVDb21wYXJhdG9yLlNlbnNpdGl2ZUlzT25lT2YsXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZTogJycsXG4gICAgICAgIHZhbHVlOiB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSA9PT0gU2V0dGluZ1R5cGUuQm9vbGVhbiA/IGZhbHNlIGFzIHVua25vd24gOiBudWxsXG4gICAgICB9LFxuICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICB0aGlzLnJvbGxvdXRSdWxlcygpLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICByZW1vdmVSb2xsb3V0UnVsZXMoKSB7XG4gICAgdGhpcy5yb2xsb3V0UnVsZXMoKS5jbGVhcigpO1xuICAgIHRoaXMucm9sbG91dFJ1bGVzKCkubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIGFkZFJvbGxvdXRQZXJjZW50YWdlSXRlbSgpIHtcblxuICAgIGlmICh0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpIHtcbiAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5Cb29sZWFuOlxuICAgICAgICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLnB1c2godGhpcy5mb3JtSGVscGVyLmNyZWF0ZVJvbGxvdXRQZXJjZW50YWdlSXRlbUZvcm1Hcm91cChcbiAgICAgICAgICAgIDxSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbD57XG4gICAgICAgICAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICAgICAgICAgIHZhbHVlOiB0cnVlIGFzIHVua25vd24gXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICAgICAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5wdXNoKHRoaXMuZm9ybUhlbHBlci5jcmVhdGVSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXAoXG4gICAgICAgICAgICA8Um9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWw+e1xuICAgICAgICAgICAgICBwZXJjZW50YWdlOiAxMDAsXG4gICAgICAgICAgICAgIHZhbHVlOiBmYWxzZSBhcyB1bmtub3duIFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMucmVhZE9ubHksIHRoaXMuc2V0dGluZygpLnNldHRpbmdUeXBlKSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5TdHJpbmc6XG4gICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuSW50OlxuICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkRvdWJsZTpcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkucHVzaCh0aGlzLmZvcm1IZWxwZXIuY3JlYXRlUm9sbG91dFBlcmNlbnRhZ2VJdGVtRm9ybUdyb3VwKFxuICAgICAgICAgICAgICA8Um9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWw+e1xuICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2U6IDI1LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRoaXMucmVhZE9ubHksIHRoaXMuc2V0dGluZygpLnNldHRpbmdUeXBlKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSAhPT0gU2V0dGluZ1R5cGUuQm9vbGVhbikge1xuICAgICAgdGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkucHVzaCh0aGlzLmZvcm1IZWxwZXIuY3JlYXRlUm9sbG91dFBlcmNlbnRhZ2VJdGVtRm9ybUdyb3VwKFxuICAgICAgICA8Um9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWw+e1xuICAgICAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgcmVtb3ZlUm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpIHtcbiAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jbGVhcigpO1xuICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICBlZGl0U2V0dGluZygpIHtcbiAgICB0aGlzLmVkaXRTZXR0aW5nUmVxdWVzdGVkLmVtaXQoeyBzZXR0aW5nOiB0aGlzLnNldHRpbmcoKSB9KTtcbiAgfVxuXG4gIGRlbGV0ZVNldHRpbmcoKSB7XG4gICAgdGhpcy5kZWxldGVTZXR0aW5nUmVxdWVzdGVkLmVtaXQoeyBzZXR0aW5nOiB0aGlzLnNldHRpbmcoKSB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
-
import { ExpandDialogComponent } from '../../../dialogs/expand-dialog/expand-dialog.component';
|
|
4
|
-
import { SettingType } from 'ng-configcat-publicapi';
|
|
5
|
-
export class ValueComponent {
|
|
6
|
-
constructor(dialog) {
|
|
7
|
-
this.dialog = dialog;
|
|
8
|
-
this.SettingType = SettingType;
|
|
9
|
-
}
|
|
10
|
-
popOut() {
|
|
11
|
-
this.dialog.open(ExpandDialogComponent, {
|
|
12
|
-
width: '640px',
|
|
13
|
-
data: { control: this.valueFormControl }
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
ValueComponent.decorators = [
|
|
18
|
-
{ type: Component, args: [{
|
|
19
|
-
selector: 'configcat-value',
|
|
20
|
-
template: "<div class=\"flex\">\n <div class=\"container\" [ngSwitch]=\"setting.settingType\">\n <div *ngSwitchCase=\"SettingType.String\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"text\"\n [formControl]=\"valueFormControl\" placeholder=\"my value\" name=\"value\">\n <div class=\"expand\" (click)=\"popOut()\" matTooltip=\"Pop-out Editor\">\n <mat-icon>height</mat-icon>\n </div>\n </div>\n <div *ngSwitchCase=\"SettingType.Int\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"number\" [formControl]=\"valueFormControl\"\n placeholder=\"42\" name=\"value\" />\n </div>\n <div *ngSwitchCase=\"SettingType.Double\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"number\" [formControl]=\"valueFormControl\"\n placeholder=\"3.14\" name=\"value\">\n </div>\n <div *ngSwitchCase=\"SettingType.Boolean\" class=\"toggle\">\n <label class=\"switch\">\n <input type=\"checkbox\" [formControl]=\"valueFormControl\" name=\"value\" />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n <div *ngIf=\"setting.settingType === SettingType.Boolean\" class=\"spacer\"></div>\n\n</div>\n",
|
|
21
|
-
styles: [".switch{position:relative;width:66px;height:30px;margin-left:4px;margin-top:0;margin-bottom:0}.switch input{display:none}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ff5252;transition:.4s;width:66px;height:30px}.slider:before{position:absolute;content:\"\";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;transition:.4s}input:checked+.slider{background-color:#9acd32}input:focus+.slider{box-shadow:0 0 1px #9acd32}input:checked+.slider:before{transform:translate(36px)}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}.slider:after{content:\"Off\";color:#fff;display:block;position:absolute;transform:translate(-14%,-50%);top:50%;left:50%;font-size:10px;font-family:Verdana,sans-serif}input:checked+.slider:after{content:\"On\";transform:translate(-91%,-50%)}\n", ".flex{display:flex;margin-right:20px;align-items:center}.flex .spacer{width:15px}.flex .container .with-validation{display:flex;flex-wrap:nowrap}.flex .container .toggle{width:66px;height:30px}.flex .container input{background-color:#fff;border:1px solid #e5e5e5;min-height:28px;font-size:15px;padding:0 30px 0 10px;font-family:Montserrat,Roboto,\"Helvetica Neue\",sans-serif;font-weight:300;min-width:170px}.flex .container .invalid{border:1px solid #ff5252}.flex .container .error{color:#ff5252;margin-right:5px}@media (max-width: 1200px){.flex .container input{min-width:auto}}.flex .variationId{margin-left:5px;cursor:pointer;color:#888;display:flex;align-items:center}.flex .expand{position:relative;top:2px;height:24px;cursor:pointer;margin-left:-28px;z-index:1;color:#b3b3b3;background-color:#fff}.flex .expand mat-icon{transform:rotate(45deg)}\n"]
|
|
22
|
-
},] }
|
|
23
|
-
];
|
|
24
|
-
ValueComponent.ctorParameters = () => [
|
|
25
|
-
{ type: MatDialog }
|
|
26
|
-
];
|
|
27
|
-
ValueComponent.propDecorators = {
|
|
28
|
-
valueFormControl: [{ type: Input }],
|
|
29
|
-
setting: [{ type: Input }]
|
|
30
|
-
};
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL3NldHRpbmctbGlzdC9zZXR0aW5nL3ZhbHVlL3ZhbHVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDL0YsT0FBTyxFQUFnQixXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVVuRSxNQUFNLE9BQU8sY0FBYztJQVF6QixZQUFvQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBRnJDLGdCQUFXLEdBQUcsV0FBVyxDQUFDO0lBRzFCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDdEMsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1NBQ3pDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQXhCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsdWlEQUFxQzs7YUFLdEM7OztZQVhRLFNBQVM7OzsrQkFjZixLQUFLO3NCQUVMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBFeHBhbmREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9kaWFsb2dzL2V4cGFuZC1kaWFsb2cvZXhwYW5kLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2V0dGluZ01vZGVsLCBTZXR0aW5nVHlwZSB9IGZyb20gJ25nLWNvbmZpZ2NhdC1wdWJsaWNhcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb25maWdjYXQtdmFsdWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmFsdWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi9zbGlkZXIuc2NzcycsXG4gICAgJy4vdmFsdWUuY29tcG9uZW50LnNjc3MnXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVmFsdWVDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIHZhbHVlRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuXG4gIEBJbnB1dCgpIHNldHRpbmc6IFNldHRpbmdNb2RlbDtcblxuICBTZXR0aW5nVHlwZSA9IFNldHRpbmdUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2cpIHtcbiAgfVxuXG4gIHBvcE91dCgpIHtcbiAgICB0aGlzLmRpYWxvZy5vcGVuKEV4cGFuZERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc2NDBweCcsXG4gICAgICBkYXRhOiB7IGNvbnRyb2w6IHRoaXMudmFsdWVGb3JtQ29udHJvbCB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
3
|
-
import { MatDialog } from '@angular/material/dialog';
|
|
4
|
-
import { ReasonDialogComponent } from '../dialogs/reason-dialog/reason-dialog.component';
|
|
5
|
-
import { SaveSnackbarComponent } from '../dialogs/save-snackbar/save-snackbar.component';
|
|
6
|
-
import { ConcurrentDialogComponent } from '../dialogs/concurrent-dialog/concurrent-dialog.component';
|
|
7
|
-
import { SettingListFormHelper } from '../_services/setting-list-form-helper';
|
|
8
|
-
export class SettingListComponent {
|
|
9
|
-
constructor(formHelper, snackBar, dialog) {
|
|
10
|
-
this.formHelper = formHelper;
|
|
11
|
-
this.snackBar = snackBar;
|
|
12
|
-
this.dialog = dialog;
|
|
13
|
-
this.deleteSettingText = 'Delete setting';
|
|
14
|
-
this.showEnvironmentName = false;
|
|
15
|
-
this.editSettingRequested = new EventEmitter();
|
|
16
|
-
this.deleteSettingRequested = new EventEmitter();
|
|
17
|
-
this.formValuesChanged = new EventEmitter();
|
|
18
|
-
this.loading = true;
|
|
19
|
-
this.submitting = false;
|
|
20
|
-
this.showRevertQuestion = false;
|
|
21
|
-
this.showFeedBackMessage = false;
|
|
22
|
-
this.readOnly = false;
|
|
23
|
-
}
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
this.reloadSettingValues();
|
|
26
|
-
}
|
|
27
|
-
ngOnChanges() {
|
|
28
|
-
this.reloadSettingValues();
|
|
29
|
-
}
|
|
30
|
-
ngOnDestroy() {
|
|
31
|
-
if (this.formValuesChangedSubscription) {
|
|
32
|
-
this.formValuesChangedSubscription.unsubscribe();
|
|
33
|
-
this.formValuesChangedSubscription = null;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
reloadSettingValues() {
|
|
37
|
-
this.showFeedBackMessage = false;
|
|
38
|
-
this.loading = true;
|
|
39
|
-
this.loadSettingValues()
|
|
40
|
-
.subscribe(settingValues => {
|
|
41
|
-
this.readOnly = settingValues.readOnly;
|
|
42
|
-
this.settingValues = settingValues;
|
|
43
|
-
this.createFormGroup();
|
|
44
|
-
this.loading = false;
|
|
45
|
-
}, error => {
|
|
46
|
-
this.snackBar.open('Ooops. We could not load your Feature Flags and Settings. Please try again or contact us.', 'Dismiss', { duration: 60000, panelClass: 'red-snackbar' });
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
createFormGroup() {
|
|
50
|
-
this.formGroup = this.formHelper.createSettingValuesFormGroup(this.settingValues);
|
|
51
|
-
this.formValuesChangedSubscription = this.formGroup.valueChanges.subscribe(() => {
|
|
52
|
-
this.formValuesChanged.emit();
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
settingValuesFormArray() {
|
|
56
|
-
return this.formGroup.get('settingValues');
|
|
57
|
-
}
|
|
58
|
-
submit() {
|
|
59
|
-
if (!this.formGroup || !this.formGroup.valid) {
|
|
60
|
-
this.showFeedBackMessage = true;
|
|
61
|
-
this.formGroup.markAsTouched();
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
this.showFeedBackMessage = false;
|
|
65
|
-
this.submitting = true;
|
|
66
|
-
const updateSettingValuesModel = {
|
|
67
|
-
settingValues: this.formGroup.controls.settingValues.value,
|
|
68
|
-
knownLastUpdatedAt: this.settingValues.lastUpdatedAt,
|
|
69
|
-
forced: false
|
|
70
|
-
};
|
|
71
|
-
if (this.settingValues.reasonRequired) {
|
|
72
|
-
const dialogRef = this.dialog.open(ReasonDialogComponent, {
|
|
73
|
-
width: '450px'
|
|
74
|
-
});
|
|
75
|
-
dialogRef.afterClosed()
|
|
76
|
-
.subscribe(result => {
|
|
77
|
-
if (result && result.button === 'save' && result.reason) {
|
|
78
|
-
updateSettingValuesModel.reason = result.reason;
|
|
79
|
-
this.updateSettingValues(updateSettingValuesModel);
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
this.submitting = false;
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
this.updateSettingValues(updateSettingValuesModel);
|
|
88
|
-
}
|
|
89
|
-
updateSettingValues(updateSettingValuesModel) {
|
|
90
|
-
this.onSave(updateSettingValuesModel).subscribe(settingValues => {
|
|
91
|
-
this.settingValues = settingValues;
|
|
92
|
-
this.createFormGroup();
|
|
93
|
-
this.submitting = false;
|
|
94
|
-
this.snackBar.openFromComponent(SaveSnackbarComponent, { duration: 5000, panelClass: 'green-snackbar' });
|
|
95
|
-
}, (error) => {
|
|
96
|
-
if (error.status === 400 && error.error
|
|
97
|
-
&& error.error.KnownLastUpdatedAt && error.error.KnownLastUpdatedAt[0] === 'Concurrent update') {
|
|
98
|
-
const dialogRef = this.dialog.open(ConcurrentDialogComponent, {
|
|
99
|
-
width: '560px'
|
|
100
|
-
});
|
|
101
|
-
dialogRef.afterClosed()
|
|
102
|
-
.subscribe(result => {
|
|
103
|
-
if (result && result.button === 'save') {
|
|
104
|
-
updateSettingValuesModel.forced = true;
|
|
105
|
-
this.updateSettingValues(updateSettingValuesModel);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
this.reloadSettingValues();
|
|
109
|
-
this.submitting = false;
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
if (error.status === 400 && error.error && error.error.Reason && error.error.Reason[0] === 'Reason required') {
|
|
115
|
-
const dialogRef = this.dialog.open(ReasonDialogComponent, {
|
|
116
|
-
width: '450px'
|
|
117
|
-
});
|
|
118
|
-
dialogRef.afterClosed()
|
|
119
|
-
.subscribe(result => {
|
|
120
|
-
if (result && result.button === 'save' && result.reason) {
|
|
121
|
-
updateSettingValuesModel.reason = result.reason;
|
|
122
|
-
this.updateSettingValues(updateSettingValuesModel);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
this.submitting = false;
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
this.formGroup.setErrors({ internalServerError: 'Internal server error' });
|
|
131
|
-
this.showFeedBackMessage = true;
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
handleRevertYes() {
|
|
135
|
-
this.showRevertQuestion = false;
|
|
136
|
-
this.reloadSettingValues();
|
|
137
|
-
}
|
|
138
|
-
handleRevertCancel() {
|
|
139
|
-
this.showRevertQuestion = false;
|
|
140
|
-
}
|
|
141
|
-
onEditSettingRequested(setting) {
|
|
142
|
-
this.editSettingRequested.emit({
|
|
143
|
-
setting: setting.setting,
|
|
144
|
-
environment: this.settingValues.environment,
|
|
145
|
-
config: this.settingValues.config
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
onDeleteSettingRequested(setting) {
|
|
149
|
-
this.deleteSettingRequested.emit({
|
|
150
|
-
setting: setting.setting,
|
|
151
|
-
environment: this.settingValues.environment,
|
|
152
|
-
config: this.settingValues.config
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
SettingListComponent.decorators = [
|
|
157
|
-
{ type: Component, args: [{
|
|
158
|
-
selector: 'configcat-setting-list',
|
|
159
|
-
template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"submit()\" *ngIf=\"!loading\">\n <div class=\"wrapper\" *ngFor=\"let settingValueFromGroup of settingValuesFormArray().controls; let i = index\">\n <setting [formGroup]=\"settingValueFromGroup\" [readOnly]=\"readOnly\"\n [canEditSetting]=\"canEditSetting\" [canDeleteSetting]=\"canDeleteSetting\"\n (editSettingRequested)=\"onEditSettingRequested($event)\"\n (deleteSettingRequested)=\"onDeleteSettingRequested($event)\" [deleteSettingText]=\"deleteSettingText\"\n [showEnvironmentName]=\"showEnvironmentName\">\n </setting>\n </div>\n\n <div class=\"save\" *ngIf=\"!readOnly && !submitting && formGroup.dirty\">\n <div class=\"feedback\" *ngIf=\"formGroup.touched && formGroup.invalid && showFeedBackMessage\">\n <div class=\"error\" *ngIf=\"formGroup.errors && formGroup.errors.internalServerError\">\n <span>Something went wrong and we could not save your settings. You can try again or <a\n href=\"https://configcat.com/support\" target=\"_blank\" rel=\"noopener noreferrer\">contact us.</a></span>\n </div>\n <div class=\"error\" *ngIf=\"!formGroup.errors || !formGroup.errors.internalServerError\">\n <span>Oh no! A feature flag has invalid or missing data.</span>\n </div>\n </div>\n <button type=\"button\" mat-stroked-button *ngIf=\"!showRevertQuestion\" (click)=\"showRevertQuestion = true\">\n <mat-icon>history</mat-icon><span>Revert changes</span>\n </button>\n <div *ngIf=\"showRevertQuestion\">\n <span class=\"revert\">Revert to last saved state?</span>\n <button type=\"button\" class=\"yes\" mat-stroked-button (click)=\"handleRevertYes()\">Yes</button>\n <button type=\"button\" mat-stroked-button (click)=\"handleRevertCancel()\">No</button>\n </div>\n <button class=\"save-button\" mat-flat-button color=\"warn\" type=\"submit\" [disabled]=\"submitting\">\n <mat-icon>backup</mat-icon> <span> Save & publish changes</span>\n </button>\n </div>\n</form>\n",
|
|
160
|
-
styles: [".wrapper{background-color:#f3f3f3;border:1px solid rgba(0,0,0,.12);border-radius:4px;margin:1em 0}.show-hide a{cursor:pointer;font-size:.8rem}.save{position:sticky;bottom:0;min-height:38px;padding:.5rem .5rem .5rem 0;background-color:#fff;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-end;z-index:1000}.save .save-button{-webkit-animation:shadow-pulse 1s 3;animation:shadow-pulse 1s 3;margin-left:1rem}.save>*{margin:.3em}.save .revert{margin:0 16px;font-size:14px}.save .yes{margin:0 5px}.error{background-color:#a32b2d;color:#fff;padding:5px;font-size:.9em}.error a{color:#fff;text-decoration:underline}@media (max-width: 700px){.save{padding:.5rem 0}}\n"]
|
|
161
|
-
},] }
|
|
162
|
-
];
|
|
163
|
-
SettingListComponent.ctorParameters = () => [
|
|
164
|
-
{ type: SettingListFormHelper },
|
|
165
|
-
{ type: MatSnackBar },
|
|
166
|
-
{ type: MatDialog }
|
|
167
|
-
];
|
|
168
|
-
SettingListComponent.propDecorators = {
|
|
169
|
-
canEditSetting: [{ type: Input }],
|
|
170
|
-
canDeleteSetting: [{ type: Input }],
|
|
171
|
-
onSave: [{ type: Input }],
|
|
172
|
-
loadSettingValues: [{ type: Input }],
|
|
173
|
-
deleteSettingText: [{ type: Input }],
|
|
174
|
-
showEnvironmentName: [{ type: Input }],
|
|
175
|
-
editSettingRequested: [{ type: Output }],
|
|
176
|
-
deleteSettingRequested: [{ type: Output }],
|
|
177
|
-
formValuesChanged: [{ type: Output }]
|
|
178
|
-
};
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUF3QixNQUFNLGVBQWUsQ0FBQztBQUlyRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBTzlFLE1BQU0sT0FBTyxvQkFBb0I7SUEwQi9CLFlBQW9CLFVBQWlDLEVBQzNDLFFBQXFCLEVBQ3JCLE1BQWlCO1FBRlAsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7UUFDM0MsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBckJsQixzQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUNyQyx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFM0IseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQywyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJakQsWUFBTyxHQUFHLElBQUksQ0FBQztRQUtmLGVBQVUsR0FBRyxLQUFLLENB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LENBQUM7WUFDM0UsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQU87UUFDNUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQztZQUM3QixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVztZQUMzQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxPQUFPO1FBQzlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7WUFDL0IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVc7WUFDM0MsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUF0TEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLHFpRUFBNEM7O2FBRTdDOzs7WUFOUSxxQkFBcUI7WUFMckIsV0FBVztZQUNYLFNBQVM7Ozs2QkFhZixLQUFLOytCQUNMLEtBQUs7cUJBRUwsS0FBSztnQ0FDTCxLQUFLO2dDQUNMLEtBQUs7a0NBQ0wsS0FBSzttQ0FFTCxNQUFNO3FDQUNOLE1BQU07Z0NBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZXR0aW5nVmFsdWVzTW9kZWwsIFVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbCB9IGZyb20gJy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBSZWFzb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2dzL3JlYXNvbi1kaWFsb2cvcmVhc29uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2F2ZVNuYWNrYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhbG9ncy9zYXZlLXNuYWNrYmFyL3NhdmUtc25hY2tiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmN1cnJlbnREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2dzL2NvbmN1cnJlbnQtZGlhbG9nL2NvbmN1cnJlbnQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXR0aW5nTGlzdEZvcm1IZWxwZXIgfSBmcm9tICcuLi9fc2VydmljZXMvc2V0dGluZy1saXN0LWZvcm0taGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29uZmlnY2F0LXNldHRpbmctbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXR0aW5nLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXR0aW5nLWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIGNhbkVkaXRTZXR0aW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW5EZWxldGVTZXR0aW5nOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIG9uU2F2ZTogKHZhbHVlOiBVcGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwpID0+IE9ic2VydmFibGU8U2V0dGluZ1ZhbHVlc01vZGVsPjtcbiAgQElucHV0KCkgbG9hZFNldHRpbmdWYWx1ZXM6ICgpID0+IE9ic2VydmFibGU8U2V0dGluZ1ZhbHVlc01vZGVsPjtcbiAgQElucHV0KCkgZGVsZXRlU2V0dGluZ1RleHQgPSAnRGVsZXRlIHNldHRpbmcnO1xuICBASW5wdXQoKSBzaG93RW52aXJvbm1lbnROYW1lID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGVkaXRTZXR0aW5nUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZGVsZXRlU2V0dGluZ1JlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGZvcm1WYWx1ZXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGZvcm1WYWx1ZXNDaGFuZ2VkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgbG9hZGluZyA9IHRydWU7XG5cbiAgc2V0dGluZ1ZhbHVlczogU2V0dGluZ1ZhbHVlc01vZGVsO1xuICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBzdWJtaXR0aW5nID0gZmFsc2U7XG4gIHNob3dSZXZlcnRRdWVzdGlvbiA9IGZhbHNlO1xuICBzaG93RmVlZEJhY2tNZXNzYWdlID0gZmFsc2U7XG4gIHJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtSGVscGVyOiBTZXR0aW5nTGlzdEZvcm1IZWxwZXIsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWxvYWRTZXR0aW5nVmFsdWVzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnJlbG9hZFNldHRpbmdWYWx1ZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZWxvYWRTZXR0aW5nVmFsdWVzKCkge1xuICAgIHRoaXMuc2hvd0ZlZWRCYWNrTWVzc2FnZSA9IGZhbHNlO1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5sb2FkU2V0dGluZ1ZhbHVlcygpXG4gICAgICAuc3Vic2NyaWJlKHNldHRpbmdWYWx1ZXMgPT4ge1xuICAgICAgICB0aGlzLnJlYWRPbmx5ID0gc2V0dGluZ1ZhbHVlcy5yZWFkT25seTtcbiAgICAgICAgdGhpcy5zZXR0aW5nVmFsdWVzID0gc2V0dGluZ1ZhbHVlcztcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdPb29wcy4gV2UgY291bGQgbm90IGxvYWQgeW91ciBGZWF0dXJlIEZsYWdzIGFuZCBTZXR0aW5ncy4gUGxlYXNlIHRyeSBhZ2FpbiBvciBjb250YWN0IHVzLicsXG4gICAgICAgICAgICAnRGlzbWlzcycsIHsgZHVyYXRpb246IDYwMDAwLCBwYW5lbENsYXNzOiAncmVkLXNuYWNrYmFyJyB9KTtcbiAgICAgICAgfSk7XG4gIH1cblxuICBjcmVhdGVGb3JtR3JvdXAoKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1IZWxwZXIuY3JlYXRlU2V0dGluZ1ZhbHVlc0Zvcm1Hcm91cCh0aGlzLnNldHRpbmdWYWx1ZXMpO1xuICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWQuZW1pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0dGluZ1ZhbHVlc0Zvcm1BcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdzZXR0aW5nVmFsdWVzJykgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIGlmICghdGhpcy5mb3JtR3JvdXAgfHwgIXRoaXMuZm9ybUdyb3VwLnZhbGlkKSB7XG4gICAgICB0aGlzLnNob3dGZWVkQmFja01lc3NhZ2UgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtR3JvdXAubWFya0FzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd0ZlZWRCYWNrTWVzc2FnZSA9IGZhbHNlO1xuICAgIHRoaXMuc3VibWl0dGluZyA9IHRydWU7XG5cbiAgICBjb25zdCB1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwgPSA8VXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsPntcbiAgICAgIHNldHRpbmdWYWx1ZXM6IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLnNldHRpbmdWYWx1ZXMudmFsdWUsXG4gICAgICBrbm93bkxhc3RVcGRhdGVkQXQ6IHRoaXMuc2V0dGluZ1ZhbHVlcy5sYXN0VXBkYXRlZEF0LFxuICAgICAgZm9yY2VkOiBmYWxzZVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zZXR0aW5nVmFsdWVzLnJlYXNvblJlcXVpcmVkKSB7XG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFJlYXNvbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICB3aWR0aDogJzQ1MHB4J1xuICAgICAgfSk7XG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuYnV0dG9uID09PSAnc2F2ZScgJiYgcmVzdWx0LnJlYXNvbikge1xuXG4gICAgICAgICAgICB1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwucmVhc29uID0gcmVzdWx0LnJlYXNvbjtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2V0dGluZ1ZhbHVlcyh1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU2V0dGluZ1ZhbHVlcyh1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwpO1xuICB9XG5cbiAgdXBkYXRlU2V0dGluZ1ZhbHVlcyh1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwpIHtcbiAgICB0aGlzLm9uU2F2ZSh1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwpLnN1YnNjcmliZShzZXR0aW5nVmFsdWVzID0+IHtcbiAgICAgIHRoaXMuc2V0dGluZ1ZhbHVlcyA9IHNldHRpbmdWYWx1ZXM7XG4gICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xuICAgICAgdGhpcy5zdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW5Gcm9tQ29tcG9uZW50KFNhdmVTbmFja2JhckNvbXBvbmVudCwgeyBkdXJhdGlvbjogNTAwMCwgcGFuZWxDbGFzczogJ2dyZWVuLXNuYWNrYmFyJyB9KTtcbiAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMCAmJiBlcnJvci5lcnJvclxuICAgICAgICAmJiBlcnJvci5lcnJvci5Lbm93bkxhc3RVcGRhdGVkQXQgJiYgZXJyb3IuZXJyb3IuS25vd25MYXN0VXBkYXRlZEF0WzBdID09PSAnQ29uY3VycmVudCB1cGRhdGUnKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uY3VycmVudERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgIHdpZHRoOiAnNTYwcHgnXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmJ1dHRvbiA9PT0gJ3NhdmUnKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbC5mb3JjZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMucmVsb2FkU2V0dGluZ1ZhbHVlcygpO1xuICAgICAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDAgJiYgZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IuUmVhc29uICYmIGVycm9yLmVycm9yLlJlYXNvblswXSA9PT0gJ1JlYXNvbiByZXF1aXJlZCcpIHtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihSZWFzb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICB3aWR0aDogJzQ1MHB4J1xuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5idXR0b24gPT09ICdzYXZlJyAmJiByZXN1bHQucmVhc29uKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbC5yZWFzb24gPSByZXN1bHQucmVhc29uO1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLnNldEVycm9ycyh7IGludGVybmFsU2VydmVyRXJyb3I6ICdJbnRlcm5hbCBzZXJ2ZXIgZXJyb3InIH0pO1xuICAgICAgdGhpcy5zaG93RmVlZEJhY2tNZXNzYWdlID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVJldmVydFllcygpIHtcbiAgICB0aGlzLnNob3dSZXZlcnRRdWVzdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMucmVsb2FkU2V0dGluZ1ZhbHVlcygpO1xuICB9XG5cbiAgaGFuZGxlUmV2ZXJ0Q2FuY2VsKCkge1xuICAgIHRoaXMuc2hvd1JldmVydFF1ZXN0aW9uID0gZmFsc2U7XG4gIH1cblxuICBvbkVkaXRTZXR0aW5nUmVxdWVzdGVkKHNldHRpbmcpIHtcbiAgICB0aGlzLmVkaXRTZXR0aW5nUmVxdWVzdGVkLmVtaXQoe1xuICAgICAgc2V0dGluZzogc2V0dGluZy5zZXR0aW5nLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuc2V0dGluZ1ZhbHVlcy5lbnZpcm9ubWVudCxcbiAgICAgIGNvbmZpZzogdGhpcy5zZXR0aW5nVmFsdWVzLmNvbmZpZ1xuICAgIH0pO1xuICB9XG5cbiAgb25EZWxldGVTZXR0aW5nUmVxdWVzdGVkKHNldHRpbmcpIHtcbiAgICB0aGlzLmRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQuZW1pdCh7XG4gICAgICBzZXR0aW5nOiBzZXR0aW5nLnNldHRpbmcsXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5zZXR0aW5nVmFsdWVzLmVudmlyb25tZW50LFxuICAgICAgY29uZmlnOiB0aGlzLnNldHRpbmdWYWx1ZXMuY29uZmlnXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
export { PublicApiService as ɵd } from './lib/_services';
|
|
6
|
-
export { PublicApiService as ɵb } from './lib/_services/public-api.service';
|
|
7
|
-
export { SettingListFormHelper as ɵf } from './lib/_services/setting-list-form-helper';
|
|
8
|
-
export { BaseComponent as ɵa } from './lib/base/base.component';
|
|
9
|
-
export { Configuration as ɵc } from './lib/configuration';
|
|
10
|
-
export { ConcurrentDialogComponent as ɵl } from './lib/dialogs/concurrent-dialog/concurrent-dialog.component';
|
|
11
|
-
export { ExpandDialogComponent as ɵn } from './lib/dialogs/expand-dialog/expand-dialog.component';
|
|
12
|
-
export { ReasonDialogComponent as ɵk } from './lib/dialogs/reason-dialog/reason-dialog.component';
|
|
13
|
-
export { SaveSnackbarComponent as ɵm } from './lib/dialogs/save-snackbar/save-snackbar.component';
|
|
14
|
-
export { SettingListComponent as ɵe } from './lib/setting-list/setting-list.component';
|
|
15
|
-
export { RolloutPercentageItemsComponent as ɵh } from './lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component';
|
|
16
|
-
export { RolloutRulesComponent as ɵi } from './lib/setting-list/setting/rollout-rules/rollout-rules.component';
|
|
17
|
-
export { SettingComponent as ɵg } from './lib/setting-list/setting/setting.component';
|
|
18
|
-
export { ValueComponent as ɵj } from './lib/setting-list/setting/value/value.component';
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxFQUFFLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUNyRixPQUFPLEVBQUMsYUFBYSxJQUFJLEVBQUUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBQyxhQUFhLElBQUksRUFBRSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFDLHlCQUF5QixJQUFJLEVBQUUsRUFBQyxNQUFNLDZEQUE2RCxDQUFDO0FBQzVHLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUNoRyxPQUFPLEVBQUMscUJBQXFCLElBQUksRUFBRSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDaEcsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQ2hHLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEVBQUMsK0JBQStCLElBQUksRUFBRSxFQUFDLE1BQU0sd0ZBQXdGLENBQUM7QUFDN0ksT0FBTyxFQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQzdHLE9BQU8sRUFBQyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxNQUFNLGtEQUFrRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge1B1YmxpY0FwaVNlcnZpY2UgYXMgybVkfSBmcm9tICcuL2xpYi9fc2VydmljZXMnO1xuZXhwb3J0IHtQdWJsaWNBcGlTZXJ2aWNlIGFzIMm1Yn0gZnJvbSAnLi9saWIvX3NlcnZpY2VzL3B1YmxpYy1hcGkuc2VydmljZSc7XG5leHBvcnQge1NldHRpbmdMaXN0Rm9ybUhlbHBlciBhcyDJtWZ9IGZyb20gJy4vbGliL19zZXJ2aWNlcy9zZXR0aW5nLWxpc3QtZm9ybS1oZWxwZXInO1xuZXhwb3J0IHtCYXNlQ29tcG9uZW50IGFzIMm1YX0gZnJvbSAnLi9saWIvYmFzZS9iYXNlLmNvbXBvbmVudCc7XG5leHBvcnQge0NvbmZpZ3VyYXRpb24gYXMgybVjfSBmcm9tICcuL2xpYi9jb25maWd1cmF0aW9uJztcbmV4cG9ydCB7Q29uY3VycmVudERpYWxvZ0NvbXBvbmVudCBhcyDJtWx9IGZyb20gJy4vbGliL2RpYWxvZ3MvY29uY3VycmVudC1kaWFsb2cvY29uY3VycmVudC1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCB7RXhwYW5kRGlhbG9nQ29tcG9uZW50IGFzIMm1bn0gZnJvbSAnLi9saWIvZGlhbG9ncy9leHBhbmQtZGlhbG9nL2V4cGFuZC1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCB7UmVhc29uRGlhbG9nQ29tcG9uZW50IGFzIMm1a30gZnJvbSAnLi9saWIvZGlhbG9ncy9yZWFzb24tZGlhbG9nL3JlYXNvbi1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCB7U2F2ZVNuYWNrYmFyQ29tcG9uZW50IGFzIMm1bX0gZnJvbSAnLi9saWIvZGlhbG9ncy9zYXZlLXNuYWNrYmFyL3NhdmUtc25hY2tiYXIuY29tcG9uZW50JztcbmV4cG9ydCB7U2V0dGluZ0xpc3RDb21wb25lbnQgYXMgybVlfSBmcm9tICcuL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQge1JvbGxvdXRQZXJjZW50YWdlSXRlbXNDb21wb25lbnQgYXMgybVofSBmcm9tICcuL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy9yb2xsb3V0LXBlcmNlbnRhZ2UtaXRlbXMvcm9sbG91dC1wZXJjZW50YWdlLWl0ZW1zLmNvbXBvbmVudCc7XG5leHBvcnQge1JvbGxvdXRSdWxlc0NvbXBvbmVudCBhcyDJtWl9IGZyb20gJy4vbGliL3NldHRpbmctbGlzdC9zZXR0aW5nL3JvbGxvdXQtcnVsZXMvcm9sbG91dC1ydWxlcy5jb21wb25lbnQnO1xuZXhwb3J0IHtTZXR0aW5nQ29tcG9uZW50IGFzIMm1Z30gZnJvbSAnLi9saWIvc2V0dGluZy1saXN0L3NldHRpbmcvc2V0dGluZy5jb21wb25lbnQnO1xuZXhwb3J0IHtWYWx1ZUNvbXBvbmVudCBhcyDJtWp9IGZyb20gJy4vbGliL3NldHRpbmctbGlzdC9zZXR0aW5nL3ZhbHVlL3ZhbHVlLmNvbXBvbmVudCc7Il19
|