@klippa/ngx-enhancy-forms 14.16.2 → 14.16.3
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/elementIsTruncatedCb.component.mjs +54 -0
- package/esm2020/lib/elements/text-input/text-input.component.mjs +3 -3
- package/esm2020/lib/elements/value-accessor-base/value-accessor-base.component.mjs +8 -1
- package/esm2020/lib/form/form-caption/form-caption.component.mjs +1 -1
- package/esm2020/lib/form/form-element/form-element.component.mjs +100 -9
- package/esm2020/lib/form/form-error/form-error.component.mjs +1 -1
- package/esm2020/lib/form/form.component.mjs +8 -2
- package/esm2020/lib/ngx-enhancy-forms.module.mjs +11 -3
- package/esm2020/lib/warning-icon/warning-icon.component.mjs +17 -0
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/klippa-ngx-enhancy-forms.mjs +268 -91
- package/fesm2015/klippa-ngx-enhancy-forms.mjs.map +1 -1
- package/fesm2020/klippa-ngx-enhancy-forms.mjs +263 -92
- package/fesm2020/klippa-ngx-enhancy-forms.mjs.map +1 -1
- package/lib/elementIsTruncatedCb.component.d.ts +13 -0
- package/lib/elements/value-accessor-base/value-accessor-base.component.d.ts +4 -1
- package/lib/form/form-caption/form-caption.component.d.ts +2 -2
- package/lib/form/form-element/form-element.component.d.ts +23 -8
- package/lib/form/form-error/form-error.component.d.ts +2 -2
- package/lib/form/form.component.d.ts +4 -2
- package/lib/ngx-enhancy-forms.module.d.ts +8 -6
- package/lib/warning-icon/warning-icon.component.d.ts +6 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Directive, Input } from "@angular/core";
|
|
2
|
+
import { awaitableForNextCycle } from "./util/angular";
|
|
3
|
+
import { isValueSet } from "./util/values";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ElementIsTruncatedCbComponent {
|
|
6
|
+
constructor(elementRef) {
|
|
7
|
+
this.elementRef = elementRef;
|
|
8
|
+
this.elementIsTruncatedCb = (isTruncated) => { };
|
|
9
|
+
}
|
|
10
|
+
ngAfterViewInit() {
|
|
11
|
+
if (!isValueSet(this.elementIsTruncatedCb)) {
|
|
12
|
+
console.log('nope');
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
console.log('yes');
|
|
16
|
+
this.elementRef.nativeElement.addEventListener('DOMCharacterDataModified', (event) => {
|
|
17
|
+
if (isValueSet(event.target.wholeText)) {
|
|
18
|
+
this.checkForTruncation();
|
|
19
|
+
}
|
|
20
|
+
}, false);
|
|
21
|
+
this.checkForTruncation();
|
|
22
|
+
}
|
|
23
|
+
ngOnDestroy() {
|
|
24
|
+
console.log('destroyed');
|
|
25
|
+
}
|
|
26
|
+
async checkForTruncation() {
|
|
27
|
+
await awaitableForNextCycle();
|
|
28
|
+
const isTruncated = this.isTruncated(this.elementRef.nativeElement);
|
|
29
|
+
if (isValueSet(isTruncated)) {
|
|
30
|
+
this.elementIsTruncatedCb(isTruncated);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
isTruncated(element) {
|
|
34
|
+
if (!(element.scrollWidth > 0)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const thisElementIsTruncated = element.scrollWidth > element.clientWidth;
|
|
38
|
+
if (!thisElementIsTruncated) {
|
|
39
|
+
return Array.from(element.children).some((child) => this.isTruncated(child));
|
|
40
|
+
}
|
|
41
|
+
return thisElementIsTruncated;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
ElementIsTruncatedCbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ElementIsTruncatedCbComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
45
|
+
ElementIsTruncatedCbComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.8", type: ElementIsTruncatedCbComponent, selector: "[elementIsTruncatedCb]", inputs: { elementIsTruncatedCb: "elementIsTruncatedCb" }, ngImport: i0 });
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ElementIsTruncatedCbComponent, decorators: [{
|
|
47
|
+
type: Directive,
|
|
48
|
+
args: [{
|
|
49
|
+
selector: '[elementIsTruncatedCb]'
|
|
50
|
+
}]
|
|
51
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { elementIsTruncatedCb: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}] } });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudElzVHJ1bmNhdGVkQ2IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudElzVHJ1bmNhdGVkQ2IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFjLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQU16QyxNQUFNLE9BQU8sNkJBQTZCO0lBRXpDLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFEakMseUJBQW9CLEdBQUcsQ0FBQyxXQUFvQixFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFHN0QsQ0FBQztJQUVELGVBQWU7UUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQzNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEIsT0FBTztTQUNQO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BGLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzFCO1FBQ0YsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCO1FBQy9CLE1BQU0scUJBQXFCLEVBQUUsQ0FBQztRQUM5QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEUsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0YsQ0FBQztJQUVPLFdBQVcsQ0FBQyxPQUFvQjtRQUN2QyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQy9CLE9BQU87U0FDUDtRQUNELE1BQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUM1QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFvQixDQUFDLENBQUMsQ0FBQztTQUM1RjtRQUNELE9BQU8sc0JBQXNCLENBQUM7SUFDL0IsQ0FBQzs7MEhBMUNXLDZCQUE2Qjs4R0FBN0IsNkJBQTZCOzJGQUE3Qiw2QkFBNkI7a0JBSHpDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHdCQUF3QjtpQkFDbEM7aUdBRVMsb0JBQW9CO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHthd2FpdGFibGVGb3JOZXh0Q3ljbGV9IGZyb20gXCIuL3V0aWwvYW5ndWxhclwiO1xuaW1wb3J0IHtpc1ZhbHVlU2V0fSBmcm9tIFwiLi91dGlsL3ZhbHVlc1wiO1xuXG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1tlbGVtZW50SXNUcnVuY2F0ZWRDYl0nXG59KVxuZXhwb3J0IGNsYXNzIEVsZW1lbnRJc1RydW5jYXRlZENiQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cdEBJbnB1dCgpIGVsZW1lbnRJc1RydW5jYXRlZENiID0gKGlzVHJ1bmNhdGVkOiBib29sZWFuKSA9PiB7fTtcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG5cblx0fVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblx0XHRpZiAoIWlzVmFsdWVTZXQodGhpcy5lbGVtZW50SXNUcnVuY2F0ZWRDYikpIHtcblx0XHRcdGNvbnNvbGUubG9nKCdub3BlJyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnNvbGUubG9nKCd5ZXMnKTtcblxuXHRcdHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNoYXJhY3RlckRhdGFNb2RpZmllZCcsIChldmVudCkgPT4ge1xuXHRcdFx0aWYgKGlzVmFsdWVTZXQoZXZlbnQudGFyZ2V0Lndob2xlVGV4dCkpIHtcblx0XHRcdFx0dGhpcy5jaGVja0ZvclRydW5jYXRpb24oKTtcblx0XHRcdH1cblx0XHR9LCBmYWxzZSk7XG5cdFx0dGhpcy5jaGVja0ZvclRydW5jYXRpb24oKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdGNvbnNvbGUubG9nKCdkZXN0cm95ZWQnKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgY2hlY2tGb3JUcnVuY2F0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGF3YWl0IGF3YWl0YWJsZUZvck5leHRDeWNsZSgpO1xuXHRcdGNvbnN0IGlzVHJ1bmNhdGVkID0gdGhpcy5pc1RydW5jYXRlZCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cdFx0aWYgKGlzVmFsdWVTZXQoaXNUcnVuY2F0ZWQpKSB7XG5cdFx0XHR0aGlzLmVsZW1lbnRJc1RydW5jYXRlZENiKGlzVHJ1bmNhdGVkKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGlzVHJ1bmNhdGVkKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG5cdFx0aWYgKCEoZWxlbWVudC5zY3JvbGxXaWR0aCA+IDApKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHRoaXNFbGVtZW50SXNUcnVuY2F0ZWQgPSBlbGVtZW50LnNjcm9sbFdpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aDtcblx0XHRpZiAoIXRoaXNFbGVtZW50SXNUcnVuY2F0ZWQpIHtcblx0XHRcdHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuY2hpbGRyZW4pLnNvbWUoKGNoaWxkKSA9PiB0aGlzLmlzVHJ1bmNhdGVkKGNoaWxkIGFzIEhUTUxFbGVtZW50KSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzRWxlbWVudElzVHJ1bmNhdGVkO1xuXHR9XG59XG4iXX0=
|
|
@@ -15,10 +15,10 @@ export class TextInputComponent extends ValueAccessorBase {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
TextInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: TextInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
-
TextInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: TextInputComponent, selector: "klp-form-text-input", inputs: { placeholder: "placeholder", type: "type", clearable: "clearable", icon: "icon", hasBorderLeft: "hasBorderLeft", hasBorderRight: "hasBorderRight" }, outputs: { onBlur: "onBlur" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextInputComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\">\n\t<ng-container *ngIf=\"icon?.length > 0\">\n\t\t<i class=\"ti-search\" *ngIf=\"icon === 'search'\"></i>\n\t</ng-container>\n\t<input\n\t\t[type]=\"type\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t[ngClass]=\"{showErrors: isInErrorState(), hasIcon: icon?.length > 0, hasClearButton: clearable, noBorderLeft: !hasBorderLeft, noBorderRight: !hasBorderRight}\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t\t(blur)=\"touch(); onBlur.emit()\"\n\t\t[disabled]='disabled'\n\t\t#nativeInputRef\n\t/>\n\t<div class=\"clearIcon\" *ngIf=\"clearable && innerValue?.length > 0\" (click)=\"resetToNull()\">\u00D7</div>\n</div>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{position:relative}i{position:absolute;left:.625rem;top:14px}input{outline:none;display:block;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;height:42px;width:100%;padding:.375rem .625rem;font-size:14px;color:#888da8;transition:all .2s ease-in;-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;-o-transition:all .2s ease-in;-ms-transition:all .2s ease-in}input::-webkit-input-placeholder{color:#adadad}input:-moz-placeholder{color:#adadad}input::-moz-placeholder{color:#adadad}input:-ms-input-placeholder{color:#adadad}input:focus{outline:0 none;box-shadow:none;border-color:#3ed778}input.input-sm{height:30px}input.input-lg{height:50px}input.error{border-color:#dc3545;background-color:#f6cdd1}input.valid{border-color:#37c936;background-color:#ebfaeb;color:#278d26}input.hasIcon{padding-left:1.875rem}input.hasClearButton{padding-right:1.875rem}input.noBorderLeft{border-left:none}input.noBorderRight{border-right:none}.
|
|
18
|
+
TextInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: TextInputComponent, selector: "klp-form-text-input", inputs: { placeholder: "placeholder", type: "type", clearable: "clearable", icon: "icon", hasBorderLeft: "hasBorderLeft", hasBorderRight: "hasBorderRight" }, outputs: { onBlur: "onBlur" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextInputComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\">\n\t<ng-container *ngIf=\"icon?.length > 0\">\n\t\t<i class=\"ti-search\" *ngIf=\"icon === 'search'\"></i>\n\t</ng-container>\n\t<input\n\t\t[type]=\"type\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t[ngClass]=\"{showErrors: isInErrorState(), hasIcon: icon?.length > 0, hasClearButton: clearable, noBorderLeft: !hasBorderLeft, noBorderRight: !hasBorderRight}\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t\t(blur)=\"touch(); onBlur.emit()\"\n\t\t[disabled]='disabled'\n\t\t#nativeInputRef\n\t/>\n\t<div class=\"tail\">\n\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t\t<div class=\"clearIcon\" *ngIf=\"clearable && innerValue?.length > 0\" (click)=\"resetToNull()\">\u00D7</div>\n\t</div>\n</div>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{position:relative}i{position:absolute;left:.625rem;top:14px}input{outline:none;display:block;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;height:42px;width:100%;padding:.375rem .625rem;font-size:14px;color:#888da8;transition:all .2s ease-in;-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;-o-transition:all .2s ease-in;-ms-transition:all .2s ease-in}input::-webkit-input-placeholder{color:#adadad}input:-moz-placeholder{color:#adadad}input::-moz-placeholder{color:#adadad}input:-ms-input-placeholder{color:#adadad}input:focus{outline:0 none;box-shadow:none;border-color:#3ed778}input.input-sm{height:30px}input.input-lg{height:50px}input.error{border-color:#dc3545;background-color:#f6cdd1}input.valid{border-color:#37c936;background-color:#ebfaeb;color:#278d26}input.hasIcon{padding-left:1.875rem}input.hasClearButton{padding-right:1.875rem}input.noBorderLeft{border-left:none}input.noBorderRight{border-right:none}.tail{position:absolute;right:.625rem;display:flex;align-items:center;top:0;bottom:0;gap:.625rem}.tail .clearIcon{transform:translateY(-2px);font-size:18px;cursor:pointer}.showErrors{border-color:#ff8000}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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"] }] });
|
|
19
19
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
20
20
|
type: Component,
|
|
21
|
-
args: [{ selector: 'klp-form-text-input', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextInputComponent, multi: true }], template: "<div class=\"componentContainer\">\n\t<ng-container *ngIf=\"icon?.length > 0\">\n\t\t<i class=\"ti-search\" *ngIf=\"icon === 'search'\"></i>\n\t</ng-container>\n\t<input\n\t\t[type]=\"type\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t[ngClass]=\"{showErrors: isInErrorState(), hasIcon: icon?.length > 0, hasClearButton: clearable, noBorderLeft: !hasBorderLeft, noBorderRight: !hasBorderRight}\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t\t(blur)=\"touch(); onBlur.emit()\"\n\t\t[disabled]='disabled'\n\t\t#nativeInputRef\n\t/>\n\t<div class=\"clearIcon\" *ngIf=\"clearable && innerValue?.length > 0\" (click)=\"resetToNull()\">\u00D7</div>\n</div>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{position:relative}i{position:absolute;left:.625rem;top:14px}input{outline:none;display:block;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;height:42px;width:100%;padding:.375rem .625rem;font-size:14px;color:#888da8;transition:all .2s ease-in;-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;-o-transition:all .2s ease-in;-ms-transition:all .2s ease-in}input::-webkit-input-placeholder{color:#adadad}input:-moz-placeholder{color:#adadad}input::-moz-placeholder{color:#adadad}input:-ms-input-placeholder{color:#adadad}input:focus{outline:0 none;box-shadow:none;border-color:#3ed778}input.input-sm{height:30px}input.input-lg{height:50px}input.error{border-color:#dc3545;background-color:#f6cdd1}input.valid{border-color:#37c936;background-color:#ebfaeb;color:#278d26}input.hasIcon{padding-left:1.875rem}input.hasClearButton{padding-right:1.875rem}input.noBorderLeft{border-left:none}input.noBorderRight{border-right:none}.
|
|
21
|
+
args: [{ selector: 'klp-form-text-input', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextInputComponent, multi: true }], template: "<div class=\"componentContainer\">\n\t<ng-container *ngIf=\"icon?.length > 0\">\n\t\t<i class=\"ti-search\" *ngIf=\"icon === 'search'\"></i>\n\t</ng-container>\n\t<input\n\t\t[type]=\"type\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t[ngClass]=\"{showErrors: isInErrorState(), hasIcon: icon?.length > 0, hasClearButton: clearable, noBorderLeft: !hasBorderLeft, noBorderRight: !hasBorderRight}\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t\t(blur)=\"touch(); onBlur.emit()\"\n\t\t[disabled]='disabled'\n\t\t#nativeInputRef\n\t/>\n\t<div class=\"tail\">\n\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t\t<div class=\"clearIcon\" *ngIf=\"clearable && innerValue?.length > 0\" (click)=\"resetToNull()\">\u00D7</div>\n\t</div>\n</div>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{position:relative}i{position:absolute;left:.625rem;top:14px}input{outline:none;display:block;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;height:42px;width:100%;padding:.375rem .625rem;font-size:14px;color:#888da8;transition:all .2s ease-in;-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;-o-transition:all .2s ease-in;-ms-transition:all .2s ease-in}input::-webkit-input-placeholder{color:#adadad}input:-moz-placeholder{color:#adadad}input::-moz-placeholder{color:#adadad}input:-ms-input-placeholder{color:#adadad}input:focus{outline:0 none;box-shadow:none;border-color:#3ed778}input.input-sm{height:30px}input.input-lg{height:50px}input.error{border-color:#dc3545;background-color:#f6cdd1}input.valid{border-color:#37c936;background-color:#ebfaeb;color:#278d26}input.hasIcon{padding-left:1.875rem}input.hasClearButton{padding-right:1.875rem}input.noBorderLeft{border-left:none}input.noBorderRight{border-right:none}.tail{position:absolute;right:.625rem;display:flex;align-items:center;top:0;bottom:0;gap:.625rem}.tail .clearIcon{transform:translateY(-2px);font-size:18px;cursor:pointer}.showErrors{border-color:#ff8000}\n"] }]
|
|
22
22
|
}], propDecorators: { placeholder: [{
|
|
23
23
|
type: Input
|
|
24
24
|
}], type: [{
|
|
@@ -34,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
34
34
|
}], onBlur: [{
|
|
35
35
|
type: Output
|
|
36
36
|
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWlucHV0L3RleHQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvdGV4dC1pbnB1dC90ZXh0LWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0RBQXNELENBQUM7Ozs7QUFRdkYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUF5QjtJQU5qRTs7UUFRVSxTQUFJLEdBQXdCLE1BQU0sQ0FBQztRQUNuQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBQzVDOzsrR0FSWSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwyT0FGbkIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLGlEQ1J4Riw0ekJBbUJBOzJGRFRhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDQyxxQkFBcUIsYUFHcEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLG9CQUFvQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQzs4QkFHOUUsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtWYWx1ZUFjY2Vzc29yQmFzZX0gZnJvbSAnLi4vdmFsdWUtYWNjZXNzb3ItYmFzZS92YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLXRleHQtaW5wdXQnLFxuXHR0ZW1wbGF0ZVVybDogJy4vdGV4dC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL3RleHQtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcblx0cHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogVGV4dElucHV0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZX1dLFxufSlcbmV4cG9ydCBjbGFzcyBUZXh0SW5wdXRDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUFjY2Vzc29yQmFzZTxzdHJpbmc+IHtcblx0QElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblx0QElucHV0KCkgdHlwZTogJ3RleHQnIHwgJ3Bhc3N3b3JkJyA9ICd0ZXh0Jztcblx0QElucHV0KCkgY2xlYXJhYmxlID0gZmFsc2U7XG5cdEBJbnB1dCgpIGljb246ICdzZWFyY2gnO1xuXHRASW5wdXQoKSBoYXNCb3JkZXJMZWZ0ID0gdHJ1ZTtcblx0QElucHV0KCkgaGFzQm9yZGVyUmlnaHQgPSB0cnVlO1xuXHRAT3V0cHV0KCkgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xufVxuIiwiPGRpdiBjbGFzcz1cImNvbXBvbmVudENvbnRhaW5lclwiPlxuXHQ8bmctY29udGFpbmVyICpuZ0lmPVwiaWNvbj8ubGVuZ3RoID4gMFwiPlxuXHRcdDxpIGNsYXNzPVwidGktc2VhcmNoXCIgKm5nSWY9XCJpY29uID09PSAnc2VhcmNoJ1wiPjwvaT5cblx0PC9uZy1jb250YWluZXI+XG5cdDxpbnB1dFxuXHRcdFt0eXBlXT1cInR5cGVcIlxuXHRcdFsobmdNb2RlbCldPVwiaW5uZXJWYWx1ZVwiXG5cdFx0W25nQ2xhc3NdPVwie3Nob3dFcnJvcnM6IGlzSW5FcnJvclN0YXRlKCksIGhhc0ljb246IGljb24/Lmxlbmd0aCA+IDAsIGhhc0NsZWFyQnV0dG9uOiBjbGVhcmFibGUsIG5vQm9yZGVyTGVmdDogIWhhc0JvcmRlckxlZnQsIG5vQm9yZGVyUmlnaHQ6ICFoYXNCb3JkZXJSaWdodH1cIlxuXHRcdChpbnB1dCk9XCJzZXRJbm5lclZhbHVlQW5kTm90aWZ5KCRldmVudC50YXJnZXQudmFsdWUpXCJcblx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6ICcnXCJcblx0XHQoYmx1cik9XCJ0b3VjaCgpOyBvbkJsdXIuZW1pdCgpXCJcblx0XHRbZGlzYWJsZWRdPSdkaXNhYmxlZCdcblx0XHQjbmF0aXZlSW5wdXRSZWZcblx0Lz5cblx0PGRpdiBjbGFzcz1cInRhaWxcIj5cblx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldFRhaWxUcGwoKVwiPjwvbmctY29udGFpbmVyPlxuXHRcdDxkaXYgY2xhc3M9XCJjbGVhckljb25cIiAqbmdJZj1cImNsZWFyYWJsZSAmJiBpbm5lclZhbHVlPy5sZW5ndGggPiAwXCIgKGNsaWNrKT1cInJlc2V0VG9OdWxsKClcIj7DlzwvZGl2PlxuXHQ8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -34,6 +34,12 @@ export class ValueAccessorBase {
|
|
|
34
34
|
throw new Error('the focus() method is not implemented in this element!');
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
+
this.setTailTpl = (tpl) => {
|
|
38
|
+
this.tailTpl = tpl;
|
|
39
|
+
};
|
|
40
|
+
this.getTailTpl = () => {
|
|
41
|
+
return this.tailTpl;
|
|
42
|
+
};
|
|
37
43
|
}
|
|
38
44
|
ngOnInit() {
|
|
39
45
|
if (this.formControl) {
|
|
@@ -66,6 +72,7 @@ export class ValueAccessorBase {
|
|
|
66
72
|
}
|
|
67
73
|
touch() {
|
|
68
74
|
this.touched.forEach((f) => f());
|
|
75
|
+
this.onTouch.emit();
|
|
69
76
|
}
|
|
70
77
|
writeValue(value) {
|
|
71
78
|
this.innerValue = value;
|
|
@@ -149,4 +156,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
149
156
|
type: ViewChild,
|
|
150
157
|
args: ['nativeInputRef']
|
|
151
158
|
}] } });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9lbGVtZW50cy92YWx1ZS1hY2Nlc3Nvci1iYXNlL3ZhbHVlLWFjY2Vzc29yLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9ILE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUV4RDs7Ozs7Ozs7R0FRRztBQU1ILE1BQU0sT0FBTyxpQkFBaUI7SUFtQjdCLFlBQytCLE1BQTRCLEVBQzVCLGdCQUFrQztRQURsQyxXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBbkIxRCxZQUFPLEdBQUcsSUFBSSxLQUFLLEVBQXNCLENBQUM7UUFDekMsWUFBTyxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7UUFDbEMsY0FBUyxHQUFNLElBQUksQ0FBQztRQUVaLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFJakMsOEVBQThFO1FBQzlELG9CQUFlLEdBQVcsSUFBSSxDQUFDO1FBQy9CLGdCQUFXLEdBQXVCLElBQUksQ0FBQztRQUN2QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNwQixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQWtHN0MsVUFBSyxHQUFHLEdBQVMsRUFBRTtZQUN6QixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxF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QkFBaUIsbVlBRm5CLEVBQUU7MkZBRUEsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxFQUFFO29CQUNaLFFBQVEsRUFBRSxFQUFFO2lCQUNaOzswQkFxQkUsSUFBSTs7MEJBQUksUUFBUTs7MEJBQ2hCLElBQUk7OzBCQUFJLFFBQVE7NENBZkYsUUFBUTtzQkFBdkIsS0FBSztnQkFHRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBRVUsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1csT0FBTztzQkFBdkIsTUFBTTtnQkFDc0IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnRyb2xDb250YWluZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBVbnR5cGVkRm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRDb21wb25lbnR9IGZyb20gJy4uLy4uL2Zvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtpc051bGxPclVuZGVmaW5lZCwgaXNWYWx1ZVNldCwgc3RyaW5nSXNTZXRBbmRGaWxsZWR9IGZyb20gJy4uLy4uL3V0aWwvdmFsdWVzJztcbmltcG9ydCB7IGFycmF5SXNTZXRBbmRGaWxsZWQgfSBmcm9tICcuLi8uLi91dGlsL2FycmF5cyc7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgYSBiYXNlIGluIG9yZGVyIHRvIGNyZWF0ZSBhIGNvbXBvbmVudCB0aGF0IHN1cHBvcnRzIG5nTW9kZWwuXG4gKiBTb21lIGltcG9ydGFudCB0aGluZ3MgdG8ga25vdyBhYm91dCBpdDpcbiAqXG4gKiBpbm5lclZhbHVlID0geW91ciBvd24gaW5uZXIgc3RhdGUsIHdoaWNoIHlvdSBzaG91bGQgdXNlIHRvIHN0b3JlIHRoZSBjdXJyZW50IHN0YXRlIG9mIHdoYXQgbmdNb2RlbCBzaG91bGQgYmUuXG4gKiB3cml0ZVZhbHVlKCkgPSBjYWxsZWQgYnkgYW5ndWxhciwgd2hlbiBuZ01vZGVsIGlzIGNoYW5nZWQgZnJvbSBPVVRTSURFIG9mIHRoZSBjb21wb25lbnQuIEZlZWwgZnJlZSB0byBwYXRjaCB0aGlzIG1ldGhvZCBpZiB5b3UgbmVlZCBpbm5lciBsb2dpYyB0byBoYXBwZW4gd2hlbiBuZ01vZGVsIGlzIGFsdGVyZWQgZnJvbSB0aGUgb3V0c2lkZS4gQWx3YXlzIHJlbWVtYmVyIHRvIGFsc28gY2FsbCB0aGUgc3VwZXIud3JpdGVWYWx1ZSBpZiB5b3UgZG8hXG4gKiBzZXRJbm5lclZhbHVlQW5kTm90aWZ5KCkgPSBjYWxsIHRoaXMgd2hlbiB5b3Ugd2FudCB5b3VyIG5nTW9kZWwgdG8gYmUgdXBkYXRlZCBmcm9tIElOU0lERSBvZiB5b3VyIGNvbXBvbmVudCwgYW5kIHByb3ZpZGUgaXQgdG8gdGhlIE9VVFNJREUuXG4gKiBuZ09uSW5pdCgpID0gVXNlZCB0byBzdXBwb3J0IHRoZSBhbmd1bGFyIHJlYWN0aXZlIGZvcm1zIGZyYW1ld29yay4gSWYgeW91IHVzZSBuZ09uSW5pdCBpbiB5b3VyIG93biBjb21wb25lbnQgKHdoaWNoIGhhcHBlbnMgZmFpcmx5IG9mdGVuKSB5b3UgbXVzdCBub3QgZm9yZ2V0IHRvIGNhbGwgdGhlIHN1cGVyLm5nT25Jbml0KCkgbWV0aG9kLlxuICovXG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJycsXG5cdHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgY2xhc3MgVmFsdWVBY2Nlc3NvckJhc2U8VD4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuXHRwdWJsaWMgaW5uZXJWYWx1ZTogVDtcblx0cHVibGljIGNoYW5nZWQgPSBuZXcgQXJyYXk8KHZhbHVlOiBUKSA9PiB2b2lkPigpO1xuXHRwcml2YXRlIHRvdWNoZWQgPSBuZXcgQXJyYXk8KCkgPT4gdm9pZD4oKTtcblx0cHJpdmF0ZSBwcmV2VmFsdWU6IFQgPSBudWxsO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXHQvLyBuZWVkZWQgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnNcblx0cHJpdmF0ZSBsYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcblx0QElucHV0KCkgaW5uZXJWYWx1ZUNoYW5nZUludGVyY2VwdG9yOiAocHJldjogVCwgY3VyOiBUKSA9PiBQcm9taXNlPHZvaWQ+O1xuXHQvLyB3ZSBzdXBwb3J0IGJvdGggcHJvdmlkaW5nIGp1c3QgdGhlIGZvcm1Db250cm9sTmFtZSBhbmQgdGhlIGZ1bGwgZm9ybUNvbnRyb2xcblx0QElucHV0KCkgcHVibGljIGZvcm1Db250cm9sTmFtZTogc3RyaW5nID0gbnVsbDtcblx0QElucHV0KCkgcHVibGljIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBudWxsO1xuXHRASW5wdXQoKSBwdWJsaWMgaW5FcnJvclN0YXRlID0gZmFsc2U7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25Ub3VjaCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblx0QFZpZXdDaGlsZCgnbmF0aXZlSW5wdXRSZWYnKSBuYXRpdmVJbnB1dFJlZjogRWxlbWVudFJlZjtcblxuXHRwcml2YXRlIGF0dGFjaGVkRm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRASG9zdCgpIEBPcHRpb25hbCgpIHByb3RlY3RlZCBwYXJlbnQ6IEZvcm1FbGVtZW50Q29tcG9uZW50LFxuXHRcdEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXJcblx0KSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuXHRcdFx0dGhpcy5hdHRhY2hlZEZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbDtcblx0XHR9IGVsc2UgaWYgKHN0cmluZ0lzU2V0QW5kRmlsbGVkKHRoaXMuZm9ybUNvbnRyb2xOYW1lKSkge1xuXHRcdFx0dGhpcy5hdHRhY2hlZEZvcm1Db250cm9sID0gdGhpcy5jb250cm9sQ29udGFpbmVyPy5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuXHRcdFx0aWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGb3JtIGVsZW1lbnQgJyR7dGhpcy5mb3JtQ29udHJvbE5hbWV9JyB3aXRoIGNhcHRpb24gJyR7dGhpcy5wYXJlbnQ/LmNhcHRpb259JyBpcyBub3QgZGVjbGFyZWQgaW4geW91ciBGb3JtR3JvdXAuYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICh0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wpIHtcblx0XHRcdHRoaXMuZGlzYWJsZWQgPSB0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wuZGlzYWJsZWQ7XG5cdFx0XHR0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmRpc2FibGVkID0gdGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLmRpc2FibGVkO1xuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLnBhcmVudD8ucmVnaXN0ZXJDb250cm9sKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCwgdGhpcyk7XG5cdFx0fVxuXHR9XG5cblx0aXNJbkVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuaW5FcnJvclN0YXRlKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCAmJiB0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wuc3RhdHVzID09PSAnSU5WQUxJRCcgJiYgdGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLnRvdWNoZWQ7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5hdHRhY2hlZEZvcm1Db250cm9sKSB7XG5cdFx0XHR0aGlzLnBhcmVudD8udW5yZWdpc3RlckNvbnRyb2wodGhpcy5hdHRhY2hlZEZvcm1Db250cm9sKTtcblx0XHR9XG5cdH1cblxuXHR0b3VjaCgpOiB2b2lkIHtcblx0XHR0aGlzLnRvdWNoZWQuZm9yRWFjaCgoZikgPT4gZigpKTtcblx0fVxuXG5cdHdyaXRlVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcblx0XHR0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcblx0XHR0aGlzLnByZXZWYWx1ZSA9IHZhbHVlO1xuXHR9XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBUKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0dGhpcy5jaGFuZ2VkLnB1c2goZm4pO1xuXHR9XG5cblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcblx0XHR0aGlzLnRvdWNoZWQucHVzaChmbik7XG5cdH1cblxuXHRzZXRJbm5lclZhbHVlQW5kTm90aWZ5KHZhbHVlOiBUKTogdm9pZCB7XG5cdFx0Y29uc3QgYWN0dWFsbHlTZXRWYWx1ZSA9ICh2YWx1ZVRvU2V0OiBUKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZVRvU2V0O1xuXHRcdFx0dGhpcy5wcmV2VmFsdWUgPSB2YWx1ZVRvU2V0O1xuXHRcdFx0dGhpcy5jaGFuZ2VkLmZvckVhY2goKGZuKSA9PiBmbih2YWx1ZVRvU2V0KSk7XG5cdFx0fTtcblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLmlubmVyVmFsdWVDaGFuZ2VJbnRlcmNlcHRvcikpIHtcblx0XHRcdHRoaXMubGF0ZXN0SW5uZXJWYWx1ZUNoYW5nZWRJbnRlcmNlcHRvclByb21pc2UgPSB0aGlzLmlubmVyVmFsdWVDaGFuZ2VJbnRlcmNlcHRvcih0aGlzLnByZXZWYWx1ZSwgdmFsdWUpO1xuXHRcdFx0Y29uc3QgbXlQcm9taXNlID0gdGhpcy5sYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZTtcblx0XHRcdHRoaXMubGF0ZXN0SW5uZXJWYWx1ZUNoYW5nZWRJbnRlcmNlcHRvclByb21pc2UudGhlbigoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmxhdGVzdElubmVyVmFsdWVDaGFuZ2VkSW50ZXJjZXB0b3JQcm9taXNlID09PSBteVByb21pc2UpIHtcblx0XHRcdFx0XHRhY3R1YWxseVNldFZhbHVlKHZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBpZ25vcmUgb3V0ZGF0ZWQgcHJvbWlzZXNcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goKCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5sYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZSA9PT0gbXlQcm9taXNlKSB7XG5cdFx0XHRcdFx0YWN0dWFsbHlTZXRWYWx1ZSh0aGlzLnByZXZWYWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gaWdub3JlIG91dGRhdGVkIHByb21pc2VzXG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhY3R1YWxseVNldFZhbHVlKHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRyZXNldFRvTnVsbCgpOiB2b2lkIHtcblx0XHR0aGlzLnNldElubmVyVmFsdWVBbmROb3RpZnkobnVsbCk7XG5cdH1cblxuXHRoYXNWYWxpZGF0b3IodmFsaWRhdG9yTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgdmFsaWRhdG9ycyA9IE9iamVjdC5rZXlzKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbD8udmFsaWRhdG9yPy4oe30gYXMgYW55KSA/PyB7fSk7XG5cdFx0aWYgKGFycmF5SXNTZXRBbmRGaWxsZWQodmFsaWRhdG9ycykpIHtcblx0XHRcdHJldHVybiB2YWxpZGF0b3JzLmluY2x1ZGVzKHZhbGlkYXRvck5hbWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgZm9jdXMgPSAoKTogdm9pZCA9PiB7XG5cdFx0aWYgKGlzVmFsdWVTZXQodGhpcy5uYXRpdmVJbnB1dFJlZj8ubmF0aXZlRWxlbWVudCkpe1xuXHRcdFx0dGhpcy5uYXRpdmVJbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcblx0XHR9ZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ3RoZSBmb2N1cygpIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBlbGVtZW50IScpO1xuXHRcdH1cblx0fVxufVxuIl19
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9lbGVtZW50cy92YWx1ZS1hY2Nlc3Nvci1iYXNlL3ZhbHVlLWFjY2Vzc29yLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTixTQUFTLEVBRVQsWUFBWSxFQUNaLElBQUksRUFDSixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBRXhEOzs7Ozs7OztHQVFHO0FBTUgsTUFBTSxPQUFPLGlCQUFpQjtJQW9CN0IsWUFDK0IsTUFBNEIsRUFDNUIsZ0JBQWtDO1FBRGxDLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFwQjFELFlBQU8sR0FBRyxJQUFJLEtBQUssRUFBc0IsQ0FBQztRQUN6QyxZQUFPLEdBQUcsSUFBSSxLQUFLLEVBQWMsQ0FBQztRQUNsQyxjQUFTLEdBQU0sSUFBSSxDQUFDO1FBRVosYUFBUSxHQUFHLEtBQUssQ0FBQztRQUlqQyw4RUFBOEU7UUFDOUQsb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFDL0IsZ0JBQVcsR0FBdUIsSUFBSSxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBb0c3QyxVQUFLLEdBQUcsR0FBUyxFQUFFO1lBQ3pCLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLEVB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LG1CQUFtQixFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksbUJBQW1CLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDOzs4R0FoSFcsaUJBQWlCO2tHQUFqQixpQkFBaUIsbVlBRm5CLEVBQUU7MkZBRUEsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxFQUFFO29CQUNaLFFBQVEsRUFBRSxFQUFFO2lCQUNaOzswQkFzQkUsSUFBSTs7MEJBQUksUUFBUTs7MEJBQ2hCLElBQUk7OzBCQUFJLFFBQVE7NENBaEJGLFFBQVE7c0JBQXZCLEtBQUs7Z0JBR0csMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUVVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNXLE9BQU87c0JBQXZCLE1BQU07Z0JBQ3NCLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb250cm9sQ29udGFpbmVyLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdEVsZW1lbnRSZWYsXG5cdEV2ZW50RW1pdHRlcixcblx0SG9zdCxcblx0SW5wdXQsXG5cdE9uRGVzdHJveSxcblx0T25Jbml0LFxuXHRPcHRpb25hbCxcblx0T3V0cHV0LFxuXHRUZW1wbGF0ZVJlZixcblx0Vmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtRWxlbWVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZm9ybS9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge2lzTnVsbE9yVW5kZWZpbmVkLCBpc1ZhbHVlU2V0LCBzdHJpbmdJc1NldEFuZEZpbGxlZH0gZnJvbSAnLi4vLi4vdXRpbC92YWx1ZXMnO1xuaW1wb3J0IHsgYXJyYXlJc1NldEFuZEZpbGxlZCB9IGZyb20gJy4uLy4uL3V0aWwvYXJyYXlzJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBhIGJhc2UgaW4gb3JkZXIgdG8gY3JlYXRlIGEgY29tcG9uZW50IHRoYXQgc3VwcG9ydHMgbmdNb2RlbC5cbiAqIFNvbWUgaW1wb3J0YW50IHRoaW5ncyB0byBrbm93IGFib3V0IGl0OlxuICpcbiAqIGlubmVyVmFsdWUgPSB5b3VyIG93biBpbm5lciBzdGF0ZSwgd2hpY2ggeW91IHNob3VsZCB1c2UgdG8gc3RvcmUgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygd2hhdCBuZ01vZGVsIHNob3VsZCBiZS5cbiAqIHdyaXRlVmFsdWUoKSA9IGNhbGxlZCBieSBhbmd1bGFyLCB3aGVuIG5nTW9kZWwgaXMgY2hhbmdlZCBmcm9tIE9VVFNJREUgb2YgdGhlIGNvbXBvbmVudC4gRmVlbCBmcmVlIHRvIHBhdGNoIHRoaXMgbWV0aG9kIGlmIHlvdSBuZWVkIGlubmVyIGxvZ2ljIHRvIGhhcHBlbiB3aGVuIG5nTW9kZWwgaXMgYWx0ZXJlZCBmcm9tIHRoZSBvdXRzaWRlLiBBbHdheXMgcmVtZW1iZXIgdG8gYWxzbyBjYWxsIHRoZSBzdXBlci53cml0ZVZhbHVlIGlmIHlvdSBkbyFcbiAqIHNldElubmVyVmFsdWVBbmROb3RpZnkoKSA9IGNhbGwgdGhpcyB3aGVuIHlvdSB3YW50IHlvdXIgbmdNb2RlbCB0byBiZSB1cGRhdGVkIGZyb20gSU5TSURFIG9mIHlvdXIgY29tcG9uZW50LCBhbmQgcHJvdmlkZSBpdCB0byB0aGUgT1VUU0lERS5cbiAqIG5nT25Jbml0KCkgPSBVc2VkIHRvIHN1cHBvcnQgdGhlIGFuZ3VsYXIgcmVhY3RpdmUgZm9ybXMgZnJhbWV3b3JrLiBJZiB5b3UgdXNlIG5nT25Jbml0IGluIHlvdXIgb3duIGNvbXBvbmVudCAod2hpY2ggaGFwcGVucyBmYWlybHkgb2Z0ZW4pIHlvdSBtdXN0IG5vdCBmb3JnZXQgdG8gY2FsbCB0aGUgc3VwZXIubmdPbkluaXQoKSBtZXRob2QuXG4gKi9cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnJyxcblx0dGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBjbGFzcyBWYWx1ZUFjY2Vzc29yQmFzZTxUPiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XG5cdHB1YmxpYyBpbm5lclZhbHVlOiBUO1xuXHRwdWJsaWMgY2hhbmdlZCA9IG5ldyBBcnJheTwodmFsdWU6IFQpID0+IHZvaWQ+KCk7XG5cdHByaXZhdGUgdG91Y2hlZCA9IG5ldyBBcnJheTwoKSA9PiB2b2lkPigpO1xuXHRwcml2YXRlIHByZXZWYWx1ZTogVCA9IG51bGw7XG5cblx0QElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cdC8vIG5lZWRlZCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9uc1xuXHRwcml2YXRlIGxhdGVzdElubmVyVmFsdWVDaGFuZ2VkSW50ZXJjZXB0b3JQcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuXHRASW5wdXQoKSBpbm5lclZhbHVlQ2hhbmdlSW50ZXJjZXB0b3I6IChwcmV2OiBULCBjdXI6IFQpID0+IFByb21pc2U8dm9pZD47XG5cdC8vIHdlIHN1cHBvcnQgYm90aCBwcm92aWRpbmcganVzdCB0aGUgZm9ybUNvbnRyb2xOYW1lIGFuZCB0aGUgZnVsbCBmb3JtQ29udHJvbFxuXHRASW5wdXQoKSBwdWJsaWMgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcgPSBudWxsO1xuXHRASW5wdXQoKSBwdWJsaWMgZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCA9IG51bGw7XG5cdEBJbnB1dCgpIHB1YmxpYyBpbkVycm9yU3RhdGUgPSBmYWxzZTtcblx0QE91dHB1dCgpIHB1YmxpYyBvblRvdWNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXHRAVmlld0NoaWxkKCduYXRpdmVJbnB1dFJlZicpIG5hdGl2ZUlucHV0UmVmOiBFbGVtZW50UmVmO1xuXG5cdHByaXZhdGUgYXR0YWNoZWRGb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuXHRwcml2YXRlIHRhaWxUcGw6IFRlbXBsYXRlUmVmPGFueT47XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0QEhvc3QoKSBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgcGFyZW50OiBGb3JtRWxlbWVudENvbXBvbmVudCxcblx0XHRASG9zdCgpIEBPcHRpb25hbCgpIHByb3RlY3RlZCBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyXG5cdCkge1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuZm9ybUNvbnRyb2wpIHtcblx0XHRcdHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCA9IHRoaXMuZm9ybUNvbnRyb2w7XG5cdFx0fSBlbHNlIGlmIChzdHJpbmdJc1NldEFuZEZpbGxlZCh0aGlzLmZvcm1Db250cm9sTmFtZSkpIHtcblx0XHRcdHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCA9IHRoaXMuY29udHJvbENvbnRhaW5lcj8uY29udHJvbC5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcblx0XHRcdGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgRm9ybSBlbGVtZW50ICcke3RoaXMuZm9ybUNvbnRyb2xOYW1lfScgd2l0aCBjYXB0aW9uICcke3RoaXMucGFyZW50Py5jYXB0aW9ufScgaXMgbm90IGRlY2xhcmVkIGluIHlvdXIgRm9ybUdyb3VwLmApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAodGhpcy5hdHRhY2hlZEZvcm1Db250cm9sKSB7XG5cdFx0XHR0aGlzLmRpc2FibGVkID0gdGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLmRpc2FibGVkO1xuXHRcdFx0dGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdFx0dGhpcy5kaXNhYmxlZCA9IHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbC5kaXNhYmxlZDtcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5wYXJlbnQ/LnJlZ2lzdGVyQ29udHJvbCh0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wsIHRoaXMpO1xuXHRcdH1cblx0fVxuXG5cdGlzSW5FcnJvclN0YXRlKCk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLmluRXJyb3JTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wgJiYgdGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLnN0YXR1cyA9PT0gJ0lOVkFMSUQnICYmIHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbC50b3VjaGVkO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCkge1xuXHRcdFx0dGhpcy5wYXJlbnQ/LnVucmVnaXN0ZXJDb250cm9sKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCk7XG5cdFx0fVxuXHR9XG5cblx0dG91Y2goKTogdm9pZCB7XG5cdFx0dGhpcy50b3VjaGVkLmZvckVhY2goKGYpID0+IGYoKSk7XG5cdFx0dGhpcy5vblRvdWNoLmVtaXQoKTtcblx0fVxuXG5cdHdyaXRlVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcblx0XHR0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcblx0XHR0aGlzLnByZXZWYWx1ZSA9IHZhbHVlO1xuXHR9XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBUKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0dGhpcy5jaGFuZ2VkLnB1c2goZm4pO1xuXHR9XG5cblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcblx0XHR0aGlzLnRvdWNoZWQucHVzaChmbik7XG5cdH1cblxuXHRzZXRJbm5lclZhbHVlQW5kTm90aWZ5KHZhbHVlOiBUKTogdm9pZCB7XG5cdFx0Y29uc3QgYWN0dWFsbHlTZXRWYWx1ZSA9ICh2YWx1ZVRvU2V0OiBUKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZVRvU2V0O1xuXHRcdFx0dGhpcy5wcmV2VmFsdWUgPSB2YWx1ZVRvU2V0O1xuXHRcdFx0dGhpcy5jaGFuZ2VkLmZvckVhY2goKGZuKSA9PiBmbih2YWx1ZVRvU2V0KSk7XG5cdFx0fTtcblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLmlubmVyVmFsdWVDaGFuZ2VJbnRlcmNlcHRvcikpIHtcblx0XHRcdHRoaXMubGF0ZXN0SW5uZXJWYWx1ZUNoYW5nZWRJbnRlcmNlcHRvclByb21pc2UgPSB0aGlzLmlubmVyVmFsdWVDaGFuZ2VJbnRlcmNlcHRvcih0aGlzLnByZXZWYWx1ZSwgdmFsdWUpO1xuXHRcdFx0Y29uc3QgbXlQcm9taXNlID0gdGhpcy5sYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZTtcblx0XHRcdHRoaXMubGF0ZXN0SW5uZXJWYWx1ZUNoYW5nZWRJbnRlcmNlcHRvclByb21pc2UudGhlbigoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmxhdGVzdElubmVyVmFsdWVDaGFuZ2VkSW50ZXJjZXB0b3JQcm9taXNlID09PSBteVByb21pc2UpIHtcblx0XHRcdFx0XHRhY3R1YWxseVNldFZhbHVlKHZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBpZ25vcmUgb3V0ZGF0ZWQgcHJvbWlzZXNcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goKCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5sYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZSA9PT0gbXlQcm9taXNlKSB7XG5cdFx0XHRcdFx0YWN0dWFsbHlTZXRWYWx1ZSh0aGlzLnByZXZWYWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gaWdub3JlIG91dGRhdGVkIHByb21pc2VzXG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhY3R1YWxseVNldFZhbHVlKHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRyZXNldFRvTnVsbCgpOiB2b2lkIHtcblx0XHR0aGlzLnNldElubmVyVmFsdWVBbmROb3RpZnkobnVsbCk7XG5cdH1cblxuXHRoYXNWYWxpZGF0b3IodmFsaWRhdG9yTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgdmFsaWRhdG9ycyA9IE9iamVjdC5rZXlzKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbD8udmFsaWRhdG9yPy4oe30gYXMgYW55KSA/PyB7fSk7XG5cdFx0aWYgKGFycmF5SXNTZXRBbmRGaWxsZWQodmFsaWRhdG9ycykpIHtcblx0XHRcdHJldHVybiB2YWxpZGF0b3JzLmluY2x1ZGVzKHZhbGlkYXRvck5hbWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgZm9jdXMgPSAoKTogdm9pZCA9PiB7XG5cdFx0aWYgKGlzVmFsdWVTZXQodGhpcy5uYXRpdmVJbnB1dFJlZj8ubmF0aXZlRWxlbWVudCkpe1xuXHRcdFx0dGhpcy5uYXRpdmVJbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcblx0XHR9ZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ3RoZSBmb2N1cygpIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBlbGVtZW50IScpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRUYWlsVHBsID0gKHRwbDogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQgPT4ge1xuXHRcdHRoaXMudGFpbFRwbCA9IHRwbDtcblx0fVxuXHRwdWJsaWMgZ2V0VGFpbFRwbCA9ICgpOiBUZW1wbGF0ZVJlZjxhbnk+ID0+IHtcblx0XHRyZXR1cm4gdGhpcy50YWlsVHBsO1xuXHR9XG59XG4iXX0=
|
|
@@ -28,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
28
28
|
type: ViewChild,
|
|
29
29
|
args: ['contentRef']
|
|
30
30
|
}] } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jYXB0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS1jYXB0aW9uL2Zvcm0tY2FwdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tY2FwdGlvbi9mb3JtLWNhcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxJQUFJLEVBQVUsUUFBUSxFQUFlLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBU3BHLE1BQU0sT0FBTyxvQkFBb0I7SUFHaEMsWUFBd0MsTUFBNEI7UUFBNUIsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7SUFBRyxDQUFDO0lBRXhFLFFBQVE7UUFDUCx1R0FBdUc7UUFDdkcscUJBQXFCO1FBQ3JCLGlCQUFpQjtRQUNqQiw4SEFBOEg7UUFDOUgsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7O2lIQWJXLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGtLQ1RqQywwRUFHQTsyRkRNYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Msa0JBQWtCOzswQkFPZixJQUFJOzswQkFBSSxRQUFROzRDQUZHLFVBQVU7c0JBQXpDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0LCBPbkluaXQsIE9wdGlvbmFsLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRDb21wb25lbnR9IGZyb20gXCIuLi9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtpc051bGxPclVuZGVmaW5lZH0gZnJvbSBcIi4uLy4uL3V0aWwvdmFsdWVzXCI7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLWNhcHRpb24nLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS1jYXB0aW9uLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZm9ybS1jYXB0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1DYXB0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0QFZpZXdDaGlsZCgnY29udGVudFJlZicpIHB1YmxpYyBjb250ZW50UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdGNvbnN0cnVjdG9yKEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnQ6IEZvcm1FbGVtZW50Q29tcG9uZW50KSB7fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdC8vIHRoaXMgaXMgYmVpbmcgcnVuIG5leHQgY3ljbGUsIGJlY2F1c2Ugd2UgZG9udCB3YW50IHRvIGZhaWwgaWYgdGhlIG9yZGVyIG9mIGNvbXBvbmVudHMgaXMgYXMgZm9sbG93czpcblx0XHQvLyA8YXBwLWZvcm0tZXJyb3IgLz5cblx0XHQvLyA8c29tZS1pbnB1dCAvPlxuXHRcdC8vIFRoYXQgd291bGQgZmFpbCwgYmVjYXVzZSB0aGUgbG9naWMgb2YgdGhlIGZvcm0gZXJyb3IgaXMgcnVuIGZpcnN0LCBhbmQgYXQgdGhhdCBtb21lbnQsIHRoZSBgc29tZS1pbnB1dGAgaXNudCByZWdpc3RlcmVkIHlldFxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5wYXJlbnQucmVnaXN0ZXJDYXB0aW9uKHRoaXMuY29udGVudFJlZik7XG5cdFx0fSk7XG5cdH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjY29udGVudFJlZj5cblx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { Component, Inject, InjectionToken, Input, Optional, ViewChild } from '@angular/core';
|
|
2
|
-
import {
|
|
1
|
+
import { Component, ContentChild, Inject, InjectionToken, Input, Optional, ViewChild } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { isValueSet, stringIsSetAndFilled } from '../../util/values';
|
|
4
|
+
import { awaitableForNextCycle } from "../../util/angular";
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
4
6
|
import * as i1 from "../form.component";
|
|
5
7
|
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "../../
|
|
8
|
+
import * as i3 from "../../warning-icon/warning-icon.component";
|
|
9
|
+
import * as i4 from "../../elementIsTruncatedCb.component";
|
|
7
10
|
export const FORM_ERROR_MESSAGES = new InjectionToken('form.error.messages');
|
|
8
11
|
export const DEFAULT_ERROR_MESSAGES = {
|
|
9
12
|
min: 'Use a number larger than %min%',
|
|
@@ -27,6 +30,17 @@ export class FormElementComponent {
|
|
|
27
30
|
this.errorMessageAsTooltip = false;
|
|
28
31
|
this.errorMessages = DEFAULT_ERROR_MESSAGES;
|
|
29
32
|
this.customErrorHandlers = [];
|
|
33
|
+
this.popupState = 'onHover';
|
|
34
|
+
this.setErrorMessageIsTruncated = (isTruncated) => {
|
|
35
|
+
this.errorFullyVisible = !isTruncated;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async ngAfterViewInit() {
|
|
39
|
+
await awaitableForNextCycle();
|
|
40
|
+
this.fieldInput?.setTailTpl(this.tailTpl);
|
|
41
|
+
this.fieldInput?.onTouch.asObservable().subscribe((e) => {
|
|
42
|
+
this.determinePopupState();
|
|
43
|
+
});
|
|
30
44
|
}
|
|
31
45
|
shouldShowErrorMessages() {
|
|
32
46
|
return this.parent?.showErrorMessages !== false;
|
|
@@ -40,6 +54,20 @@ export class FormElementComponent {
|
|
|
40
54
|
this.attachedControl = formControl;
|
|
41
55
|
this.parent.registerControl(formControl, this);
|
|
42
56
|
this.input = input;
|
|
57
|
+
this.attachedControl.statusChanges.subscribe((e) => {
|
|
58
|
+
this.determinePopupState();
|
|
59
|
+
});
|
|
60
|
+
this.determinePopupState();
|
|
61
|
+
}
|
|
62
|
+
determinePopupState() {
|
|
63
|
+
if (stringIsSetAndFilled(this.getErrorToShow())) {
|
|
64
|
+
this.popupState = 'onHover';
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (stringIsSetAndFilled(this.getWarningToShow())) {
|
|
68
|
+
this.popupState = 'lockedOpen';
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
43
71
|
}
|
|
44
72
|
unregisterControl(formControl) {
|
|
45
73
|
this.attachedControl = null;
|
|
@@ -57,11 +85,18 @@ export class FormElementComponent {
|
|
|
57
85
|
registerCaption(templateRef) {
|
|
58
86
|
this.captionRef = templateRef;
|
|
59
87
|
}
|
|
88
|
+
getWarningToShow() {
|
|
89
|
+
return this.parent?.getWarningToShow(this.attachedControl);
|
|
90
|
+
}
|
|
60
91
|
getErrorToShow() {
|
|
61
|
-
|
|
62
|
-
|
|
92
|
+
const firstError = Object.keys(this.attachedControl?.errors ?? {})[0];
|
|
93
|
+
if (this.attachedControl?.touched !== true) {
|
|
94
|
+
return null;
|
|
63
95
|
}
|
|
64
|
-
|
|
96
|
+
if (!this.attachedControl?.errors) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
return firstError;
|
|
65
100
|
}
|
|
66
101
|
getCustomErrorHandler(error) {
|
|
67
102
|
return this.customErrorHandlers.find((e) => e.error === error);
|
|
@@ -97,12 +132,59 @@ export class FormElementComponent {
|
|
|
97
132
|
getErrorLocation() {
|
|
98
133
|
return this.parent?.errorMessageLocation ?? 'belowCaption';
|
|
99
134
|
}
|
|
135
|
+
shouldShowErrorTooltipOpened() {
|
|
136
|
+
return this.popupState === 'lockedOpen';
|
|
137
|
+
}
|
|
138
|
+
hasHoverableErrorTooltip() {
|
|
139
|
+
if (!this.hasRightOfCaptionError() && !this.errorMessageAsTooltip) {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
if (this.popupState !== 'onHover') {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
if (stringIsSetAndFilled(this.getErrorToShow())) {
|
|
146
|
+
return !this.errorFullyVisible;
|
|
147
|
+
}
|
|
148
|
+
if (stringIsSetAndFilled(this.getWarningToShow())) {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
hasRightOfCaptionError() {
|
|
154
|
+
if (this.errorMessageAsTooltip) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
if (this.direction !== 'vertical' || this.getErrorLocation() !== 'rightOfCaption') {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
shouldShowWarningPopup() {
|
|
163
|
+
return stringIsSetAndFilled(this.getWarningToShow());
|
|
164
|
+
}
|
|
165
|
+
closePopup() {
|
|
166
|
+
this.popupState = 'onHover';
|
|
167
|
+
}
|
|
168
|
+
togglePopup() {
|
|
169
|
+
if (!this.hasRightOfCaptionError()) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (this.errorFullyVisible) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
if (this.popupState === 'lockedOpen') {
|
|
176
|
+
this.popupState = 'onHover';
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
this.popupState = 'lockedOpen';
|
|
180
|
+
}
|
|
181
|
+
}
|
|
100
182
|
}
|
|
101
183
|
FormElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: FormElementComponent, deps: [{ token: i1.FormComponent, optional: true }, { token: FORM_ERROR_MESSAGES, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
-
FormElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: FormElementComponent, selector: "klp-form-element", inputs: { caption: "caption", direction: "direction", captionSpacing: "captionSpacing", spaceDistribution: "spaceDistribution", swapInputAndCaption: "swapInputAndCaption", errorMessageAsTooltip: "errorMessageAsTooltip" }, viewQueries: [{ propertyName: "internalComponentRef", first: true, predicate: ["internalComponentRef"], descendants: true }], ngImport: i0, template: "<ng-template #errorRef>\n\t<div *ngIf=\"shouldShowErrorMessages() && getErrorToShow()\" class=\"errorContainer\" [ngClass]=\"{hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70', 'd34-66': spaceDistribution === '34-66'}\" [klpWithTooltip]=\"!errorMessageAsTooltip && getErrorLocation() === 'rightOfCaption'\">\n\t\t<div *ngIf=\"showDefaultError('min')\">{{substituteParameters(getErrorMessage(\"min\"), {min: attachedControl.errors.min.min})}}</div>\n\t\t<div *ngIf=\"showDefaultError('max')\">{{substituteParameters(getErrorMessage(\"max\"), {max: attachedControl.errors.max.max})}}</div>\n\t\t<div *ngIf=\"showDefaultError('required')\">{{getErrorMessage(\"required\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('email')\">{{getErrorMessage(\"email\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('minlength')\">{{substituteParameters(getErrorMessage(\"minLength\"), {minLength: attachedControl.errors.minlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('maxlength')\">{{substituteParameters(getErrorMessage(\"maxLength\"), {maxLength: attachedControl.errors.maxlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('pattern')\">{{getErrorMessage(\"pattern\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('MatchPassword')\">{{getErrorMessage(\"matchPassword\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('date')\">{{getErrorMessage(\"date\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('message')\">{{attachedControl.errors.message.value}}</div>\n\t\t<div [ngTemplateOutlet]=\"getCustomErrorHandler(getErrorToShow())?.templateRef\"></div>\n\t</div>\n</ng-template>\n\n<ng-container *ngIf=\"direction === 'horizontal' && !errorMessageAsTooltip\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\n<div class=\"componentContainer\" [ngClass]=\"{hasCaption: caption || captionRef, vertical: direction === 'vertical', reverseOrder: swapInputAndCaption}\" #internalComponentRef>\n\t<div class=\"caption\" *ngIf=\"caption || captionRef\"\n\t\t[ngClass]=\"{\n\t\t\thasErrors: getErrorToShow() && attachedControl.touched,\n\t\t\tpercentageSpacing: captionSpacing === 'percentages' && spaceDistribution !== 'fixedInputWidth',\n\t\t\t'd30-70': spaceDistribution === '30-70',\n\t\t\t'd34-66': spaceDistribution === '34-66',\n\t\t\t'fixedInputWidth': spaceDistribution === 'fixedInputWidth',\n\t\t\twithErrorRightOfCaption: getErrorLocation() === 'rightOfCaption'\n\t\t}\"\n\t>\n\t\t<div *ngIf=\"captionRef\" class=\"captionRefContainer\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"captionRef\"></ng-container>\n\t\t\t<div *ngIf=\"isRequired()\"> *</div>\n\t\t</div>\n\t\t<div *ngIf=\"!captionRef\" class=\"captionText\">{{caption}}<span *ngIf=\"isRequired()\"> *</span></div>\n\t\t<div class=\"rightOfCaptionError\">\n\t\t\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'rightOfCaption' && !errorMessageAsTooltip\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t</div>\n\t</div>\n\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'belowCaption' && !errorMessageAsTooltip\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t<div class=\"inputContainer\" [ngClass]=\"{\n\t\tpercentageSpacing: captionSpacing === 'percentages' && spaceDistribution !== 'fixedInputWidth',\n\t\t'd30-70': spaceDistribution === '30-70',\n\t\t'd34-66': spaceDistribution === '34-66',\n\t\t'fixedInputWidth': spaceDistribution === 'fixedInputWidth'\n\t}\">\n\t\t<ng-container *ngIf=\"errorMessageAsTooltip && shouldShowErrorMessages() && getErrorToShow()\">\n\t\t\t<div class=\"errorTooltipTriangle\"></div>\n\t\t\t<div class=\"errorTooltipTriangleWhite\"></div>\n\t\t\t<div class=\"errorTooltip\">\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t\t</div>\n\t\t</ng-container>\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n", styles: [":host{display:block}.componentContainer{display:flex;align-items:center;min-height:42px}.componentContainer:not(.hasCaption){display:block}.componentContainer:not(.hasCaption) .inputContainer{margin-top:0}.componentContainer.reverseOrder{flex-direction:row-reverse;justify-content:flex-end}.componentContainer.vertical{display:block}.componentContainer.vertical .inputContainer{margin-top:.3125rem}.componentContainer.vertical .errorContainer{margin-left:0}.componentContainer.vertical .caption{padding-right:0}.captionRefContainer{display:flex}.caption{font-weight:700;flex:0 0 auto;padding-right:1.25rem;color:#515365}.caption.percentageSpacing{flex:40}.caption.percentageSpacing.d30-70{flex:30}.caption.percentageSpacing.d34-66{flex:34}.caption.fixedInputWidth{flex:1 1 0px;overflow:hidden}.caption.hasErrors{color:#ff8000}.caption.hasErrors.withErrorRightOfCaption .rightOfCaptionError{display:block}.caption.withErrorRightOfCaption{display:flex;justify-content:space-between;gap:1rem}.caption.withErrorRightOfCaption .captionText{flex:1 2 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.caption.withErrorRightOfCaption .rightOfCaptionError{display:none;font-weight:400;overflow:hidden;flex:1 1 auto;text-align:right}.caption.withErrorRightOfCaption .rightOfCaptionError ::ng-deep *{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inputContainer{position:relative;flex:1}.inputContainer .errorTooltipTriangle{z-index:1;position:absolute;display:none;right:0;transform:translate(-50%,calc(-100% + .1rem));width:0px;height:0px;border-left:12px solid transparent;border-right:12px solid transparent;border-top:12px solid rgba(255,128,0,.125)}.inputContainer .errorTooltipTriangleWhite{z-index:3;position:absolute;display:none;right:0;transform:translate(-50%,calc(-100% + .1rem - 2px));width:0px;height:0px;border-left:12px solid transparent;border-right:12px solid transparent;border-top:12px solid white}.inputContainer .errorTooltip{position:absolute;top:-.6rem;right:0;display:none;z-index:2;color:#515365;transform:translateY(-100%);max-width:20rem;white-space:break-spaces;background-color:#fff;border:1px solid rgba(255,128,0,.125);box-shadow:#ff800020 2px 3px 10px;padding:.3rem .5rem;box-sizing:border-box;border-radius:3px}.inputContainer .errorTooltip .errorContainer{margin-left:initial}.inputContainer:hover .errorTooltip,.inputContainer:hover .errorTooltipTriangle,.inputContainer:hover .errorTooltipTriangleWhite{display:block}.inputContainer.percentageSpacing{flex:60}.inputContainer.percentageSpacing.d30-70{flex:70}.inputContainer.percentageSpacing.d34-66{flex:66}.inputContainer.fixedInputWidth{flex:0 0 auto}.errorContainer{color:#ff8000}.errorContainer.hasCaption{margin-left:calc(40% + 1.25rem)}.errorContainer.hasCaption.d30-70{margin-left:calc(30% + 1.25rem)}.errorContainer.hasCaption.d34-66{margin-left:calc(34% + 1.25rem)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.WithTooltipDirective, selector: "[klpWithTooltip]", inputs: ["klpWithTooltip"] }] });
|
|
184
|
+
FormElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: FormElementComponent, selector: "klp-form-element", inputs: { caption: "caption", direction: "direction", captionSpacing: "captionSpacing", spaceDistribution: "spaceDistribution", swapInputAndCaption: "swapInputAndCaption", errorMessageAsTooltip: "errorMessageAsTooltip" }, queries: [{ propertyName: "fieldInput", first: true, predicate: NG_VALUE_ACCESSOR, descendants: true }], viewQueries: [{ propertyName: "internalComponentRef", first: true, predicate: ["internalComponentRef"], descendants: true }, { propertyName: "tailTpl", first: true, predicate: ["tailTpl"], descendants: true }, { propertyName: "captionDummyForSpaceCalculation", first: true, predicate: ["captionDummyForSpaceCalculation"], descendants: true }], ngImport: i0, template: "<div\n\tclass=\"componentContainer\"\n\t[ngClass]=\"{\n\t\thasCaption: caption || captionRef,\n\t\tvertical: direction === 'vertical',\n\t\thorizontal: direction === 'horizontal',\n\t\treverseOrder: swapInputAndCaption,\n\t\thasErrors: getErrorToShow() && attachedControl.touched,\n\t\tpercentageSpacing: captionSpacing === 'percentages' && spaceDistribution !== 'fixedInputWidth',\n\t\t'd40-60': spaceDistribution === '40-60',\n\t\t'd30-70': spaceDistribution === '30-70',\n\t\t'd34-66': spaceDistribution === '34-66',\n\t\t'fixedInputWidth': spaceDistribution === 'fixedInputWidth'\n\t}\"\n>\n\t<div class=\"errorAboveInputContainer\" *ngIf=\"direction === 'horizontal' && !errorMessageAsTooltip\">\n\t\t<div class=\"spacer\"></div>\n\t\t<ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t</div>\n\n\t<div class=\"captionInputAndError\" #internalComponentRef>\n\t\t<div class=\"captionDummyForSpaceCalculation\" #captionDummyForSpaceCalculation *ngIf=\"hasRightOfCaptionError()\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"captionTpl\" [ngTemplateOutletContext]=\"{forCalculation: true}\"></ng-container>\n\t\t</div>\n\t\t<ng-container [ngTemplateOutlet]=\"captionTpl\"></ng-container>\n\t\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'belowCaption' && !errorMessageAsTooltip\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t<div class=\"inputContainer\">\n\t\t\t<ng-container *ngIf=\"errorMessageAsTooltip && shouldShowErrorMessages() && getErrorToShow()\">\n\t\t\t\t<div class=\"errorTooltipTriangle\"></div>\n\t\t\t\t<div class=\"errorTooltipTriangleWhite\"></div>\n\t\t\t\t<div class=\"errorTooltip\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t</div>\n</div>\n\n<ng-template #captionTpl let-forCalculation=\"forCalculation\">\n\t<div class=\"caption\"\n\t\t*ngIf=\"caption || captionRef\"\n\t\t[ngClass]=\"{\n\t\t\twithErrorRightOfCaption: getErrorLocation() === 'rightOfCaption'\n\t\t}\"\n\t>\n\t\t<div *ngIf=\"captionRef\" class=\"captionRefContainer\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"captionRef\"></ng-container>\n\t\t\t<div *ngIf=\"isRequired()\"> *</div>\n\t\t</div>\n\t\t<div *ngIf=\"!captionRef\" class=\"captionText\">{{caption}}<span *ngIf=\"isRequired()\"> *</span></div>\n\t\t<div class=\"rightOfCaptionError\" *ngIf=\"hasRightOfCaptionError()\" [ngClass]=\"{errorFullyVisible: errorFullyVisible}\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"errorRef\" [ngTemplateOutletContext]=\"{forCalculation: forCalculation}\"></ng-container>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #errorRef let-forCalculation=\"forCalculation\">\n\t<div *ngIf=\"shouldShowErrorMessages() && getErrorToShow()\" class=\"errorContainer\" [elementIsTruncatedCb]=\"forCalculation ? setErrorMessageIsTruncated : null\" [ngClass]=\"{horizontal: direction === 'horizontal', hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70', 'd34-66': spaceDistribution === '34-66'}\">\n\t\t<div *ngIf=\"showDefaultError('min')\">{{substituteParameters(getErrorMessage(\"min\"), {min: attachedControl.errors.min.min})}}</div>\n\t\t<div *ngIf=\"showDefaultError('max')\">{{substituteParameters(getErrorMessage(\"max\"), {max: attachedControl.errors.max.max})}}</div>\n\t\t<div *ngIf=\"showDefaultError('required')\">{{getErrorMessage(\"required\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('email')\">{{getErrorMessage(\"email\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('minlength')\">{{substituteParameters(getErrorMessage(\"minLength\"), {minLength: attachedControl.errors.minlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('maxlength')\">{{substituteParameters(getErrorMessage(\"maxLength\"), {maxLength: attachedControl.errors.maxlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('pattern')\">{{getErrorMessage(\"pattern\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('MatchPassword')\">{{getErrorMessage(\"matchPassword\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('date')\">{{getErrorMessage(\"date\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('message')\">{{attachedControl.errors.message.value}}</div>\n\t\t<div [ngTemplateOutlet]=\"getCustomErrorHandler(getErrorToShow())?.templateRef\"></div>\n\t</div>\n</ng-template>\n\n<ng-template #tailTpl>\n\t<div class=\"errorTooltipContainer\" [ngClass]=\"{alwaysOpen: shouldShowErrorTooltipOpened()}\">\n\t\t<ng-container *ngIf=\"hasHoverableErrorTooltip() || shouldShowErrorTooltipOpened()\">\n\t\t\t<div class=\"errorTooltipTriangle\"></div>\n\t\t\t<div class=\"errorTooltipTriangleWhite\"></div>\n\t\t\t<div class=\"errorTooltip\" [ngClass]=\"{noPointerEvents: !shouldShowErrorTooltipOpened()}\">\n\t\t\t\t<i class=\"closeBtn\" (click)=\"closePopup();\">\u00D7</i>\n\t\t\t\t<ng-container *ngIf=\"getErrorToShow()\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t\t\t<div *ngIf=\"!getErrorToShow() && shouldShowWarningPopup()\">{{getWarningToShow()}}</div>\n\t\t\t</div>\n\t\t</ng-container>\n\t\t<klp-form-warning-icon variant=\"fill\" *ngIf=\"getErrorToShow()\" (click)=\"togglePopup()\"></klp-form-warning-icon>\n\t\t<klp-form-warning-icon variant=\"line\" *ngIf=\"!getErrorToShow() && getWarningToShow()\" (click)=\"togglePopup()\"></klp-form-warning-icon>\n\t</div>\n</ng-template>\n", styles: [":host{display:block}.componentContainer:not(.hasCaption) .captionInputAndError{display:block}.componentContainer:not(.hasCaption) .captionInputAndError .inputContainer{margin-top:0}.componentContainer.hasCaption .errorAboveInputContainer .spacer{display:block}.componentContainer.reverseOrder .captionInputAndError{flex-direction:row-reverse;justify-content:flex-end}.componentContainer.horizontal .captionInputAndError{gap:1rem}.componentContainer.vertical .captionInputAndError{display:block}.componentContainer.vertical .captionInputAndError .inputContainer{margin-top:.3125rem}.componentContainer.vertical .captionInputAndError .errorContainer{margin-left:0}.componentContainer.d40-60 .errorAboveInputContainer .spacer{flex:40 1 0px}.componentContainer.d40-60 .errorAboveInputContainer .errorContainer{flex:60 1 0px}.componentContainer.d40-60 .caption{flex:40 1 0px}.componentContainer.d40-60 .inputContainer{flex:60 1 0px}.componentContainer.d34-66 .errorAboveInputContainer .spacer{flex:34 1 0px}.componentContainer.d34-66 .errorAboveInputContainer .errorContainer{flex:66 1 0px}.componentContainer.d34-66 .caption{flex:34 1 0px}.componentContainer.d34-66 .inputContainer{flex:66 1 0px}.componentContainer.d30-70 .errorAboveInputContainer .spacer{flex:30 1 0px}.componentContainer.d30-70 .errorAboveInputContainer .errorContainer{flex:70 1 0px}.componentContainer.d30-70 .caption{flex:30 1 0px}.componentContainer.d30-70 .inputContainer{flex:70 1 0px}.componentContainer.fixedInputWidth .caption{flex:1 1 0px;overflow:hidden}.componentContainer.fixedInputWidth .inputContainer{flex:0 0 auto}.captionInputAndError{display:flex;align-items:center;min-height:42px}.errorAboveInputContainer{display:flex;gap:1rem}.errorAboveInputContainer .spacer{display:none}.captionDummyForSpaceCalculation .caption.withErrorRightOfCaption{height:0px;overflow:hidden}.captionDummyForSpaceCalculation .caption.withErrorRightOfCaption .rightOfCaptionError{display:block}.captionRefContainer{display:flex}.caption{font-weight:700;flex:0 0 auto;color:#515365;overflow:hidden}.caption.percentageSpacing{flex:40 1 0px}.caption.percentageSpacing.d30-70{flex:30 1 0px}.caption.percentageSpacing.d34-66{flex:34 1 0px}.caption.withErrorRightOfCaption{display:flex;justify-content:space-between;gap:1rem}.caption.withErrorRightOfCaption .captionText{flex:1 2 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.caption.withErrorRightOfCaption .rightOfCaptionError{display:none;max-width:40%;font-weight:400;overflow:hidden;flex:1 0 auto;text-align:right}.caption.withErrorRightOfCaption .rightOfCaptionError.errorFullyVisible{display:block}.caption.withErrorRightOfCaption .rightOfCaptionError ::ng-deep *{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inputContainer{position:relative;flex:1}.inputContainer .errorTooltipContainer{position:relative}.inputContainer .errorTooltipContainer.alwaysOpen .errorTooltipTriangle,.inputContainer .errorTooltipContainer.alwaysOpen .errorTooltipTriangleWhite,.inputContainer .errorTooltipContainer.alwaysOpen .errorTooltip,.inputContainer .errorTooltipContainer.alwaysOpen .closeBtn{display:block}.inputContainer .errorTooltipContainer.alwaysOpen .errorTooltip{padding-right:1.4rem}.inputContainer .errorTooltipContainer klp-form-warning-icon{cursor:pointer}.inputContainer .errorTooltipTriangle{display:none;z-index:1;position:absolute;right:0;transform:translate(-.15rem,calc(-100% - .1rem)) scaleX(.8);width:0px;height:0px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid rgba(0,0,0,.13)}.inputContainer .errorTooltipTriangleWhite{display:none;z-index:3;position:absolute;right:0;transform:translate(-.15rem,calc(-100% - .1rem - 2px)) scaleX(.8);width:0px;height:0px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid white}.inputContainer .errorTooltip{display:none;word-wrap:break-word;position:absolute;top:-.6rem;right:-.625rem;background:white;transform:translateY(-100%);width:12rem;white-space:break-spaces;padding:.4rem .6rem;border-radius:.4rem;border:1px solid rgba(0,0,0,.13);box-shadow:#00000021 2px 3px 10px}.inputContainer .errorTooltip.noPointerEvents{pointer-events:none}.inputContainer .errorTooltip .closeBtn{display:none;position:absolute;top:.2rem;right:.2rem;padding:.2rem .4rem;cursor:pointer;color:#666;font-size:1rem}.inputContainer .errorTooltip .closeBtn:hover{color:#515365}.inputContainer:hover .errorTooltipContainer .errorTooltip,.inputContainer:hover .errorTooltipContainer .errorTooltipTriangle,.inputContainer:hover .errorTooltipContainer .errorTooltipTriangleWhite{display:block}.errorContainer{color:#ff8000}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.WarningIconComponent, selector: "klp-form-warning-icon", inputs: ["variant"] }, { kind: "directive", type: i4.ElementIsTruncatedCbComponent, selector: "[elementIsTruncatedCb]", inputs: ["elementIsTruncatedCb"] }] });
|
|
103
185
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: FormElementComponent, decorators: [{
|
|
104
186
|
type: Component,
|
|
105
|
-
args: [{ selector: 'klp-form-element', template: "<ng-template #errorRef>\n\t<div *ngIf=\"shouldShowErrorMessages() && getErrorToShow()\" class=\"errorContainer\" [ngClass]=\"{hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70', 'd34-66': spaceDistribution === '34-66'}\" [klpWithTooltip]=\"!errorMessageAsTooltip && getErrorLocation() === 'rightOfCaption'\">\n\t\t<div *ngIf=\"showDefaultError('min')\">{{substituteParameters(getErrorMessage(\"min\"), {min: attachedControl.errors.min.min})}}</div>\n\t\t<div *ngIf=\"showDefaultError('max')\">{{substituteParameters(getErrorMessage(\"max\"), {max: attachedControl.errors.max.max})}}</div>\n\t\t<div *ngIf=\"showDefaultError('required')\">{{getErrorMessage(\"required\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('email')\">{{getErrorMessage(\"email\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('minlength')\">{{substituteParameters(getErrorMessage(\"minLength\"), {minLength: attachedControl.errors.minlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('maxlength')\">{{substituteParameters(getErrorMessage(\"maxLength\"), {maxLength: attachedControl.errors.maxlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('pattern')\">{{getErrorMessage(\"pattern\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('MatchPassword')\">{{getErrorMessage(\"matchPassword\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('date')\">{{getErrorMessage(\"date\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('message')\">{{attachedControl.errors.message.value}}</div>\n\t\t<div [ngTemplateOutlet]=\"getCustomErrorHandler(getErrorToShow())?.templateRef\"></div>\n\t</div>\n</ng-template>\n\n<ng-container *ngIf=\"direction === 'horizontal' && !errorMessageAsTooltip\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\n<div class=\"componentContainer\" [ngClass]=\"{hasCaption: caption || captionRef, vertical: direction === 'vertical', reverseOrder: swapInputAndCaption}\" #internalComponentRef>\n\t<div class=\"caption\" *ngIf=\"caption || captionRef\"\n\t\t[ngClass]=\"{\n\t\t\thasErrors: getErrorToShow() && attachedControl.touched,\n\t\t\tpercentageSpacing: captionSpacing === 'percentages' && spaceDistribution !== 'fixedInputWidth',\n\t\t\t'd30-70': spaceDistribution === '30-70',\n\t\t\t'd34-66': spaceDistribution === '34-66',\n\t\t\t'fixedInputWidth': spaceDistribution === 'fixedInputWidth',\n\t\t\twithErrorRightOfCaption: getErrorLocation() === 'rightOfCaption'\n\t\t}\"\n\t>\n\t\t<div *ngIf=\"captionRef\" class=\"captionRefContainer\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"captionRef\"></ng-container>\n\t\t\t<div *ngIf=\"isRequired()\"> *</div>\n\t\t</div>\n\t\t<div *ngIf=\"!captionRef\" class=\"captionText\">{{caption}}<span *ngIf=\"isRequired()\"> *</span></div>\n\t\t<div class=\"rightOfCaptionError\">\n\t\t\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'rightOfCaption' && !errorMessageAsTooltip\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t</div>\n\t</div>\n\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'belowCaption' && !errorMessageAsTooltip\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t<div class=\"inputContainer\" [ngClass]=\"{\n\t\tpercentageSpacing: captionSpacing === 'percentages' && spaceDistribution !== 'fixedInputWidth',\n\t\t'd30-70': spaceDistribution === '30-70',\n\t\t'd34-66': spaceDistribution === '34-66',\n\t\t'fixedInputWidth': spaceDistribution === 'fixedInputWidth'\n\t}\">\n\t\t<ng-container *ngIf=\"errorMessageAsTooltip && shouldShowErrorMessages() && getErrorToShow()\">\n\t\t\t<div class=\"errorTooltipTriangle\"></div>\n\t\t\t<div class=\"errorTooltipTriangleWhite\"></div>\n\t\t\t<div class=\"errorTooltip\">\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t\t</div>\n\t\t</ng-container>\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n", styles: [":host{display:block}.componentContainer{display:flex;align-items:center;min-height:42px}.componentContainer:not(.hasCaption){display:block}.componentContainer:not(.hasCaption) .inputContainer{margin-top:0}.componentContainer.reverseOrder{flex-direction:row-reverse;justify-content:flex-end}.componentContainer.vertical{display:block}.componentContainer.vertical .inputContainer{margin-top:.3125rem}.componentContainer.vertical .errorContainer{margin-left:0}.componentContainer.vertical .caption{padding-right:0}.captionRefContainer{display:flex}.caption{font-weight:700;flex:0 0 auto;padding-right:1.25rem;color:#515365}.caption.percentageSpacing{flex:40}.caption.percentageSpacing.d30-70{flex:30}.caption.percentageSpacing.d34-66{flex:34}.caption.fixedInputWidth{flex:1 1 0px;overflow:hidden}.caption.hasErrors{color:#ff8000}.caption.hasErrors.withErrorRightOfCaption .rightOfCaptionError{display:block}.caption.withErrorRightOfCaption{display:flex;justify-content:space-between;gap:1rem}.caption.withErrorRightOfCaption .captionText{flex:1 2 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.caption.withErrorRightOfCaption .rightOfCaptionError{display:none;font-weight:400;overflow:hidden;flex:1 1 auto;text-align:right}.caption.withErrorRightOfCaption .rightOfCaptionError ::ng-deep *{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inputContainer{position:relative;flex:1}.inputContainer .errorTooltipTriangle{z-index:1;position:absolute;display:none;right:0;transform:translate(-50%,calc(-100% + .1rem));width:0px;height:0px;border-left:12px solid transparent;border-right:12px solid transparent;border-top:12px solid rgba(255,128,0,.125)}.inputContainer .errorTooltipTriangleWhite{z-index:3;position:absolute;display:none;right:0;transform:translate(-50%,calc(-100% + .1rem - 2px));width:0px;height:0px;border-left:12px solid transparent;border-right:12px solid transparent;border-top:12px solid white}.inputContainer .errorTooltip{position:absolute;top:-.6rem;right:0;display:none;z-index:2;color:#515365;transform:translateY(-100%);max-width:20rem;white-space:break-spaces;background-color:#fff;border:1px solid rgba(255,128,0,.125);box-shadow:#ff800020 2px 3px 10px;padding:.3rem .5rem;box-sizing:border-box;border-radius:3px}.inputContainer .errorTooltip .errorContainer{margin-left:initial}.inputContainer:hover .errorTooltip,.inputContainer:hover .errorTooltipTriangle,.inputContainer:hover .errorTooltipTriangleWhite{display:block}.inputContainer.percentageSpacing{flex:60}.inputContainer.percentageSpacing.d30-70{flex:70}.inputContainer.percentageSpacing.d34-66{flex:66}.inputContainer.fixedInputWidth{flex:0 0 auto}.errorContainer{color:#ff8000}.errorContainer.hasCaption{margin-left:calc(40% + 1.25rem)}.errorContainer.hasCaption.d30-70{margin-left:calc(30% + 1.25rem)}.errorContainer.hasCaption.d34-66{margin-left:calc(34% + 1.25rem)}\n"] }]
|
|
187
|
+
args: [{ selector: 'klp-form-element', template: "<div\n\tclass=\"componentContainer\"\n\t[ngClass]=\"{\n\t\thasCaption: caption || captionRef,\n\t\tvertical: direction === 'vertical',\n\t\thorizontal: direction === 'horizontal',\n\t\treverseOrder: swapInputAndCaption,\n\t\thasErrors: getErrorToShow() && attachedControl.touched,\n\t\tpercentageSpacing: captionSpacing === 'percentages' && spaceDistribution !== 'fixedInputWidth',\n\t\t'd40-60': spaceDistribution === '40-60',\n\t\t'd30-70': spaceDistribution === '30-70',\n\t\t'd34-66': spaceDistribution === '34-66',\n\t\t'fixedInputWidth': spaceDistribution === 'fixedInputWidth'\n\t}\"\n>\n\t<div class=\"errorAboveInputContainer\" *ngIf=\"direction === 'horizontal' && !errorMessageAsTooltip\">\n\t\t<div class=\"spacer\"></div>\n\t\t<ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t</div>\n\n\t<div class=\"captionInputAndError\" #internalComponentRef>\n\t\t<div class=\"captionDummyForSpaceCalculation\" #captionDummyForSpaceCalculation *ngIf=\"hasRightOfCaptionError()\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"captionTpl\" [ngTemplateOutletContext]=\"{forCalculation: true}\"></ng-container>\n\t\t</div>\n\t\t<ng-container [ngTemplateOutlet]=\"captionTpl\"></ng-container>\n\t\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'belowCaption' && !errorMessageAsTooltip\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t<div class=\"inputContainer\">\n\t\t\t<ng-container *ngIf=\"errorMessageAsTooltip && shouldShowErrorMessages() && getErrorToShow()\">\n\t\t\t\t<div class=\"errorTooltipTriangle\"></div>\n\t\t\t\t<div class=\"errorTooltipTriangleWhite\"></div>\n\t\t\t\t<div class=\"errorTooltip\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t</div>\n</div>\n\n<ng-template #captionTpl let-forCalculation=\"forCalculation\">\n\t<div class=\"caption\"\n\t\t*ngIf=\"caption || captionRef\"\n\t\t[ngClass]=\"{\n\t\t\twithErrorRightOfCaption: getErrorLocation() === 'rightOfCaption'\n\t\t}\"\n\t>\n\t\t<div *ngIf=\"captionRef\" class=\"captionRefContainer\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"captionRef\"></ng-container>\n\t\t\t<div *ngIf=\"isRequired()\"> *</div>\n\t\t</div>\n\t\t<div *ngIf=\"!captionRef\" class=\"captionText\">{{caption}}<span *ngIf=\"isRequired()\"> *</span></div>\n\t\t<div class=\"rightOfCaptionError\" *ngIf=\"hasRightOfCaptionError()\" [ngClass]=\"{errorFullyVisible: errorFullyVisible}\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"errorRef\" [ngTemplateOutletContext]=\"{forCalculation: forCalculation}\"></ng-container>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #errorRef let-forCalculation=\"forCalculation\">\n\t<div *ngIf=\"shouldShowErrorMessages() && getErrorToShow()\" class=\"errorContainer\" [elementIsTruncatedCb]=\"forCalculation ? setErrorMessageIsTruncated : null\" [ngClass]=\"{horizontal: direction === 'horizontal', hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70', 'd34-66': spaceDistribution === '34-66'}\">\n\t\t<div *ngIf=\"showDefaultError('min')\">{{substituteParameters(getErrorMessage(\"min\"), {min: attachedControl.errors.min.min})}}</div>\n\t\t<div *ngIf=\"showDefaultError('max')\">{{substituteParameters(getErrorMessage(\"max\"), {max: attachedControl.errors.max.max})}}</div>\n\t\t<div *ngIf=\"showDefaultError('required')\">{{getErrorMessage(\"required\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('email')\">{{getErrorMessage(\"email\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('minlength')\">{{substituteParameters(getErrorMessage(\"minLength\"), {minLength: attachedControl.errors.minlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('maxlength')\">{{substituteParameters(getErrorMessage(\"maxLength\"), {maxLength: attachedControl.errors.maxlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('pattern')\">{{getErrorMessage(\"pattern\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('MatchPassword')\">{{getErrorMessage(\"matchPassword\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('date')\">{{getErrorMessage(\"date\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('message')\">{{attachedControl.errors.message.value}}</div>\n\t\t<div [ngTemplateOutlet]=\"getCustomErrorHandler(getErrorToShow())?.templateRef\"></div>\n\t</div>\n</ng-template>\n\n<ng-template #tailTpl>\n\t<div class=\"errorTooltipContainer\" [ngClass]=\"{alwaysOpen: shouldShowErrorTooltipOpened()}\">\n\t\t<ng-container *ngIf=\"hasHoverableErrorTooltip() || shouldShowErrorTooltipOpened()\">\n\t\t\t<div class=\"errorTooltipTriangle\"></div>\n\t\t\t<div class=\"errorTooltipTriangleWhite\"></div>\n\t\t\t<div class=\"errorTooltip\" [ngClass]=\"{noPointerEvents: !shouldShowErrorTooltipOpened()}\">\n\t\t\t\t<i class=\"closeBtn\" (click)=\"closePopup();\">\u00D7</i>\n\t\t\t\t<ng-container *ngIf=\"getErrorToShow()\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t\t\t<div *ngIf=\"!getErrorToShow() && shouldShowWarningPopup()\">{{getWarningToShow()}}</div>\n\t\t\t</div>\n\t\t</ng-container>\n\t\t<klp-form-warning-icon variant=\"fill\" *ngIf=\"getErrorToShow()\" (click)=\"togglePopup()\"></klp-form-warning-icon>\n\t\t<klp-form-warning-icon variant=\"line\" *ngIf=\"!getErrorToShow() && getWarningToShow()\" (click)=\"togglePopup()\"></klp-form-warning-icon>\n\t</div>\n</ng-template>\n", styles: [":host{display:block}.componentContainer:not(.hasCaption) .captionInputAndError{display:block}.componentContainer:not(.hasCaption) .captionInputAndError .inputContainer{margin-top:0}.componentContainer.hasCaption .errorAboveInputContainer .spacer{display:block}.componentContainer.reverseOrder .captionInputAndError{flex-direction:row-reverse;justify-content:flex-end}.componentContainer.horizontal .captionInputAndError{gap:1rem}.componentContainer.vertical .captionInputAndError{display:block}.componentContainer.vertical .captionInputAndError .inputContainer{margin-top:.3125rem}.componentContainer.vertical .captionInputAndError .errorContainer{margin-left:0}.componentContainer.d40-60 .errorAboveInputContainer .spacer{flex:40 1 0px}.componentContainer.d40-60 .errorAboveInputContainer .errorContainer{flex:60 1 0px}.componentContainer.d40-60 .caption{flex:40 1 0px}.componentContainer.d40-60 .inputContainer{flex:60 1 0px}.componentContainer.d34-66 .errorAboveInputContainer .spacer{flex:34 1 0px}.componentContainer.d34-66 .errorAboveInputContainer .errorContainer{flex:66 1 0px}.componentContainer.d34-66 .caption{flex:34 1 0px}.componentContainer.d34-66 .inputContainer{flex:66 1 0px}.componentContainer.d30-70 .errorAboveInputContainer .spacer{flex:30 1 0px}.componentContainer.d30-70 .errorAboveInputContainer .errorContainer{flex:70 1 0px}.componentContainer.d30-70 .caption{flex:30 1 0px}.componentContainer.d30-70 .inputContainer{flex:70 1 0px}.componentContainer.fixedInputWidth .caption{flex:1 1 0px;overflow:hidden}.componentContainer.fixedInputWidth .inputContainer{flex:0 0 auto}.captionInputAndError{display:flex;align-items:center;min-height:42px}.errorAboveInputContainer{display:flex;gap:1rem}.errorAboveInputContainer .spacer{display:none}.captionDummyForSpaceCalculation .caption.withErrorRightOfCaption{height:0px;overflow:hidden}.captionDummyForSpaceCalculation .caption.withErrorRightOfCaption .rightOfCaptionError{display:block}.captionRefContainer{display:flex}.caption{font-weight:700;flex:0 0 auto;color:#515365;overflow:hidden}.caption.percentageSpacing{flex:40 1 0px}.caption.percentageSpacing.d30-70{flex:30 1 0px}.caption.percentageSpacing.d34-66{flex:34 1 0px}.caption.withErrorRightOfCaption{display:flex;justify-content:space-between;gap:1rem}.caption.withErrorRightOfCaption .captionText{flex:1 2 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.caption.withErrorRightOfCaption .rightOfCaptionError{display:none;max-width:40%;font-weight:400;overflow:hidden;flex:1 0 auto;text-align:right}.caption.withErrorRightOfCaption .rightOfCaptionError.errorFullyVisible{display:block}.caption.withErrorRightOfCaption .rightOfCaptionError ::ng-deep *{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inputContainer{position:relative;flex:1}.inputContainer .errorTooltipContainer{position:relative}.inputContainer .errorTooltipContainer.alwaysOpen .errorTooltipTriangle,.inputContainer .errorTooltipContainer.alwaysOpen .errorTooltipTriangleWhite,.inputContainer .errorTooltipContainer.alwaysOpen .errorTooltip,.inputContainer .errorTooltipContainer.alwaysOpen .closeBtn{display:block}.inputContainer .errorTooltipContainer.alwaysOpen .errorTooltip{padding-right:1.4rem}.inputContainer .errorTooltipContainer klp-form-warning-icon{cursor:pointer}.inputContainer .errorTooltipTriangle{display:none;z-index:1;position:absolute;right:0;transform:translate(-.15rem,calc(-100% - .1rem)) scaleX(.8);width:0px;height:0px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid rgba(0,0,0,.13)}.inputContainer .errorTooltipTriangleWhite{display:none;z-index:3;position:absolute;right:0;transform:translate(-.15rem,calc(-100% - .1rem - 2px)) scaleX(.8);width:0px;height:0px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid white}.inputContainer .errorTooltip{display:none;word-wrap:break-word;position:absolute;top:-.6rem;right:-.625rem;background:white;transform:translateY(-100%);width:12rem;white-space:break-spaces;padding:.4rem .6rem;border-radius:.4rem;border:1px solid rgba(0,0,0,.13);box-shadow:#00000021 2px 3px 10px}.inputContainer .errorTooltip.noPointerEvents{pointer-events:none}.inputContainer .errorTooltip .closeBtn{display:none;position:absolute;top:.2rem;right:.2rem;padding:.2rem .4rem;cursor:pointer;color:#666;font-size:1rem}.inputContainer .errorTooltip .closeBtn:hover{color:#515365}.inputContainer:hover .errorTooltipContainer .errorTooltip,.inputContainer:hover .errorTooltipContainer .errorTooltipTriangle,.inputContainer:hover .errorTooltipContainer .errorTooltipTriangleWhite{display:block}.errorContainer{color:#ff8000}\n"] }]
|
|
106
188
|
}], ctorParameters: function () { return [{ type: i1.FormComponent, decorators: [{
|
|
107
189
|
type: Optional
|
|
108
190
|
}] }, { type: undefined, decorators: [{
|
|
@@ -125,5 +207,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
125
207
|
}], internalComponentRef: [{
|
|
126
208
|
type: ViewChild,
|
|
127
209
|
args: ['internalComponentRef']
|
|
210
|
+
}], tailTpl: [{
|
|
211
|
+
type: ViewChild,
|
|
212
|
+
args: ['tailTpl']
|
|
213
|
+
}], captionDummyForSpaceCalculation: [{
|
|
214
|
+
type: ViewChild,
|
|
215
|
+
args: ['captionDummyForSpaceCalculation']
|
|
216
|
+
}], fieldInput: [{
|
|
217
|
+
type: ContentChild,
|
|
218
|
+
args: [NG_VALUE_ACCESSOR]
|
|
128
219
|
}] } });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBSXhHLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7QUFJN0MsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQXNCLHFCQUFxQixDQUFDLENBQUM7QUFFbEcsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXNCO0lBQ3hELEdBQUcsRUFBRSxnQ0FBZ0M7SUFDckMsR0FBRyxFQUFFLGlDQUFpQztJQUN0QyxRQUFRLEVBQUUsVUFBVTtJQUNwQixLQUFLLEVBQUUsMkJBQTJCO0lBQ2xDLFNBQVMsRUFBRSxnREFBZ0Q7SUFDM0QsU0FBUyxFQUFFLGlEQUFpRDtJQUM1RCxPQUFPLEVBQUUseUJBQXlCO0lBQ2xDLGFBQWEsRUFBRSxzQkFBc0I7SUFDckMsSUFBSSxFQUFFLG9CQUFvQjtDQUMxQixDQUFDO0FBT0YsTUFBTSxPQUFPLG9CQUFvQjtJQWVoQyxZQUNzQixNQUFxQixFQUNPLGNBQW1DO1FBRC9ELFdBQU0sR0FBTixNQUFNLENBQWU7UUFDTyxtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7UUFkckUsY0FBUyxHQUE4QixZQUFZLENBQUM7UUFDcEQsbUJBQWMsR0FBMkIsYUFBYSxDQUFDO1FBQ3ZELHNCQUFpQixHQUFvRCxPQUFPLENBQUM7UUFDN0Usd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3JDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUloRCxrQkFBYSxHQUFzQixzQkFBc0IsQ0FBQztRQUMxRCx3QkFBbUIsR0FBc0QsRUFBRSxDQUFDO0lBTWhGLENBQUM7SUFFRyx1QkFBdUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLGlCQUFpQixLQUFLLEtBQUssQ0FBQztJQUNqRCxDQUFDO0lBRU0sb0JBQW9CLENBQUMsT0FBZSxFQUFFLFVBQStCO1FBQzNFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDbEQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVNLGVBQWUsQ0FBQyxXQUErQixFQUFFLFFBQWdDLElBQUk7UUFDM0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxXQUErQjtRQUN2RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxrQkFBa0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzdCLENBQUM7SUFFTSxnQkFBZ0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25CLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsV0FBdUI7UUFDakUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFDLEtBQUssRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSxlQUFlLENBQUMsV0FBdUI7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7UUFDYixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRTtZQUMzRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQWE7UUFDbEMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQUk7UUFDdkIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUMxQyxPQUFPLElBQUksQ0FBQztTQUNaO2FBQU07WUFDTixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDakQ7SUFDRixDQUFDO0lBRUQsUUFBUTtRQUNQLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELCtEQUErRDtRQUMvRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsVUFBVTtRQUNULElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQTRCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxnQkFBZ0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLG9CQUFvQixJQUFJLGNBQWMsQ0FBQztJQUM1RCxDQUFDOztpSEF0R1csb0JBQW9CLCtEQWlCdkIsbUJBQW1CO3FHQWpCaEIsb0JBQW9CLG9aQzNCakMsaXdIQXVEQTsyRkQ1QmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNDLGtCQUFrQjs7MEJBb0J6QixRQUFROzswQkFDVCxNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQUcsUUFBUTs0Q0FmdkIsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBQ29DLG9CQUFvQjtzQkFBN0QsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgSW5wdXQsIE9wdGlvbmFsLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtWYWx1ZUFjY2Vzc29yQmFzZX0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdmFsdWUtYWNjZXNzb3ItYmFzZS92YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge0N1c3RvbUVycm9yTWVzc2FnZXMsIEZvcm1FcnJvck1lc3NhZ2VzfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge2lzVmFsdWVTZXR9IGZyb20gJy4uLy4uL3V0aWwvdmFsdWVzJztcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vZm9ybS5jb21wb25lbnQnO1xuXG5cbmV4cG9ydCBjb25zdCBGT1JNX0VSUk9SX01FU1NBR0VTID0gbmV3IEluamVjdGlvblRva2VuPEN1c3RvbUVycm9yTWVzc2FnZXM+KCdmb3JtLmVycm9yLm1lc3NhZ2VzJyk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VSUk9SX01FU1NBR0VTOiBGb3JtRXJyb3JNZXNzYWdlcyA9IHtcblx0bWluOiAnVXNlIGEgbnVtYmVyIGxhcmdlciB0aGFuICVtaW4lJyxcblx0bWF4OiAnVXNlIGEgbnVtYmVyIHNtYWxsZXIgdGhhbiAlbWF4JScsXG5cdHJlcXVpcmVkOiAnUmVxdWlyZWQnLFxuXHRlbWFpbDogJ1VzZSBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxuXHRtaW5MZW5ndGg6ICdIYXMgdG8gYmUgbG9uZ2VyIHRoYW4gJW1pbkxlbmd0aCUgY2hhcmFjdGVyKHMpJyxcblx0bWF4TGVuZ3RoOiAnSGFzIHRvIGJlIHNob3J0ZXIgdGhhbiAlbWF4TGVuZ3RoJSBjaGFyYWN0ZXIocyknLFxuXHRwYXR0ZXJuOiAnVGhpcyBpbnB1dCBpcyBub3QgdmFsaWQnLFxuXHRtYXRjaFBhc3N3b3JkOiAnUGFzc3dvcmRzIG11c3QgbWF0Y2gnLFxuXHRkYXRlOiAnRW50ZXIgYSB2YWxpZCBkYXRlJyxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLWVsZW1lbnQnLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS1lbGVtZW50LmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZm9ybS1lbGVtZW50LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50Q29tcG9uZW50IHtcblx0cHVibGljIGF0dGFjaGVkQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXHRASW5wdXQoKSBwdWJsaWMgY2FwdGlvbjogc3RyaW5nO1xuXHRASW5wdXQoKSBwdWJsaWMgZGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuXHRASW5wdXQoKSBwdWJsaWMgY2FwdGlvblNwYWNpbmc6ICdwZXJjZW50YWdlcycgfCAnbm9uZScgPSAncGVyY2VudGFnZXMnO1xuXHRASW5wdXQoKSBwdWJsaWMgc3BhY2VEaXN0cmlidXRpb246ICc0MC02MCcgfCAnMzQtNjYnIHwgJzMwLTcwJyB8ICdmaXhlZElucHV0V2lkdGgnID0gJzQwLTYwJztcblx0QElucHV0KCkgcHVibGljIHN3YXBJbnB1dEFuZENhcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblx0QElucHV0KCkgcHVibGljIGVycm9yTWVzc2FnZUFzVG9vbHRpcDogYm9vbGVhbiA9IGZhbHNlO1xuXHRAVmlld0NoaWxkKCdpbnRlcm5hbENvbXBvbmVudFJlZicpIHB1YmxpYyBpbnRlcm5hbENvbXBvbmVudFJlZjogRWxlbWVudFJlZjtcblxuXHRwdWJsaWMgY2FwdGlvblJlZjogRWxlbWVudFJlZjtcblx0cHVibGljIGVycm9yTWVzc2FnZXM6IEZvcm1FcnJvck1lc3NhZ2VzID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUztcblx0cHVibGljIGN1c3RvbUVycm9ySGFuZGxlcnM6IEFycmF5PHsgZXJyb3I6IHN0cmluZzsgdGVtcGxhdGVSZWY6IEVsZW1lbnRSZWYgfT4gPSBbXTtcblx0cHJpdmF0ZSBpbnB1dDogVmFsdWVBY2Nlc3NvckJhc2U8YW55PjtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHQgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnQ6IEZvcm1Db21wb25lbnQsXG5cdFx0QEluamVjdChGT1JNX0VSUk9SX01FU1NBR0VTKSBAT3B0aW9uYWwoKSBwcml2YXRlIGN1c3RvbU1lc3NhZ2VzOiBDdXN0b21FcnJvck1lc3NhZ2VzLFxuXHQpIHt9XG5cblx0cHVibGljIHNob3VsZFNob3dFcnJvck1lc3NhZ2VzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnBhcmVudD8uc2hvd0Vycm9yTWVzc2FnZXMgIT09IGZhbHNlO1xuXHR9XG5cblx0cHVibGljIHN1YnN0aXR1dGVQYXJhbWV0ZXJzKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLnJlZHVjZSgobXNnLCBrZXkpID0+IHtcblx0XHRcdHJldHVybiBtc2cucmVwbGFjZShgJSR7a2V5fSVgLCBwYXJhbWV0ZXJzW2tleV0pO1xuXHRcdH0sIG1lc3NhZ2UpO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLCBpbnB1dDogVmFsdWVBY2Nlc3NvckJhc2U8YW55PiA9IG51bGwpOiB2b2lkIHtcblx0XHR0aGlzLmF0dGFjaGVkQ29udHJvbCA9IGZvcm1Db250cm9sO1xuXHRcdHRoaXMucGFyZW50LnJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbCwgdGhpcyk7XG5cdFx0dGhpcy5pbnB1dCA9IGlucHV0O1xuXHR9XG5cblx0cHVibGljIHVucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLmF0dGFjaGVkQ29udHJvbCA9IG51bGw7XG5cdFx0dGhpcy5wYXJlbnQudW5yZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2wpO1xuXHR9XG5cblx0cHVibGljIGdldEF0dGFjaGVkQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuXHRcdHJldHVybiB0aGlzLmF0dGFjaGVkQ29udHJvbDtcblx0fVxuXG5cdHB1YmxpYyBnZXRBdHRhY2hlZElucHV0KCk6IFZhbHVlQWNjZXNzb3JCYXNlPGFueT4ge1xuXHRcdHJldHVybiB0aGlzLmlucHV0O1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyRXJyb3JIYW5kbGVyKGVycm9yOiBzdHJpbmcsIHRlbXBsYXRlUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG5cdFx0dGhpcy5jdXN0b21FcnJvckhhbmRsZXJzLnB1c2goe2Vycm9yLCB0ZW1wbGF0ZVJlZn0pO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ2FwdGlvbih0ZW1wbGF0ZVJlZjogRWxlbWVudFJlZik6IHZvaWQge1xuXHRcdHRoaXMuY2FwdGlvblJlZiA9IHRlbXBsYXRlUmVmO1xuXHR9XG5cblx0Z2V0RXJyb3JUb1Nob3coKTogc3RyaW5nIHtcblx0XHRpZiAodGhpcy5hdHRhY2hlZENvbnRyb2w/LnRvdWNoZWQgPT09IHRydWUgJiYgdGhpcy5hdHRhY2hlZENvbnRyb2w/LmVycm9ycykge1xuXHRcdFx0cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuYXR0YWNoZWRDb250cm9sPy5lcnJvcnMpWzBdO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGdldEN1c3RvbUVycm9ySGFuZGxlcihlcnJvcjogc3RyaW5nKTogeyBlcnJvcjogc3RyaW5nOyB0ZW1wbGF0ZVJlZjogRWxlbWVudFJlZiB9IHtcblx0XHRyZXR1cm4gdGhpcy5jdXN0b21FcnJvckhhbmRsZXJzLmZpbmQoKGUpID0+IGUuZXJyb3IgPT09IGVycm9yKTtcblx0fVxuXG5cdHNob3dEZWZhdWx0RXJyb3IoZXJyb3I6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmdldEVycm9yVG9TaG93KCkgPT09IGVycm9yICYmICF0aGlzLmN1c3RvbUVycm9ySGFuZGxlcnMuc29tZSgoZSkgPT4gZS5lcnJvciA9PT0gZXJyb3IpO1xuXHR9XG5cblx0Z2V0U2Nyb2xsYWJsZVBhcmVudChub2RlKTogYW55IHtcblx0XHRpZiAobm9kZSA9PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0aWYgKG5vZGUuc2Nyb2xsSGVpZ2h0ID4gbm9kZS5jbGllbnRIZWlnaHQpIHtcblx0XHRcdHJldHVybiBub2RlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRTY3JvbGxhYmxlUGFyZW50KG5vZGUucGFyZW50Tm9kZSk7XG5cdFx0fVxuXHR9XG5cblx0c2Nyb2xsVG8oKTogdm9pZHtcblx0XHR0aGlzLmludGVybmFsQ29tcG9uZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XG5cdFx0Ly8gdG8gZ2l2ZSBzb21lIGJyZWF0aGluZyByb29tLCB3ZSBzY3JvbGwgMTAwcHggbW9yZSB0byB0aGUgdG9wXG5cdFx0dGhpcy5nZXRTY3JvbGxhYmxlUGFyZW50KHRoaXMuaW50ZXJuYWxDb21wb25lbnRSZWYubmF0aXZlRWxlbWVudCk/LnNjcm9sbEJ5KDAsIC0xMDApO1xuXHR9XG5cblx0aXNSZXF1aXJlZCgpOiBib29sZWFuIHtcblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLmlucHV0KSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuaW5wdXQuaGFzVmFsaWRhdG9yKCdyZXF1aXJlZCcpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRnZXRFcnJvck1lc3NhZ2Uoa2V5OiBrZXlvZiBGb3JtRXJyb3JNZXNzYWdlcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuY3VzdG9tTWVzc2FnZXM/LltrZXldPy4oKSA/PyB0aGlzLmVycm9yTWVzc2FnZXNba2V5XTtcblx0fVxuXG5cdHB1YmxpYyBnZXRFcnJvckxvY2F0aW9uKCk6ICdiZWxvd0NhcHRpb24nIHwgJ3JpZ2h0T2ZDYXB0aW9uJyB7XG5cdFx0cmV0dXJuIHRoaXMucGFyZW50Py5lcnJvck1lc3NhZ2VMb2NhdGlvbiA/PyAnYmVsb3dDYXB0aW9uJztcblx0fVxufVxuIiwiPG5nLXRlbXBsYXRlICNlcnJvclJlZj5cblx0PGRpdiAqbmdJZj1cInNob3VsZFNob3dFcnJvck1lc3NhZ2VzKCkgJiYgZ2V0RXJyb3JUb1Nob3coKVwiIGNsYXNzPVwiZXJyb3JDb250YWluZXJcIiBbbmdDbGFzc109XCJ7aGFzQ2FwdGlvbjogY2FwdGlvbiB8fCBjYXB0aW9uUmVmLCAnZDMwLTcwJzogc3BhY2VEaXN0cmlidXRpb24gPT09ICczMC03MCcsICdkMzQtNjYnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJzM0LTY2J31cIiBba2xwV2l0aFRvb2x0aXBdPVwiIWVycm9yTWVzc2FnZUFzVG9vbHRpcCAmJiBnZXRFcnJvckxvY2F0aW9uKCkgPT09ICdyaWdodE9mQ2FwdGlvbidcIj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignbWluJylcIj57e3N1YnN0aXR1dGVQYXJhbWV0ZXJzKGdldEVycm9yTWVzc2FnZShcIm1pblwiKSwge21pbjogYXR0YWNoZWRDb250cm9sLmVycm9ycy5taW4ubWlufSl9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdtYXgnKVwiPnt7c3Vic3RpdHV0ZVBhcmFtZXRlcnMoZ2V0RXJyb3JNZXNzYWdlKFwibWF4XCIpLCB7bWF4OiBhdHRhY2hlZENvbnRyb2wuZXJyb3JzLm1heC5tYXh9KX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ3JlcXVpcmVkJylcIj57e2dldEVycm9yTWVzc2FnZShcInJlcXVpcmVkXCIpfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignZW1haWwnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwiZW1haWxcIil9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdtaW5sZW5ndGgnKVwiPnt7c3Vic3RpdHV0ZVBhcmFtZXRlcnMoZ2V0RXJyb3JNZXNzYWdlKFwibWluTGVuZ3RoXCIpLCB7bWluTGVuZ3RoOiBhdHRhY2hlZENvbnRyb2wuZXJyb3JzLm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aH0pfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignbWF4bGVuZ3RoJylcIj57e3N1YnN0aXR1dGVQYXJhbWV0ZXJzKGdldEVycm9yTWVzc2FnZShcIm1heExlbmd0aFwiKSwge21heExlbmd0aDogYXR0YWNoZWRDb250cm9sLmVycm9ycy5tYXhsZW5ndGgucmVxdWlyZWRMZW5ndGh9KX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ3BhdHRlcm4nKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwicGF0dGVyblwiKX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ01hdGNoUGFzc3dvcmQnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwibWF0Y2hQYXNzd29yZFwiKX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ2RhdGUnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwiZGF0ZVwiKX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ21lc3NhZ2UnKVwiPnt7YXR0YWNoZWRDb250cm9sLmVycm9ycy5tZXNzYWdlLnZhbHVlfX08L2Rpdj5cblx0XHQ8ZGl2IFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldEN1c3RvbUVycm9ySGFuZGxlcihnZXRFcnJvclRvU2hvdygpKT8udGVtcGxhdGVSZWZcIj48L2Rpdj5cblx0PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYgIWVycm9yTWVzc2FnZUFzVG9vbHRpcFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVycm9yUmVmXCI+PC9uZy1jb250YWluZXI+XG5cbjxkaXYgY2xhc3M9XCJjb21wb25lbnRDb250YWluZXJcIiBbbmdDbGFzc109XCJ7aGFzQ2FwdGlvbjogY2FwdGlvbiB8fCBjYXB0aW9uUmVmLCB2ZXJ0aWNhbDogZGlyZWN0aW9uID09PSAndmVydGljYWwnLCByZXZlcnNlT3JkZXI6IHN3YXBJbnB1dEFuZENhcHRpb259XCIgI2ludGVybmFsQ29tcG9uZW50UmVmPlxuXHQ8ZGl2IGNsYXNzPVwiY2FwdGlvblwiICpuZ0lmPVwiY2FwdGlvbiB8fCBjYXB0aW9uUmVmXCJcblx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRoYXNFcnJvcnM6IGdldEVycm9yVG9TaG93KCkgJiYgYXR0YWNoZWRDb250cm9sLnRvdWNoZWQsXG5cdFx0XHRwZXJjZW50YWdlU3BhY2luZzogY2FwdGlvblNwYWNpbmcgPT09ICdwZXJjZW50YWdlcycgJiYgc3BhY2VEaXN0cmlidXRpb24gIT09ICdmaXhlZElucHV0V2lkdGgnLFxuXHRcdFx0J2QzMC03MCc6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnMzAtNzAnLFxuXHRcdFx0J2QzNC02Nic6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnMzQtNjYnLFxuXHRcdFx0J2ZpeGVkSW5wdXRXaWR0aCc6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnZml4ZWRJbnB1dFdpZHRoJyxcblx0XHRcdHdpdGhFcnJvclJpZ2h0T2ZDYXB0aW9uOiBnZXRFcnJvckxvY2F0aW9uKCkgPT09ICdyaWdodE9mQ2FwdGlvbidcblx0XHR9XCJcblx0PlxuXHRcdDxkaXYgKm5nSWY9XCJjYXB0aW9uUmVmXCIgY2xhc3M9XCJjYXB0aW9uUmVmQ29udGFpbmVyXCI+XG5cdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhcHRpb25SZWZcIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdDxkaXYgKm5nSWY9XCJpc1JlcXVpcmVkKClcIj4mbmJzcDsqPC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cIiFjYXB0aW9uUmVmXCIgY2xhc3M9XCJjYXB0aW9uVGV4dFwiPnt7Y2FwdGlvbn19PHNwYW4gKm5nSWY9XCJpc1JlcXVpcmVkKClcIj4mbmJzcDsqPC9zcGFuPjwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJyaWdodE9mQ2FwdGlvbkVycm9yXCI+XG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZGlyZWN0aW9uID09PSAndmVydGljYWwnICYmIGdldEVycm9yTG9jYXRpb24oKSA9PT0gJ3JpZ2h0T2ZDYXB0aW9uJyAmJiAhZXJyb3JNZXNzYWdlQXNUb29sdGlwXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXJyb3JSZWZcIj48L25nLWNvbnRhaW5lcj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcgJiYgZ2V0RXJyb3JMb2NhdGlvbigpID09PSAnYmVsb3dDYXB0aW9uJyAmJiAhZXJyb3JNZXNzYWdlQXNUb29sdGlwXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXJyb3JSZWZcIj48L25nLWNvbnRhaW5lcj5cblx0PGRpdiBjbGFzcz1cImlucHV0Q29udGFpbmVyXCIgW25nQ2xhc3NdPVwie1xuXHRcdHBlcmNlbnRhZ2VTcGFjaW5nOiBjYXB0aW9uU3BhY2luZyA9PT0gJ3BlcmNlbnRhZ2VzJyAmJiBzcGFjZURpc3RyaWJ1dGlvbiAhPT0gJ2ZpeGVkSW5wdXRXaWR0aCcsXG5cdFx0J2QzMC03MCc6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnMzAtNzAnLFxuXHRcdCdkMzQtNjYnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJzM0LTY2Jyxcblx0XHQnZml4ZWRJbnB1dFdpZHRoJzogc3BhY2VEaXN0cmlidXRpb24gPT09ICdmaXhlZElucHV0V2lkdGgnXG5cdH1cIj5cblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JNZXNzYWdlQXNUb29sdGlwICYmIHNob3VsZFNob3dFcnJvck1lc3NhZ2VzKCkgJiYgZ2V0RXJyb3JUb1Nob3coKVwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcFRyaWFuZ2xlXCI+PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZXJyb3JUb29sdGlwVHJpYW5nbGVXaGl0ZVwiPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcFwiPlxuXHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVycm9yUmVmXCI+PC9uZy1jb250YWluZXI+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cdDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBRVosTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBQ0wsUUFBUSxFQUVSLFNBQVMsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLGlCQUFpQixFQUFxQixNQUFNLGdCQUFnQixDQUFDO0FBR3RGLE9BQU8sRUFBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBR3pELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFzQixxQkFBcUIsQ0FBQyxDQUFDO0FBRWxHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFzQjtJQUN4RCxHQUFHLEVBQUUsZ0NBQWdDO0lBQ3JDLEdBQUcsRUFBRSxpQ0FBaUM7SUFDdEMsUUFBUSxFQUFFLFVBQVU7SUFDcEIsS0FBSyxFQUFFLDJCQUEyQjtJQUNsQyxTQUFTLEVBQUUsZ0RBQWdEO0lBQzNELFNBQVMsRUFBRSxpREFBaUQ7SUFDNUQsT0FBTyxFQUFFLHlCQUF5QjtJQUNsQyxhQUFhLEVBQUUsc0JBQXNCO0lBQ3JDLElBQUksRUFBRSxvQkFBb0I7Q0FDMUIsQ0FBQztBQU9GLE1BQU0sT0FB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SEFyTVcsb0JBQW9CLCtEQXNCdkIsbUJBQW1CO3FHQXRCaEIsb0JBQW9CLDhUQVdsQixpQkFBaUIsd1lDbERoQyx3d0tBd0ZBOzJGRGpEYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Msa0JBQWtCOzswQkF5QjFCLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsbUJBQW1COzswQkFBRyxRQUFROzRDQXBCdkIsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBQ29DLG9CQUFvQjtzQkFBN0QsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBQ0osT0FBTztzQkFBbkMsU0FBUzt1QkFBQyxTQUFTO2dCQUNpQywrQkFBK0I7c0JBQW5GLFNBQVM7dUJBQUMsaUNBQWlDO2dCQUNYLFVBQVU7c0JBQTFDLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QWZ0ZXJWaWV3SW5pdCxcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGQsXG5cdEVsZW1lbnRSZWYsXG5cdEluamVjdCxcblx0SW5qZWN0aW9uVG9rZW4sXG5cdElucHV0LFxuXHRPcHRpb25hbCxcblx0VGVtcGxhdGVSZWYsXG5cdFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1ZhbHVlQWNjZXNzb3JCYXNlfSBmcm9tICcuLi8uLi9lbGVtZW50cy92YWx1ZS1hY2Nlc3Nvci1iYXNlL3ZhbHVlLWFjY2Vzc29yLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7Q3VzdG9tRXJyb3JNZXNzYWdlcywgRm9ybUVycm9yTWVzc2FnZXN9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7aXNWYWx1ZVNldCwgc3RyaW5nSXNTZXRBbmRGaWxsZWR9IGZyb20gJy4uLy4uL3V0aWwvdmFsdWVzJztcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHthd2FpdGFibGVGb3JOZXh0Q3ljbGV9IGZyb20gXCIuLi8uLi91dGlsL2FuZ3VsYXJcIjtcblxuXG5leHBvcnQgY29uc3QgRk9STV9FUlJPUl9NRVNTQUdFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDdXN0b21FcnJvck1lc3NhZ2VzPignZm9ybS5lcnJvci5tZXNzYWdlcycpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFUzogRm9ybUVycm9yTWVzc2FnZXMgPSB7XG5cdG1pbjogJ1VzZSBhIG51bWJlciBsYXJnZXIgdGhhbiAlbWluJScsXG5cdG1heDogJ1VzZSBhIG51bWJlciBzbWFsbGVyIHRoYW4gJW1heCUnLFxuXHRyZXF1aXJlZDogJ1JlcXVpcmVkJyxcblx0ZW1haWw6ICdVc2UgYSB2YWxpZCBlbWFpbCBhZGRyZXNzJyxcblx0bWluTGVuZ3RoOiAnSGFzIHRvIGJlIGxvbmdlciB0aGFuICVtaW5MZW5ndGglIGNoYXJhY3RlcihzKScsXG5cdG1heExlbmd0aDogJ0hhcyB0byBiZSBzaG9ydGVyIHRoYW4gJW1heExlbmd0aCUgY2hhcmFjdGVyKHMpJyxcblx0cGF0dGVybjogJ1RoaXMgaW5wdXQgaXMgbm90IHZhbGlkJyxcblx0bWF0Y2hQYXNzd29yZDogJ1Bhc3N3b3JkcyBtdXN0IG1hdGNoJyxcblx0ZGF0ZTogJ0VudGVyIGEgdmFsaWQgZGF0ZScsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1lbGVtZW50Jyxcblx0dGVtcGxhdGVVcmw6ICcuL2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2Zvcm0tZWxlbWVudC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXHRwdWJsaWMgYXR0YWNoZWRDb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG5cdEBJbnB1dCgpIHB1YmxpYyBjYXB0aW9uOiBzdHJpbmc7XG5cdEBJbnB1dCgpIHB1YmxpYyBkaXJlY3Rpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cdEBJbnB1dCgpIHB1YmxpYyBjYXB0aW9uU3BhY2luZzogJ3BlcmNlbnRhZ2VzJyB8ICdub25lJyA9ICdwZXJjZW50YWdlcyc7XG5cdEBJbnB1dCgpIHB1YmxpYyBzcGFjZURpc3RyaWJ1dGlvbjogJzQwLTYwJyB8ICczNC02NicgfCAnMzAtNzAnIHwgJ2ZpeGVkSW5wdXRXaWR0aCcgPSAnNDAtNjAnO1xuXHRASW5wdXQoKSBwdWJsaWMgc3dhcElucHV0QW5kQ2FwdGlvbiA9IGZhbHNlO1xuXHRASW5wdXQoKSBwdWJsaWMgZXJyb3JNZXNzYWdlQXNUb29sdGlwID0gZmFsc2U7XG5cdEBWaWV3Q2hpbGQoJ2ludGVybmFsQ29tcG9uZW50UmVmJykgcHVibGljIGludGVybmFsQ29tcG9uZW50UmVmOiBFbGVtZW50UmVmO1xuXHRAVmlld0NoaWxkKCd0YWlsVHBsJykgcHVibGljIHRhaWxUcGw6IFRlbXBsYXRlUmVmPGFueT47XG5cdEBWaWV3Q2hpbGQoJ2NhcHRpb25EdW1teUZvclNwYWNlQ2FsY3VsYXRpb24nKSBwdWJsaWMgY2FwdGlvbkR1bW15Rm9yU3BhY2VDYWxjdWxhdGlvbjogRWxlbWVudFJlZjtcblx0QENvbnRlbnRDaGlsZChOR19WQUxVRV9BQ0NFU1NPUikgZmllbGRJbnB1dDogVmFsdWVBY2Nlc3NvckJhc2U8YW55PjtcblxuXHRwdWJsaWMgY2FwdGlvblJlZjogVGVtcGxhdGVSZWY8YW55Pjtcblx0cHVibGljIGVycm9yTWVzc2FnZXM6IEZvcm1FcnJvck1lc3NhZ2VzID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUztcblx0cHVibGljIGN1c3RvbUVycm9ySGFuZGxlcnM6IEFycmF5PHsgZXJyb3I6IHN0cmluZzsgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4gfT4gPSBbXTtcblx0cHJpdmF0ZSBpbnB1dDogVmFsdWVBY2Nlc3NvckJhc2U8YW55Pjtcblx0cHVibGljIGVycm9yRnVsbHlWaXNpYmxlOiBib29sZWFuO1xuXHRwcml2YXRlIHBvcHVwU3RhdGU6ICdsb2NrZWRPcGVuJyB8ICdsb2NrZWRDbG9zZWQnIHwgJ29uSG92ZXInID0gJ29uSG92ZXInO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGb3JtQ29tcG9uZW50LFxuXHRcdEBJbmplY3QoRk9STV9FUlJPUl9NRVNTQUdFUykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjdXN0b21NZXNzYWdlczogQ3VzdG9tRXJyb3JNZXNzYWdlcyxcblx0KSB7XG5cdH1cblxuXHRhc3luYyBuZ0FmdGVyVmlld0luaXQoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgYXdhaXRhYmxlRm9yTmV4dEN5Y2xlKCk7XG5cdFx0dGhpcy5maWVsZElucHV0Py5zZXRUYWlsVHBsKHRoaXMudGFpbFRwbCk7XG5cdFx0dGhpcy5maWVsZElucHV0Py5vblRvdWNoLmFzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgoZSkgPT4ge1xuXHRcdFx0dGhpcy5kZXRlcm1pbmVQb3B1cFN0YXRlKCk7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgc2hvdWxkU2hvd0Vycm9yTWVzc2FnZXMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMucGFyZW50Py5zaG93RXJyb3JNZXNzYWdlcyAhPT0gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgc3Vic3RpdHV0ZVBhcmFtZXRlcnMobWVzc2FnZTogc3RyaW5nLCBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMocGFyYW1ldGVycykucmVkdWNlKChtc2csIGtleSkgPT4ge1xuXHRcdFx0cmV0dXJuIG1zZy5yZXBsYWNlKGAlJHtrZXl9JWAsIHBhcmFtZXRlcnNba2V5XSk7XG5cdFx0fSwgbWVzc2FnZSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsIGlucHV0OiBWYWx1ZUFjY2Vzc29yQmFzZTxhbnk+ID0gbnVsbCk6IHZvaWQge1xuXHRcdHRoaXMuYXR0YWNoZWRDb250cm9sID0gZm9ybUNvbnRyb2w7XG5cdFx0dGhpcy5wYXJlbnQucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sLCB0aGlzKTtcblx0XHR0aGlzLmlucHV0ID0gaW5wdXQ7XG5cblxuXHRcdHRoaXMuYXR0YWNoZWRDb250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChlKSA9PiB7XG5cdFx0XHR0aGlzLmRldGVybWluZVBvcHVwU3RhdGUoKTtcblx0XHR9KTtcblx0XHR0aGlzLmRldGVybWluZVBvcHVwU3RhdGUoKTtcblx0fVxuXG5cdHByaXZhdGUgZGV0ZXJtaW5lUG9wdXBTdGF0ZSgpOiB2b2lkIHtcblx0XHRpZiAoc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5nZXRFcnJvclRvU2hvdygpKSkge1xuXHRcdFx0dGhpcy5wb3B1cFN0YXRlID0gJ29uSG92ZXInO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5nZXRXYXJuaW5nVG9TaG93KCkpKSB7XG5cdFx0XHR0aGlzLnBvcHVwU3RhdGUgPSAnbG9ja2VkT3Blbic7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHVucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLmF0dGFjaGVkQ29udHJvbCA9IG51bGw7XG5cdFx0dGhpcy5wYXJlbnQudW5yZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2wpO1xuXHR9XG5cblx0cHVibGljIGdldEF0dGFjaGVkQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuXHRcdHJldHVybiB0aGlzLmF0dGFjaGVkQ29udHJvbDtcblx0fVxuXG5cdHB1YmxpYyBnZXRBdHRhY2hlZElucHV0KCk6IFZhbHVlQWNjZXNzb3JCYXNlPGFueT4ge1xuXHRcdHJldHVybiB0aGlzLmlucHV0O1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyRXJyb3JIYW5kbGVyKGVycm9yOiBzdHJpbmcsIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XG5cdFx0dGhpcy5jdXN0b21FcnJvckhhbmRsZXJzLnB1c2goe2Vycm9yLCB0ZW1wbGF0ZVJlZn0pO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ2FwdGlvbih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQge1xuXHRcdHRoaXMuY2FwdGlvblJlZiA9IHRlbXBsYXRlUmVmO1xuXHR9XG5cblx0Z2V0V2FybmluZ1RvU2hvdygpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLnBhcmVudD8uZ2V0V2FybmluZ1RvU2hvdyh0aGlzLmF0dGFjaGVkQ29udHJvbCk7XG5cdH1cblxuXHRnZXRFcnJvclRvU2hvdygpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGZpcnN0RXJyb3IgPSBPYmplY3Qua2V5cyh0aGlzLmF0dGFjaGVkQ29udHJvbD8uZXJyb3JzID8/IHt9KVswXTtcblx0XHRpZiAodGhpcy5hdHRhY2hlZENvbnRyb2w/LnRvdWNoZWQgIT09IHRydWUpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAoIXRoaXMuYXR0YWNoZWRDb250cm9sPy5lcnJvcnMpICB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0cmV0dXJuIGZpcnN0RXJyb3I7XG5cdH1cblxuXHRnZXRDdXN0b21FcnJvckhhbmRsZXIoZXJyb3I6IHN0cmluZyk6IHsgZXJyb3I6IHN0cmluZzsgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4gfSB7XG5cdFx0cmV0dXJuIHRoaXMuY3VzdG9tRXJyb3JIYW5kbGVycy5maW5kKChlKSA9PiBlLmVycm9yID09PSBlcnJvcik7XG5cdH1cblxuXHRzaG93RGVmYXVsdEVycm9yKGVycm9yOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRFcnJvclRvU2hvdygpID09PSBlcnJvciAmJiAhdGhpcy5jdXN0b21FcnJvckhhbmRsZXJzLnNvbWUoKGUpID0+IGUuZXJyb3IgPT09IGVycm9yKTtcblx0fVxuXG5cdGdldFNjcm9sbGFibGVQYXJlbnQobm9kZSk6IGFueSB7XG5cdFx0aWYgKG5vZGUgPT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdGlmIChub2RlLnNjcm9sbEhlaWdodCA+IG5vZGUuY2xpZW50SGVpZ2h0KSB7XG5cdFx0XHRyZXR1cm4gbm9kZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0U2Nyb2xsYWJsZVBhcmVudChub2RlLnBhcmVudE5vZGUpO1xuXHRcdH1cblx0fVxuXG5cdHNjcm9sbFRvKCk6IHZvaWR7XG5cdFx0dGhpcy5pbnRlcm5hbENvbXBvbmVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHRydWUpO1xuXHRcdC8vIHRvIGdpdmUgc29tZSBicmVhdGhpbmcgcm9vbSwgd2Ugc2Nyb2xsIDEwMHB4IG1vcmUgdG8gdGhlIHRvcFxuXHRcdHRoaXMuZ2V0U2Nyb2xsYWJsZVBhcmVudCh0aGlzLmludGVybmFsQ29tcG9uZW50UmVmLm5hdGl2ZUVsZW1lbnQpPy5zY3JvbGxCeSgwLCAtMTAwKTtcblx0fVxuXG5cdGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XG5cdFx0aWYgKGlzVmFsdWVTZXQodGhpcy5pbnB1dCkpIHtcblx0XHRcdHJldHVybiB0aGlzLmlucHV0Lmhhc1ZhbGlkYXRvcigncmVxdWlyZWQnKTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Z2V0RXJyb3JNZXNzYWdlKGtleToga2V5b2YgRm9ybUVycm9yTWVzc2FnZXMpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmN1c3RvbU1lc3NhZ2VzPy5ba2V5XT8uKCkgPz8gdGhpcy5lcnJvck1lc3NhZ2VzW2tleV07XG5cdH1cblxuXHRwdWJsaWMgZ2V0RXJyb3JMb2NhdGlvbigpOiAnYmVsb3dDYXB0aW9uJyB8ICdyaWdodE9mQ2FwdGlvbicge1xuXHRcdHJldHVybiB0aGlzLnBhcmVudD8uZXJyb3JNZXNzYWdlTG9jYXRpb24gPz8gJ2JlbG93Q2FwdGlvbic7XG5cdH1cblxuXHRwdWJsaWMgc2hvdWxkU2hvd0Vycm9yVG9vbHRpcE9wZW5lZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5wb3B1cFN0YXRlID09PSAnbG9ja2VkT3Blbic7XG5cdH1cblxuXHRwdWJsaWMgaGFzSG92ZXJhYmxlRXJyb3JUb29sdGlwKCk6IGJvb2xlYW4ge1xuXHRcdGlmICghdGhpcy5oYXNSaWdodE9mQ2FwdGlvbkVycm9yKCkgJiYgIXRoaXMuZXJyb3JNZXNzYWdlQXNUb29sdGlwKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnBvcHVwU3RhdGUgIT09ICdvbkhvdmVyJykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5nZXRFcnJvclRvU2hvdygpKSkge1xuXHRcdFx0cmV0dXJuICF0aGlzLmVycm9yRnVsbHlWaXNpYmxlO1xuXHRcdH1cblx0XHRpZiAoc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5nZXRXYXJuaW5nVG9TaG93KCkpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHVibGljIGhhc1JpZ2h0T2ZDYXB0aW9uRXJyb3IoKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuZXJyb3JNZXNzYWdlQXNUb29sdGlwKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmRpcmVjdGlvbiAhPT0gJ3ZlcnRpY2FsJyB8fCB0aGlzLmdldEVycm9yTG9jYXRpb24oKSAhPT0gJ3JpZ2h0T2ZDYXB0aW9uJykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHB1YmxpYyBzZXRFcnJvck1lc3NhZ2VJc1RydW5jYXRlZCA9IChpc1RydW5jYXRlZDogYm9vbGVhbikgPT4ge1xuXHRcdHRoaXMuZXJyb3JGdWxseVZpc2libGUgPSAhaXNUcnVuY2F0ZWQ7XG5cdH1cblxuXHRwdWJsaWMgc2hvdWxkU2hvd1dhcm5pbmdQb3B1cCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5nZXRXYXJuaW5nVG9TaG93KCkpO1xuXHR9XG5cblx0cHVibGljIGNsb3NlUG9wdXAoKTogdm9pZCB7XG5cdFx0dGhpcy5wb3B1cFN0YXRlID0gJ29uSG92ZXInO1xuXHR9XG5cblx0cHVibGljIHRvZ2dsZVBvcHVwKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5oYXNSaWdodE9mQ2FwdGlvbkVycm9yKCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZXJyb3JGdWxseVZpc2libGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKHRoaXMucG9wdXBTdGF0ZSA9PT0gJ2xvY2tlZE9wZW4nKSB7XG5cdFx0XHR0aGlzLnBvcHVwU3RhdGUgPSAnb25Ib3Zlcic7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucG9wdXBTdGF0ZSA9ICdsb2NrZWRPcGVuJztcblx0XHR9XG5cdH1cbn1cbiIsIjxkaXZcblx0Y2xhc3M9XCJjb21wb25lbnRDb250YWluZXJcIlxuXHRbbmdDbGFzc109XCJ7XG5cdFx0aGFzQ2FwdGlvbjogY2FwdGlvbiB8fCBjYXB0aW9uUmVmLFxuXHRcdHZlcnRpY2FsOiBkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcsXG5cdFx0aG9yaXpvbnRhbDogZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcsXG5cdFx0cmV2ZXJzZU9yZGVyOiBzd2FwSW5wdXRBbmRDYXB0aW9uLFxuXHRcdGhhc0Vycm9yczogZ2V0RXJyb3JUb1Nob3coKSAmJiBhdHRhY2hlZENvbnRyb2wudG91Y2hlZCxcblx0XHRwZXJjZW50YWdlU3BhY2luZzogY2FwdGlvblNwYWNpbmcgPT09ICdwZXJjZW50YWdlcycgJiYgc3BhY2VEaXN0cmlidXRpb24gIT09ICdmaXhlZElucHV0V2lkdGgnLFxuXHRcdCdkNDAtNjAnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJzQwLTYwJyxcblx0XHQnZDMwLTcwJzogc3BhY2VEaXN0cmlidXRpb24gPT09ICczMC03MCcsXG5cdFx0J2QzNC02Nic6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnMzQtNjYnLFxuXHRcdCdmaXhlZElucHV0V2lkdGgnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJ2ZpeGVkSW5wdXRXaWR0aCdcblx0fVwiXG4+XG5cdDxkaXYgY2xhc3M9XCJlcnJvckFib3ZlSW5wdXRDb250YWluZXJcIiAqbmdJZj1cImRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnICYmICFlcnJvck1lc3NhZ2VBc1Rvb2x0aXBcIj5cblx0XHQ8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG5cdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJlcnJvclJlZlwiPjwvbmctY29udGFpbmVyPlxuXHQ8L2Rpdj5cblxuXHQ8ZGl2IGNsYXNzPVwiY2FwdGlvbklucHV0QW5kRXJyb3JcIiAjaW50ZXJuYWxDb21wb25lbnRSZWY+XG5cdFx0PGRpdiBjbGFzcz1cImNhcHRpb25EdW1teUZvclNwYWNlQ2FsY3VsYXRpb25cIiAjY2FwdGlvbkR1bW15Rm9yU3BhY2VDYWxjdWxhdGlvbiAqbmdJZj1cImhhc1JpZ2h0T2ZDYXB0aW9uRXJyb3IoKVwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjYXB0aW9uVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntmb3JDYWxjdWxhdGlvbjogdHJ1ZX1cIj48L25nLWNvbnRhaW5lcj5cblx0XHQ8L2Rpdj5cblx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhcHRpb25UcGxcIj48L25nLWNvbnRhaW5lcj5cblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZGlyZWN0aW9uID09PSAndmVydGljYWwnICYmIGdldEVycm9yTG9jYXRpb24oKSA9PT0gJ2JlbG93Q2FwdGlvbicgJiYgIWVycm9yTWVzc2FnZUFzVG9vbHRpcFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVycm9yUmVmXCI+PC9uZy1jb250YWluZXI+XG5cdFx0PGRpdiBjbGFzcz1cImlucHV0Q29udGFpbmVyXCI+XG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JNZXNzYWdlQXNUb29sdGlwICYmIHNob3VsZFNob3dFcnJvck1lc3NhZ2VzKCkgJiYgZ2V0RXJyb3JUb1Nob3coKVwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZXJyb3JUb29sdGlwVHJpYW5nbGVcIj48L2Rpdj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcFRyaWFuZ2xlV2hpdGVcIj48L2Rpdj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcFwiPlxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXJyb3JSZWZcIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHRcdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjYXB0aW9uVHBsIGxldC1mb3JDYWxjdWxhdGlvbj1cImZvckNhbGN1bGF0aW9uXCI+XG5cdDxkaXYgY2xhc3M9XCJjYXB0aW9uXCJcblx0XHQqbmdJZj1cImNhcHRpb24gfHwgY2FwdGlvblJlZlwiXG5cdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0d2l0aEVycm9yUmlnaHRPZkNhcHRpb246IGdldEVycm9yTG9jYXRpb24oKSA9PT0gJ3JpZ2h0T2ZDYXB0aW9uJ1xuXHRcdH1cIlxuXHQ+XG5cdFx0PGRpdiAqbmdJZj1cImNhcHRpb25SZWZcIiBjbGFzcz1cImNhcHRpb25SZWZDb250YWluZXJcIj5cblx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FwdGlvblJlZlwiPjwvbmctY29udGFpbmVyPlxuXHRcdFx0PGRpdiAqbmdJZj1cImlzUmVxdWlyZWQoKVwiPiZuYnNwOyo8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwiIWNhcHRpb25SZWZcIiBjbGFzcz1cImNhcHRpb25UZXh0XCI+e3tjYXB0aW9ufX08c3BhbiAqbmdJZj1cImlzUmVxdWlyZWQoKVwiPiZuYnNwOyo8L3NwYW4+PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInJpZ2h0T2ZDYXB0aW9uRXJyb3JcIiAqbmdJZj1cImhhc1JpZ2h0T2ZDYXB0aW9uRXJyb3IoKVwiIFtuZ0NsYXNzXT1cIntlcnJvckZ1bGx5VmlzaWJsZTogZXJyb3JGdWxseVZpc2libGV9XCI+XG5cdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVycm9yUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntmb3JDYWxjdWxhdGlvbjogZm9yQ2FsY3VsYXRpb259XCI+PC9uZy1jb250YWluZXI+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlcnJvclJlZiBsZXQtZm9yQ2FsY3VsYXRpb249XCJmb3JDYWxjdWxhdGlvblwiPlxuXHQ8ZGl2ICpuZ0lmPVwic2hvdWxkU2hvd0Vycm9yTWVzc2FnZXMoKSAmJiBnZXRFcnJvclRvU2hvdygpXCIgY2xhc3M9XCJlcnJvckNvbnRhaW5lclwiIFtlbGVtZW50SXNUcnVuY2F0ZWRDYl09XCJmb3JDYWxjdWxhdGlvbiA/IHNldEVycm9yTWVzc2FnZUlzVHJ1bmNhdGVkIDogbnVsbFwiIFtuZ0NsYXNzXT1cIntob3Jpem9udGFsOiBkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJywgaGFzQ2FwdGlvbjogY2FwdGlvbiB8fCBjYXB0aW9uUmVmLCAnZDMwLTcwJzogc3BhY2VEaXN0cmlidXRpb24gPT09ICczMC03MCcsICdkMzQtNjYnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJzM0LTY2J31cIj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignbWluJylcIj57e3N1YnN0aXR1dGVQYXJhbWV0ZXJzKGdldEVycm9yTWVzc2FnZShcIm1pblwiKSwge21pbjogYXR0YWNoZWRDb250cm9sLmVycm9ycy5taW4ubWlufSl9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdtYXgnKVwiPnt7c3Vic3RpdHV0ZVBhcmFtZXRlcnMoZ2V0RXJyb3JNZXNzYWdlKFwibWF4XCIpLCB7bWF4OiBhdHRhY2hlZENvbnRyb2wuZXJyb3JzLm1heC5tYXh9KX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ3JlcXVpcmVkJylcIj57e2dldEVycm9yTWVzc2FnZShcInJlcXVpcmVkXCIpfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignZW1haWwnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwiZW1haWxcIil9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdtaW5sZW5ndGgnKVwiPnt7c3Vic3RpdHV0ZVBhcmFtZXRlcnMoZ2V0RXJyb3JNZXNzYWdlKFwibWluTGVuZ3RoXCIpLCB7bWluTGVuZ3RoOiBhdHRhY2hlZENvbnRyb2wuZXJyb3JzLm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aH0pfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignbWF4bGVuZ3RoJylcIj57e3N1YnN0aXR1dGVQYXJhbWV0ZXJzKGdldEVycm9yTWVzc2FnZShcIm1heExlbmd0aFwiKSwge21heExlbmd0aDogYXR0YWNoZWRDb250cm9sLmVycm9ycy5tYXhsZW5ndGgucmVxdWlyZWRMZW5ndGh9KX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ3BhdHRlcm4nKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwicGF0dGVyblwiKX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ01hdGNoUGFzc3dvcmQnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwibWF0Y2hQYXNzd29yZFwiKX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ2RhdGUnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwiZGF0ZVwiKX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ21lc3NhZ2UnKVwiPnt7YXR0YWNoZWRDb250cm9sLmVycm9ycy5tZXNzYWdlLnZhbHVlfX08L2Rpdj5cblx0XHQ8ZGl2IFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldEN1c3RvbUVycm9ySGFuZGxlcihnZXRFcnJvclRvU2hvdygpKT8udGVtcGxhdGVSZWZcIj48L2Rpdj5cblx0PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhaWxUcGw+XG5cdDxkaXYgY2xhc3M9XCJlcnJvclRvb2x0aXBDb250YWluZXJcIiBbbmdDbGFzc109XCJ7YWx3YXlzT3Blbjogc2hvdWxkU2hvd0Vycm9yVG9vbHRpcE9wZW5lZCgpfVwiPlxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNIb3ZlcmFibGVFcnJvclRvb2x0aXAoKSB8fCBzaG91bGRTaG93RXJyb3JUb29sdGlwT3BlbmVkKClcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJlcnJvclRvb2x0aXBUcmlhbmdsZVwiPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcFRyaWFuZ2xlV2hpdGVcIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJlcnJvclRvb2x0aXBcIiBbbmdDbGFzc109XCJ7bm9Qb2ludGVyRXZlbnRzOiAhc2hvdWxkU2hvd0Vycm9yVG9vbHRpcE9wZW5lZCgpfVwiPlxuXHRcdFx0XHQ8aSBjbGFzcz1cImNsb3NlQnRuXCIgKGNsaWNrKT1cImNsb3NlUG9wdXAoKTtcIj7DlzwvaT5cblx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImdldEVycm9yVG9TaG93KClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJlcnJvclJlZlwiPjwvbmctY29udGFpbmVyPlxuXHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiIWdldEVycm9yVG9TaG93KCkgJiYgc2hvdWxkU2hvd1dhcm5pbmdQb3B1cCgpXCI+e3tnZXRXYXJuaW5nVG9TaG93KCl9fTwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9uZy1jb250YWluZXI+XG5cdFx0PGtscC1mb3JtLXdhcm5pbmctaWNvbiB2YXJpYW50PVwiZmlsbFwiICpuZ0lmPVwiZ2V0RXJyb3JUb1Nob3coKVwiIChjbGljayk9XCJ0b2dnbGVQb3B1cCgpXCI+PC9rbHAtZm9ybS13YXJuaW5nLWljb24+XG5cdFx0PGtscC1mb3JtLXdhcm5pbmctaWNvbiB2YXJpYW50PVwibGluZVwiICpuZ0lmPVwiIWdldEVycm9yVG9TaG93KCkgJiYgZ2V0V2FybmluZ1RvU2hvdygpXCIgKGNsaWNrKT1cInRvZ2dsZVBvcHVwKClcIj48L2tscC1mb3JtLXdhcm5pbmctaWNvbj5cblx0PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
40
40
|
type: ViewChild,
|
|
41
41
|
args: ['contentRef']
|
|
42
42
|
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFlLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUvRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQVFwRCxNQUFNLE9BQU8sa0JBQWtCO0lBSTlCLFlBQXdDLE1BQTRCO1FBQTVCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBRjdELGNBQVMsR0FBRyxLQUFLLENBQUM7SUFFOEMsQ0FBQztJQUV4RSxRQUFRO1FBQ1AsdUdBQXVHO1FBQ3ZHLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsOEhBQThIO1FBQzlILFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5RCxJQUFJLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7YUFDckY7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTSxvQkFBb0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDOzsrR0F0Qlcsa0JBQWtCO21HQUFsQixrQkFBa0IsNExDVi9CLDJLQUlBOzJGRE1hLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDQyxnQkFBZ0I7OzBCQVFiLElBQUk7OzBCQUFJLFFBQVE7NENBSHBCLEtBQUs7c0JBQWIsS0FBSztnQkFFMEIsVUFBVTtzQkFBekMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRDb21wb25lbnR9IGZyb20gXCIuLi9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtpc051bGxPclVuZGVmaW5lZH0gZnJvbSBcIi4uLy4uL3V0aWwvdmFsdWVzXCI7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1lcnJvcicsXG5cdHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVycm9yLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZm9ybS1lcnJvci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRXJyb3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRASW5wdXQoKSBlcnJvcjogRXJyb3JUeXBlcztcblx0cHVibGljIHNob3dFcnJvciA9IGZhbHNlO1xuXHRAVmlld0NoaWxkKCdjb250ZW50UmVmJykgcHVibGljIGNvbnRlbnRSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cdGNvbnN0cnVjdG9yKEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnQ6IEZvcm1FbGVtZW50Q29tcG9uZW50KSB7fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdC8vIHRoaXMgaXMgYmVpbmcgcnVuIG5leHQgY3ljbGUsIGJlY2F1c2Ugd2UgZG9udCB3YW50IHRvIGZhaWwgaWYgdGhlIG9yZGVyIG9mIGNvbXBvbmVudHMgaXMgYXMgZm9sbG93czpcblx0XHQvLyA8YXBwLWZvcm0tZXJyb3IgLz5cblx0XHQvLyA8c29tZS1pbnB1dCAvPlxuXHRcdC8vIFRoYXQgd291bGQgZmFpbCwgYmVjYXVzZSB0aGUgbG9naWMgb2YgdGhlIGZvcm0gZXJyb3IgaXMgcnVuIGZpcnN0LCBhbmQgYXQgdGhhdCBtb21lbnQsIHRoZSBgc29tZS1pbnB1dGAgaXNudCByZWdpc3RlcmVkIHlldFxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgYXR0YWNoZWRDb250cm9sID0gdGhpcy5wYXJlbnQuZ2V0QXR0YWNoZWRDb250cm9sKCk7XG5cdFx0XHR0aGlzLnBhcmVudC5yZWdpc3RlckVycm9ySGFuZGxlcih0aGlzLmVycm9yLCB0aGlzLmNvbnRlbnRSZWYpO1xuXHRcdFx0aWYgKGlzTnVsbE9yVW5kZWZpbmVkKGF0dGFjaGVkQ29udHJvbCkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdZb3UgYWRkZWQgYSBGb3JtIEVycm9yIGNvbXBvbmVudCB3aXRob3V0IGFuIGF0dGFjaGVkIEZvcm0gQ29udHJvbCcpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIGdldEVycm9yVmFsdWVNZXNzYWdlKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMucGFyZW50LmdldEF0dGFjaGVkQ29udHJvbCgpLmVycm9yc1t0aGlzLmVycm9yXTtcblx0fVxufVxuIiwiPG5nLXRlbXBsYXRlICNjb250ZW50UmVmPlxuXHQ8bmctY29udGVudCAqbmdJZj1cImVycm9yICE9PSAnYXN5bmMnXCI+PC9uZy1jb250ZW50PlxuXHQ8ZGl2ICpuZ0lmPVwiZXJyb3IgPT09ICdhc3luYydcIj57e2dldEVycm9yVmFsdWVNZXNzYWdlKCl9fTwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|