@cqa-lib/cqa-ui 1.1.520 → 1.1.521
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/esm2020/lib/new-global-variable-dialog/new-global-variable-dialog.component.mjs +204 -0
- package/esm2020/lib/new-global-variable-dialog/new-global-variable-dialog.models.mjs +2 -0
- package/esm2020/lib/permission-toggle/permission-toggle.component.mjs +86 -0
- package/esm2020/lib/ui-kit.module.mjs +11 -1
- package/esm2020/public-api.mjs +4 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs +292 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +289 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/new-global-variable-dialog/new-global-variable-dialog.component.d.ts +64 -0
- package/lib/new-global-variable-dialog/new-global-variable-dialog.models.d.ts +14 -0
- package/lib/permission-toggle/permission-toggle.component.d.ts +13 -0
- package/lib/ui-kit.module.d.ts +89 -87
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
- package/styles.css +1 -1
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../custom-input/custom-input.component";
|
|
4
|
+
import * as i2 from "../dropdown-button/dropdown-button.component";
|
|
5
|
+
import * as i3 from "../permission-toggle/permission-toggle.component";
|
|
6
|
+
import * as i4 from "../custom-textarea/custom-textarea.component";
|
|
7
|
+
import * as i5 from "@angular/common";
|
|
8
|
+
export class NewGlobalVariableDialogComponent {
|
|
9
|
+
constructor(cdr) {
|
|
10
|
+
this.cdr = cdr;
|
|
11
|
+
this.mode = 'create';
|
|
12
|
+
this.existingNames = [];
|
|
13
|
+
this.typeOptions = ['String', 'Number', 'Boolean', 'Password'];
|
|
14
|
+
this.typeDropdownOptions = [
|
|
15
|
+
{ label: 'String', value: 'String' },
|
|
16
|
+
{ label: 'Number', value: 'Number' },
|
|
17
|
+
{ label: 'Boolean', value: 'Boolean' },
|
|
18
|
+
{ label: 'Password', value: 'Password' },
|
|
19
|
+
];
|
|
20
|
+
this.permissionSegments = [
|
|
21
|
+
{ label: 'RO', value: 'RO', icon: 'lock' },
|
|
22
|
+
{ label: 'RW', value: 'RW', icon: 'edit' },
|
|
23
|
+
];
|
|
24
|
+
this.name = '';
|
|
25
|
+
this.type = 'String';
|
|
26
|
+
this.value = '';
|
|
27
|
+
this.readWriteMode = 'RW';
|
|
28
|
+
this.description = '';
|
|
29
|
+
this.passwordTouched = false;
|
|
30
|
+
this.nameError = null;
|
|
31
|
+
this.valueError = null;
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
if (this.initialValue) {
|
|
35
|
+
this.name = this.initialValue.name ?? '';
|
|
36
|
+
this.type = this.initialValue.type ?? 'String';
|
|
37
|
+
this.value = this.initialValue.value ?? '';
|
|
38
|
+
this.readWriteMode = this.initialValue.readWriteMode ?? 'RW';
|
|
39
|
+
this.description = this.initialValue.description ?? '';
|
|
40
|
+
}
|
|
41
|
+
if (this.type === 'Boolean' && this.value !== 'true' && this.value !== 'false') {
|
|
42
|
+
this.value = 'false';
|
|
43
|
+
}
|
|
44
|
+
if (this.mode === 'edit' && this.type === 'Password') {
|
|
45
|
+
this.value = '';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
get title() {
|
|
49
|
+
return this.mode === 'edit' ? 'Edit global variable' : 'New global variable';
|
|
50
|
+
}
|
|
51
|
+
get subtitle() {
|
|
52
|
+
return 'Workspace-wide — accessible from any test case, any environment.';
|
|
53
|
+
}
|
|
54
|
+
get primaryButtonLabel() {
|
|
55
|
+
return this.mode === 'edit' ? 'Save changes' : 'Create variable';
|
|
56
|
+
}
|
|
57
|
+
get isBoolean() {
|
|
58
|
+
return this.type === 'Boolean';
|
|
59
|
+
}
|
|
60
|
+
get isPassword() {
|
|
61
|
+
return this.type === 'Password';
|
|
62
|
+
}
|
|
63
|
+
get isNumber() {
|
|
64
|
+
return this.type === 'Number';
|
|
65
|
+
}
|
|
66
|
+
get valuePlaceholder() {
|
|
67
|
+
if (this.isPassword && this.mode === 'edit') {
|
|
68
|
+
return '•••••• (leave blank to keep existing)';
|
|
69
|
+
}
|
|
70
|
+
return '';
|
|
71
|
+
}
|
|
72
|
+
get nameHelperText() {
|
|
73
|
+
if (this.nameError) {
|
|
74
|
+
return this.nameError;
|
|
75
|
+
}
|
|
76
|
+
return 'Names must be unique across the entire workspace (primary key — no duplicates).';
|
|
77
|
+
}
|
|
78
|
+
get nameErrorsArray() {
|
|
79
|
+
return this.nameError ? [this.nameError] : [];
|
|
80
|
+
}
|
|
81
|
+
get valueErrorsArray() {
|
|
82
|
+
return this.valueError ? [this.valueError] : [];
|
|
83
|
+
}
|
|
84
|
+
get booleanOptions() {
|
|
85
|
+
return [
|
|
86
|
+
{ label: 'true', value: 'true' },
|
|
87
|
+
{ label: 'false', value: 'false' },
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
get booleanDropdownOptions() {
|
|
91
|
+
return this.booleanOptions;
|
|
92
|
+
}
|
|
93
|
+
onNameChange(next) {
|
|
94
|
+
this.name = next;
|
|
95
|
+
this.nameError = null;
|
|
96
|
+
this.cdr.markForCheck();
|
|
97
|
+
}
|
|
98
|
+
onTypeChange(next) {
|
|
99
|
+
if (!next) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
this.type = next;
|
|
103
|
+
if (this.type === 'Boolean' && this.value !== 'true' && this.value !== 'false') {
|
|
104
|
+
this.value = 'false';
|
|
105
|
+
}
|
|
106
|
+
if (this.type === 'Password') {
|
|
107
|
+
this.passwordTouched = false;
|
|
108
|
+
if (this.mode === 'edit') {
|
|
109
|
+
this.value = '';
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
this.valueError = null;
|
|
113
|
+
this.cdr.markForCheck();
|
|
114
|
+
}
|
|
115
|
+
onPermissionChange(next) {
|
|
116
|
+
this.readWriteMode = next === 'RO' ? 'RO' : 'RW';
|
|
117
|
+
this.cdr.markForCheck();
|
|
118
|
+
}
|
|
119
|
+
onValueChange(next) {
|
|
120
|
+
this.value = next;
|
|
121
|
+
if (this.isPassword) {
|
|
122
|
+
this.passwordTouched = true;
|
|
123
|
+
}
|
|
124
|
+
this.valueError = null;
|
|
125
|
+
this.cdr.markForCheck();
|
|
126
|
+
}
|
|
127
|
+
onBooleanValueChange(next) {
|
|
128
|
+
this.value = next;
|
|
129
|
+
this.cdr.markForCheck();
|
|
130
|
+
}
|
|
131
|
+
onDescriptionChange(next) {
|
|
132
|
+
this.description = next;
|
|
133
|
+
this.cdr.markForCheck();
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Called by the host (via DialogRef.getComponentInstance()) when the primary
|
|
137
|
+
* button is clicked. Returns the captured value when valid, or null when the
|
|
138
|
+
* form has errors — in which case the host should leave the dialog open.
|
|
139
|
+
*/
|
|
140
|
+
getValue() {
|
|
141
|
+
const trimmedName = this.name.trim();
|
|
142
|
+
if (!trimmedName) {
|
|
143
|
+
this.nameError = 'Name is required.';
|
|
144
|
+
}
|
|
145
|
+
else if (this.isDuplicateName(trimmedName)) {
|
|
146
|
+
this.nameError = 'A global variable with this name already exists — names must be unique.';
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
this.nameError = null;
|
|
150
|
+
}
|
|
151
|
+
if (this.isNumber && this.value && !this.isValidNumber(this.value)) {
|
|
152
|
+
this.valueError = 'Value must be a number.';
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
this.valueError = null;
|
|
156
|
+
}
|
|
157
|
+
if (this.nameError || this.valueError) {
|
|
158
|
+
this.cdr.markForCheck();
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const omitPasswordValue = this.isPassword && this.mode === 'edit' && !this.passwordTouched;
|
|
162
|
+
return {
|
|
163
|
+
name: trimmedName,
|
|
164
|
+
type: this.type,
|
|
165
|
+
value: omitPasswordValue ? null : this.serializeValue(),
|
|
166
|
+
readWriteMode: this.readWriteMode,
|
|
167
|
+
description: this.description ? this.description : null,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
serializeValue() {
|
|
171
|
+
if (this.isBoolean) {
|
|
172
|
+
return this.value === 'true' ? 'true' : 'false';
|
|
173
|
+
}
|
|
174
|
+
return this.value ?? '';
|
|
175
|
+
}
|
|
176
|
+
isDuplicateName(candidate) {
|
|
177
|
+
const existing = (this.existingNames ?? []).map(n => (n ?? '').trim());
|
|
178
|
+
if (this.mode === 'edit') {
|
|
179
|
+
const original = (this.initialValue?.name ?? '').trim();
|
|
180
|
+
return candidate !== original && existing.includes(candidate);
|
|
181
|
+
}
|
|
182
|
+
return existing.includes(candidate);
|
|
183
|
+
}
|
|
184
|
+
isValidNumber(raw) {
|
|
185
|
+
const trimmed = raw.trim();
|
|
186
|
+
if (!trimmed) {
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
return !Number.isNaN(Number(trimmed));
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
NewGlobalVariableDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewGlobalVariableDialogComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
193
|
+
NewGlobalVariableDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NewGlobalVariableDialogComponent, selector: "cqa-new-global-variable-dialog", inputs: { mode: "mode", initialValue: "initialValue", existingNames: "existingNames" }, host: { styleAttribute: "display:block;width:100%;", classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Name\"\n placeholder=\"e.g. ihg_api_key\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n inputInlineStyle=\"font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n <span *ngIf=\"!nameError\"\n class=\"cqa-text-xs cqa-text-gray-500 cqa-mt-1\">\n Names must be unique across the entire workspace (primary key \u2014 no duplicates).\n </span>\n </div>\n\n <!-- Type + Permission row -->\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Type</label>\n <cqa-dropdown-button\n [options]=\"typeDropdownOptions\"\n [selectedValue]=\"type\"\n (selectionChange)=\"onTypeChange($event)\">\n </cqa-dropdown-button>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <div class=\"cqa-pt-0.5\">\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n </div>\n\n <!-- Value -->\n <div class=\"cqa-flex cqa-flex-col\">\n <ng-container *ngIf=\"isBoolean; else nonBooleanValue\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Value</label>\n <cqa-dropdown-button\n [options]=\"booleanDropdownOptions\"\n [selectedValue]=\"value\"\n (selectionChange)=\"onBooleanValueChange($event)\">\n </cqa-dropdown-button>\n </ng-container>\n <ng-template #nonBooleanValue>\n <cqa-custom-input\n label=\"Value\"\n [type]=\"isPassword ? 'password' : 'text'\"\n [value]=\"value\"\n [placeholder]=\"valuePlaceholder\"\n [fullWidth]=\"true\"\n [errors]=\"valueErrorsArray\"\n inputInlineStyle=\"font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\"\n (valueChange)=\"onValueChange($event)\">\n </cqa-custom-input>\n </ng-template>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-textarea\n label=\"Description\"\n placeholder=\"What is this variable used for?\"\n [value]=\"description\"\n [rows]=\"2\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-textarea>\n </div>\n\n</div>\n", components: [{ type: i1.CustomInputComponent, selector: "cqa-custom-input", inputs: ["inputId", "label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: i2.DropdownButtonComponent, selector: "cqa-dropdown-button", inputs: ["label", "options", "selectedValue", "disabled", "placeholder"], outputs: ["selectionChange", "opened", "closed"] }, { type: i3.PermissionToggleComponent, selector: "cqa-permission-toggle", inputs: ["value", "disabled", "roTooltip", "rwTooltip"], outputs: ["valueChange"] }, { type: i4.CustomTextareaComponent, selector: "cqa-custom-textarea", inputs: ["label", "placeholder", "value", "enableMarkdown", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "rows", "cols", "resize", "textareaInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewGlobalVariableDialogComponent, decorators: [{
|
|
195
|
+
type: Component,
|
|
196
|
+
args: [{ selector: 'cqa-new-global-variable-dialog', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root', style: 'display:block;width:100%;' }, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Name\"\n placeholder=\"e.g. ihg_api_key\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n inputInlineStyle=\"font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n <span *ngIf=\"!nameError\"\n class=\"cqa-text-xs cqa-text-gray-500 cqa-mt-1\">\n Names must be unique across the entire workspace (primary key \u2014 no duplicates).\n </span>\n </div>\n\n <!-- Type + Permission row -->\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Type</label>\n <cqa-dropdown-button\n [options]=\"typeDropdownOptions\"\n [selectedValue]=\"type\"\n (selectionChange)=\"onTypeChange($event)\">\n </cqa-dropdown-button>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <div class=\"cqa-pt-0.5\">\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n </div>\n\n <!-- Value -->\n <div class=\"cqa-flex cqa-flex-col\">\n <ng-container *ngIf=\"isBoolean; else nonBooleanValue\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Value</label>\n <cqa-dropdown-button\n [options]=\"booleanDropdownOptions\"\n [selectedValue]=\"value\"\n (selectionChange)=\"onBooleanValueChange($event)\">\n </cqa-dropdown-button>\n </ng-container>\n <ng-template #nonBooleanValue>\n <cqa-custom-input\n label=\"Value\"\n [type]=\"isPassword ? 'password' : 'text'\"\n [value]=\"value\"\n [placeholder]=\"valuePlaceholder\"\n [fullWidth]=\"true\"\n [errors]=\"valueErrorsArray\"\n inputInlineStyle=\"font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\"\n (valueChange)=\"onValueChange($event)\">\n </cqa-custom-input>\n </ng-template>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-textarea\n label=\"Description\"\n placeholder=\"What is this variable used for?\"\n [value]=\"description\"\n [rows]=\"2\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-textarea>\n </div>\n\n</div>\n" }]
|
|
197
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { mode: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}], initialValue: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], existingNames: [{
|
|
202
|
+
type: Input
|
|
203
|
+
}] } });
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWdsb2JhbC12YXJpYWJsZS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL25ldy1nbG9iYWwtdmFyaWFibGUtZGlhbG9nL25ldy1nbG9iYWwtdmFyaWFibGUtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQWFyRyxNQUFNLE9BQU8sZ0NBQWdDO0lBNkIzQyxZQUE2QixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTVCMUMsU0FBSSxHQUFzQixRQUFRLENBQUM7UUFFbkMsa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFFN0IsZ0JBQVcsR0FBMkIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVsRix3QkFBbUIsR0FBcUQ7WUFDL0UsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDcEMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDcEMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDdEMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7U0FDekMsQ0FBQztRQUVPLHVCQUFrQixHQUFHO1lBQzVCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBa0MsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hFLEVBQUUsS0FBSyxF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LEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUN4QixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hELE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxhQUFhLENBQUMsR0FBVztRQUMvQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1NBQUU7UUFDOUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7NkhBaE5VLGdDQUFnQztpSEFBaEMsZ0NBQWdDLG9QQ2I3Qyx3eUZBK0VBOzJGRGxFYSxnQ0FBZ0M7a0JBTjVDLFNBQVM7K0JBQ0UsZ0NBQWdDLG1CQUV6Qix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUU7d0dBR3pELElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgR2xvYmFsVmFyaWFibGVEaWFsb2dWYWx1ZSxcbiAgR2xvYmFsVmFyaWFibGVVSVBlcm1pc3Npb24sXG4gIEdsb2JhbFZhcmlhYmxlVUlUeXBlLFxufSBmcm9tICcuL25ldy1nbG9iYWwtdmFyaWFibGUtZGlhbG9nLm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnLCBzdHlsZTogJ2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTsnIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ld0dsb2JhbFZhcmlhYmxlRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbW9kZTogJ2NyZWF0ZScgfCAnZWRpdCcgPSAnY3JlYXRlJztcbiAgQElucHV0KCkgaW5pdGlhbFZhbHVlPzogUGFydGlhbDxHbG9iYWxWYXJpYWJsZURpYWxvZ1ZhbHVlPjtcbiAgQElucHV0KCkgZXhpc3RpbmdOYW1lczogc3RyaW5nW10gPSBbXTtcblxuICByZWFkb25seSB0eXBlT3B0aW9uczogR2xvYmFsVmFyaWFibGVVSVR5cGVbXSA9IFsnU3RyaW5nJywgJ051bWJlcicsICdCb29sZWFuJywgJ1Bhc3N3b3JkJ107XG5cbiAgcmVhZG9ubHkgdHlwZURyb3Bkb3duT3B0aW9uczogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogR2xvYmFsVmFyaWFibGVVSVR5cGUgfVtdID0gW1xuICAgIHsgbGFiZWw6ICdTdHJpbmcnLCB2YWx1ZTogJ1N0cmluZycgfSxcbiAgICB7IGxhYmVsOiAnTnVtYmVyJywgdmFsdWU6ICdOdW1iZXInIH0sXG4gICAgeyBsYWJlbDogJ0Jvb2xlYW4nLCB2YWx1ZTogJ0Jvb2xlYW4nIH0sXG4gICAgeyBsYWJlbDogJ1Bhc3N3b3JkJywgdmFsdWU6ICdQYXNzd29yZCcgfSxcbiAgXTtcblxuICByZWFkb25seSBwZXJtaXNzaW9uU2VnbWVudHMgPSBbXG4gICAgeyBsYWJlbDogJ1JPJywgdmFsdWU6ICdSTycgYXMgR2xvYmFsVmFyaWFibGVVSVBlcm1pc3Npb24sIGljb246ICdsb2NrJyB9LFxuICAgIHsgbGFiZWw6ICdSVycsIHZhbHVlOiAnUlcnIGFzIEdsb2JhbFZhcmlhYmxlVUlQZXJtaXNzaW9uLCBpY29uOiAnZWRpdCcgfSxcbiAgXTtcblxuICBuYW1lID0gJyc7XG4gIHR5cGU6IEdsb2JhbFZhcmlhYmxlVUlUeXBlID0gJ1N0cmluZyc7XG4gIHZhbHVlID0gJyc7XG4gIHJlYWRXcml0ZU1vZGU6IEdsb2JhbFZhcmlhYmxlVUlQZXJtaXNzaW9uID0gJ1JXJztcbiAgZGVzY3JpcHRpb24gPSAnJztcbiAgcGFzc3dvcmRUb3VjaGVkID0gZmFsc2U7XG5cbiAgbmFtZUVycm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgdmFsdWVFcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy5uYW1lID0gdGhpcy5pbml0aWFsVmFsdWUubmFtZSA/PyAnJztcbiAgICAgIHRoaXMudHlwZSA9IHRoaXMuaW5pdGlhbFZhbHVlLnR5cGUgPz8gJ1N0cmluZyc7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbml0aWFsVmFsdWUudmFsdWUgPz8gJyc7XG4gICAgICB0aGlzLnJlYWRXcml0ZU1vZGUgPSB0aGlzLmluaXRpYWxWYWx1ZS5yZWFkV3JpdGVNb2RlID8/ICdSVyc7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uID0gdGhpcy5pbml0aWFsVmFsdWUuZGVzY3JpcHRpb24gPz8gJyc7XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdCb29sZWFuJyAmJiB0aGlzLnZhbHVlICE9PSAndHJ1ZScgJiYgdGhpcy52YWx1ZSAhPT0gJ2ZhbHNlJykge1xuICAgICAgdGhpcy52YWx1ZSA9ICdmYWxzZSc7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdlZGl0JyAmJiB0aGlzLnR5cGUgPT09ICdQYXNzd29yZCcpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZWRpdCcgPyAnRWRpdCBnbG9iYWwgdmFyaWFibGUnIDogJ05ldyBnbG9iYWwgdmFyaWFibGUnO1xuICB9XG5cbiAgZ2V0IHN1YnRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdXb3Jrc3BhY2Utd2lkZSDigJQgYWNjZXNzaWJsZSBmcm9tIGFueSB0ZXN0IGNhc2UsIGFueSBlbnZpcm9ubWVudC4nO1xuICB9XG5cbiAgZ2V0IHByaW1hcnlCdXR0b25MYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdlZGl0JyA/ICdTYXZlIGNoYW5nZXMnIDogJ0NyZWF0ZSB2YXJpYWJsZSc7XG4gIH1cblxuICBnZXQgaXNCb29sZWFuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdCb29sZWFuJztcbiAgfVxuXG4gIGdldCBpc1Bhc3N3b3JkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdQYXNzd29yZCc7XG4gIH1cblxuICBnZXQgaXNOdW1iZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ051bWJlcic7XG4gIH1cblxuICBnZXQgdmFsdWVQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzUGFzc3dvcmQgJiYgdGhpcy5tb2RlID09PSAnZWRpdCcpIHtcbiAgICAgIHJldHVybiAn4oCi4oCi4oCi4oCi4oCi4oCiIChsZWF2ZSBibGFuayB0byBrZWVwIGV4aXN0aW5nKSc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldCBuYW1lSGVscGVyVGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm5hbWVFcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMubmFtZUVycm9yO1xuICAgIH1cbiAgICByZXR1cm4gJ05hbWVzIG11c3QgYmUgdW5pcXVlIGFjcm9zcyB0aGUgZW50aXJlIHdvcmtzcGFjZSAocHJpbWFyeSBrZXkg4oCUIG5vIGR1cGxpY2F0ZXMpLic7XG4gIH1cblxuICBnZXQgbmFtZUVycm9yc0FycmF5KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lRXJyb3IgPyBbdGhpcy5uYW1lRXJyb3JdIDogW107XG4gIH1cblxuICBnZXQgdmFsdWVFcnJvcnNBcnJheSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVFcnJvciA/IFt0aGlzLnZhbHVlRXJyb3JdIDogW107XG4gIH1cblxuICBnZXQgYm9vbGVhbk9wdGlvbnMoKTogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgbGFiZWw6ICd0cnVlJywgdmFsdWU6ICd0cnVlJyB9LFxuICAgICAgeyBsYWJlbDogJ2ZhbHNlJywgdmFsdWU6ICdmYWxzZScgfSxcbiAgICBdO1xuICB9XG5cbiAgZ2V0IGJvb2xlYW5Ecm9wZG93bk9wdGlvbnMoKTogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSB7XG4gICAgcmV0dXJuIHRoaXMuYm9vbGVhbk9wdGlvbnM7XG4gIH1cblxuICBvbk5hbWVDaGFuZ2UobmV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5uYW1lID0gbmV4dDtcbiAgICB0aGlzLm5hbWVFcnJvciA9IG51bGw7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvblR5cGVDaGFuZ2UobmV4dDogR2xvYmFsVmFyaWFibGVVSVR5cGUpOiB2b2lkIHtcbiAgICBpZiAoIW5leHQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy50eXBlID0gbmV4dDtcbiAgICBpZiAodGhpcy50eXBlID09PSAnQm9vbGVhbicgJiYgdGhpcy52YWx1ZSAhPT0gJ3RydWUnICYmIHRoaXMudmFsdWUgIT09ICdmYWxzZScpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnZmFsc2UnO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSAnUGFzc3dvcmQnKSB7XG4gICAgICB0aGlzLnBhc3N3b3JkVG91Y2hlZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ2VkaXQnKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52YWx1ZUVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uUGVybWlzc2lvbkNoYW5nZShuZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWRXcml0ZU1vZGUgPSBuZXh0ID09PSAnUk8nID8gJ1JPJyA6ICdSVyc7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKG5leHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBuZXh0O1xuICAgIGlmICh0aGlzLmlzUGFzc3dvcmQpIHtcbiAgICAgIHRoaXMucGFzc3dvcmRUb3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZUVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQm9vbGVhblZhbHVlQ2hhbmdlKG5leHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBuZXh0O1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25EZXNjcmlwdGlvbkNoYW5nZShuZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gbmV4dDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgdGhlIGhvc3QgKHZpYSBEaWFsb2dSZWYuZ2V0Q29tcG9uZW50SW5zdGFuY2UoKSkgd2hlbiB0aGUgcHJpbWFyeVxuICAgKiBidXR0b24gaXMgY2xpY2tlZC4gUmV0dXJucyB0aGUgY2FwdHVyZWQgdmFsdWUgd2hlbiB2YWxpZCwgb3IgbnVsbCB3aGVuIHRoZVxuICAgKiBmb3JtIGhhcyBlcnJvcnMg4oCUIGluIHdoaWNoIGNhc2UgdGhlIGhvc3Qgc2hvdWxkIGxlYXZlIHRoZSBkaWFsb2cgb3Blbi5cbiAgICovXG4gIGdldFZhbHVlKCk6IEdsb2JhbFZhcmlhYmxlRGlhbG9nVmFsdWUgfCBudWxsIHtcbiAgICBjb25zdCB0cmltbWVkTmFtZSA9IHRoaXMubmFtZS50cmltKCk7XG5cbiAgICBpZiAoIXRyaW1tZWROYW1lKSB7XG4gICAgICB0aGlzLm5hbWVFcnJvciA9ICdOYW1lIGlzIHJlcXVpcmVkLic7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRHVwbGljYXRlTmFtZSh0cmltbWVkTmFtZSkpIHtcbiAgICAgIHRoaXMubmFtZUVycm9yID0gJ0EgZ2xvYmFsIHZhcmlhYmxlIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzIOKAlCBuYW1lcyBtdXN0IGJlIHVuaXF1ZS4nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hbWVFcnJvciA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNOdW1iZXIgJiYgdGhpcy52YWx1ZSAmJiAhdGhpcy5pc1ZhbGlkTnVtYmVyKHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLnZhbHVlRXJyb3IgPSAnVmFsdWUgbXVzdCBiZSBhIG51bWJlci4nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlRXJyb3IgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5hbWVFcnJvciB8fCB0aGlzLnZhbHVlRXJyb3IpIHtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgb21pdFBhc3N3b3JkVmFsdWUgPSB0aGlzLmlzUGFzc3dvcmQgJiYgdGhpcy5tb2RlID09PSAnZWRpdCcgJiYgIXRoaXMucGFzc3dvcmRUb3VjaGVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRyaW1tZWROYW1lLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgdmFsdWU6IG9taXRQYXNzd29yZFZhbHVlID8gbnVsbCA6IHRoaXMuc2VyaWFsaXplVmFsdWUoKSxcbiAgICAgIHJlYWRXcml0ZU1vZGU6IHRoaXMucmVhZFdyaXRlTW9kZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uID8gdGhpcy5kZXNjcmlwdGlvbiA6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2VyaWFsaXplVmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuaXNCb29sZWFuKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gJ3RydWUnID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgPz8gJyc7XG4gIH1cblxuICBwcml2YXRlIGlzRHVwbGljYXRlTmFtZShjYW5kaWRhdGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gKHRoaXMuZXhpc3RpbmdOYW1lcyA/PyBbXSkubWFwKG4gPT4gKG4gPz8gJycpLnRyaW0oKSk7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2VkaXQnKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbCA9ICh0aGlzLmluaXRpYWxWYWx1ZT8ubmFtZSA/PyAnJykudHJpbSgpO1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZSAhPT0gb3JpZ2luYWwgJiYgZXhpc3RpbmcuaW5jbHVkZXMoY2FuZGlkYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIGV4aXN0aW5nLmluY2x1ZGVzKGNhbmRpZGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWROdW1iZXIocmF3OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCB0cmltbWVkID0gcmF3LnRyaW0oKTtcbiAgICBpZiAoIXRyaW1tZWQpIHsgcmV0dXJuIHRydWU7IH1cbiAgICByZXR1cm4gIU51bWJlci5pc05hTihOdW1iZXIodHJpbW1lZCkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtdy1mdWxsXCI+XG5cbiAgPCEtLSBOYW1lIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCI+XG4gICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgIGxhYmVsPVwiTmFtZVwiXG4gICAgICBwbGFjZWhvbGRlcj1cImUuZy4gaWhnX2FwaV9rZXlcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW3ZhbHVlXT1cIm5hbWVcIlxuICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgIFtlcnJvcnNdPVwibmFtZUVycm9yc0FycmF5XCJcbiAgICAgIGlucHV0SW5saW5lU3R5bGU9XCJmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2U7XCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbk5hbWVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICA8c3BhbiAqbmdJZj1cIiFuYW1lRXJyb3JcIlxuICAgICAgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1ncmF5LTUwMCBjcWEtbXQtMVwiPlxuICAgICAgTmFtZXMgbXVzdCBiZSB1bmlxdWUgYWNyb3NzIHRoZSBlbnRpcmUgd29ya3NwYWNlIChwcmltYXJ5IGtleSDigJQgbm8gZHVwbGljYXRlcykuXG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8IS0tIFR5cGUgKyBQZXJtaXNzaW9uIHJvdyAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMiBjcWEtZ2FwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtbWItMS41IGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1ncmF5LTcwMFwiPlR5cGU8L2xhYmVsPlxuICAgICAgPGNxYS1kcm9wZG93bi1idXR0b25cbiAgICAgICAgW29wdGlvbnNdPVwidHlwZURyb3Bkb3duT3B0aW9uc1wiXG4gICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cInR5cGVcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uVHlwZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8L2NxYS1kcm9wZG93bi1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLW1iLTEuNSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtZ3JheS03MDBcIj5QZXJtaXNzaW9uPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcHQtMC41XCI+XG4gICAgICAgIDxjcWEtcGVybWlzc2lvbi10b2dnbGVcbiAgICAgICAgICBbdmFsdWVdPVwicmVhZFdyaXRlTW9kZVwiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUGVybWlzc2lvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvY3FhLXBlcm1pc3Npb24tdG9nZ2xlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVmFsdWUgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2xcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNCb29sZWFuOyBlbHNlIG5vbkJvb2xlYW5WYWx1ZVwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLW1iLTEuNSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtZ3JheS03MDBcIj5WYWx1ZTwvbGFiZWw+XG4gICAgICA8Y3FhLWRyb3Bkb3duLWJ1dHRvblxuICAgICAgICBbb3B0aW9uc109XCJib29sZWFuRHJvcGRvd25PcHRpb25zXCJcbiAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQm9vbGVhblZhbHVlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwvY3FhLWRyb3Bkb3duLWJ1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vbkJvb2xlYW5WYWx1ZT5cbiAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgIGxhYmVsPVwiVmFsdWVcIlxuICAgICAgICBbdHlwZV09XCJpc1Bhc3N3b3JkID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJ2YWx1ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgW2Vycm9yc109XCJ2YWx1ZUVycm9yc0FycmF5XCJcbiAgICAgICAgaW5wdXRJbmxpbmVTdHlsZT1cImZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIG1vbm9zcGFjZTtcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8L2NxYS1jdXN0b20taW5wdXQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG5cbiAgPCEtLSBEZXNjcmlwdGlvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiPlxuICAgIDxjcWEtY3VzdG9tLXRleHRhcmVhXG4gICAgICBsYWJlbD1cIkRlc2NyaXB0aW9uXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiV2hhdCBpcyB0aGlzIHZhcmlhYmxlIHVzZWQgZm9yP1wiXG4gICAgICBbdmFsdWVdPVwiZGVzY3JpcHRpb25cIlxuICAgICAgW3Jvd3NdPVwiMlwiXG4gICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRGVzY3JpcHRpb25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvY3FhLWN1c3RvbS10ZXh0YXJlYT5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWdsb2JhbC12YXJpYWJsZS1kaWFsb2cubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEdsb2JhbFZhcmlhYmxlVUlUeXBlID0gJ1N0cmluZycgfCAnTnVtYmVyJyB8ICdCb29sZWFuJyB8ICdQYXNzd29yZCc7XG5leHBvcnQgdHlwZSBHbG9iYWxWYXJpYWJsZVVJUGVybWlzc2lvbiA9ICdSTycgfCAnUlcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbFZhcmlhYmxlRGlhbG9nVmFsdWUge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IEdsb2JhbFZhcmlhYmxlVUlUeXBlO1xuICB2YWx1ZTogc3RyaW5nIHwgbnVsbDtcbiAgcmVhZFdyaXRlTW9kZTogR2xvYmFsVmFyaWFibGVVSVBlcm1pc3Npb247XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ld0dsb2JhbFZhcmlhYmxlRGlhbG9nSW5wdXRzIHtcbiAgbW9kZT86ICdjcmVhdGUnIHwgJ2VkaXQnO1xuICBpbml0aWFsVmFsdWU/OiBQYXJ0aWFsPEdsb2JhbFZhcmlhYmxlRGlhbG9nVmFsdWU+O1xuICBleGlzdGluZ05hbWVzPzogc3RyaW5nW107XG59XG4iXX0=
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/material/icon";
|
|
4
|
+
export class PermissionToggleComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.value = 'RW';
|
|
7
|
+
this.disabled = false;
|
|
8
|
+
this.roTooltip = 'Read only — click to allow writes';
|
|
9
|
+
this.rwTooltip = 'Read / write — click to lock';
|
|
10
|
+
this.valueChange = new EventEmitter();
|
|
11
|
+
}
|
|
12
|
+
onClick(next, event) {
|
|
13
|
+
event.stopPropagation();
|
|
14
|
+
if (this.disabled || next === this.value) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
this.value = next;
|
|
18
|
+
this.valueChange.emit(next);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
PermissionToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: PermissionToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
+
PermissionToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: PermissionToggleComponent, selector: "cqa-permission-toggle", inputs: { value: "value", disabled: "disabled", roTooltip: "roTooltip", rwTooltip: "rwTooltip" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
|
|
23
|
+
<div class="cqa-ui-root" style="display:inline-flex;">
|
|
24
|
+
<div class="cqa-permission-toggle" [class.cqa-permission-toggle--disabled]="disabled">
|
|
25
|
+
<button
|
|
26
|
+
type="button"
|
|
27
|
+
class="cqa-perm-pill cqa-perm-pill--ro"
|
|
28
|
+
[class.active]="value === 'RO'"
|
|
29
|
+
[disabled]="disabled"
|
|
30
|
+
[title]="roTooltip"
|
|
31
|
+
(click)="onClick('RO', $event)">
|
|
32
|
+
<mat-icon class="cqa-perm-icon">lock</mat-icon>RO
|
|
33
|
+
</button>
|
|
34
|
+
<button
|
|
35
|
+
type="button"
|
|
36
|
+
class="cqa-perm-pill cqa-perm-pill--rw"
|
|
37
|
+
[class.active]="value === 'RW'"
|
|
38
|
+
[disabled]="disabled"
|
|
39
|
+
[title]="rwTooltip"
|
|
40
|
+
(click)="onClick('RW', $event)">
|
|
41
|
+
<mat-icon class="cqa-perm-icon">edit</mat-icon>RW
|
|
42
|
+
</button>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
`, isInline: true, components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: PermissionToggleComponent, decorators: [{
|
|
47
|
+
type: Component,
|
|
48
|
+
args: [{
|
|
49
|
+
selector: 'cqa-permission-toggle',
|
|
50
|
+
template: `
|
|
51
|
+
<div class="cqa-ui-root" style="display:inline-flex;">
|
|
52
|
+
<div class="cqa-permission-toggle" [class.cqa-permission-toggle--disabled]="disabled">
|
|
53
|
+
<button
|
|
54
|
+
type="button"
|
|
55
|
+
class="cqa-perm-pill cqa-perm-pill--ro"
|
|
56
|
+
[class.active]="value === 'RO'"
|
|
57
|
+
[disabled]="disabled"
|
|
58
|
+
[title]="roTooltip"
|
|
59
|
+
(click)="onClick('RO', $event)">
|
|
60
|
+
<mat-icon class="cqa-perm-icon">lock</mat-icon>RO
|
|
61
|
+
</button>
|
|
62
|
+
<button
|
|
63
|
+
type="button"
|
|
64
|
+
class="cqa-perm-pill cqa-perm-pill--rw"
|
|
65
|
+
[class.active]="value === 'RW'"
|
|
66
|
+
[disabled]="disabled"
|
|
67
|
+
[title]="rwTooltip"
|
|
68
|
+
(click)="onClick('RW', $event)">
|
|
69
|
+
<mat-icon class="cqa-perm-icon">edit</mat-icon>RW
|
|
70
|
+
</button>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
`,
|
|
74
|
+
}]
|
|
75
|
+
}], propDecorators: { value: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], disabled: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], roTooltip: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], rwTooltip: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], valueChange: [{
|
|
84
|
+
type: Output
|
|
85
|
+
}] } });
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9wZXJtaXNzaW9uLXRvZ2dsZS9wZXJtaXNzaW9uLXRvZ2dsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBK0J2RSxNQUFNLE9BQU8seUJBQXlCO0lBM0J0QztRQTRCVyxVQUFLLEdBQTBCLElBQUksQ0FBQztRQUNwQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxtQ0FBbUMsQ0FBQztRQUNoRCxjQUFTLEdBQUcsOEJBQThCLENBQUM7UUFFMUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztLQVFuRTtJQU5DLE9BQU8sQ0FBQyxJQUEyQixFQUFFLEtBQWlCO1FBQ3BELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7c0hBYlUseUJBQXlCOzBHQUF6Qix5QkFBeUIsd01BekIxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQ7MkZBRVUseUJBQXlCO2tCQTNCckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJUO2lCQUNGOzhCQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgUGVybWlzc2lvblRvZ2dsZVZhbHVlID0gJ1JPJyB8ICdSVyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1wZXJtaXNzaW9uLXRvZ2dsZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImNxYS11aS1yb290XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1mbGV4O1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1wZXJtaXNzaW9uLXRvZ2dsZVwiIFtjbGFzcy5jcWEtcGVybWlzc2lvbi10b2dnbGUtLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1wZXJtLXBpbGwgY3FhLXBlcm0tcGlsbC0tcm9cIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwidmFsdWUgPT09ICdSTydcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgW3RpdGxlXT1cInJvVG9vbHRpcFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJ1JPJywgJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS1wZXJtLWljb25cIj5sb2NrPC9tYXQtaWNvbj5ST1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLXBlcm0tcGlsbCBjcWEtcGVybS1waWxsLS1yd1wiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ2YWx1ZSA9PT0gJ1JXJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbdGl0bGVdPVwicndUb29sdGlwXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGljaygnUlcnLCAkZXZlbnQpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXBlcm0taWNvblwiPmVkaXQ8L21hdC1pY29uPlJXXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25Ub2dnbGVDb21wb25lbnQge1xuICBASW5wdXQoKSB2YWx1ZTogUGVybWlzc2lvblRvZ2dsZVZhbHVlID0gJ1JXJztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcm9Ub29sdGlwID0gJ1JlYWQgb25seSDigJQgY2xpY2sgdG8gYWxsb3cgd3JpdGVzJztcbiAgQElucHV0KCkgcndUb29sdGlwID0gJ1JlYWQgLyB3cml0ZSDigJQgY2xpY2sgdG8gbG9jayc7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQZXJtaXNzaW9uVG9nZ2xlVmFsdWU+KCk7XG5cbiAgb25DbGljayhuZXh0OiBQZXJtaXNzaW9uVG9nZ2xlVmFsdWUsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgbmV4dCA9PT0gdGhpcy52YWx1ZSkgeyByZXR1cm47IH1cbiAgICB0aGlzLnZhbHVlID0gbmV4dDtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV4dCk7XG4gIH1cbn1cbiJdfQ==
|