@angular-material-extensions/google-maps-autocomplete
Version:
Autocomplete input component and directive for google-maps built with angular and material design
154 lines • 21.3 kB
JavaScript
var MatSearchGoogleMapsAutocompleteComponent_1;
import { __decorate } from "tslib";
import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';
import { ControlValueAccessor, FormBuilder, FormGroup, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
import { parseGermanAddress } from '../../helpers/parser';
import { Appearance } from '../mat-google-maps-autocomplete.component';
import { InputAnimations } from '../../animations';
let MatSearchGoogleMapsAutocompleteComponent = MatSearchGoogleMapsAutocompleteComponent_1 = class MatSearchGoogleMapsAutocompleteComponent {
constructor(formBuilder) {
this.formBuilder = formBuilder;
this.appearance = Appearance.STANDARD;
this.searchAddressLabel = 'Search Address';
this.streetNameLabel = 'Street';
this.streetNumberLabel = 'Nr.';
this.postalCodeLabel = 'PLZ';
this.localityLabel = 'Locality';
this.vicinityLabel = 'Vicinity';
this.onGermanAddressMapped = new EventEmitter();
this.firstInit = true;
this.propagateChange = (_) => {
};
}
ngOnInit() {
this.createAddressFormGroup();
}
createAddressFormGroup() {
this.addressFormGroup = this.formBuilder.group({
streetName: [this.value && this.value.streetName ? this.value.streetName : null, Validators.required],
streetNumber: [this.value && this.value.streetNumber ? this.value.streetNumber : null, Validators.required],
postalCode: [this.value && this.value.postalCode ? this.value.postalCode : null, Validators.required],
vicinity: [this.value && this.value.vicinity ? this.value.vicinity : null],
locality: this.formBuilder.group({
long: [this.value && this.value.locality && this.value.locality.long ? this.value.locality.long : null, Validators.required],
}),
});
}
syncAutoComplete($event) {
if (this.germanAddress) {
this.addressFormGroup.reset();
}
const germanAddress = parseGermanAddress($event);
this.germanAddress = germanAddress;
if (germanAddress.vicinity) {
this.addressFormGroup.get('vicinity').patchValue(germanAddress.vicinity);
}
if (germanAddress.streetName) {
this.addressFormGroup.get('streetName').patchValue(germanAddress.streetName);
}
if (germanAddress.streetNumber) {
this.addressFormGroup.get('streetNumber').patchValue(germanAddress.streetNumber.toString());
}
if (germanAddress.postalCode) {
this.addressFormGroup.get('postalCode').patchValue(germanAddress.postalCode);
}
if (germanAddress.locality && germanAddress.locality.long) {
this.addressFormGroup.get('locality.long').patchValue(germanAddress.locality.long);
}
this.value = germanAddress;
this.propagateChange(this.value);
this.onGermanAddressMapped.emit(germanAddress);
}
writeValue(obj) {
let shouldRecreateFG = false;
if (obj) {
if (!this.value && this.firstInit) {
shouldRecreateFG = true;
}
this.value = obj;
this.propagateChange(this.value);
if (shouldRecreateFG) {
this.createAddressFormGroup();
this.firstInit = false;
}
}
}
registerOnChange(fn) {
this.propagateChange = fn;
}
registerOnTouched(fn) {
}
setDisabledState(isDisabled) {
}
};
MatSearchGoogleMapsAutocompleteComponent.ctorParameters = () => [
{ type: FormBuilder }
];
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "appearance", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "searchAddressLabel", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "streetNameLabel", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "streetNumberLabel", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "postalCodeLabel", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "localityLabel", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "vicinityLabel", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "showVicinity", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "country", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "placeIdOnly", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "strictBounds", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "types", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "type", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "readonly", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "disableSearch", void 0);
__decorate([
Input()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "value", void 0);
__decorate([
Output()
], MatSearchGoogleMapsAutocompleteComponent.prototype, "onGermanAddressMapped", void 0);
MatSearchGoogleMapsAutocompleteComponent = MatSearchGoogleMapsAutocompleteComponent_1 = __decorate([
Component({
selector: 'mat-search-google-maps-autocomplete',
template: "<div fxLayout=\"column\">\n <div *ngIf=\"!disableSearch\" fxFlex=\"100\">\n <!--search address-->\n <mat-form-field fxFlex=\"auto\" [appearance]=\"appearance\" [@animate]=\"{ value: '*', params: { y: '100%' } }\">\n <mat-label>{{searchAddressLabel}}</mat-label>\n <input\n (onAutocompleteSelected)=\"syncAutoComplete($event)\"\n [country]=\"country\"\n [placeIdOnly]=\"placeIdOnly\"\n [strictBounds]=\"strictBounds\"\n [types]=\"types\"\n [type]=\"type\"\n matGoogleMapsAutocomplete\n matInput\n required\n />\n <mat-icon color=\"primary\" matSuffix>search</mat-icon>\n <!-- <mat-error>{{ 'msa.contactData.currentAddress.error' | translate }}</mat-error>-->\n </mat-form-field>\n </div>\n\n <form [formGroup]=\"addressFormGroup\" fxFlex fxLayoutGap=\"10px\">\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\n <mat-form-field fxFlex=\"80\"\n [appearance]=\"appearance\"\n [@animate]=\"{ value: '*', params: { y: '100%' } }\">\n <mat-label>{{streetNameLabel}}</mat-label>\n <input\n [readonly]=\"readonly\"\n formControlName=\"streetName\"\n matInput\n required\n />\n <!-- <mat-icon color=\"primary\" matSuffix>add_location</mat-icon>-->\n <!-- <mat-error>{{ 'msa.contactData.currentAddress.error' | translate }}</mat-error>-->\n </mat-form-field>\n <mat-form-field fxFlex=\"20\" [appearance]=\"appearance\" [@animate]=\"{ value: '*', params: { y: '100%' } }\">\n <mat-label>{{streetNumberLabel}}</mat-label>\n <input\n [readonly]=\"readonly\"\n formControlName=\"streetNumber\"\n matInput\n required\n />\n <!-- <mat-icon color=\"primary\" matSuffix>add_location</mat-icon>-->\n <!-- <mat-error>{{ 'msa.contactData.currentAddress.error' | translate }}</mat-error>-->\n </mat-form-field>\n </div>\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\n <mat-form-field fxFlex=\"20\" [appearance]=\"appearance\" [@animate]=\"{ value: '*', params: { y: '100%' } }\">\n <mat-label>{{postalCodeLabel}}</mat-label>\n <input\n [readonly]=\"readonly\"\n formControlName=\"postalCode\"\n matInput\n required\n />\n <!-- <mat-icon color=\"primary\" matSuffix>add_location</mat-icon>-->\n <!-- <mat-error>{{ 'msa.contactData.currentAddress.error' | translate }}</mat-error>-->\n </mat-form-field>\n <mat-form-field *ngIf=\"showVicinity\" fxFlex=\"auto\"\n [appearance]=\"appearance\"\n [@animate]=\"{ value: '*', params: { y: '100%' } }\">\n <mat-label>{{vicinityLabel}}</mat-label>\n <input\n [readonly]=\"readonly\"\n matInput\n formControlName=\"vicinity\"\n />\n </mat-form-field>\n <div formGroupName=\"locality\" fxFlex=\"auto\">\n <mat-form-field fxFlex=\"auto\" [appearance]=\"appearance\" [@animate]=\"{ value: '*', params: { y: '100%' } }\">\n <mat-label>{{localityLabel}}</mat-label>\n <input\n [readonly]=\"readonly\"\n formControlName=\"long\"\n matInput\n required\n />\n <mat-icon color=\"primary\" matSuffix>add_location</mat-icon>\n <!-- <mat-error>{{ 'msa.contactData.currentAddress.error' | translate }}</mat-error>-->\n </mat-form-field>\n </div>\n </div>\n </form>\n</div>\n",
animations: InputAnimations,
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => MatSearchGoogleMapsAutocompleteComponent_1),
multi: true
}
],
styles: [""]
})
], MatSearchGoogleMapsAutocompleteComponent);
export { MatSearchGoogleMapsAutocompleteComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXNlYXJjaC1nb29nbGUtbWFwcy1hdXRvY29tcGxldGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItbWF0ZXJpYWwtZXh0ZW5zaW9ucy9nb29nbGUtbWFwcy1hdXRvY29tcGxldGUvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L21hdC1zZWFyY2gtZ29vZ2xlLW1hcHMtYXV0b2NvbXBsZXRlL21hdC1zZWFyY2gtZ29vZ2xlLW1hcHMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFlakQsSUFBYSx3Q0FBd0MsZ0RBQXJELE1BQWEsd0NBQXdDO0lBOERuRCxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQTNENUMsZUFBVSxHQUF3QixVQUFVLENBQUMsUUFBUSxDQUFDO1FBR3RELHVCQUFrQixHQUFHLGdCQUFnQixDQUFDO1FBR3RDLG9CQUFlLEdBQUcsUUFBUSxDQUFDO1FBRzNCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUcxQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUd4QixrQkFBYSxHQUFHLFVBQVUsQ0FBQztRQUczQixrQkFBYSxHQUFHLFVBQVUsQ0FBQztRQStCM0IsMEJBQXFCLEdBQWdDLElBQUksWUFBWSxF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LEVBQUU7aUZBQ21CO0FBRzNCO0lBREMsS0FBSyxFQUFFO21GQUNrQjtBQUcxQjtJQURDLEtBQUssRUFBRTtpRkFDZ0I7QUFHeEI7SUFEQyxLQUFLLEVBQUU7K0VBQ21CO0FBRzNCO0lBREMsS0FBSyxFQUFFOytFQUNtQjtBQUczQjtJQURDLEtBQUssRUFBRTs4RUFDYztBQUd0QjtJQURDLEtBQUssRUFBRTt5RUFDbUI7QUFHM0I7SUFEQyxLQUFLLEVBQUU7NkVBQ2M7QUFHdEI7SUFEQyxLQUFLLEVBQUU7OEVBQ2U7QUFHdkI7SUFEQyxLQUFLLEVBQUU7dUVBQ1M7QUFJakI7SUFEQyxLQUFLLEVBQUU7c0VBQ007QUFHZDtJQURDLEtBQUssRUFBRTswRUFDVTtBQUdsQjtJQURDLEtBQUssRUFBRTsrRUFDZTtBQUd2QjtJQURDLEtBQUssRUFBRTt1RUFDYTtBQUdyQjtJQURDLE1BQU0sRUFBRTt1RkFDOEU7QUFwRDVFLHdDQUF3QztJQWJwRCxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUscUNBQXFDO1FBQy9DLGlqSEFBbUU7UUFFbkUsVUFBVSxFQUFFLGVBQWU7UUFDM0IsU0FBUyxFQUFFO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQ0FBd0MsQ0FBQztnQkFDdkUsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGOztLQUNGLENBQUM7R0FDVyx3Q0FBd0MsQ0FxSXBEO1NBcklZLHdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge3BhcnNlR2VybWFuQWRkcmVzc30gZnJvbSAnLi4vLi4vaGVscGVycy9wYXJzZXInO1xuaW1wb3J0IHtHZXJtYW5BZGRyZXNzfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7QXBwZWFyYW5jZX0gZnJvbSAnLi4vbWF0LWdvb2dsZS1tYXBzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHtJbnB1dEFuaW1hdGlvbnN9IGZyb20gJy4uLy4uL2FuaW1hdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtc2VhcmNoLWdvb2dsZS1tYXBzLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXQtc2VhcmNoLWdvb2dsZS1tYXBzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hdC1zZWFyY2gtZ29vZ2xlLW1hcHMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IElucHV0QW5pbWF0aW9ucyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYXRTZWFyY2hHb29nbGVNYXBzQXV0b2NvbXBsZXRlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1hdFNlYXJjaEdvb2dsZU1hcHNBdXRvY29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBASW5wdXQoKVxuICBhcHBlYXJhbmNlOiBzdHJpbmcgfCBBcHBlYXJhbmNlID0gQXBwZWFyYW5jZS5TVEFOREFSRDtcblxuICBASW5wdXQoKVxuICBzZWFyY2hBZGRyZXNzTGFiZWwgPSAnU2VhcmNoIEFkZHJlc3MnO1xuXG4gIEBJbnB1dCgpXG4gIHN0cmVldE5hbWVMYWJlbCA9ICdTdHJlZXQnO1xuXG4gIEBJbnB1dCgpXG4gIHN0cmVldE51bWJlckxhYmVsID0gJ05yLic7XG5cbiAgQElucHV0KClcbiAgcG9zdGFsQ29kZUxhYmVsID0gJ1BMWic7XG5cbiAgQElucHV0KClcbiAgbG9jYWxpdHlMYWJlbCA9ICdMb2NhbGl0eSc7XG5cbiAgQElucHV0KClcbiAgdmljaW5pdHlMYWJlbCA9ICdWaWNpbml0eSc7XG5cbiAgQElucHV0KClcbiAgc2hvd1ZpY2luaXR5OiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIGNvdW50cnk6IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlSWRPbmx5PzogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBzdHJpY3RCb3VuZHM/OiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHR5cGVzPzogc3RyaW5nW107XG4gIC8vIHR5cGVzOiBzdHJpbmdbXSA9IFsnYWRkcmVzcyddO1xuXG4gIEBJbnB1dCgpXG4gIHR5cGU/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZVNlYXJjaDogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICB2YWx1ZTogR2VybWFuQWRkcmVzcztcblxuICBAT3V0cHV0KClcbiAgb25HZXJtYW5BZGRyZXNzTWFwcGVkOiBFdmVudEVtaXR0ZXI8R2VybWFuQWRkcmVzcz4gPSBuZXcgRXZlbnRFbWl0dGVyPEdlcm1hbkFkZHJlc3M+KCk7XG5cbiAgZ2VybWFuQWRkcmVzczogR2VybWFuQWRkcmVzcztcbiAgYWRkcmVzc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIGZpcnN0SW5pdCA9IHRydWU7XG5cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNyZWF0ZUFkZHJlc3NGb3JtR3JvdXAoKTtcbiAgfVxuXG4gIGNyZWF0ZUFkZHJlc3NGb3JtR3JvdXAoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRyZXNzRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBzdHJlZXROYW1lOiBbdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLnN0cmVldE5hbWUgPyB0aGlzLnZhbHVlLnN0cmVldE5hbWUgOiBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHN0cmVldE51bWJlcjogW3RoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5zdHJlZXROdW1iZXIgPyB0aGlzLnZhbHVlLnN0cmVldE51bWJlciA6IG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcG9zdGFsQ29kZTogW3RoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5wb3N0YWxDb2RlID8gdGhpcy52YWx1ZS5wb3N0YWxDb2RlIDogbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB2aWNpbml0eTogW3RoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS52aWNpbml0eSA/IHRoaXMudmFsdWUudmljaW5pdHkgOiBudWxsXSxcbiAgICAgIGxvY2FsaXR5OiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgbG9uZzogW3RoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sb2NhbGl0eSAmJiB0aGlzLnZhbHVlLmxvY2FsaXR5LmxvbmcgPyB0aGlzLnZhbHVlLmxvY2FsaXR5LmxvbmcgOiBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgc3luY0F1dG9Db21wbGV0ZSgkZXZlbnQ6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdCkge1xuICAgIGlmICh0aGlzLmdlcm1hbkFkZHJlc3MpIHtcbiAgICAgIHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5yZXNldCgpO1xuICAgIH1cbiAgICBjb25zdCBnZXJtYW5BZGRyZXNzOiBHZXJtYW5BZGRyZXNzID0gcGFyc2VHZXJtYW5BZGRyZXNzKCRldmVudCk7XG4gICAgdGhpcy5nZXJtYW5BZGRyZXNzID0gZ2VybWFuQWRkcmVzcztcbiAgICBpZiAoZ2VybWFuQWRkcmVzcy52aWNpbml0eSkge1xuICAgICAgdGhpcy5hZGRyZXNzRm9ybUdyb3VwLmdldCgndmljaW5pdHknKS5wYXRjaFZhbHVlKGdlcm1hbkFkZHJlc3MudmljaW5pdHkpO1xuICAgIH1cbiAgICBpZiAoZ2VybWFuQWRkcmVzcy5zdHJlZXROYW1lKSB7XG4gICAgICB0aGlzLmFkZHJlc3NGb3JtR3JvdXAuZ2V0KCdzdHJlZXROYW1lJykucGF0Y2hWYWx1ZShnZXJtYW5BZGRyZXNzLnN0cmVldE5hbWUpO1xuICAgIH1cbiAgICBpZiAoZ2VybWFuQWRkcmVzcy5zdHJlZXROdW1iZXIpIHtcbiAgICAgIHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5nZXQoJ3N0cmVldE51bWJlcicpLnBhdGNoVmFsdWUoZ2VybWFuQWRkcmVzcy5zdHJlZXROdW1iZXIudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChnZXJtYW5BZGRyZXNzLnBvc3RhbENvZGUpIHtcbiAgICAgIHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5nZXQoJ3Bvc3RhbENvZGUnKS5wYXRjaFZhbHVlKGdlcm1hbkFkZHJlc3MucG9zdGFsQ29kZSk7XG4gICAgfVxuICAgIGlmIChnZXJtYW5BZGRyZXNzLmxvY2FsaXR5ICYmIGdlcm1hbkFkZHJlc3MubG9jYWxpdHkubG9uZykge1xuICAgICAgdGhpcy5hZGRyZXNzRm9ybUdyb3VwLmdldCgnbG9jYWxpdHkubG9uZycpLnBhdGNoVmFsdWUoZ2VybWFuQWRkcmVzcy5sb2NhbGl0eS5sb25nKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gZ2VybWFuQWRkcmVzcztcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uR2VybWFuQWRkcmVzc01hcHBlZC5lbWl0KGdlcm1hbkFkZHJlc3MpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIGxldCBzaG91bGRSZWNyZWF0ZUZHID0gZmFsc2U7XG4gICAgaWYgKG9iaikge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlICYmIHRoaXMuZmlyc3RJbml0KSB7XG4gICAgICAgIHNob3VsZFJlY3JlYXRlRkcgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdGhpcy52YWx1ZSA9IG9iajtcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgaWYgKHNob3VsZFJlY3JlYXRlRkcpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVBZGRyZXNzRm9ybUdyb3VwKCk7XG4gICAgICAgIHRoaXMuZmlyc3RJbml0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICB9XG5cbn1cbiJdfQ==