ecabs-components 1.0.60 → 1.0.62

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.
@@ -1,13 +1,19 @@
1
1
  import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
2
- import { UntypedFormControl, UntypedFormGroup, NG_VALUE_ACCESSOR, Validators, NgControl, } from '@angular/forms';
2
+ import { NG_VALUE_ACCESSOR, NgControl, UntypedFormControl, UntypedFormGroup, Validators, } from '@angular/forms';
3
3
  import ElementBaseComponent from '../base/element-base';
4
+ import { UnsubscribeService } from "../base/services/unsubscribe.service";
5
+ import { takeUntil } from "rxjs";
4
6
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "../base/element-wrapper/element-wrapper.component";
7
- import * as i3 from "@angular/forms";
8
- import * as i4 from "ngx-mat-intl-tel-input";
7
+ import * as i1 from "../base/services/ecabs-components.service";
8
+ import * as i2 from "../base/services/unsubscribe.service";
9
+ import * as i3 from "@angular/common";
10
+ import * as i4 from "../base/element-wrapper/element-wrapper.component";
11
+ import * as i5 from "@angular/forms";
12
+ import * as i6 from "ngx-mat-intl-tel-input";
9
13
  export class EcabsPhoneComponent extends ElementBaseComponent {
10
14
  injector;
15
+ ecabsComponentsService;
16
+ unsubscribeService;
11
17
  preferredCountries;
12
18
  enablePlaceholder;
13
19
  enableSearch = true;
@@ -26,9 +32,11 @@ export class EcabsPhoneComponent extends ElementBaseComponent {
26
32
  this.phoneForm.setValue({ phone: val });
27
33
  }
28
34
  }
