@stratio/egeo
Version:
309 lines • 24.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/st-modal/st-modal.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* © 2017 Stratio Big Data Inc., Sucursal en España.
*
* This software is licensed under the Apache License, Version 2.0.
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the terms of the License for more details.
*
* SPDX-License-Identifier: Apache-2.0.
*/
import { ChangeDetectionStrategy, Component, ComponentFactoryResolver, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';
import { StModalConfig, StModalResponse } from './st-modal.model';
import { StWindowRefService } from '../utils/window-service';
var StModalComponent = /** @class */ (function () {
function StModalComponent(cfr, windowRef) {
this.cfr = cfr;
this.windowRef = windowRef;
this.click = new EventEmitter();
this.defaultMaxWidth = 600;
this.defaultMinWidth = 400;
}
Object.defineProperty(StModalComponent.prototype, "hasIcon", {
get: /**
* @return {?}
*/
function () {
return this.modalConfig.iconStatus;
},
enumerable: true,
configurable: true
});
Object.defineProperty(StModalComponent.prototype, "isFullscreen", {
get: /**
* @return {?}
*/
function () {
return this.modalConfig.fullscreen;
},
enumerable: true,
configurable: true
});
Object.defineProperty(StModalComponent.prototype, "title", {
get: /**
* @return {?}
*/
function () {
return this.modalConfig.modalTitle;
},
enumerable: true,
configurable: true
});
Object.defineProperty(StModalComponent.prototype, "buttons", {
get: /**
* @return {?}
*/
function () {
return this.modalConfig.buttons || [];
},
enumerable: true,
configurable: true
});
Object.defineProperty(StModalComponent.prototype, "isMessageModal", {
get: /**
* @return {?}
*/
function () {
return this.modalConfig.message && this.modalConfig.message.length > 0;
},
enumerable: true,
configurable: true
});
Object.defineProperty(StModalComponent.prototype, "isComplexMessageModal", {
get: /**
* @return {?}
*/
function () {
return this.modalConfig.html && this.modalConfig.html.length > 0;
},
enumerable: true,
configurable: true
});
Object.defineProperty(StModalComponent.prototype, "html", {
get: /**
* @return {?}
*/
function () {
return this.modalConfig.html;
},
enumerable: true,
configurable: true
});
Object.defineProperty(StModalComponent.prototype, "message", {
get: /**
* @return {?}
*/
function () {
return this.modalConfig.message;
},
enumerable: true,
configurable: true
});
Object.defineProperty(StModalComponent.prototype, "messageTitle", {
get: /**
* @return {?}
*/
function () {
return this.modalConfig.messageTitle;
},
enumerable: true,
configurable: true
});
Object.defineProperty(StModalComponent.prototype, "modalStyles", {
get: /**
* @return {?}
*/
function () {
/** @type {?} */
var maxWidth = this.modalConfig.maxWidth || this.defaultMaxWidth;
/** @type {?} */
var minWidth = this.modalConfig.minWidth || this.defaultMinWidth;
/** @type {?} */
var width = this.getModalActualWidth(maxWidth, minWidth);
return { 'max-width': maxWidth + "px", 'min-width': minWidth + "px", 'width': width + "px" };
},
enumerable: true,
configurable: true
});
Object.defineProperty(StModalComponent.prototype, "emptyModal", {
get: /**
* @return {?}
*/
function () {
return this.modalConfig && this.modalConfig.empty;
},
enumerable: true,
configurable: true
});
Object.defineProperty(StModalComponent.prototype, "showCloseBtn", {
get: /**
* @return {?}
*/
function () {
return this.modalConfig.showCloseBtn;
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
StModalComponent.prototype.onClose = /**
* @return {?}
*/
function () {
this.click.emit({
response: StModalResponse.CLOSE,
close: true
});
};
/** DYNAMIC MODAL BODY COMPONENT LOAD */
/**
* DYNAMIC MODAL BODY COMPONENT LOAD
* @return {?}
*/
StModalComponent.prototype.ngAfterViewInit = /**
* DYNAMIC MODAL BODY COMPONENT LOAD
* @return {?}
*/
function () {
this.target = this.emptyModal ? this.targetEmpty : this.targetContent;
if (this.component && !(this.modalConfig.html || this.modalConfig.message)) {
this.loadBody();
}
this.windowRef.nativeWindow.document.body.classList.add('st-modal-overlay');
};
/**
* @return {?}
*/
StModalComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.componentRef) {
this.componentRef.destroy();
}
this.windowRef.nativeWindow.document.body.classList.remove('st-modal-overlay');
};
/**
* @private
* @param {?} maxWidth
* @param {?=} minWidth
* @return {?}
*/
StModalComponent.prototype.getModalActualWidth = /**
* @private
* @param {?} maxWidth
* @param {?=} minWidth
* @return {?}
*/
function (maxWidth, minWidth) {
/** @type {?} */
var screenWidth = this.windowRef.nativeWindow.screen.width;
return screenWidth > maxWidth ? maxWidth : (screenWidth < minWidth ? minWidth : screenWidth);
};
/**
* @private
* @return {?}
*/
StModalComponent.prototype.loadBody = /**
* @private
* @return {?}
*/
function () {
if (!this.componentRef) {
this.target.clear();
/** @type {?} */
var compFactory = this.cfr.resolveComponentFactory(this.component);
this.componentRef = this.target.createComponent(compFactory);
this.bindModalInputs();
}
};
/**
* @private
* @return {?}
*/
StModalComponent.prototype.bindModalInputs = /**
* @private
* @return {?}
*/
function () {
var _this = this;
Object.keys(this.modalConfig.inputs).forEach((/**
* @param {?} key
* @return {?}
*/
function (key) {
_this.componentRef.instance[key] = ((/** @type {?} */ (_this.modalConfig.inputs)))[key];
}));
Object.keys(this.modalConfig.outputs).forEach((/**
* @param {?} key
* @return {?}
*/
function (key) {
_this.componentRef.instance[key].subscribe(((/** @type {?} */ (_this.modalConfig.outputs)))[key]);
}));
this.componentRef.changeDetectorRef.detectChanges();
};
StModalComponent.decorators = [
{ type: Component, args: [{
selector: 'st-modal',
template: "<!--\n\n \u00A9 2017 Stratio Big Data Inc., Sucursal en Espa\u00F1a.\n\n This software is licensed under the Apache License, Version 2.0.\n This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;\n without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n See the terms of the License for more details.\n\n SPDX-License-Identifier: Apache-2.0.\n\n-->\n<div class=\"st-modal-container\">\n <section *ngIf=\"emptyModal\" class=\"st-modal\" [ngClass]=\"{'st-modal-fullscreen': isFullscreen}\" [ngStyle]=\"modalStyles\" [hidden]=\"emptyModal\">\n <div #stModalBodyEmpty></div>\n </section>\n <section *ngIf=\"!emptyModal\" class=\"st-modal\" [ngClass]=\"{'st-modal-fullscreen': isFullscreen}\" [ngStyle]=\"modalStyles\" [hidden]=\"!emptyModal\">\n <div class=\"st-modal-header\">\n <div class=\"container\">\n <span class=\"status-icon\" [ngClass]=\"hasIcon\" *ngIf=\"hasIcon\"></span>\n <p class=\"title\">{{title}}</p> <span class=\"icon-cross close-button\" *ngIf=\"showCloseBtn\" (click)=\"onClose()\"></span>\n\n <st-modal-buttons *ngIf=\"isFullscreen\" [buttonConfig]=\"buttons\" [fullscreen]=\"isFullscreen\" (click)=\"click.emit($event)\"></st-modal-buttons>\n </div>\n </div>\n <div class=\"st-modal-body\">\n <div class=\"container\">\n\n <div *ngIf=\"isMessageModal\" class=\"message\">\n <h1 id=\"st-modal-message-plain-title\" class=\"st-modal-message-plain-title\">{{messageTitle}}</h1>\n <p id=\"st-modal-message-plain-message\" class=\"st-modal-message-plain-message\">{{message}}</p>\n </div>\n <div *ngIf=\"isComplexMessageModal\" [innerHTML]=\"html\" id=\"st-modal-message-html\"></div>\n <div #stModalBody id=\"st-modal-message-component\"></div>\n\n </div>\n </div>\n <footer class=\"st-modal-footer\" *ngIf=\"buttons && buttons.length > 0\">\n <div class=\"container\">\n <st-modal-buttons *ngIf=\"!isFullscreen\" [buttonConfig]=\"buttons\" (click)=\"click.emit($event)\"></st-modal-buttons>\n </div>\n </footer>\n </section>\n</div>\n\n",
changeDetection: ChangeDetectionStrategy.OnPush,
styles: ["@charset \"UTF-8\";.st-modal-container{display:flex;height:100vh;left:0;position:fixed;top:0;width:100%}.st-modal-container .st-modal{align-self:center;display:flex;flex-direction:column;margin:auto}.st-modal-container .st-modal.st-modal-fullscreen{min-height:100vh;max-height:100vh;min-width:100%;max-width:100%}.st-modal-container .st-modal .st-modal-header{display:flex;flex-direction:row;height:70px;width:100%}.st-modal-container .st-modal .st-modal-header .container{align-items:center;flex-wrap:nowrap}.st-modal-container .st-modal .st-modal-header .container .status-icon{padding-right:1.05rem}.st-modal-container .st-modal st-modal-buttons{display:flex;justify-content:flex-end;margin-left:auto}.st-modal-container .st-modal .container{min-width:auto}"]
}] }
];
/** @nocollapse */
StModalComponent.ctorParameters = function () { return [
{ type: ComponentFactoryResolver },
{ type: StWindowRefService }
]; };
StModalComponent.propDecorators = {
modalConfig: [{ type: Input }],
component: [{ type: Input }],
click: [{ type: Output }],
targetContent: [{ type: ViewChild, args: ['stModalBody', { read: ViewContainerRef, static: false },] }],
targetEmpty: [{ type: ViewChild, args: ['stModalBodyEmpty', { read: ViewContainerRef, static: false },] }]
};
return StModalComponent;
}());
export { StModalComponent };
if (false) {
/** @type {?} */
StModalComponent.prototype.modalConfig;
/** @type {?} */
StModalComponent.prototype.component;
/** @type {?} */
StModalComponent.prototype.click;
/** @type {?} */
StModalComponent.prototype.targetContent;
/** @type {?} */
StModalComponent.prototype.targetEmpty;
/** @type {?} */
StModalComponent.prototype.defaultMaxWidth;
/** @type {?} */
StModalComponent.prototype.defaultMinWidth;
/** @type {?} */
StModalComponent.prototype.target;
/**
* @type {?}
* @private
*/
StModalComponent.prototype.componentRef;
/**
* @type {?}
* @private
*/
StModalComponent.prototype.cfr;
/**
* @type {?}
* @private
*/
StModalComponent.prototype.windowRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN0cmF0aW8vZWdlby8iLCJzb3VyY2VzIjpbImxpYi9zdC1tb2RhbC9zdC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsT0FBTyxFQUNKLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsd0JBQXdCLEVBRXhCLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUF3QyxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFN0Q7SUFvQkcsMEJBQ1csR0FBNkIsRUFDN0IsU0FBNkI7UUFEN0IsUUFBRyxHQUFILEdBQUcsQ0FBMEI7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBb0I7UUFiOUIsVUFBSyxHQUF3QyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUl4RixvQkFBZSxHQUFXLEdBQUcsQ0FBQztRQUM5QixvQkFBZSxHQUFXLEdBQUcsQ0FBQztJQVNuQyxDQUFDO0lBRUwsc0JBQUkscUNBQU87Ozs7UUFBWDtZQUNHLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDdEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwwQ0FBWTs7OztRQUFoQjtZQUNHLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDdEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxtQ0FBSzs7OztRQUFUO1lBQ0csT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUN0QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHFDQUFPOzs7O1FBQVg7WUFDRyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FB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QUMsU0FBUyxDQUFDLENBQUMsbUJBQUEsS0FBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckYsQ0FBQyxFQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZELENBQUM7O2dCQXpISCxTQUFTLFNBQUM7b0JBQ1IsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLG90RUFBd0M7b0JBRXhDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztpQkFDakQ7Ozs7Z0JBbkJFLHdCQUF3QjtnQkFZbEIsa0JBQWtCOzs7OEJBU3ZCLEtBQUs7NEJBQ0wsS0FBSzt3QkFDTCxNQUFNO2dDQUNOLFNBQVMsU0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs4QkFDbEUsU0FBUyxTQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O0lBK0czRSx1QkFBQztDQUFBLEFBMUhELElBMEhDO1NBcEhZLGdCQUFnQjs7O0lBQzFCLHVDQUFvQzs7SUFDcEMscUNBQXdCOztJQUN4QixpQ0FBaUc7O0lBQ2pHLHlDQUFxRzs7SUFDckcsdUNBQXdHOztJQUV4RywyQ0FBdUM7O0lBQ3ZDLDJDQUF1Qzs7SUFFdkMsa0NBQXlCOzs7OztJQUV6Qix3Q0FBd0M7Ozs7O0lBR3JDLCtCQUFxQzs7Ozs7SUFDckMscUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIMKpIDIwMTcgU3RyYXRpbyBCaWcgRGF0YSBJbmMuLCBTdWN1cnNhbCBlbiBFc3Bhw7FhLlxuICpcbiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC5cbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7XG4gKiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLlxuICogU2VlIHRoZSB0ZXJtcyBvZiB0aGUgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wLlxuICovXG5pbXBvcnQge1xuICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICBDb21wb25lbnQsXG4gICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICBDb21wb25lbnRSZWYsXG4gICBFdmVudEVtaXR0ZXIsXG4gICBJbnB1dCxcbiAgIE9uRGVzdHJveSxcbiAgIEFmdGVyVmlld0luaXQsXG4gICBPdXRwdXQsXG4gICBWaWV3Q2hpbGQsXG4gICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdE1vZGFsQnV0dG9uLCBTdE1vZGFsQnV0dG9uUmVzcG9uc2UsIFN0TW9kYWxDb25maWcsIFN0TW9kYWxSZXNwb25zZSB9IGZyb20gJy4vc3QtbW9kYWwubW9kZWwnO1xuaW1wb3J0IHsgU3RXaW5kb3dSZWZTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvd2luZG93LXNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiAnc3QtbW9kYWwnLFxuICAgdGVtcGxhdGVVcmw6ICcuL3N0LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL3N0LW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTdE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgIEBJbnB1dCgpIG1vZGFsQ29uZmlnOiBTdE1vZGFsQ29uZmlnO1xuICAgQElucHV0KCkgY29tcG9uZW50OiBhbnk7XG4gICBAT3V0cHV0KCkgY2xpY2s6IEV2ZW50RW1pdHRlcjxTdE1vZGFsQnV0dG9uUmVzcG9uc2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxTdE1vZGFsQnV0dG9uUmVzcG9uc2U+KCk7XG4gICBAVmlld0NoaWxkKCdzdE1vZGFsQm9keScsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YXJnZXRDb250ZW50OiBWaWV3Q29udGFpbmVyUmVmO1xuICAgQFZpZXdDaGlsZCgnc3RNb2RhbEJvZHlFbXB0eScsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YXJnZXRFbXB0eTogVmlld0NvbnRhaW5lclJlZjtcblxuICAgcmVhZG9ubHkgZGVmYXVsdE1heFdpZHRoOiBudW1iZXIgPSA2MDA7XG4gICByZWFkb25seSBkZWZhdWx0TWluV2lkdGg6IG51bWJlciA9IDQwMDtcblxuICAgdGFyZ2V0OiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT47XG5cbiAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBjZnI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgIHByaXZhdGUgd2luZG93UmVmOiBTdFdpbmRvd1JlZlNlcnZpY2VcbiAgICkgeyB9XG5cbiAgIGdldCBoYXNJY29uKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5tb2RhbENvbmZpZy5pY29uU3RhdHVzO1xuICAgfVxuXG4gICBnZXQgaXNGdWxsc2NyZWVuKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMubW9kYWxDb25maWcuZnVsbHNjcmVlbjtcbiAgIH1cblxuICAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5tb2RhbENvbmZpZy5tb2RhbFRpdGxlO1xuICAgfVxuXG4gICBnZXQgYnV0dG9ucygpOiBTdE1vZGFsQnV0dG9uW10ge1xuICAgICAgcmV0dXJuIHRoaXMubW9kYWxDb25maWcuYnV0dG9ucyB8fCBbXTtcbiAgIH1cblxuICAgZ2V0IGlzTWVzc2FnZU1vZGFsKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMubW9kYWxDb25maWcubWVzc2FnZSAmJiB0aGlzLm1vZGFsQ29uZmlnLm1lc3NhZ2UubGVuZ3RoID4gMDtcbiAgIH1cblxuICAgZ2V0IGlzQ29tcGxleE1lc3NhZ2VNb2RhbCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLm1vZGFsQ29uZmlnLmh0bWwgJiYgdGhpcy5tb2RhbENvbmZpZy5odG1sLmxlbmd0aCA+IDA7XG4gICB9XG5cbiAgIGdldCBodG1sKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5tb2RhbENvbmZpZy5odG1sO1xuICAgfVxuXG4gICBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHRoaXMubW9kYWxDb25maWcubWVzc2FnZTtcbiAgIH1cblxuICAgZ2V0IG1lc3NhZ2VUaXRsZSgpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHRoaXMubW9kYWxDb25maWcubWVzc2FnZVRpdGxlO1xuICAgfVxuXG4gICBnZXQgbW9kYWxTdHlsZXMoKTogT2JqZWN0IHtcbiAgICAgIGNvbnN0IG1heFdpZHRoID0gdGhpcy5tb2RhbENvbmZpZy5tYXhXaWR0aCB8fCB0aGlzLmRlZmF1bHRNYXhXaWR0aDtcbiAgICAgIGNvbnN0IG1pbldpZHRoID0gdGhpcy5tb2RhbENvbmZpZy5taW5XaWR0aCB8fCB0aGlzLmRlZmF1bHRNaW5XaWR0aDtcbiAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5nZXRNb2RhbEFjdHVhbFdpZHRoKG1heFdpZHRoLCBtaW5XaWR0aCk7XG4gICAgICByZXR1cm4geyAnbWF4LXdpZHRoJzogYCR7bWF4V2lkdGh9cHhgLCAnbWluLXdpZHRoJzogYCR7bWluV2lkdGh9cHhgLCAnd2lkdGgnOiBgJHt3aWR0aH1weGAgfTtcbiAgIH1cblxuICAgZ2V0IGVtcHR5TW9kYWwoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5tb2RhbENvbmZpZyAmJiB0aGlzLm1vZGFsQ29uZmlnLmVtcHR5O1xuICAgfVxuXG4gICBnZXQgc2hvd0Nsb3NlQnRuKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMubW9kYWxDb25maWcuc2hvd0Nsb3NlQnRuO1xuICAgfVxuXG4gICBvbkNsb3NlKCk6IHZvaWQge1xuICAgICAgdGhpcy5jbGljay5lbWl0KHtcbiAgICAgICAgIHJlc3BvbnNlOiBTdE1vZGFsUmVzcG9uc2UuQ0xPU0UsXG4gICAgICAgICBjbG9zZTogdHJ1ZVxuICAgICAgfSk7XG4gICB9XG5cbiAgIC8qKiBEWU5BTUlDIE1PREFMIEJPRFkgQ09NUE9ORU5UIExPQUQgKi9cbiAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgIHRoaXMudGFyZ2V0ID0gdGhpcy5lbXB0eU1vZGFsID8gdGhpcy50YXJnZXRFbXB0eSA6IHRoaXMudGFyZ2V0Q29udGVudDtcbiAgICAgIGlmICh0aGlzLmNvbXBvbmVudCAmJiAhKHRoaXMubW9kYWxDb25maWcuaHRtbCB8fCB0aGlzLm1vZGFsQ29uZmlnLm1lc3NhZ2UpKSB7XG4gICAgICAgICB0aGlzLmxvYWRCb2R5KCk7XG4gICAgICB9XG4gICAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdzdC1tb2RhbC1vdmVybGF5Jyk7XG4gICB9XG5cbiAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdzdC1tb2RhbC1vdmVybGF5Jyk7XG4gICB9XG5cbiAgIHByaXZhdGUgZ2V0TW9kYWxBY3R1YWxXaWR0aChtYXhXaWR0aDogbnVtYmVyLCBtaW5XaWR0aD86IG51bWJlcik6IG51bWJlciB7XG4gICAgICBjb25zdCBzY3JlZW5XaWR0aDogbnVtYmVyID0gdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcmVlbi53aWR0aDtcbiAgICAgIHJldHVybiBzY3JlZW5XaWR0aCA+IG1heFdpZHRoID8gbWF4V2lkdGggOiAoc2NyZWVuV2lkdGggPCBtaW5XaWR0aCA/IG1pbldpZHRoIDogc2NyZWVuV2lkdGgpO1xuICAgfVxuXG4gICBwcml2YXRlIGxvYWRCb2R5KCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgdGhpcy50YXJnZXQuY2xlYXIoKTtcbiAgICAgICAgIGNvbnN0IGNvbXBGYWN0b3J5ID0gdGhpcy5jZnIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5jb21wb25lbnQpO1xuICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnRhcmdldC5jcmVhdGVDb21wb25lbnQoY29tcEZhY3RvcnkpO1xuICAgICAgICAgdGhpcy5iaW5kTW9kYWxJbnB1dHMoKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBiaW5kTW9kYWxJbnB1dHMoKTogdm9pZCB7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLm1vZGFsQ29uZmlnLmlucHV0cykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlW2tleV0gPSAodGhpcy5tb2RhbENvbmZpZy5pbnB1dHMgYXMgYW55KVtrZXldO1xuICAgICAgfSk7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLm1vZGFsQ29uZmlnLm91dHB1dHMpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZVtrZXldLnN1YnNjcmliZSgodGhpcy5tb2RhbENvbmZpZy5vdXRwdXRzIGFzIGFueSlba2V5XSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgIH1cbn1cbiJdfQ==