primeng
Version:
[](https://opensource.org/licenses/MIT) [](https://badge.fury.io/js/primeng) [ || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { Component, NgModule, Type, ComponentFactoryResolver, ViewChild, OnDestroy, ComponentRef, AfterViewInit, ChangeDetectorRef, Renderer2, NgZone, ElementRef } from '@angular/core';
import { trigger, state, style, transition, animate } from '@angular/animations';
import { DynamicDialogContent } from './dynamicdialogcontent';
import { DynamicDialogConfig } from './dynamicdialog-config';
import { CommonModule } from '@angular/common';
import { DomHandler } from 'primeng/dom';
import { DynamicDialogRef } from './dynamicdialog-ref';
var DynamicDialogComponent = /** @class */ (function () {
function DynamicDialogComponent(componentFactoryResolver, cd, renderer, config, dialogRef, zone) {
this.componentFactoryResolver = componentFactoryResolver;
this.cd = cd;
this.renderer = renderer;
this.config = config;
this.dialogRef = dialogRef;
this.zone = zone;
this.visible = true;
}
DynamicDialogComponent.prototype.ngAfterViewInit = function () {
this.loadChildComponent(this.childComponentType);
this.cd.detectChanges();
};
DynamicDialogComponent.prototype.onOverlayClicked = function (evt) {
this.dialogRef.close();
};
DynamicDialogComponent.prototype.onDialogClicked = function (evt) {
evt.stopPropagation();
};
DynamicDialogComponent.prototype.loadChildComponent = function (componentType) {
var componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);
var viewContainerRef = this.insertionPoint.viewContainerRef;
viewContainerRef.clear();
this.componentRef = viewContainerRef.createComponent(componentFactory);
};
DynamicDialogComponent.prototype.moveOnTop = function () {
if (this.config.autoZIndex !== false) {
var zIndex = this.config.baseZIndex || 0 + (++DomHandler.zindex);
this.container.style.zIndex = String(zIndex);
this.maskViewChild.nativeElement.style.zIndex = String(zIndex - 1);
}
};
DynamicDialogComponent.prototype.onAnimationStart = function (event) {
switch (event.toState) {
case 'visible':
this.container = event.element;
this.moveOnTop();
this.bindGlobalListeners();
DomHandler.addClass(document.body, 'ui-overflow-hidden');
break;
case 'void':
this.onContainerDestroy();
break;
}
};
DynamicDialogComponent.prototype.onAnimationEnd = function (event) {
if (event.toState === 'void') {
this.dialogRef.close();
}
};
DynamicDialogComponent.prototype.onContainerDestroy = function () {
DomHandler.removeClass(document.body, 'ui-overflow-hidden');
this.unbindGlobalListeners();
this.container = null;
};
DynamicDialogComponent.prototype.close = function () {
this.visible = false;
};
DynamicDialogComponent.prototype.onMaskClick = function () {
if (this.config.dismissableMask) {
this.close();
}
};
DynamicDialogComponent.prototype.bindGlobalListeners = function () {
if (this.config.closeOnEscape !== false && this.config.closable !== false) {
this.bindDocumentEscapeListener();
}
};
DynamicDialogComponent.prototype.unbindGlobalListeners = function () {
this.unbindDocumentEscapeListener();
};
DynamicDialogComponent.prototype.bindDocumentEscapeListener = function () {
var _this = this;
this.documentEscapeListener = this.renderer.listen('document', 'keydown', function (event) {
if (event.which == 27) {
if (parseInt(_this.container.style.zIndex) == DomHandler.zindex) {
_this.close();
}
}
});
};
DynamicDialogComponent.prototype.unbindDocumentEscapeListener = function () {
if (this.documentEscapeListener) {
this.documentEscapeListener();
this.documentEscapeListener = null;
}
};
DynamicDialogComponent.prototype.ngOnDestroy = function () {
this.onContainerDestroy();
if (this.componentRef) {
this.componentRef.destroy();
}
};
DynamicDialogComponent.ctorParameters = function () { return [
{ type: ComponentFactoryResolver },
{ type: ChangeDetectorRef },
{ type: Renderer2 },
{ type: DynamicDialogConfig },
{ type: DynamicDialogRef },
{ type: NgZone }
]; };
__decorate([
ViewChild(DynamicDialogContent, { static: false })
], DynamicDialogComponent.prototype, "insertionPoint", void 0);
__decorate([
ViewChild('mask', { static: false })
], DynamicDialogComponent.prototype, "maskViewChild", void 0);
DynamicDialogComponent = __decorate([
Component({
selector: 'p-dynamicDialog',
template: "\n\t\t<div #mask class=\"ui-widget-overlay ui-dialog-mask ui-dialog-mask-scrollblocker\" *ngIf=\"visible\" (click)=\"onMaskClick()\"></div>\n\t\t<div [ngClass]=\"{'ui-dialog ui-dynamicdialog ui-widget ui-widget-content ui-corner-all ui-shadow':true, 'ui-dialog-rtl': config.rtl}\" [ngStyle]=\"config.style\" [class]=\"config.styleClass\"\n\t\t\t[@animation]=\"{value: 'visible', params: {transitionParams: config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)'}}\" \n\t\t\t(@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\" role=\"dialog\" *ngIf=\"visible\"\n\t\t\t[style.width]=\"config.width\" [style.height]=\"config.height\">\n <div class=\"ui-dialog-titlebar ui-widget-header ui-helper-clearfix ui-corner-top\" *ngIf=\"config.showHeader === false ? false: true\">\n <span class=\"ui-dialog-title\">{{config.header}}</span>\n <div class=\"ui-dialog-titlebar-icons\">\n <a [ngClass]=\"'ui-dialog-titlebar-icon ui-dialog-titlebar-close ui-corner-all'\" tabindex=\"0\" role=\"button\" (click)=\"close()\" (keydown.enter)=\"close()\" *ngIf=\"config.closable !== false\">\n <span class=\"pi pi-times\"></span>\n </a>\n </div>\n </div>\n <div class=\"ui-dialog-content ui-widget-content\" [ngStyle]=\"config.contentStyle\">\n\t\t\t\t<ng-template pDynamicDialogContent></ng-template>\n\t\t\t</div>\n\t\t\t<div class=\"ui-dialog-footer ui-widget-content\" *ngIf=\"config.footer\">\n\t\t\t\t{{config.footer}}\n </div>\n\t\t</div>\n\t",
animations: [
trigger('animation', [
state('void', style({
transform: 'translateX(-50%) translateY(-50%) scale(0.7)',
opacity: 0
})),
state('visible', style({
transform: 'translateX(-50%) translateY(-50%) scale(1)',
opacity: 1
})),
transition('* => *', animate('{{transitionParams}}'))
])
]
})
], DynamicDialogComponent);
return DynamicDialogComponent;
}());
export { DynamicDialogComponent };
var DynamicDialogModule = /** @class */ (function () {
function DynamicDialogModule() {
}
DynamicDialogModule = __decorate([
NgModule({
imports: [CommonModule],
declarations: [DynamicDialogComponent, DynamicDialogContent],
entryComponents: [DynamicDialogComponent]
})
], DynamicDialogModule);
return DynamicDialogModule;
}());
export { DynamicDialogModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY2RpYWxvZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3ByaW1lbmcvZHluYW1pY2RpYWxvZy8iLCJzb3VyY2VzIjpbImR5bmFtaWNkaWFsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6TCxPQUFPLEVBQUUsT0FBTyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQXdDdkQ7SUFrQkMsZ0NBQW9CLHdCQUFrRCxFQUFVLEVBQXFCLEVBQVMsUUFBbUIsRUFDeEgsTUFBMkIsRUFBVSxTQUEyQixFQUFTLElBQVk7UUFEMUUsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUN4SCxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQWpCOUYsWUFBTyxHQUFZLElBQUksQ0FBQztJQWlCMEUsQ0FBQztJQUVuRyxnREFBZSxHQUFmO1FB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QVMsQ0FBQztZQUNWLFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsUUFBUSxFQUFFLDhsREFxQlQ7WUFDRCxVQUFVLEVBQUU7Z0JBQ0wsT0FBTyxDQUFDLFdBQVcsRUFBRTtvQkFDakIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7d0JBQ2hCLFNBQVMsRUFBRSw4Q0FBOEM7d0JBQ3pELE9BQU8sRUFBRSxDQUFDO3FCQUNiLENBQUMsQ0FBQztvQkFDSCxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQzt3QkFDbkIsU0FBUyxFQUFFLDRDQUE0Qzt3QkFDdkQsT0FBTyxFQUFFLENBQUM7cUJBQ2IsQ0FBQyxDQUFDO29CQUNILFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUM7aUJBQ3hELENBQUM7YUFDUjtTQUNELENBQUM7T0FDVyxzQkFBc0IsQ0EwSGxDO0lBQUQsNkJBQUM7Q0FBQSxBQTFIRCxJQTBIQztTQTFIWSxzQkFBc0I7QUFpSW5DO0lBQUE7SUFBbUMsQ0FBQztJQUF2QixtQkFBbUI7UUFML0IsUUFBUSxDQUFDO1lBQ1QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO1lBQ3ZCLFlBQVksRUFBRSxDQUFDLHNCQUFzQixFQUFFLG9CQUFvQixDQUFDO1lBQzVELGVBQWUsRUFBRSxDQUFDLHNCQUFzQixDQUFDO1NBQ3pDLENBQUM7T0FDVyxtQkFBbUIsQ0FBSTtJQUFELDBCQUFDO0NBQUEsQUFBcEMsSUFBb0M7U0FBdkIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBOZ01vZHVsZSwgVHlwZSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBWaWV3Q2hpbGQsIE9uRGVzdHJveSwgQ29tcG9uZW50UmVmLCBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgUmVuZGVyZXIyLCBOZ1pvbmUsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRyaWdnZXIsc3RhdGUsc3R5bGUsdHJhbnNpdGlvbixhbmltYXRlLEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29udGVudCB9IGZyb20gJy4vZHluYW1pY2RpYWxvZ2NvbnRlbnQnO1xuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZyB9IGZyb20gJy4vZHluYW1pY2RpYWxvZy1jb25maWcnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERvbUhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAnLi9keW5hbWljZGlhbG9nLXJlZic7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3AtZHluYW1pY0RpYWxvZycsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PGRpdiAjbWFzayBjbGFzcz1cInVpLXdpZGdldC1vdmVybGF5IHVpLWRpYWxvZy1tYXNrIHVpLWRpYWxvZy1tYXNrLXNjcm9sbGJsb2NrZXJcIiAqbmdJZj1cInZpc2libGVcIiAoY2xpY2spPVwib25NYXNrQ2xpY2soKVwiPjwvZGl2PlxuXHRcdDxkaXYgW25nQ2xhc3NdPVwieyd1aS1kaWFsb2cgdWktZHluYW1pY2RpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1zaGFkb3cnOnRydWUsICd1aS1kaWFsb2ctcnRsJzogY29uZmlnLnJ0bH1cIiBbbmdTdHlsZV09XCJjb25maWcuc3R5bGVcIiBbY2xhc3NdPVwiY29uZmlnLnN0eWxlQ2xhc3NcIlxuXHRcdFx0W0BhbmltYXRpb25dPVwie3ZhbHVlOiAndmlzaWJsZScsIHBhcmFtczoge3RyYW5zaXRpb25QYXJhbXM6IGNvbmZpZy50cmFuc2l0aW9uT3B0aW9ucyB8fCAnMTUwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknfX1cIiBcblx0XHRcdChAYW5pbWF0aW9uLnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiIChAYW5pbWF0aW9uLmRvbmUpPVwib25BbmltYXRpb25FbmQoJGV2ZW50KVwiIHJvbGU9XCJkaWFsb2dcIiAqbmdJZj1cInZpc2libGVcIlxuXHRcdFx0W3N0eWxlLndpZHRoXT1cImNvbmZpZy53aWR0aFwiIFtzdHlsZS5oZWlnaHRdPVwiY29uZmlnLmhlaWdodFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVpLWRpYWxvZy10aXRsZWJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItdG9wXCIgKm5nSWY9XCJjb25maWcuc2hvd0hlYWRlciA9PT0gZmFsc2UgPyBmYWxzZTogdHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidWktZGlhbG9nLXRpdGxlXCI+e3tjb25maWcuaGVhZGVyfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVpLWRpYWxvZy10aXRsZWJhci1pY29uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCIndWktZGlhbG9nLXRpdGxlYmFyLWljb24gdWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5lci1hbGwnXCIgdGFiaW5kZXg9XCIwXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZSgpXCIgKGtleWRvd24uZW50ZXIpPVwiY2xvc2UoKVwiICpuZ0lmPVwiY29uZmlnLmNsb3NhYmxlICE9PSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS10aW1lc1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnRcIiBbbmdTdHlsZV09XCJjb25maWcuY29udGVudFN0eWxlXCI+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBwRHluYW1pY0RpYWxvZ0NvbnRlbnQ+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInVpLWRpYWxvZy1mb290ZXIgdWktd2lkZ2V0LWNvbnRlbnRcIiAqbmdJZj1cImNvbmZpZy5mb290ZXJcIj5cblx0XHRcdFx0e3tjb25maWcuZm9vdGVyfX1cbiAgICAgICAgICAgIDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRgLFxuXHRhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2FuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgwLjcpJyxcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBzdGF0ZSgndmlzaWJsZScsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMSknLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDFcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJyogPT4gKicsIGFuaW1hdGUoJ3t7dHJhbnNpdGlvblBhcmFtc319JykpXG4gICAgICAgIF0pXG5cdF1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cblx0dmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG5cblx0Y29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcblxuXHRtYXNrOiBIVE1MRGl2RWxlbWVudDtcblxuXHRAVmlld0NoaWxkKER5bmFtaWNEaWFsb2dDb250ZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgaW5zZXJ0aW9uUG9pbnQ6IER5bmFtaWNEaWFsb2dDb250ZW50O1xuXHRcblx0QFZpZXdDaGlsZCgnbWFzaycsIHsgc3RhdGljOiBmYWxzZSB9KSBtYXNrVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG5cdGNoaWxkQ29tcG9uZW50VHlwZTogVHlwZTxhbnk+O1xuXG5cdGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQ7XG5cblx0ZG9jdW1lbnRFc2NhcGVMaXN0ZW5lcjogRnVuY3Rpb247XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuXHRcdFx0cHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZywgcHJpdmF0ZSBkaWFsb2dSZWY6IER5bmFtaWNEaWFsb2dSZWYsIHB1YmxpYyB6b25lOiBOZ1pvbmUpIHsgfVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHR0aGlzLmxvYWRDaGlsZENvbXBvbmVudCh0aGlzLmNoaWxkQ29tcG9uZW50VHlwZSk7XG5cdFx0dGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cdH1cblxuXHRvbk92ZXJsYXlDbGlja2VkKGV2dDogTW91c2VFdmVudCkge1xuXHRcdHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG5cdH1cblxuXHRvbkRpYWxvZ0NsaWNrZWQoZXZ0OiBNb3VzZUV2ZW50KSB7XG5cdFx0ZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXHR9XG5cblx0bG9hZENoaWxkQ29tcG9uZW50KGNvbXBvbmVudFR5cGU6IFR5cGU8YW55Pikge1xuXHRcdGxldCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50VHlwZSk7XG5cblx0XHRsZXQgdmlld0NvbnRhaW5lclJlZiA9IHRoaXMuaW5zZXJ0aW9uUG9pbnQudmlld0NvbnRhaW5lclJlZjtcblx0XHR2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG5cblx0XHR0aGlzLmNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudEZhY3RvcnkpO1xuXHR9XG5cdFxuXHRtb3ZlT25Ub3AoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5hdXRvWkluZGV4ICE9PSBmYWxzZSkge1xuXHRcdFx0Y29uc3QgekluZGV4ID0gdGhpcy5jb25maWcuYmFzZVpJbmRleHx8MCArICgrK0RvbUhhbmRsZXIuemluZGV4KTtcblx0XHRcdHRoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleCA9IFN0cmluZyh6SW5kZXgpO1xuXHRcdFx0dGhpcy5tYXNrVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUuekluZGV4ID0gU3RyaW5nKHpJbmRleCAtIDEpO1xuXHRcdH1cbiAgICB9XG5cblx0b25BbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcblx0XHRzd2l0Y2goZXZlbnQudG9TdGF0ZSkge1xuXHRcdFx0Y2FzZSAndmlzaWJsZSc6XG5cdFx0XHRcdHRoaXMuY29udGFpbmVyID0gZXZlbnQuZWxlbWVudDtcblx0XHRcdFx0dGhpcy5tb3ZlT25Ub3AoKTtcblx0XHRcdFx0dGhpcy5iaW5kR2xvYmFsTGlzdGVuZXJzKCk7XG5cdFx0XHRcdERvbUhhbmRsZXIuYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ3VpLW92ZXJmbG93LWhpZGRlbicpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ3ZvaWQnOlxuXHRcdFx0XHR0aGlzLm9uQ29udGFpbmVyRGVzdHJveSgpO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdFxuXHRvbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcblx0XHRpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ3ZvaWQnKSB7XG5cdFx0XHR0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuXHRcdH1cblx0fVxuXG5cdG9uQ29udGFpbmVyRGVzdHJveSgpIHtcblx0XHREb21IYW5kbGVyLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksICd1aS1vdmVyZmxvdy1oaWRkZW4nKTtcblx0XHR0aGlzLnVuYmluZEdsb2JhbExpc3RlbmVycygpO1xuXHRcdHRoaXMuY29udGFpbmVyID0gbnVsbDtcblx0fVxuXHQgICAgXG5cdGNsb3NlKCkge1xuXHRcdHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuXHR9XG5cblx0b25NYXNrQ2xpY2soKSB7XG5cdFx0aWYgKHRoaXMuY29uZmlnLmRpc21pc3NhYmxlTWFzaykge1xuXHRcdFx0dGhpcy5jbG9zZSgpO1xuXHRcdH1cblx0fVxuXG5cdGJpbmRHbG9iYWxMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5jbG9zZU9uRXNjYXBlICE9PSBmYWxzZSAmJiB0aGlzLmNvbmZpZy5jbG9zYWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50RXNjYXBlTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICB1bmJpbmRHbG9iYWxMaXN0ZW5lcnMoKSB7XG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRFc2NhcGVMaXN0ZW5lcigpO1xuXHR9XG5cdFxuXHRiaW5kRG9jdW1lbnRFc2NhcGVMaXN0ZW5lcigpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudEVzY2FwZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2tleWRvd24nLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC53aGljaCA9PSAyNykge1xuICAgICAgICAgICAgICAgIGlmIChwYXJzZUludCh0aGlzLmNvbnRhaW5lci5zdHlsZS56SW5kZXgpID09IERvbUhhbmRsZXIuemluZGV4KSB7XG5cdFx0XHRcdFx0dGhpcy5jbG9zZSgpO1xuXHRcdFx0XHR9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICB1bmJpbmREb2N1bWVudEVzY2FwZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudEVzY2FwZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RXNjYXBlTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRFc2NhcGVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5vbkNvbnRhaW5lckRlc3Ryb3koKTtcblxuXHRcdGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuXHRcdFx0dGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuXHRcdH1cblx0fVxufVxuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcblx0ZGVjbGFyYXRpb25zOiBbRHluYW1pY0RpYWxvZ0NvbXBvbmVudCwgRHluYW1pY0RpYWxvZ0NvbnRlbnRdLFxuXHRlbnRyeUNvbXBvbmVudHM6IFtEeW5hbWljRGlhbG9nQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRGlhbG9nTW9kdWxlIHsgfSJdfQ==