@litigiovirtual/ius-design-components 1.0.289 → 1.0.290
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/esm2022/lib/custom-dropdown/custom-dropdown.component.mjs +139 -24
- package/fesm2022/litigiovirtual-ius-design-components.mjs +133 -20
- package/fesm2022/litigiovirtual-ius-design-components.mjs.map +1 -1
- package/lib/custom-dropdown/custom-dropdown.component.d.ts +24 -4
- package/package.json +1 -1
|
@@ -1,19 +1,30 @@
|
|
|
1
|
-
import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
2
3
|
import { IconMdComponent } from '../icon-md/icon-md.component';
|
|
3
4
|
import { CommonModule } from '@angular/common';
|
|
4
5
|
import { FormsModule } from '@angular/forms';
|
|
5
6
|
import { SimpleDividerComponent } from '../simple-divider';
|
|
6
7
|
import { ButtonStandardTertiaryComponent } from '../button-standard-tertiary';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/
|
|
9
|
-
import * as i2 from "@angular/
|
|
9
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
10
|
+
import * as i2 from "@angular/forms";
|
|
11
|
+
import * as i3 from "@angular/common";
|
|
10
12
|
export class CustomDropdownComponent {
|
|
11
|
-
|
|
13
|
+
get showList() {
|
|
14
|
+
return this._overlayRef !== null;
|
|
15
|
+
}
|
|
16
|
+
constructor(_el, _overlay, _vcr) {
|
|
17
|
+
this._el = _el;
|
|
18
|
+
this._overlay = _overlay;
|
|
19
|
+
this._vcr = _vcr;
|
|
12
20
|
this.isFocused = false;
|
|
13
21
|
this.isAlertText = false;
|
|
14
|
-
this.showList = false;
|
|
15
22
|
this.hasClickedInside = false;
|
|
16
23
|
this.selected = false;
|
|
24
|
+
this._overlayRef = null;
|
|
25
|
+
this._scrollListener = () => { this._overlayRef?.updatePosition(); };
|
|
26
|
+
this._debounceTimer = null;
|
|
27
|
+
this._scrolledEndCooldown = false;
|
|
17
28
|
this.componentId = '';
|
|
18
29
|
this.required = false;
|
|
19
30
|
this.disabled = false;
|
|
@@ -24,46 +35,104 @@ export class CustomDropdownComponent {
|
|
|
24
35
|
this.textBtnAdd = 'Agregar';
|
|
25
36
|
this.textInput = '';
|
|
26
37
|
this.element = '';
|
|
38
|
+
this.debounceMs = 300;
|
|
39
|
+
this.enableInfiniteScroll = false;
|
|
40
|
+
this.loading = false;
|
|
27
41
|
this.onChangesValueEvent = new EventEmitter();
|
|
28
42
|
this.onEnterKey = new EventEmitter();
|
|
29
43
|
this.onAddElement = new EventEmitter();
|
|
30
44
|
this.onBlurEvent = new EventEmitter();
|
|
45
|
+
this.onFocusEvent = new EventEmitter();
|
|
46
|
+
this.onScrolledToEnd = new EventEmitter();
|
|
31
47
|
}
|
|
32
48
|
onClickOutside(event) {
|
|
33
|
-
if (!this.hasClickedInside)
|
|
49
|
+
if (!this.hasClickedInside) {
|
|
34
50
|
return;
|
|
51
|
+
}
|
|
35
52
|
const target = event.target;
|
|
36
|
-
|
|
37
|
-
if (
|
|
38
|
-
|
|
39
|
-
this.showList = false;
|
|
40
|
-
this.isAlertText = !this.selected && !this.showList;
|
|
53
|
+
// Click dentro del panel overlay (opciones o "agregar elemento") → no cerrar
|
|
54
|
+
if (this._overlayRef?.overlayElement.contains(target)) {
|
|
55
|
+
return;
|
|
41
56
|
}
|
|
57
|
+
// Click dentro del textfield → no cerrar
|
|
58
|
+
const textfield = this._el.nativeElement.querySelector('.container-textfield');
|
|
59
|
+
if (textfield?.contains(target)) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
this.closeList();
|
|
63
|
+
}
|
|
64
|
+
closeList(event) {
|
|
65
|
+
if (event) {
|
|
66
|
+
event.stopImmediatePropagation();
|
|
67
|
+
}
|
|
68
|
+
this.isFocused = false;
|
|
69
|
+
this._closePanel();
|
|
70
|
+
if (!this.selected && this.required) {
|
|
71
|
+
this.isAlertText = true;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.isAlertText = false;
|
|
75
|
+
}
|
|
76
|
+
this.onBlurEvent.emit();
|
|
42
77
|
}
|
|
43
78
|
onInput() {
|
|
44
|
-
if (this.selected)
|
|
79
|
+
if (this.selected) {
|
|
45
80
|
this.selected = false;
|
|
46
|
-
|
|
81
|
+
}
|
|
82
|
+
if (this.debounceMs <= 0) {
|
|
83
|
+
this.onChangesValueEvent.emit(this.textInput);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (this._debounceTimer) {
|
|
87
|
+
clearTimeout(this._debounceTimer);
|
|
88
|
+
}
|
|
89
|
+
this._debounceTimer = setTimeout(() => {
|
|
90
|
+
this.onChangesValueEvent.emit(this.textInput);
|
|
91
|
+
}, this.debounceMs);
|
|
92
|
+
}
|
|
93
|
+
onListScroll(event) {
|
|
94
|
+
if (!this.enableInfiniteScroll) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const el = event.target;
|
|
98
|
+
const threshold = 48;
|
|
99
|
+
const nearBottom = el.scrollTop + el.clientHeight >= el.scrollHeight - threshold;
|
|
100
|
+
if (!nearBottom || this._scrolledEndCooldown) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
this._scrolledEndCooldown = true;
|
|
104
|
+
this.onScrolledToEnd.emit();
|
|
105
|
+
setTimeout(() => { this._scrolledEndCooldown = false; }, 300);
|
|
47
106
|
}
|
|
48
107
|
onFocus() {
|
|
108
|
+
if (this.disabled) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
49
111
|
this.isFocused = true;
|
|
50
|
-
this.showList = true;
|
|
51
112
|
this.hasClickedInside = true;
|
|
113
|
+
if (!this.showList) {
|
|
114
|
+
this._openPanel();
|
|
115
|
+
}
|
|
116
|
+
this.onFocusEvent.emit();
|
|
52
117
|
}
|
|
53
118
|
onBlur() {
|
|
54
119
|
this.isFocused = false;
|
|
120
|
+
if (this.showList) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
55
123
|
if (this.required) {
|
|
56
124
|
this.isAlertText = this.textInput === '';
|
|
57
125
|
}
|
|
58
|
-
this.onBlurEvent.emit();
|
|
59
126
|
}
|
|
60
127
|
onKeyPress(event) {
|
|
61
|
-
if (event.key === 'Enter')
|
|
128
|
+
if (event.key === 'Enter') {
|
|
62
129
|
this.addText();
|
|
130
|
+
}
|
|
63
131
|
}
|
|
64
132
|
onKeyPressAddElement(event) {
|
|
65
|
-
if (event.key === 'Enter')
|
|
133
|
+
if (event.key === 'Enter') {
|
|
66
134
|
this.addElementText();
|
|
135
|
+
}
|
|
67
136
|
}
|
|
68
137
|
onClickAddElement() {
|
|
69
138
|
if (this.element.trim() !== '') {
|
|
@@ -86,13 +155,46 @@ export class CustomDropdownComponent {
|
|
|
86
155
|
}
|
|
87
156
|
}
|
|
88
157
|
onSelectOption() {
|
|
158
|
+
this.selected = true;
|
|
89
159
|
this.isFocused = false;
|
|
90
|
-
this.
|
|
160
|
+
this._closePanel();
|
|
91
161
|
this.isAlertText = false;
|
|
92
|
-
this.selected = true;
|
|
93
162
|
}
|
|
94
|
-
|
|
95
|
-
|
|
163
|
+
_openPanel() {
|
|
164
|
+
const textfield = this._el.nativeElement.querySelector('.container-textfield');
|
|
165
|
+
const anchor = textfield ?? this._el;
|
|
166
|
+
const positionStrategy = this._overlay
|
|
167
|
+
.position()
|
|
168
|
+
.flexibleConnectedTo(anchor)
|
|
169
|
+
.withFlexibleDimensions(false)
|
|
170
|
+
.withPush(false)
|
|
171
|
+
.withPositions([
|
|
172
|
+
{ originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },
|
|
173
|
+
{ originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },
|
|
174
|
+
]);
|
|
175
|
+
this._overlayRef = this._overlay.create({
|
|
176
|
+
positionStrategy,
|
|
177
|
+
scrollStrategy: this._overlay.scrollStrategies.reposition(),
|
|
178
|
+
width: (textfield ?? this._el.nativeElement).getBoundingClientRect().width,
|
|
179
|
+
});
|
|
180
|
+
this._overlayRef.attach(new TemplatePortal(this.listPanel, this._vcr));
|
|
181
|
+
window.addEventListener('scroll', this._scrollListener, true);
|
|
182
|
+
}
|
|
183
|
+
_closePanel() {
|
|
184
|
+
if (this._overlayRef) {
|
|
185
|
+
this._overlayRef.dispose();
|
|
186
|
+
this._overlayRef = null;
|
|
187
|
+
window.removeEventListener('scroll', this._scrollListener, true);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
ngOnDestroy() {
|
|
191
|
+
if (this._debounceTimer) {
|
|
192
|
+
clearTimeout(this._debounceTimer);
|
|
193
|
+
}
|
|
194
|
+
this._closePanel();
|
|
195
|
+
}
|
|
196
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomDropdownComponent, deps: [{ token: i0.ElementRef }, { token: i1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
197
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CustomDropdownComponent, isStandalone: true, selector: "ius-custom-dropdown", inputs: { componentId: "componentId", required: "required", disabled: "disabled", showHelpText: "showHelpText", error: "error", labelSuperior: "labelSuperior", labelInferior: "labelInferior", errorText: "errorText", labelInput: "labelInput", iconInput: "iconInput", placeholderAddText: "placeholderAddText", iconBtnAdd: "iconBtnAdd", textBtnAdd: "textBtnAdd", textInput: "textInput", element: "element", debounceMs: "debounceMs", enableInfiniteScroll: "enableInfiniteScroll", loading: "loading" }, outputs: { onChangesValueEvent: "onChangesValueEvent", onEnterKey: "onEnterKey", onAddElement: "onAddElement", onBlurEvent: "onBlurEvent", onFocusEvent: "onFocusEvent", onScrolledToEnd: "onScrolledToEnd" }, host: { listeners: { "document:click": "onClickOutside($event)" } }, viewQueries: [{ propertyName: "listPanel", first: true, predicate: ["listPanel"], descendants: true }], ngImport: i0, template: "<div class=\"container-general\" [id]=\"componentId\">\n\n <!-- Label superior -->\n @if (labelSuperior) {\n <div class=\"container-label-sup\" [ngClass]=\"{ disabled: disabled }\">\n @if (!disabled && required) {\n <div class=\"icon-dot\"></div>\n }\n <span>{{ labelSuperior }}</span>\n @if (!disabled && showHelpText) {\n <ius-icon-md iconName=\"icon-help\" class=\"icon-color-help\"></ius-icon-md>\n }\n <span>:</span>\n </div>\n }\n\n <!-- Input principal -->\n <div\n class=\"container-textfield\"\n [ngClass]=\"{\n disabled: disabled,\n focused: isFocused,\n alert: (!isFocused && isAlertText && !disabled) || (error && !disabled)\n }\"\n (click)=\"onFocus()\"\n >\n @if (iconInput) {\n <ius-icon-md [iconName]=\"iconInput\" class=\"icon-color\"></ius-icon-md>\n }\n <input\n type=\"text\"\n [(ngModel)]=\"textInput\"\n [placeholder]=\"labelInput\"\n [disabled]=\"disabled\"\n (input)=\"onInput()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keypress)=\"onKeyPress($event)\"\n />\n <div class=\"cnt-icon-right\">\n @if (!showList) {\n <ius-icon-md iconName=\"icon-keyboard-arrow-down\" class=\"icon-arrows\"></ius-icon-md>\n } @else {\n <div (click)=\"closeList($event)\" style=\"height: 20px;\">\n <ius-icon-md iconName=\"icon-keyboard-arrow-up\" class=\"icon-arrows\"></ius-icon-md>\n </div>\n }\n </div>\n </div>\n\n <!-- Label inferior -->\n @if (labelInferior && isFocused && !error) {\n <span class=\"label-inf\">{{ labelInferior }}</span>\n }\n @if ((errorText || labelInferior) && ((!isFocused && isAlertText && !disabled) || (error && !disabled))) {\n <span class=\"label-inf\" [ngClass]=\"{ alert: (!isFocused && isAlertText && !disabled) || (error && !disabled) }\">\n {{ errorText ?? labelInferior }}\n </span>\n }\n\n <!-- Lista de opciones (CDK overlay) -->\n <ng-template #listPanel>\n <div class=\"container-options\">\n <div class=\"container-list scrollable-small\" (scroll)=\"onListScroll($event)\">\n <div (click)=\"onSelectOption()\">\n <ng-content selector=\"ius-option\"></ng-content>\n </div>\n @if (loading) {\n <div class=\"cnt-loading-option\">Cargando\u2026</div>\n }\n </div>\n <ius-simple-divider></ius-simple-divider>\n <div class=\"add-data\">\n <div class=\"container-text\">\n <input\n type=\"text\"\n class=\"input-text\"\n [(ngModel)]=\"element\"\n (keypress)=\"onKeyPressAddElement($event)\"\n [placeholder]=\"placeholderAddText\"\n />\n </div>\n <div class=\"button-add-option\">\n <ius-button-standard-tertiary\n [iconName]=\"iconBtnAdd\"\n (click)=\"onClickAddElement()\"\n >\n {{ textBtnAdd }}\n </ius-button-standard-tertiary>\n </div>\n </div>\n </div>\n </ng-template>\n\n</div>\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.container-general{position:relative;height:100%}.container-textfield{display:flex;padding:10px 12px;justify-content:center;align-items:flex-start;gap:4px;border:1px solid #f5f5f5;border-radius:8px;background:#f5f5f5;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.container-textfield:hover:not(.disabled):not(.focused):not(.alert){background:#edf6ff}.container-textfield.focused{border:1px solid #0581BC;background:#edf6ff}.container-textfield.disabled{background:#f5f5f5}.container-textfield.disabled .icon-color,.container-textfield.disabled .icon-arrows{color:#bfbfbf}.container-textfield.disabled input::placeholder{color:#bfbfbf;opacity:1}.container-textfield.alert{border:1px solid #DB2E2A;background:#fff4f0}.icon-color{color:#595959}.icon-arrows{color:#333}.icon-color-help{color:#8c8c8c}input{display:flex;align-items:center;flex:1 0 0;border:none;outline:none;background-color:transparent;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.cnt-icon-right{display:flex;align-items:center;justify-content:center;background:none;padding:0;color:#333}.container-label-sup{display:flex;align-items:center;gap:4px;margin-bottom:8px;color:#333;font-family:Roboto,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.container-label-sup.disabled{color:#bfbfbf}.icon-dot{display:flex;align-items:center;width:4px;height:4px;aspect-ratio:1/1;background-color:#db2e2a;border-radius:100px}.label-inf{display:flex;position:absolute;margin-top:4px;color:#595959;font-family:Roboto,sans-serif;font-size:.75rem;font-style:italic;font-weight:500;line-height:16px;letter-spacing:.24px}.label-inf.alert{color:#931224}.container-options{width:100%;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a}.container-list{max-height:144px;display:flex;flex-direction:column;margin-top:4px;overflow-y:auto}.add-data{display:flex;padding-top:8px;padding-bottom:8px;align-items:center;gap:10px;width:100%;background:#fff;border-radius:8px}.add-data .container-text{display:flex;width:60%;align-items:flex-start;gap:4px}.add-data .container-text .input-text{width:100%;display:flex;margin-left:10px;padding:12px;justify-content:center;align-items:flex-start;gap:4px;border-radius:8px;background:#f5f5f5}.add-data .button-add-option{margin-right:10px;width:40%}.scrollable-small::-webkit-scrollbar{-webkit-appearance:none}.scrollable-small::-webkit-scrollbar:vertical{width:4px;height:32px;padding-top:2px;padding-bottom:2px}.scrollable-small::-webkit-scrollbar:horizontal{height:5px;padding-top:2px;padding-bottom:2px}.scrollable-small::-webkit-scrollbar-thumb{background-color:#08a6db;border-radius:4px}\n"], dependencies: [{ kind: "component", type: IconMdComponent, selector: "ius-icon-md", inputs: ["iconName", "color"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SimpleDividerComponent, selector: "ius-simple-divider" }, { kind: "component", type: ButtonStandardTertiaryComponent, selector: "ius-button-standard-tertiary", inputs: ["disabled", "iconName"], outputs: ["buttonClicked"] }] }); }
|
|
96
198
|
}
|
|
97
199
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomDropdownComponent, decorators: [{
|
|
98
200
|
type: Component,
|
|
@@ -102,8 +204,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
102
204
|
CommonModule,
|
|
103
205
|
SimpleDividerComponent,
|
|
104
206
|
ButtonStandardTertiaryComponent
|
|
105
|
-
], template: "<div class=\"container-general\" [id]=\"componentId\">\
|
|
106
|
-
}], propDecorators: {
|
|
207
|
+
], template: "<div class=\"container-general\" [id]=\"componentId\">\n\n <!-- Label superior -->\n @if (labelSuperior) {\n <div class=\"container-label-sup\" [ngClass]=\"{ disabled: disabled }\">\n @if (!disabled && required) {\n <div class=\"icon-dot\"></div>\n }\n <span>{{ labelSuperior }}</span>\n @if (!disabled && showHelpText) {\n <ius-icon-md iconName=\"icon-help\" class=\"icon-color-help\"></ius-icon-md>\n }\n <span>:</span>\n </div>\n }\n\n <!-- Input principal -->\n <div\n class=\"container-textfield\"\n [ngClass]=\"{\n disabled: disabled,\n focused: isFocused,\n alert: (!isFocused && isAlertText && !disabled) || (error && !disabled)\n }\"\n (click)=\"onFocus()\"\n >\n @if (iconInput) {\n <ius-icon-md [iconName]=\"iconInput\" class=\"icon-color\"></ius-icon-md>\n }\n <input\n type=\"text\"\n [(ngModel)]=\"textInput\"\n [placeholder]=\"labelInput\"\n [disabled]=\"disabled\"\n (input)=\"onInput()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keypress)=\"onKeyPress($event)\"\n />\n <div class=\"cnt-icon-right\">\n @if (!showList) {\n <ius-icon-md iconName=\"icon-keyboard-arrow-down\" class=\"icon-arrows\"></ius-icon-md>\n } @else {\n <div (click)=\"closeList($event)\" style=\"height: 20px;\">\n <ius-icon-md iconName=\"icon-keyboard-arrow-up\" class=\"icon-arrows\"></ius-icon-md>\n </div>\n }\n </div>\n </div>\n\n <!-- Label inferior -->\n @if (labelInferior && isFocused && !error) {\n <span class=\"label-inf\">{{ labelInferior }}</span>\n }\n @if ((errorText || labelInferior) && ((!isFocused && isAlertText && !disabled) || (error && !disabled))) {\n <span class=\"label-inf\" [ngClass]=\"{ alert: (!isFocused && isAlertText && !disabled) || (error && !disabled) }\">\n {{ errorText ?? labelInferior }}\n </span>\n }\n\n <!-- Lista de opciones (CDK overlay) -->\n <ng-template #listPanel>\n <div class=\"container-options\">\n <div class=\"container-list scrollable-small\" (scroll)=\"onListScroll($event)\">\n <div (click)=\"onSelectOption()\">\n <ng-content selector=\"ius-option\"></ng-content>\n </div>\n @if (loading) {\n <div class=\"cnt-loading-option\">Cargando\u2026</div>\n }\n </div>\n <ius-simple-divider></ius-simple-divider>\n <div class=\"add-data\">\n <div class=\"container-text\">\n <input\n type=\"text\"\n class=\"input-text\"\n [(ngModel)]=\"element\"\n (keypress)=\"onKeyPressAddElement($event)\"\n [placeholder]=\"placeholderAddText\"\n />\n </div>\n <div class=\"button-add-option\">\n <ius-button-standard-tertiary\n [iconName]=\"iconBtnAdd\"\n (click)=\"onClickAddElement()\"\n >\n {{ textBtnAdd }}\n </ius-button-standard-tertiary>\n </div>\n </div>\n </div>\n </ng-template>\n\n</div>\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.container-general{position:relative;height:100%}.container-textfield{display:flex;padding:10px 12px;justify-content:center;align-items:flex-start;gap:4px;border:1px solid #f5f5f5;border-radius:8px;background:#f5f5f5;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.container-textfield:hover:not(.disabled):not(.focused):not(.alert){background:#edf6ff}.container-textfield.focused{border:1px solid #0581BC;background:#edf6ff}.container-textfield.disabled{background:#f5f5f5}.container-textfield.disabled .icon-color,.container-textfield.disabled .icon-arrows{color:#bfbfbf}.container-textfield.disabled input::placeholder{color:#bfbfbf;opacity:1}.container-textfield.alert{border:1px solid #DB2E2A;background:#fff4f0}.icon-color{color:#595959}.icon-arrows{color:#333}.icon-color-help{color:#8c8c8c}input{display:flex;align-items:center;flex:1 0 0;border:none;outline:none;background-color:transparent;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.cnt-icon-right{display:flex;align-items:center;justify-content:center;background:none;padding:0;color:#333}.container-label-sup{display:flex;align-items:center;gap:4px;margin-bottom:8px;color:#333;font-family:Roboto,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.container-label-sup.disabled{color:#bfbfbf}.icon-dot{display:flex;align-items:center;width:4px;height:4px;aspect-ratio:1/1;background-color:#db2e2a;border-radius:100px}.label-inf{display:flex;position:absolute;margin-top:4px;color:#595959;font-family:Roboto,sans-serif;font-size:.75rem;font-style:italic;font-weight:500;line-height:16px;letter-spacing:.24px}.label-inf.alert{color:#931224}.container-options{width:100%;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a}.container-list{max-height:144px;display:flex;flex-direction:column;margin-top:4px;overflow-y:auto}.add-data{display:flex;padding-top:8px;padding-bottom:8px;align-items:center;gap:10px;width:100%;background:#fff;border-radius:8px}.add-data .container-text{display:flex;width:60%;align-items:flex-start;gap:4px}.add-data .container-text .input-text{width:100%;display:flex;margin-left:10px;padding:12px;justify-content:center;align-items:flex-start;gap:4px;border-radius:8px;background:#f5f5f5}.add-data .button-add-option{margin-right:10px;width:40%}.scrollable-small::-webkit-scrollbar{-webkit-appearance:none}.scrollable-small::-webkit-scrollbar:vertical{width:4px;height:32px;padding-top:2px;padding-bottom:2px}.scrollable-small::-webkit-scrollbar:horizontal{height:5px;padding-top:2px;padding-bottom:2px}.scrollable-small::-webkit-scrollbar-thumb{background-color:#08a6db;border-radius:4px}\n"] }]
|
|
208
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.Overlay }, { type: i0.ViewContainerRef }], propDecorators: { listPanel: [{
|
|
209
|
+
type: ViewChild,
|
|
210
|
+
args: ['listPanel']
|
|
211
|
+
}], componentId: [{
|
|
107
212
|
type: Input,
|
|
108
213
|
args: [{ required: true }]
|
|
109
214
|
}], required: [{
|
|
@@ -134,6 +239,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
134
239
|
type: Input
|
|
135
240
|
}], element: [{
|
|
136
241
|
type: Input
|
|
242
|
+
}], debounceMs: [{
|
|
243
|
+
type: Input
|
|
244
|
+
}], enableInfiniteScroll: [{
|
|
245
|
+
type: Input
|
|
246
|
+
}], loading: [{
|
|
247
|
+
type: Input
|
|
137
248
|
}], onChangesValueEvent: [{
|
|
138
249
|
type: Output
|
|
139
250
|
}], onEnterKey: [{
|
|
@@ -142,8 +253,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
142
253
|
type: Output
|
|
143
254
|
}], onBlurEvent: [{
|
|
144
255
|
type: Output
|
|
256
|
+
}], onFocusEvent: [{
|
|
257
|
+
type: Output
|
|
258
|
+
}], onScrolledToEnd: [{
|
|
259
|
+
type: Output
|
|
145
260
|
}], onClickOutside: [{
|
|
146
261
|
type: HostListener,
|
|
147
262
|
args: ['document:click', ['$event']]
|
|
148
263
|
}] } });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l1cy1kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2N1c3RvbS1kcm9wZG93bi9jdXN0b20tZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvY3VzdG9tLWRyb3Bkb3duL2N1c3RvbS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQWU5RSxNQUFNLE9BQU8sdUJBQXVCO0lBYnBDO1FBZUUsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRVUsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDM0MsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFVBQUssR0FBWSxLQUFLLENBQUM7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SztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUdQLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSWNvbk1kQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi1tZC9pY29uLW1kLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTaW1wbGVEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2ltcGxlLWRpdmlkZXInO1xyXG5pbXBvcnQgeyBCdXR0b25TdGFuZGFyZFRlcnRpYXJ5Q29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uLXN0YW5kYXJkLXRlcnRpYXJ5JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaXVzLWN1c3RvbS1kcm9wZG93bicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBJY29uTWRDb21wb25lbnQsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFNpbXBsZURpdmlkZXJDb21wb25lbnQsXHJcbiAgICBCdXR0b25TdGFuZGFyZFRlcnRpYXJ5Q29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tRHJvcGRvd25Db21wb25lbnQge1xyXG5cclxuICBpc0ZvY3VzZWQgPSBmYWxzZTtcclxuICBpc0FsZXJ0VGV4dCA9IGZhbHNlO1xyXG4gIHNob3dMaXN0ID0gZmFsc2U7XHJcbiAgaGFzQ2xpY2tlZEluc2lkZSA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbXBvbmVudElkOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0hlbHBUZXh0ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgbGFiZWxTdXBlcmlvcj86IHN0cmluZztcclxuICBASW5wdXQoKSBsYWJlbEluZmVyaW9yPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGVycm9yVGV4dD86IHN0cmluZztcclxuICBASW5wdXQoKSBsYWJlbElucHV0Pzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGljb25JbnB1dD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXJBZGRUZXh0ID0gJ0RpZ2l0ZSB1bmEgbnVldmEnO1xyXG4gIEBJbnB1dCgpIGljb25CdG5BZGQgPSAnaWNvbi1hZGQnO1xyXG4gIEBJbnB1dCgpIHRleHRCdG5BZGQgPSAnQWdyZWdhcic7XHJcblxyXG4gIEBJbnB1dCgpIHRleHRJbnB1dCA9ICcnO1xyXG4gIEBJbnB1dCgpIGVsZW1lbnQgPSAnJztcclxuXHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlc1ZhbHVlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25FbnRlcktleSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBvbkFkZEVsZW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgb25CbHVyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkNsaWNrT3V0c2lkZShldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5oYXNDbGlja2VkSW5zaWRlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5jb21wb25lbnRJZCk7XHJcblxyXG4gICAgaWYgKGNvbnRhaW5lciAmJiAhY29udGFpbmVyLmNvbnRhaW5zKHRhcmdldCkpIHtcclxuICAgICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93TGlzdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzQWxlcnRUZXh0ID0gIXRoaXMuc2VsZWN0ZWQgJiYgIXRoaXMuc2hvd0xpc3Q7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMub25DaGFuZ2VzVmFsdWVFdmVudC5lbWl0KHRoaXMudGV4dElucHV0KTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dMaXN0ID0gdHJ1ZTtcclxuICAgIHRoaXMuaGFzQ2xpY2tlZEluc2lkZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy5pc0FsZXJ0VGV4dCA9IHRoaXMudGV4dElucHV0ID09PSAnJztcclxuICAgIH1cclxuICAgIHRoaXMub25CbHVyRXZlbnQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykgdGhpcy5hZGRUZXh0KCk7XHJcbiAgfVxyXG5cclxuICBvbktleVByZXNzQWRkRWxlbWVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykgdGhpcy5hZGRFbGVtZW50VGV4dCgpO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja0FkZEVsZW1lbnQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5lbGVtZW50LnRyaW0oKSAhPT0gJycpIHtcclxuICAgICAgdGhpcy5vbkFkZEVsZW1lbnQuZW1pdCh0aGlzLmVsZW1lbnQpO1xyXG4gICAgICB0aGlzLmVsZW1lbnQgPSAnJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNBbGVydFRleHQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkRWxlbWVudFRleHQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5lbGVtZW50LnRyaW0oKSAhPT0gJycpIHtcclxuICAgICAgdGhpcy5vbkFkZEVsZW1lbnQuZW1pdCh0aGlzLmVsZW1lbnQpO1xyXG4gICAgICB0aGlzLmVsZW1lbnQgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFRleHQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50ZXh0SW5wdXQudHJpbSgpICE9PSAnJykge1xyXG4gICAgICB0aGlzLm9uRW50ZXJLZXkuZW1pdCh0aGlzLnRleHRJbnB1dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdE9wdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dMaXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzQWxlcnRUZXh0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1nZW5lcmFsXCIgW2lkXT1cImNvbXBvbmVudElkXCI+XHJcblxyXG4gIDwhLS0gTGFiZWwgc3VwZXJpb3IgLS0+XHJcbiAgQGlmIChsYWJlbFN1cGVyaW9yKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWxhYmVsLXN1cFwiIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVkIH1cIj5cclxuICAgICAgQGlmICghZGlzYWJsZWQgJiYgcmVxdWlyZWQpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1kb3RcIj48L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICA8c3Bhbj57eyBsYWJlbFN1cGVyaW9yIH19PC9zcGFuPlxyXG4gICAgICBAaWYgKCFkaXNhYmxlZCAmJiBzaG93SGVscFRleHQpIHtcclxuICAgICAgICA8aXVzLWljb24tbWQgaWNvbk5hbWU9XCJpY29uLWhlbHBcIiBjbGFzcz1cImljb24tY29sb3ItaGVscFwiPjwvaXVzLWljb24tbWQ+XHJcbiAgICAgIH1cclxuICAgICAgPHNwYW4+Ojwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuXHJcbiAgPCEtLSBJbnB1dCBwcmluY2lwYWwgLS0+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjb250YWluZXItdGV4dGZpZWxkXCJcclxuICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxyXG4gICAgICBmb2N1c2VkOiBpc0ZvY3VzZWQsXHJcbiAgICAgIGFsZXJ0OiAoIWlzRm9jdXNlZCAmJiBpc0FsZXJ0VGV4dCAmJiAhZGlzYWJsZWQpIHx8IChlcnJvciAmJiAhZGlzYWJsZWQpXHJcbiAgICB9XCJcclxuICA+XHJcbiAgICBAaWYgKGljb25JbnB1dCkge1xyXG4gICAgICA8aXVzLWljb24tbWQgW2ljb25OYW1lXT1cImljb25JbnB1dFwiIGNsYXNzPVwiaWNvbi1jb2xvclwiPjwvaXVzLWljb24tbWQ+XHJcbiAgICB9XHJcbiAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInRleHRJbnB1dFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbElucHV0XCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoKVwiXHJcbiAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxyXG4gICAgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJjbnQtaWNvbi1yaWdodFwiPlxyXG4gICAgICBAaWYgKCFzaG93TGlzdCkge1xyXG4gICAgICAgIDxpdXMtaWNvbi1tZCBpY29uTmFtZT1cImljb24ta2V5Ym9hcmQtYXJyb3ctZG93blwiIGNsYXNzPVwiaWNvbi1hcnJvd3NcIj48L2l1cy1pY29uLW1kPlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8aXVzLWljb24tbWQgaWNvbk5hbWU9XCJpY29uLWtleWJvYXJkLWFycm93LXVwXCIgY2xhc3M9XCJpY29uLWFycm93c1wiPjwvaXVzLWljb24tbWQ+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIExhYmVsIGluZmVyaW9yIC0tPlxyXG4gIEBpZiAobGFiZWxJbmZlcmlvciAmJiBpc0ZvY3VzZWQgJiYgIWVycm9yKSB7XHJcbiAgICA8c3BhbiBjbGFzcz1cImxhYmVsLWluZlwiPnt7IGxhYmVsSW5mZXJpb3IgfX08L3NwYW4+XHJcbiAgfVxyXG4gIEBpZiAoKGVycm9yVGV4dCB8fCBsYWJlbEluZmVyaW9yKSAmJiAoKCFpc0ZvY3VzZWQgJiYgaXNBbGVydFRleHQgJiYgIWRpc2FibGVkKSB8fCAoZXJyb3IgJiYgIWRpc2FibGVkKSkpIHtcclxuICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtaW5mXCIgW25nQ2xhc3NdPVwieyBhbGVydDogKCFpc0ZvY3VzZWQgJiYgaXNBbGVydFRleHQgJiYgIWRpc2FibGVkKSB8fCAoZXJyb3IgJiYgIWRpc2FibGVkKSB9XCI+XHJcbiAgICAgIHt7IGVycm9yVGV4dCA/PyBsYWJlbEluZmVyaW9yIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgfVxyXG5cclxuICA8IS0tIExpc3RhIGRlIG9wY2lvbmVzIC0tPlxyXG4gIEBpZiAoc2hvd0xpc3QpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItb3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWxpc3Qgc2Nyb2xsYWJsZS1zbWFsbFwiPlxyXG4gICAgICAgIDxkaXYgKGNsaWNrKT1cIm9uU2VsZWN0T3B0aW9uKClcIj5cclxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdG9yPVwiaXVzLW9wdGlvblwiPjwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxpdXMtc2ltcGxlLWRpdmlkZXI+PC9pdXMtc2ltcGxlLWRpdmlkZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhZGQtZGF0YVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItdGV4dFwiPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC10ZXh0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbGVtZW50XCJcclxuICAgICAgICAgICAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3NBZGRFbGVtZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJBZGRUZXh0XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1hZGQtb3B0aW9uXCI+XHJcbiAgICAgICAgICA8aXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeVxyXG4gICAgICAgICAgICBbaWNvbk5hbWVdPVwiaWNvbkJ0bkFkZFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrQWRkRWxlbWVudCgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgdGV4dEJ0bkFkZCB9fVxyXG4gICAgICAgICAgPC9pdXMtYnV0dG9uLXN0YW5kYXJkLXRlcnRpYXJ5PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuXHJcbjwvZGl2PiJdfQ==
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l1cy1kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2N1c3RvbS1kcm9wZG93bi9jdXN0b20tZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvY3VzdG9tLWRyb3Bkb3duL2N1c3RvbS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBZSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRXRKLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7QUFlOUUsTUFBTSxPQUFPLHVCQUF1QjtJQWFsQyxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFnQ0QsWUFDbUIsR0FBZSxFQUNmLFFBQWlCLEVBQ2pCLElBQXNCO1FBRnRCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBaER6QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FB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dCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBJY29uTWRDb21wb25lbnQgfSBmcm9tICcuLi9pY29uLW1kL2ljb24tbWQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNpbXBsZURpdmlkZXJDb21wb25lbnQgfSBmcm9tICcuLi9zaW1wbGUtZGl2aWRlcic7XG5pbXBvcnQgeyBCdXR0b25TdGFuZGFyZFRlcnRpYXJ5Q29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uLXN0YW5kYXJkLXRlcnRpYXJ5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaXVzLWN1c3RvbS1kcm9wZG93bicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJY29uTWRDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNpbXBsZURpdmlkZXJDb21wb25lbnQsXG4gICAgQnV0dG9uU3RhbmRhcmRUZXJ0aWFyeUNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2N1c3RvbS1kcm9wZG93bi5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIGlzRm9jdXNlZCA9IGZhbHNlO1xuICBpc0FsZXJ0VGV4dCA9IGZhbHNlO1xuICBoYXNDbGlja2VkSW5zaWRlID0gZmFsc2U7XG4gIHNlbGVjdGVkID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnbGlzdFBhbmVsJykgcHJpdmF0ZSBsaXN0UGFuZWwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9zY3JvbGxMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHsgdGhpcy5fb3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb24oKTsgfTtcbiAgcHJpdmF0ZSBfZGVib3VuY2VUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfc2Nyb2xsZWRFbmRDb29sZG93biA9IGZhbHNlO1xuXG4gIGdldCBzaG93TGlzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVJlZiAhPT0gbnVsbDtcbiAgfVxuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbXBvbmVudElkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0hlbHBUZXh0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgbGFiZWxTdXBlcmlvcj86IHN0cmluZztcbiAgQElucHV0KCkgbGFiZWxJbmZlcmlvcj86IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3JUZXh0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBsYWJlbElucHV0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBpY29uSW5wdXQ/OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXJBZGRUZXh0ID0gJ0RpZ2l0ZSB1bmEgbnVldmEnO1xuICBASW5wdXQoKSBpY29uQnRuQWRkID0gJ2ljb24tYWRkJztcbiAgQElucHV0KCkgdGV4dEJ0bkFkZCA9ICdBZ3JlZ2FyJztcblxuICBASW5wdXQoKSB0ZXh0SW5wdXQgPSAnJztcbiAgQElucHV0KCkgZWxlbWVudCA9ICcnO1xuXG4gIEBJbnB1dCgpIGRlYm91bmNlTXM6IG51bWJlciA9IDMwMDtcbiAgQElucHV0KCkgZW5hYmxlSW5maW5pdGVTY3JvbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBvbkNoYW5nZXNWYWx1ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvbkVudGVyS2V5ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkFkZEVsZW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9uQmx1ckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25Gb2N1c0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25TY3JvbGxlZFRvRW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmNyOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNDbGlja2VkSW5zaWRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgIC8vIENsaWNrIGRlbnRybyBkZWwgcGFuZWwgb3ZlcmxheSAob3BjaW9uZXMgbyBcImFncmVnYXIgZWxlbWVudG9cIikg4oaSIG5vIGNlcnJhclxuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmPy5vdmVybGF5RWxlbWVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2xpY2sgZGVudHJvIGRlbCB0ZXh0ZmllbGQg4oaSIG5vIGNlcnJhclxuICAgIGNvbnN0IHRleHRmaWVsZCA9IHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRhaW5lci10ZXh0ZmllbGQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAodGV4dGZpZWxkPy5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZUxpc3QoKTtcbiAgfVxuXG4gIGNsb3NlTGlzdChldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9jbG9zZVBhbmVsKCk7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkICYmIHRoaXMucmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuaXNBbGVydFRleHQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzQWxlcnRUZXh0ID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMub25CbHVyRXZlbnQuZW1pdCgpO1xuICB9XG5cbiAgb25JbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5kZWJvdW5jZU1zIDw9IDApIHtcbiAgICAgIHRoaXMub25DaGFuZ2VzVmFsdWVFdmVudC5lbWl0KHRoaXMudGV4dElucHV0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2RlYm91bmNlVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9kZWJvdW5jZVRpbWVyKTtcbiAgICB9XG4gICAgdGhpcy5fZGVib3VuY2VUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vbkNoYW5nZXNWYWx1ZUV2ZW50LmVtaXQodGhpcy50ZXh0SW5wdXQpO1xuICAgIH0sIHRoaXMuZGVib3VuY2VNcyk7XG4gIH1cblxuICBvbkxpc3RTY3JvbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVuYWJsZUluZmluaXRlU2Nyb2xsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHRocmVzaG9sZCA9IDQ4O1xuICAgIGNvbnN0IG5lYXJCb3R0b20gPSBlbC5zY3JvbGxUb3AgKyBlbC5jbGllbnRIZWlnaHQgPj0gZWwuc2Nyb2xsSGVpZ2h0IC0gdGhyZXNob2xkO1xuICAgIGlmICghbmVhckJvdHRvbSB8fCB0aGlzLl9zY3JvbGxlZEVuZENvb2xkb3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3Njcm9sbGVkRW5kQ29vbGRvd24gPSB0cnVlO1xuICAgIHRoaXMub25TY3JvbGxlZFRvRW5kLmVtaXQoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5fc2Nyb2xsZWRFbmRDb29sZG93biA9IGZhbHNlOyB9LCAzMDApO1xuICB9XG5cbiAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgdGhpcy5oYXNDbGlja2VkSW5zaWRlID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMuc2hvd0xpc3QpIHtcbiAgICAgIHRoaXMuX29wZW5QYW5lbCgpO1xuICAgIH1cbiAgICB0aGlzLm9uRm9jdXNFdmVudC5lbWl0KCk7XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5zaG93TGlzdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgdGhpcy5pc0FsZXJ0VGV4dCA9IHRoaXMudGV4dElucHV0ID09PSAnJztcbiAgICB9XG4gIH1cblxuICBvbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5hZGRUZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgb25LZXlQcmVzc0FkZEVsZW1lbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLmFkZEVsZW1lbnRUZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja0FkZEVsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWxlbWVudC50cmltKCkgIT09ICcnKSB7XG4gICAgICB0aGlzLm9uQWRkRWxlbWVudC5lbWl0KHRoaXMuZWxlbWVudCk7XG4gICAgICB0aGlzLmVsZW1lbnQgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0FsZXJ0VGV4dCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgYWRkRWxlbWVudFRleHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWxlbWVudC50cmltKCkgIT09ICcnKSB7XG4gICAgICB0aGlzLm9uQWRkRWxlbWVudC5lbWl0KHRoaXMuZWxlbWVudCk7XG4gICAgICB0aGlzLmVsZW1lbnQgPSAnJztcbiAgICB9XG4gIH1cblxuICBhZGRUZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRleHRJbnB1dC50cmltKCkgIT09ICcnKSB7XG4gICAgICB0aGlzLm9uRW50ZXJLZXkuZW1pdCh0aGlzLnRleHRJbnB1dCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3RPcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9jbG9zZVBhbmVsKCk7XG4gICAgdGhpcy5pc0FsZXJ0VGV4dCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHRleHRmaWVsZCA9IHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRhaW5lci10ZXh0ZmllbGQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBhbmNob3IgPSB0ZXh0ZmllbGQgPz8gdGhpcy5fZWw7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX292ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhhbmNob3IpXG4gICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJywgb2Zmc2V0WTogNCB9LFxuICAgICAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICd0b3AnLCAgICBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICdib3R0b20nLCBvZmZzZXRZOiAtNCB9LFxuICAgICAgXSk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgd2lkdGg6ICh0ZXh0ZmllbGQgPz8gdGhpcy5fZWwubmF0aXZlRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5saXN0UGFuZWwsIHRoaXMuX3ZjcikpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLl9zY3JvbGxMaXN0ZW5lciwgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZVBhbmVsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX3Njcm9sbExpc3RlbmVyLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGVib3VuY2VUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2RlYm91bmNlVGltZXIpO1xuICAgIH1cbiAgICB0aGlzLl9jbG9zZVBhbmVsKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZ2VuZXJhbFwiIFtpZF09XCJjb21wb25lbnRJZFwiPlxuXG4gIDwhLS0gTGFiZWwgc3VwZXJpb3IgLS0+XG4gIEBpZiAobGFiZWxTdXBlcmlvcikge1xuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItbGFiZWwtc3VwXCIgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZWQgfVwiPlxuICAgICAgQGlmICghZGlzYWJsZWQgJiYgcmVxdWlyZWQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImljb24tZG90XCI+PC9kaXY+XG4gICAgICB9XG4gICAgICA8c3Bhbj57eyBsYWJlbFN1cGVyaW9yIH19PC9zcGFuPlxuICAgICAgQGlmICghZGlzYWJsZWQgJiYgc2hvd0hlbHBUZXh0KSB7XG4gICAgICAgIDxpdXMtaWNvbi1tZCBpY29uTmFtZT1cImljb24taGVscFwiIGNsYXNzPVwiaWNvbi1jb2xvci1oZWxwXCI+PC9pdXMtaWNvbi1tZD5cbiAgICAgIH1cbiAgICAgIDxzcGFuPjo8L3NwYW4+XG4gICAgPC9kaXY+XG4gIH1cblxuICA8IS0tIElucHV0IHByaW5jaXBhbCAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY29udGFpbmVyLXRleHRmaWVsZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgZm9jdXNlZDogaXNGb2N1c2VkLFxuICAgICAgYWxlcnQ6ICghaXNGb2N1c2VkICYmIGlzQWxlcnRUZXh0ICYmICFkaXNhYmxlZCkgfHwgKGVycm9yICYmICFkaXNhYmxlZClcbiAgICB9XCJcbiAgICAoY2xpY2spPVwib25Gb2N1cygpXCJcbiAgPlxuICAgIEBpZiAoaWNvbklucHV0KSB7XG4gICAgICA8aXVzLWljb24tbWQgW2ljb25OYW1lXT1cImljb25JbnB1dFwiIGNsYXNzPVwiaWNvbi1jb2xvclwiPjwvaXVzLWljb24tbWQ+XG4gICAgfVxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ0ZXh0SW5wdXRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsSW5wdXRcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAoa2V5cHJlc3MpPVwib25LZXlQcmVzcygkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxkaXYgY2xhc3M9XCJjbnQtaWNvbi1yaWdodFwiPlxuICAgICAgQGlmICghc2hvd0xpc3QpIHtcbiAgICAgICAgPGl1cy1pY29uLW1kIGljb25OYW1lPVwiaWNvbi1rZXlib2FyZC1hcnJvdy1kb3duXCIgY2xhc3M9XCJpY29uLWFycm93c1wiPjwvaXVzLWljb24tbWQ+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiAoY2xpY2spPVwiY2xvc2VMaXN0KCRldmVudClcIiBzdHlsZT1cImhlaWdodDogMjBweDtcIj5cbiAgICAgICAgICA8aXVzLWljb24tbWQgaWNvbk5hbWU9XCJpY29uLWtleWJvYXJkLWFycm93LXVwXCIgY2xhc3M9XCJpY29uLWFycm93c1wiPjwvaXVzLWljb24tbWQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIExhYmVsIGluZmVyaW9yIC0tPlxuICBAaWYgKGxhYmVsSW5mZXJpb3IgJiYgaXNGb2N1c2VkICYmICFlcnJvcikge1xuICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtaW5mXCI+e3sgbGFiZWxJbmZlcmlvciB9fTwvc3Bhbj5cbiAgfVxuICBAaWYgKChlcnJvclRleHQgfHwgbGFiZWxJbmZlcmlvcikgJiYgKCghaXNGb2N1c2VkICYmIGlzQWxlcnRUZXh0ICYmICFkaXNhYmxlZCkgfHwgKGVycm9yICYmICFkaXNhYmxlZCkpKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1pbmZcIiBbbmdDbGFzc109XCJ7IGFsZXJ0OiAoIWlzRm9jdXNlZCAmJiBpc0FsZXJ0VGV4dCAmJiAhZGlzYWJsZWQpIHx8IChlcnJvciAmJiAhZGlzYWJsZWQpIH1cIj5cbiAgICAgIHt7IGVycm9yVGV4dCA/PyBsYWJlbEluZmVyaW9yIH19XG4gICAgPC9zcGFuPlxuICB9XG5cbiAgPCEtLSBMaXN0YSBkZSBvcGNpb25lcyAoQ0RLIG92ZXJsYXkpIC0tPlxuICA8bmctdGVtcGxhdGUgI2xpc3RQYW5lbD5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLW9wdGlvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItbGlzdCBzY3JvbGxhYmxlLXNtYWxsXCIgKHNjcm9sbCk9XCJvbkxpc3RTY3JvbGwoJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2IChjbGljayk9XCJvblNlbGVjdE9wdGlvbigpXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0b3I9XCJpdXMtb3B0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChsb2FkaW5nKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNudC1sb2FkaW5nLW9wdGlvblwiPkNhcmdhbmRv4oCmPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGl1cy1zaW1wbGUtZGl2aWRlcj48L2l1cy1zaW1wbGUtZGl2aWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhZGQtZGF0YVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLXRleHRcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtdGV4dFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3NBZGRFbGVtZW50KCRldmVudClcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyQWRkVGV4dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tYWRkLW9wdGlvblwiPlxuICAgICAgICAgIDxpdXMtYnV0dG9uLXN0YW5kYXJkLXRlcnRpYXJ5XG4gICAgICAgICAgICBbaWNvbk5hbWVdPVwiaWNvbkJ0bkFkZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0FkZEVsZW1lbnQoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdGV4dEJ0bkFkZCB9fVxuICAgICAgICAgIDwvaXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuPC9kaXY+XG4iXX0=
|