29
- constructor(injector) {
35
+ constructor(injector, ecabsComponentsService, unsubscribeService) {
30
36
  super();
31
37
  this.injector = injector;
38
+ this.ecabsComponentsService = ecabsComponentsService;
39
+ this.unsubscribeService = unsubscribeService;
32
40
  }
33
41
  onInput(event) {
34
42
  if (this.prohibitedCharacters.includes(event.key)) {
@@ -39,6 +47,13 @@ export class EcabsPhoneComponent extends ElementBaseComponent {
39
47
  this.phoneForm = new UntypedFormGroup({
40
48
  phone: new UntypedFormControl(undefined, this.required ? [Validators.required] : []),
41
49
  });
50
+ this.ecabsComponentsService.getConfig()
51
+ .pipe(takeUntil(this.unsubscribeService.subscription()))
52
+ .subscribe((val) => {
53
+ if (!this.preferredCountries?.length) {
54
+ this.preferredCountries = val.defaultCountries;
55
+ }
56
+ });
42
57
  }
43
58
  ngAfterViewInit() {
44
59
  const ngControl = this.injector.get(NgControl, null);
@@ -52,8 +67,10 @@ export class EcabsPhoneComponent extends ElementBaseComponent {
52
67
  this.handleErrors();
53
68
  });
54
69
  }
55
- onChange = () => { };
56
- onTouch = () => { };
70
+ onChange = () => {
71
+ };
72
+ onTouch = () => {
73
+ };
57
74
  writeValue(value) {
58
75
  this.value = value;
59
76
  }
@@ -79,27 +96,29 @@ export class EcabsPhoneComponent extends ElementBaseComponent {
79
96
  if (this.value === undefined && !this.phoneInput.empty) {
80
97
  this.phoneForm.controls['phone'].setErrors({ validatePhoneNumber: true });
81
98
  }
82
- this.control.setErrors(this.phoneForm.get('phone').errors);
99
+ this.control?.setErrors(this.phoneForm.get('phone').errors);
83
100
  }
84
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsPhoneComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
101
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsPhoneComponent, deps: [{ token: i0.Injector }, { token: i1.EcabsComponentsService }, { token: i2.UnsubscribeService }], target: i0.ɵɵFactoryTarget.Component });
85
102
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsPhoneComponent, selector: "ecabs-phone", inputs: { preferredCountries: "preferredCountries", enablePlaceholder: "enablePlaceholder", enableSearch: "enableSearch", useOnlyDisabledClass: "useOnlyDisabledClass", required: "required" }, outputs: { onblur: "onblur" }, host: { listeners: { "keypress": "onInput($event)" } }, providers: [
103
+ UnsubscribeService,
86
104
  {
87
105
  provide: NG_VALUE_ACCESSOR,
88
106
  useExisting: EcabsPhoneComponent,
89
107
  multi: true,
90
108
  },
91
- ], viewQueries: [{ propertyName: "phoneInput", first: true, predicate: ["phoneInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<app-element-wrapper [data]=\"getData()\">\r\n <form #f=\"ngForm\" [formGroup]=\"phoneForm\">\r\n <ngx-mat-intl-tel-input\r\n (focusout)=\"onBlur()\"\r\n [ngClass]=\"{ error: phoneForm.invalid && (phoneForm.dirty || phoneForm.touched) }\"\r\n #phoneInput\r\n [preferredCountries]=\"preferredCountries\"\r\n [enablePlaceholder]=\"enablePlaceholder\"\r\n [enableSearch]=\"enableSearch\"\r\n [disabled]=\"disabled\"\r\n [formControlName]=\"'phone'\"\r\n name=\"phone\"\r\n [inputPlaceholder]=\"placeholder\"\r\n >\r\n </ngx-mat-intl-tel-input>\r\n </form>\r\n</app-element-wrapper>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.ElementWrapperComponent, selector: "app-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i4.NgxMatIntlTelInputComponent, selector: "ngx-mat-intl-tel-input", inputs: ["preferredCountries", "enablePlaceholder", "inputPlaceholder", "cssClass", "name", "onlyCountries", "errorStateMatcher", "enableSearch", "searchPlaceholder", "describedBy", "format", "placeholder", "required", "disabled"], outputs: ["countryChanged"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
109
+ ], viewQueries: [{ propertyName: "phoneInput", first: true, predicate: ["phoneInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<app-element-wrapper [data]=\"getData()\">\r\n <form #f=\"ngForm\" [formGroup]=\"phoneForm\">\r\n <ngx-mat-intl-tel-input\r\n (focusout)=\"onBlur()\"\r\n [ngClass]=\"{ error: phoneForm.invalid && (phoneForm.dirty || phoneForm.touched) }\"\r\n #phoneInput\r\n [preferredCountries]=\"preferredCountries\"\r\n [enablePlaceholder]=\"enablePlaceholder\"\r\n [enableSearch]=\"enableSearch\"\r\n [disabled]=\"disabled\"\r\n [formControlName]=\"'phone'\"\r\n name=\"phone\"\r\n [inputPlaceholder]=\"placeholder\"\r\n >\r\n </ngx-mat-intl-tel-input>\r\n </form>\r\n</app-element-wrapper>\r\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.ElementWrapperComponent, selector: "app-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i6.NgxMatIntlTelInputComponent, selector: "ngx-mat-intl-tel-input", inputs: ["preferredCountries", "enablePlaceholder", "inputPlaceholder", "cssClass", "name", "onlyCountries", "errorStateMatcher", "enableSearch", "searchPlaceholder", "describedBy", "format", "placeholder", "required", "disabled"], outputs: ["countryChanged"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
92
110
  }
93
111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsPhoneComponent, decorators: [{
94
112
  type: Component,
95
113
  args: [{ selector: 'ecabs-phone', providers: [
114
+ UnsubscribeService,
96
115
  {
97
116
  provide: NG_VALUE_ACCESSOR,
98
117
  useExisting: EcabsPhoneComponent,
99
118
  multi: true,
100
119
  },
101
120
  ], template: "<app-element-wrapper [data]=\"getData()\">\r\n <form #f=\"ngForm\" [formGroup]=\"phoneForm\">\r\n <ngx-mat-intl-tel-input\r\n (focusout)=\"onBlur()\"\r\n [ngClass]=\"{ error: phoneForm.invalid && (phoneForm.dirty || phoneForm.touched) }\"\r\n #phoneInput\r\n [preferredCountries]=\"preferredCountries\"\r\n [enablePlaceholder]=\"enablePlaceholder\"\r\n [enableSearch]=\"enableSearch\"\r\n [disabled]=\"disabled\"\r\n [formControlName]=\"'phone'\"\r\n name=\"phone\"\r\n [inputPlaceholder]=\"placeholder\"\r\n >\r\n </ngx-mat-intl-tel-input>\r\n </form>\r\n</app-element-wrapper>\r\n" }]
102
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { preferredCountries: [{
121
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.EcabsComponentsService }, { type: i2.UnsubscribeService }]; }, propDecorators: { preferredCountries: [{
103
122
  type: Input
104
123
  }], enablePlaceholder: [{
105
124
  type: Input
@@ -118,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
118
137
  type: HostListener,
119
138
  args: ['keypress', ['$event']]
120
139
  }] } });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcGhvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2VjYWJzLXBob25lL2VjYWJzLXBob25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1waG9uZS9lY2Ficy1waG9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFZLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sb0JBQW9CLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQWF4RCxNQUFNLE9BQU8sbUJBQ1gsU0FBUSxvQkFBb0I7SUEyQkU7SUF6QnJCLGtCQUFrQixDQUFZO0lBQzlCLGlCQUFpQixDQUFXO0lBQzVCLFlBQVksR0FBWSxJQUFJLENBQUM7SUFDN0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLFFBQVEsQ0FBVTtJQUV6QixNQUFNLEdBQW9DLElBQUksWUFBWSxFQUFFLENBQUM7SUFHdkUsVUFBVSxDQUErQjtJQUV6QyxTQUFTLENBQW1CO0lBQzVCLFFBQVEsQ0FBTztJQUNmLG9CQUFvQixHQUFHLENBQUUsR0FBRyxDQUFFLENBQUM7SUFFL0IsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBRSxPQUFPLENBQUUsRUFBRSxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksS0FBSyxDQUFFLEdBQUc7UUFDWixJQUFLLEdB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QixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDM0U7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBRSxPQUFPLENBQUUsQ0FBQyxNQUFNLENBQUUsQ0FBQztJQUNqRSxDQUFDO3dHQTdGVSxtQkFBbUI7NEZBQW5CLG1CQUFtQiw2VEFSbkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsbUJBQW1CO2dCQUNoQyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMkpDckJILCtwQkFpQkE7OzRGRE1hLG1CQUFtQjtrQkFYL0IsU0FBUzsrQkFDRSxhQUFhLGFBRVo7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxxQkFBcUI7NEJBQ2hDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOytGQUtRLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ1csUUFBUTtzQkFBeEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBR1AsVUFBVTtzQkFEVCxTQUFTO3VCQUFFLFlBQVk7Z0JBcUJrQixPQUFPO3NCQUFoRCxZQUFZO3VCQUFFLFVBQVUsRUFBRSxDQUFFLFFBQVEsQ0FBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG4gIFVudHlwZWRGb3JtR3JvdXAsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgVmFsaWRhdG9ycyxcclxuICBOZ0NvbnRyb2wsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ3hNYXRJbnRsVGVsSW5wdXRDb21wb25lbnQgfSBmcm9tICduZ3gtbWF0LWludGwtdGVsLWlucHV0JztcclxuaW1wb3J0IEVsZW1lbnRCYXNlQ29tcG9uZW50IGZyb20gJy4uL2Jhc2UvZWxlbWVudC1iYXNlJztcclxuXHJcbkBDb21wb25lbnQoIHtcclxuICBzZWxlY3RvcjogJ2VjYWJzLXBob25lJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtcGhvbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IEVjYWJzUGhvbmVDb21wb25lbnQsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59IClcclxuZXhwb3J0IGNsYXNzIEVjYWJzUGhvbmVDb21wb25lbnRcclxuICBleHRlbmRzIEVsZW1lbnRCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHByZWZlcnJlZENvdW50cmllcyE6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIGVuYWJsZVBsYWNlaG9sZGVyITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBlbmFibGVTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHVzZU9ubHlEaXNhYmxlZENsYXNzID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGVjbGFyZSByZXF1aXJlZDogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIG9uYmx1cjogRXZlbnRFbWl0dGVyPHsgdmFsdWU6IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCggJ3Bob25lSW5wdXQnIClcclxuICBwaG9uZUlucHV0ITogTmd4TWF0SW50bFRlbElucHV0Q29tcG9uZW50O1xyXG5cclxuICBwaG9uZUZvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgcGhvbmVTdWIhOiBhbnk7XHJcbiAgcHJvaGliaXRlZENoYXJhY3RlcnMgPSBbICctJyBdO1xyXG5cclxuICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLnBob25lRm9ybS5nZXQoICdwaG9uZScgKT8udmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUoIHZhbCApIHtcclxuICAgIGlmICggdmFsICE9PSB1bmRlZmluZWQgJiYgdGhpcy52YWx1ZSAhPT0gdmFsICkge1xyXG4gICAgICB0aGlzLnBob25lRm9ybS5zZXRWYWx1ZSggeyBwaG9uZTogdmFsIH0gKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvciApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCAna2V5cHJlc3MnLCBbICckZXZlbnQnIF0gKSBvbklucHV0KCBldmVudDogS2V5Ym9hcmRFdmVudCApOiB2b2lkIHtcclxuICAgIGlmICggdGhpcy5wcm9oaWJpdGVkQ2hhcmFjdGVycy5pbmNsdWRlcyggZXZlbnQua2V5ICkgKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucGhvbmVGb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoIHtcclxuICAgICAgcGhvbmU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woIHVuZGVmaW5lZCwgdGhpcy5yZXF1aXJlZCA/IFsgVmFsaWRhdG9ycy5yZXF1aXJlZCBdIDogW10gKSxcclxuICAgIH0gKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoIE5nQ29udHJvbCwgbnVsbCApO1xyXG4gICAgaWYgKCBuZ0NvbnRyb2wgKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBob25lU3ViID0gdGhpcy5waG9uZUZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSggKCBmb3JtVmFsICkgPT4ge1xyXG4gICAgICB0aGlzLnZhbHVlID0gZm9ybVZhbD8ucGhvbmU7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UoIHRoaXMudmFsdWUgKTtcclxuICAgICAgdGhpcy5vblRvdWNoKCB0aGlzLnZhbHVlICk7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKCk7XHJcbiAgICB9ICk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZTogYW55ID0gKCk6IHZvaWQgPT4geyB9O1xyXG4gIG9uVG91Y2g6IGFueSA9ICgpOiB2b2lkID0+IHsgfTtcclxuXHJcbiAgd3JpdGVWYWx1ZSggdmFsdWU6IGFueSApOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoIGZuOiBhbnkgKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZCggZm46IGFueSApOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnBob25lU3ViPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBob25lSW5wdXQucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cigpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCggdGhpcy52YWx1ZSApO1xyXG4gICAgdGhpcy5vbkNoYW5nZSggdGhpcy52YWx1ZSApO1xyXG4gICAgdGhpcy5oYW5kbGVFcnJvcnMoKTtcclxuICAgIHRoaXMub25ibHVyLmVtaXQoeyB2YWx1ZTogdGhpcy52YWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9ycygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZhbHVlID09PSB1bmRlZmluZWQgJiYgIXRoaXMucGhvbmVJbnB1dC5lbXB0eSkge1xyXG4gICAgICB0aGlzLnBob25lRm9ybS5jb250cm9sc1sncGhvbmUnXS5zZXRFcnJvcnMoeyB2YWxpZGF0ZVBob25lTnVtYmVyOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250cm9sLnNldEVycm9ycyggdGhpcy5waG9uZUZvcm0uZ2V0KCAncGhvbmUnICkuZXJyb3JzICk7XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtZWxlbWVudC13cmFwcGVyIFtkYXRhXT1cImdldERhdGEoKVwiPlxyXG4gIDxmb3JtICNmPVwibmdGb3JtXCIgW2Zvcm1Hcm91cF09XCJwaG9uZUZvcm1cIj5cclxuICAgICAgPG5neC1tYXQtaW50bC10ZWwtaW5wdXRcclxuICAgICAgICAoZm9jdXNvdXQpPVwib25CbHVyKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgZXJyb3I6IHBob25lRm9ybS5pbnZhbGlkICYmIChwaG9uZUZvcm0uZGlydHkgfHwgcGhvbmVGb3JtLnRvdWNoZWQpIH1cIlxyXG4gICAgICAgICNwaG9uZUlucHV0XHJcbiAgICAgICAgW3ByZWZlcnJlZENvdW50cmllc109XCJwcmVmZXJyZWRDb3VudHJpZXNcIlxyXG4gICAgICAgIFtlbmFibGVQbGFjZWhvbGRlcl09XCJlbmFibGVQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgW2VuYWJsZVNlYXJjaF09XCJlbmFibGVTZWFyY2hcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCIncGhvbmUnXCJcclxuICAgICAgICBuYW1lPVwicGhvbmVcIlxyXG4gICAgICAgIFtpbnB1dFBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgPlxyXG4gICAgICA8L25neC1tYXQtaW50bC10ZWwtaW5wdXQ+XHJcbiAgPC9mb3JtPlxyXG48L2FwcC1lbGVtZW50LXdyYXBwZXI+XHJcbiJdfQ==
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcGhvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2VjYWJzLXBob25lL2VjYWJzLXBob25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1waG9uZS9lY2Ficy1waG9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBRVosS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLG9CQUFvQixNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBYy9CLE1BQU0sT0FBTyxtQkFDWCxTQUFRLG9CQUFvQjtJQTJCQztJQUNBO0lBQ1Q7SUEzQlgsa0JBQWtCLENBQVk7SUFDOUIsaUJBQWlCLENBQVc7SUFDNUIsWUFBWSxHQUFZLElBQUksQ0FBQztJQUM3QixvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDckIsUUFBUSxDQUFVO0lBRXpCLE1BQU0sR0FBb0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUd2RSxVQUFVLENBQStCO0lBRXpDLFNBQVMsQ0FBbUI7SUFDNUIsUUFBUSxDQUFPO0lBQ2Ysb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU3QixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FB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O2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDVyxRQUFRO3NCQUF4QixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFHUCxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWTtnQkF3QmUsT0FBTztzQkFBNUMsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgTmdDb250cm9sLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBVbnR5cGVkRm9ybUdyb3VwLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge05neE1hdEludGxUZWxJbnB1dENvbXBvbmVudH0gZnJvbSAnbmd4LW1hdC1pbnRsLXRlbC1pbnB1dCc7XHJcbmltcG9ydCBFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XHJcbmltcG9ydCB7RWNhYnNDb21wb25lbnRzU2VydmljZX0gZnJvbSBcIi4uL2Jhc2Uvc2VydmljZXMvZWNhYnMtY29tcG9uZW50cy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7VW5zdWJzY3JpYmVTZXJ2aWNlfSBmcm9tIFwiLi4vYmFzZS9zZXJ2aWNlcy91bnN1YnNjcmliZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7dGFrZVVudGlsfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlY2Ficy1waG9uZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VjYWJzLXBob25lLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIFVuc3Vic2NyaWJlU2VydmljZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBFY2Fic1Bob25lQ29tcG9uZW50LFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVjYWJzUGhvbmVDb21wb25lbnRcclxuICBleHRlbmRzIEVsZW1lbnRCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHByZWZlcnJlZENvdW50cmllcyE6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIGVuYWJsZVBsYWNlaG9sZGVyITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBlbmFibGVTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHVzZU9ubHlEaXNhYmxlZENsYXNzID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGVjbGFyZSByZXF1aXJlZDogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIG9uYmx1cjogRXZlbnRFbWl0dGVyPHsgdmFsdWU6IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgncGhvbmVJbnB1dCcpXHJcbiAgcGhvbmVJbnB1dCE6IE5neE1hdEludGxUZWxJbnB1dENvbXBvbmVudDtcclxuXHJcbiAgcGhvbmVGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIHBob25lU3ViITogYW55O1xyXG4gIHByb2hpYml0ZWRDaGFyYWN0ZXJzID0gWyctJ107XHJcblxyXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMucGhvbmVGb3JtLmdldCgncGhvbmUnKT8udmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsKSB7XHJcbiAgICBpZiAodmFsICE9PSB1bmRlZmluZWQgJiYgdGhpcy52YWx1ZSAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMucGhvbmVGb3JtLnNldFZhbHVlKHtwaG9uZTogdmFsfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVjYWJzQ29tcG9uZW50c1NlcnZpY2U6IEVjYWJzQ29tcG9uZW50c1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSB1bnN1YnNjcmliZVNlcnZpY2U6IFVuc3Vic2NyaWJlU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXByZXNzJywgWyckZXZlbnQnXSkgb25JbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucHJvaGliaXRlZENoYXJhY3RlcnMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBob25lRm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcclxuICAgICAgcGhvbmU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodW5kZWZpbmVkLCB0aGlzLnJlcXVpcmVkID8gW1ZhbGlkYXRvcnMucmVxdWlyZWRdIDogW10pLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lY2Fic0NvbXBvbmVudHNTZXJ2aWNlLmdldENvbmZpZygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlU2VydmljZS5zdWJzY3JpcHRpb24oKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5wcmVmZXJyZWRDb3VudHJpZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5wcmVmZXJyZWRDb3VudHJpZXMgPSB2YWwuZGVmYXVsdENvdW50cmllcztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xyXG4gICAgaWYgKG5nQ29udHJvbCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5waG9uZVN1YiA9IHRoaXMucGhvbmVGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGZvcm1WYWwpID0+IHtcclxuICAgICAgdGhpcy52YWx1ZSA9IGZvcm1WYWw/LnBob25lO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICB0aGlzLm9uVG91Y2godGhpcy52YWx1ZSk7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKTogdm9pZCA9PiB7XHJcbiAgfTtcclxuICBvblRvdWNoOiBhbnkgPSAoKTogdm9pZCA9PiB7XHJcbiAgfTtcclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnBob25lU3ViPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBob25lSW5wdXQucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cigpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLmhhbmRsZUVycm9ycygpO1xyXG4gICAgdGhpcy5vbmJsdXIuZW1pdCh7dmFsdWU6IHRoaXMudmFsdWV9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9ycygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZhbHVlID09PSB1bmRlZmluZWQgJiYgIXRoaXMucGhvbmVJbnB1dC5lbXB0eSkge1xyXG4gICAgICB0aGlzLnBob25lRm9ybS5jb250cm9sc1sncGhvbmUnXS5zZXRFcnJvcnMoe3ZhbGlkYXRlUGhvbmVOdW1iZXI6IHRydWV9KTtcclxuICAgIH1cclxuICAgIHRoaXMuY29udHJvbD8uc2V0RXJyb3JzKHRoaXMucGhvbmVGb3JtLmdldCgncGhvbmUnKS5lcnJvcnMpO1xyXG4gIH1cclxufVxyXG4iLCI8YXBwLWVsZW1lbnQtd3JhcHBlciBbZGF0YV09XCJnZXREYXRhKClcIj5cclxuICA8Zm9ybSAjZj1cIm5nRm9ybVwiIFtmb3JtR3JvdXBdPVwicGhvbmVGb3JtXCI+XHJcbiAgICAgIDxuZ3gtbWF0LWludGwtdGVsLWlucHV0XHJcbiAgICAgICAgKGZvY3Vzb3V0KT1cIm9uQmx1cigpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7IGVycm9yOiBwaG9uZUZvcm0uaW52YWxpZCAmJiAocGhvbmVGb3JtLmRpcnR5IHx8IHBob25lRm9ybS50b3VjaGVkKSB9XCJcclxuICAgICAgICAjcGhvbmVJbnB1dFxyXG4gICAgICAgIFtwcmVmZXJyZWRDb3VudHJpZXNdPVwicHJlZmVycmVkQ291bnRyaWVzXCJcclxuICAgICAgICBbZW5hYmxlUGxhY2Vob2xkZXJdPVwiZW5hYmxlUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtlbmFibGVTZWFyY2hdPVwiZW5hYmxlU2VhcmNoXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ3Bob25lJ1wiXHJcbiAgICAgICAgbmFtZT1cInBob25lXCJcclxuICAgICAgICBbaW5wdXRQbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgID5cclxuICAgICAgPC9uZ3gtbWF0LWludGwtdGVsLWlucHV0PlxyXG4gIDwvZm9ybT5cclxuPC9hcHAtZWxlbWVudC13cmFwcGVyPlxyXG4iXX0=