UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

276 lines (273 loc) 25.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Component, Input, ElementRef } from '@angular/core'; import { ComponentDialogModel } from '.././model/ComponentDialogModel'; import { PhloxAppInfoService } from '../../service/PhloxAppInfoService.service'; import { AbstractDialogController } from '../AbstractDialogController'; const /** @type {?} */ TYPE_NAME = "phx-component-dialog"; /** * <p style="text-indent: 2em;"> * A <code>child-view</code> component class of [[PhloxDialog]] handling logic of <code>component dialog</code>. This class should be * <b>internally used by the framework</b>. If you just want to show a <code>component dialog</code>. Please see [[DialogService.showComponentDialog]] * for more info. * </p> * * @author shiorin, tee4cute * @see [[PhloxDialog]] * @see [[DialogService]] */ export class ComponentDialog extends AbstractDialogController { /** * @param {?} elementRef * @param {?} phloxAppService */ constructor(elementRef, phloxAppService) { super(elementRef); this.componentInstance = null; if (phloxAppService != null) { phloxAppService.getAppInfo().then((result) => { this.phloxAppInfo = result; }); } this.componentHandler = (result) => { this.componentInstance = result.instance; if (typeof this.componentInstance.getButtonsChangeEvent === 'function') { let /** @type {?} */ btnChangeEV = this.componentInstance.getButtonsChangeEvent(); if (btnChangeEV !== null && typeof btnChangeEV !== 'undefined') { btnChangeEV.subscribe((event) => { this.refreshActionButtons(); }); } } this.refreshActionButtons(); }; } /** * @return {?} */ ngOnInit() { this.refreshActionButtons(); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { if (changes['model'] !== null && typeof changes['model'] !== 'undefined') { this.refreshActionButtons(); } } /** * @return {?} */ getResultFromComponentWrapper() { if (this.componentInstance !== null && typeof this.componentInstance !== 'undefined') { if (typeof this.componentInstance.getDialogResult === 'function') { return this.componentInstance.getDialogResult(); } } return null; } /** * @return {?} */ refreshActionButtons() { let /** @type {?} */ dialogButtons = []; if (this.componentInstance !== null && typeof this.componentInstance !== 'undefined') { if (typeof this.componentInstance.getDialogButtons === 'function') { let /** @type {?} */ actionBths = this.componentInstance.getDialogButtons(); if (actionBths !== null && typeof actionBths !== 'undefined' && Array.isArray(actionBths)) { for (let /** @type {?} */ btn of actionBths) { dialogButtons.push(btn); } } } } if (dialogButtons.length <= 0) { if (this.model !== null && typeof this.model !== 'undefined') { if (this.model.buttonModels !== null && typeof this.model.buttonModels !== 'undefined') { for (let /** @type {?} */ btn of this.model.buttonModels) { dialogButtons.push(btn); } } } } // auto add btn if (dialogButtons.length <= 0) { let /** @type {?} */ cancelHandler = () => { let /** @type {?} */ result = -1; if (this.dialog !== null && typeof this.dialog !== 'undefined') { this.dialog.hideDialog(); } }; dialogButtons.push(new ComponentDialogModel.ButtonModel(this.getI18NMessage('CANCEL'), null, cancelHandler, ['dialog-btn', 'cancel'])); } this.dialogButtons = dialogButtons; } /** * @param {?} key * @return {?} */ getI18NMessage(key) { if (this.phloxAppInfo != null && this.phloxAppInfo.i18n != null) { if (this.phloxAppInfo.i18n[key] !== null && typeof this.phloxAppInfo.i18n[key] !== 'undefined') { return this.phloxAppInfo.i18n[key]; } } return key; } /** * @param {?} $event * @return {?} */ _onXBtnClicked($event) { if (this.model !== null && typeof this.model !== 'undefined') { if (this.model.closeHandler !== null && typeof this.model.closeHandler !== 'undefined') { if (typeof this.model.closeHandler === 'function') { this.model.closeHandler.call(null, $event); } } } } /** * @return {?} */ _isShowXBtn() { if (this.model !== null && typeof this.model !== 'undefined') { if (this.model.closeHandler !== null && typeof this.model.closeHandler !== 'undefined') { if (typeof this.model.closeHandler === 'function') { return true; } } } return false; } /** * @return {?} */ _getComponentHandler() { return this.componentHandler; } /** * @param {?} styleClass * @return {?} */ _getDefaultItemStyleClass(styleClass) { let /** @type {?} */ defStyleClass = ["dialog-btn"]; if (styleClass !== null && styleClass !== undefined && styleClass.length > 0) { return styleClass; } return defStyleClass; } /** * @return {?} */ showDialog() { this.show = true; } /** * @return {?} */ hideDialog() { this.show = false; } /** * @return {?} */ isShow() { return this.show; } /** * @return {?} */ getModel() { return this.model; } /** * @param {?} model * @return {?} */ setModel(model) { this.model = model; this.refreshActionButtons(); } } ComponentDialog.TYPE_NAME = TYPE_NAME; ComponentDialog.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: `<div class="phx-component-dialog" [class.show]="isShow()"> <ng-template [ngIf]="getModel() != null"> <div class="dialog-header" [ngClass]="getModel().headerStyleClass"> <div class="wrapper"> <div> {{getModel() != null ? getModel().title : ''}} </div> <div> <div class="table-wrapper fluid"> <div class="table-cell-wrapper middle"> <h4 class="x-btn" *ngIf="_isShowXBtn()" (click)="_onXBtnClicked($event)">X</h4> </div> </div> </div> </div> </div> <div class="dialog-body" [ngClass]="getModel().bodyStyleClass"> <div> <phx-component-wrapper #componentWrapper [type]="getModel().componentType" [model]="getModel().model" [handler]="_getComponentHandler()" [data]="getModel().data"></phx-component-wrapper> </div> </div> <div class="dialog-footer" [ngClass]="getModel().footerStyleClass"> <div class="wrapper"> <div> <ng-template [ngIf]="getModel() != null"> <div *ngFor="let item of getDialogButtons(); let j = index" [ngClass]="_getDefaultItemStyleClass(item.styleClass)" (click)="item.handler()">{{item.label}}</div> </ng-template> </div> </div> </div> </ng-template> </div> ` },] }, ]; /** @nocollapse */ ComponentDialog.ctorParameters = () => [ { type: ElementRef, }, { type: PhloxAppInfoService, }, ]; ComponentDialog.propDecorators = { "model": [{ type: Input },], "dialog": [{ type: Input },], }; function ComponentDialog_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ ComponentDialog.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ ComponentDialog.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ ComponentDialog.propDecorators; /** @type {?} */ ComponentDialog.TYPE_NAME; /** @type {?} */ ComponentDialog.prototype.model; /** @type {?} */ ComponentDialog.prototype.dialog; /** @type {?} */ ComponentDialog.prototype.componentInstance; /** @type {?} */ ComponentDialog.prototype.show; /** @type {?} */ ComponentDialog.prototype.phloxAppInfo; /** @type {?} */ ComponentDialog.prototype.componentHandler; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50RGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9kaWFsb2cuaW50ZXJuYWwvQ29tcG9uZW50RGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQThDLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsb0JBQW9CLEVBQWUsTUFBTSxpQ0FBaUMsQ0FBQztBQUlwRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV2RSx1QkFBTSxTQUFTLEdBQVcsc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7OztBQXNEakQsTUFBTSxzQkFBdUIsU0FBUSx3QkFBd0I7Ozs7O0lBYTNELFlBQVksVUFBc0IsRUFBRSxlQUFvQztRQUN0RSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUU5QixFQUFFLENBQUMsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1QixlQUFlLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO2FBQzVCLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDekMsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FB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LFVBQVUsQ0FBQztTQUNuQjtRQUVELE1BQU0sQ0FBQyxhQUFhLENBQUM7Ozs7O0lBR2hCLFVBQVU7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQzs7Ozs7SUFHWixVQUFVO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Ozs7O0lBR2IsTUFBTTtRQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOzs7OztJQUdaLFFBQVE7UUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzs7Ozs7O0lBR2IsUUFBUSxDQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Ozs0QkEvSmEsU0FBUzs7WUEzQ3JELFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ25CLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9DWDthQUNBOzs7O1lBN0RzRSxVQUFVO1lBS3hFLG1CQUFtQjs7O3NCQTZEekIsS0FBSzt1QkFFTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnREaWFsb2dNb2RlbCwgQnV0dG9uTW9kZWwgfSBmcm9tICcuLi8uL21vZGVsL0NvbXBvbmVudERpYWxvZ01vZGVsJztcbmltcG9ydCB7IERpYWxvZ01vZGVsIH0gZnJvbSAnLi4vLi9tb2RlbC9EaWFsb2dNb2RlbCc7XG5pbXBvcnQgeyBJRGlhbG9nIH0gZnJvbSAnLi9JRGlhbG9nJztcbmltcG9ydCB7IFBobG94QXBwSW5mbyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9tb2RlbC9QaGxveEFwcEluZm8nO1xuaW1wb3J0IHsgUGhsb3hBcHBJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvUGhsb3hBcHBJbmZvU2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFic3RyYWN0RGlhbG9nQ29udHJvbGxlciB9IGZyb20gJy4uL0Fic3RyYWN0RGlhbG9nQ29udHJvbGxlcic7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJwaHgtY29tcG9uZW50LWRpYWxvZ1wiO1xuXG4vKipcbiAqIDxwIHN0eWxlPVwidGV4dC1pbmRlbnQ6IDJlbTtcIj5cbiAqIEEgPGNvZGU+Y2hpbGQtdmlldzwvY29kZT4gY29tcG9uZW50IGNsYXNzIG9mIFtbUGhsb3hEaWFsb2ddXSBoYW5kbGluZyBsb2dpYyBvZiA8Y29kZT5jb21wb25lbnQgZGlhbG9nPC9jb2RlPi4gVGhpcyBjbGFzcyBzaG91bGQgYmVcbiAqIDxiPmludGVybmFsbHkgdXNlZCBieSB0aGUgZnJhbWV3b3JrPC9iPi4gSWYgeW91IGp1c3Qgd2FudCB0byBzaG93IGEgPGNvZGU+Y29tcG9uZW50IGRpYWxvZzwvY29kZT4uIFBsZWFzZSBzZWUgW1tEaWFsb2dTZXJ2aWNlLnNob3dDb21wb25lbnREaWFsb2ddXVxuICogZm9yIG1vcmUgaW5mby5cbiAqIDwvcD5cbiAqXG4gKiBAYXV0aG9yIHNoaW9yaW4sIHRlZTRjdXRlXG4gKiBAc2VlIFtbUGhsb3hEaWFsb2ddXVxuICogQHNlZSBbW0RpYWxvZ1NlcnZpY2VdXVxuICovXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicGh4LWNvbXBvbmVudC1kaWFsb2dcIiBbY2xhc3Muc2hvd109XCJpc1Nob3coKVwiPlxuXHQ8bmctdGVtcGxhdGUgW25nSWZdPVwiZ2V0TW9kZWwoKSAhPSBudWxsXCI+XG5cdFx0PGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIiBbbmdDbGFzc109XCJnZXRNb2RlbCgpLmhlYWRlclN0eWxlQ2xhc3NcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG5cdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0e3tnZXRNb2RlbCgpICE9IG51bGwgPyBnZXRNb2RlbCgpLnRpdGxlIDogJyd9fVxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGFibGUtd3JhcHBlciBmbHVpZFwiPlxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRhYmxlLWNlbGwtd3JhcHBlciBtaWRkbGVcIj5cblx0XHRcdFx0XHRcdFx0PGg0IGNsYXNzPVwieC1idG5cIiAqbmdJZj1cIl9pc1Nob3dYQnRuKClcIiAoY2xpY2spPVwiX29uWEJ0bkNsaWNrZWQoJGV2ZW50KVwiPlg8L2g0PlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cblx0XHQ8ZGl2IGNsYXNzPVwiZGlhbG9nLWJvZHlcIiBbbmdDbGFzc109XCJnZXRNb2RlbCgpLmJvZHlTdHlsZUNsYXNzXCI+XG5cdFx0XHQ8ZGl2PlxuXHRcdFx0XHQ8cGh4LWNvbXBvbmVudC13cmFwcGVyICNjb21wb25lbnRXcmFwcGVyIFt0eXBlXT1cImdldE1vZGVsKCkuY29tcG9uZW50VHlwZVwiIFttb2RlbF09XCJnZXRNb2RlbCgpLm1vZGVsXCIgW2hhbmRsZXJdPVwiX2dldENvbXBvbmVudEhhbmRsZXIoKVwiXG5cdFx0XHRcdFx0W2RhdGFdPVwiZ2V0TW9kZWwoKS5kYXRhXCI+PC9waHgtY29tcG9uZW50LXdyYXBwZXI+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblxuXHRcdDxkaXYgY2xhc3M9XCJkaWFsb2ctZm9vdGVyXCIgW25nQ2xhc3NdPVwiZ2V0TW9kZWwoKS5mb290ZXJTdHlsZUNsYXNzXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuXHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXRNb2RlbCgpICE9IG51bGxcIj5cblx0XHRcdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldERpYWxvZ0J1dHRvbnMoKTsgbGV0IGogPSBpbmRleFwiXG5cdFx0XHRcdFx0XHRbbmdDbGFzc109XCJfZ2V0RGVmYXVsdEl0ZW1TdHlsZUNsYXNzKGl0ZW0uc3R5bGVDbGFzcylcIiAoY2xpY2spPVwiaXRlbS5oYW5kbGVyKClcIj57e2l0ZW0ubGFiZWx9fTwvZGl2PlxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50RGlhbG9nIGV4dGVuZHMgQWJzdHJhY3REaWFsb2dDb250cm9sbGVyIGltcGxlbWVudHMgSURpYWxvZywgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFlQRV9OQU1FOiBzdHJpbmcgPSBUWVBFX05BTUU7XG5cbiAgQElucHV0KClcbiAgcHJpdmF0ZSBtb2RlbDogQ29tcG9uZW50RGlhbG9nTW9kZWw7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZGlhbG9nOiBhbnk7XG4gIHByaXZhdGUgY29tcG9uZW50SW5zdGFuY2U6IGFueTtcbiAgcHJpdmF0ZSBzaG93OiBib29sZWFuO1xuICBwcml2YXRlIHBobG94QXBwSW5mbzogUGhsb3hBcHBJbmZvO1xuICBwcml2YXRlIGNvbXBvbmVudEhhbmRsZXI6IEZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHBobG94QXBwU2VydmljZTogUGhsb3hBcHBJbmZvU2VydmljZSkge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYpO1xuXG4gICAgdGhpcy5jb21wb25lbnRJbnN0YW5jZSA9IG51bGw7XG5cbiAgICBpZiAocGhsb3hBcHBTZXJ2aWNlICE9IG51bGwpIHtcbiAgICAgIHBobG94QXBwU2VydmljZS5nZXRBcHBJbmZvKCkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMucGhsb3hBcHBJbmZvID0gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wb25lbnRIYW5kbGVyID0gKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICB0aGlzLmNvbXBvbmVudEluc3RhbmNlID0gcmVzdWx0Lmluc3RhbmNlO1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbXBvbmVudEluc3RhbmNlLmdldEJ1dHRvbnNDaGFuZ2VFdmVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBsZXQgYnRuQ2hhbmdlRVYgPSB0aGlzLmNvbXBvbmVudEluc3RhbmNlLmdldEJ1dHRvbnNDaGFuZ2VFdmVudCgpO1xuICAgICAgICBpZiAoYnRuQ2hhbmdlRVYgIT09IG51bGwgJiYgdHlwZW9mIGJ0bkNoYW5nZUVWICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGJ0bkNoYW5nZUVWLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQWN0aW9uQnV0dG9ucygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVmcmVzaEFjdGlvbkJ1dHRvbnMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQWN0aW9uQnV0dG9ucygpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSkge1xuICAgIGlmIChjaGFuZ2VzWydtb2RlbCddICE9PSBudWxsICYmIHR5cGVvZiBjaGFuZ2VzWydtb2RlbCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5yZWZyZXNoQWN0aW9uQnV0dG9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVzdWx0RnJvbUNvbXBvbmVudFdyYXBwZXIoKTogYW55IHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRJbnN0YW5jZSAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5jb21wb25lbnRJbnN0YW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21wb25lbnRJbnN0YW5jZS5nZXREaWFsb2dSZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2UuZ2V0RGlhbG9nUmVzdWx0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoQWN0aW9uQnV0dG9ucygpOiB2b2lkIHtcbiAgICBsZXQgZGlhbG9nQnV0dG9ucyA9IFtdO1xuXG4gICAgaWYgKHRoaXMuY29tcG9uZW50SW5zdGFuY2UgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29tcG9uZW50SW5zdGFuY2UuZ2V0RGlhbG9nQnV0dG9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBsZXQgYWN0aW9uQnRocyA9IHRoaXMuY29tcG9uZW50SW5zdGFuY2UuZ2V0RGlhbG9nQnV0dG9ucygpO1xuXG4gICAgICAgIGlmIChhY3Rpb25CdGhzICE9PSBudWxsICYmIHR5cGVvZiBhY3Rpb25CdGhzICE9PSAndW5kZWZpbmVkJyAmJiBBcnJheS5pc0FycmF5KGFjdGlvbkJ0aHMpKSB7XG4gICAgICAgICAgZm9yIChsZXQgYnRuIG9mIGFjdGlvbkJ0aHMpIHtcbiAgICAgICAgICAgIGRpYWxvZ0J1dHRvbnMucHVzaChidG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkaWFsb2dCdXR0b25zLmxlbmd0aCA8PSAwKSB7XG4gICAgICBpZiAodGhpcy5tb2RlbCAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5tb2RlbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZWwuYnV0dG9uTW9kZWxzICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLm1vZGVsLmJ1dHRvbk1vZGVscyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBmb3IgKGxldCBidG4gb2YgdGhpcy5tb2RlbC5idXR0b25Nb2RlbHMpIHtcbiAgICAgICAgICAgIGRpYWxvZ0J1dHRvbnMucHVzaChidG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGF1dG8gYWRkIGJ0blxuICAgIGlmIChkaWFsb2dCdXR0b25zLmxlbmd0aCA8PSAwKSB7XG4gICAgICBsZXQgY2FuY2VsSGFuZGxlcjogRnVuY3Rpb24gPSAoKSA9PiB7XG4gICAgICAgIGxldCByZXN1bHQgPSAtMTtcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmRpYWxvZyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB0aGlzLmRpYWxvZy5oaWRlRGlhbG9nKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBkaWFsb2dCdXR0b25zLnB1c2gobmV3IENvbXBvbmVudERpYWxvZ01vZGVsLkJ1dHRvbk1vZGVsKHRoaXMuZ2V0STE4Tk1lc3NhZ2UoJ0NBTkNFTCcpLCBudWxsLCBjYW5jZWxIYW5kbGVyLCBbJ2RpYWxvZy1idG4nLCAnY2FuY2VsJ10pKTtcbiAgICB9XG5cbiAgICB0aGlzLmRpYWxvZ0J1dHRvbnMgPSBkaWFsb2dCdXR0b25zO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJMThOTWVzc2FnZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucGhsb3hBcHBJbmZvICE9IG51bGwgJiYgdGhpcy5waGxveEFwcEluZm8uaTE4biAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5waGxveEFwcEluZm8uaTE4bltrZXldICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLnBobG94QXBwSW5mby5pMThuW2tleV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBobG94QXBwSW5mby5pMThuW2tleV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH1cblxuICBwdWJsaWMgX29uWEJ0bkNsaWNrZWQoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGVsICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLm1vZGVsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKHRoaXMubW9kZWwuY2xvc2VIYW5kbGVyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLm1vZGVsLmNsb3NlSGFuZGxlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1vZGVsLmNsb3NlSGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRoaXMubW9kZWwuY2xvc2VIYW5kbGVyLmNhbGwobnVsbCwgJGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBfaXNTaG93WEJ0bigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5tb2RlbCAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5tb2RlbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0aGlzLm1vZGVsLmNsb3NlSGFuZGxlciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5tb2RlbC5jbG9zZUhhbmRsZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tb2RlbC5jbG9zZUhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBfZ2V0Q29tcG9uZW50SGFuZGxlcigpOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50SGFuZGxlcjtcbiAgfVxuXG4gIHB1YmxpYyBfZ2V0RGVmYXVsdEl0ZW1TdHlsZUNsYXNzKHN0eWxlQ2xhc3M6IFN0cmluZ1tdKTogU3RyaW5nW117XG4gICAgbGV0IGRlZlN0eWxlQ2xhc3MgPSBbXCJkaWFsb2ctYnRuXCJdO1xuXG4gICAgaWYoc3R5bGVDbGFzcyAhPT0gbnVsbCAmJiBzdHlsZUNsYXNzICE9PSB1bmRlZmluZWQgJiYgc3R5bGVDbGFzcy5sZW5ndGggPiAwKXtcbiAgICAgIHJldHVybiBzdHlsZUNsYXNzO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZTdHlsZUNsYXNzO1xuICB9XG5cbiAgcHVibGljIHNob3dEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5zaG93ID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGlzU2hvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93O1xuICB9XG5cbiAgcHVibGljIGdldE1vZGVsKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWw7XG4gIH1cblxuICBwdWJsaWMgc2V0TW9kZWwobW9kZWw6IGFueSk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwgPSBtb2RlbDtcblxuICAgIHRoaXMucmVmcmVzaEFjdGlvbkJ1dHRvbnMoKTtcbiAgfVxufVxuIl19