ngx-table-powerfull
Version:
Table with catalog of functionalities for free use based on the ngx-datatable component and other components
110 lines • 22.7 kB
JavaScript
import * as tslib_1 from "tslib";
import { Component, Inject, ViewEncapsulation } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
import { ActionColumnType } from '../../common/actionsColumn.type';
import { FunctionTypes } from '../../models/sumaryColumn.model';
import { ColumnTableModel } from '../../models/columnTable.model';
var EditColumnDialogComponent = /** @class */ (function () {
function EditColumnDialogComponent(dialogRef, data) {
this.dialogRef = dialogRef;
this.data = data;
this.nameColumn = '';
this.predefinedText = '-';
this.numberColumns = [];
this.column = 1;
this.functions = FunctionTypes;
this.applyFunctions = new Array(FunctionTypes.length);
this.unitsFunctions = new Array(FunctionTypes.length);
this.editable = false;
switch (this.data.action) {
case ActionColumnType.ADD:
this.numberColumns = new Array(this.data.nColumns);
this.positionColumn = this.data.nColumns;
this.title = this.data.config.language.newColumn;
this.editable = true;
break;
case ActionColumnType.EDIT:
this.columns = this.data.columns;
this.nameColumn = this.columns[0]['name'];
this.numberColumns = new Array(this.columns.length);
this.positionColumn = 1;
this.title = this.data.config.language.editColumn;
this.checkFunctionColumn();
this.editable = this.isEditable();
break;
case ActionColumnType.DELETE:
this.columns = this.data.columns;
this.title = this.data.config.language.deleteColumn;
break;
default:
this.close();
}
}
EditColumnDialogComponent.prototype.changeColumn = function () {
if (this.data.action === ActionColumnType.EDIT) {
this.nameColumn = this.columns[this.column - 1]['name'];
this.positionColumn = this.column;
}
this.applyFunctions = new Array(FunctionTypes.length);
this.unitsFunctions = new Array(FunctionTypes.length);
this.checkFunctionColumn();
this.editable = this.isEditable();
};
EditColumnDialogComponent.prototype.onSubmit = function () {
switch (this.data.action) {
case ActionColumnType.ADD:
this.dialogRef.close({ name: this.nameColumn.trim(), predefined: this.predefinedText, position: this.positionColumn, functions: this.applyFunctions, unitsFuntions: this.unitsFunctions, editable: this.editable });
break;
case ActionColumnType.EDIT:
this.dialogRef.close({ name: this.nameColumn.trim(), column: this.column, newPosition: this.positionColumn, functions: this.applyFunctions, unitsFuntions: this.unitsFunctions, editable: this.editable });
break;
case ActionColumnType.DELETE:
this.dialogRef.close({ column: this.column });
break;
default:
this.close();
}
};
EditColumnDialogComponent.prototype.isEditable = function () {
return new ColumnTableModel(this.columns[this.column - 1]).editable;
};
EditColumnDialogComponent.prototype.checkFunctionColumn = function () {
var _this = this;
var sumary = new ColumnTableModel(this.columns[this.column - 1]).sumary;
if (!!sumary.length) {
sumary.forEach(function (s) {
if (s.type != null) {
_this.functions.forEach(function (f) {
if (f.type === s.type) {
_this.applyFunctions[s.type] = true;
_this.unitsFunctions[s.type] = s.unit;
}
});
}
});
}
else {
this.applyFunctions = new Array(FunctionTypes.length);
this.unitsFunctions = new Array(FunctionTypes.length);
}
};
EditColumnDialogComponent.prototype.close = function () {
this.dialogRef.close();
};
EditColumnDialogComponent.ctorParameters = function () { return [
{ type: MatDialogRef },
{ type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
]; };
EditColumnDialogComponent = tslib_1.__decorate([
Component({
selector: 'edit-column-dialog-component',
template: "<header class=\"header-title\">{{ title }}</header>\r\n<!-- <title class=\"title\" mat-dialog-title>{{ title }}</title> -->\r\n\r\n<mat-dialog-content *ngIf=\"data.config.classTable === 'boostrap'\"> \r\n\r\n <div *ngIf=\"data.action === 1 || data.action === 2\" class=\"form-group\">\r\n\r\n <label for=\"name\">{{ data.config.language.name }}</label>\r\n <input id=\"name\" name=\"name\" class=\"form-control\" required\r\n [(ngModel)]=\"nameColumn\" #name=\"ngModel\" />\r\n\r\n <label *ngIf=\"data.action === 1\" for=\"textN\" style=\"margin-top: 20px;\">{{ data.config.language.predefinedContent }}</label>\r\n <input *ngIf=\"data.action === 1\" id=\"textN\" name=\"textN\" class=\"form-control\" required\r\n [(ngModel)]=\"predefinedText\" #name=\"ngModel\" />\r\n\r\n <label for=\"position\" style=\"margin-top: 20px;\">{{ (data.action === 1) ? data.config.language.position : data.config.language.newPosition }}</label>\r\n <select id=\"position\" name=\"position\" class=\"form-control\" required\r\n [(ngModel)]=\"positionColumn\" #name=\"ngModel\">\r\n <option *ngFor=\"let c of numberColumns; let i = index\" [value]=\"i + 1\">{{ i + 1}}</option>\r\n </select>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"data.action === 3|| data.action === 2\" class=\"form-group\">\r\n\r\n <label for=\"col\">{{ data.config.language.column }}</label>\r\n <select id=\"col\" name=\"col\" class=\"form-control\" required\r\n [(ngModel)]=\"column\" #name=\"ngModel\" (change)=\"changeColumn()\">\r\n <option *ngFor=\"let c of columns; let i = index\" [value]=\"i + 1\">{{ c.name }}</option>\r\n </select>\r\n\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-content *ngIf=\"data.config.classTable === 'material'\"> \r\n\r\n <div *ngIf=\"data.action === 1 || data.action === 2\">\r\n\r\n <mat-form-field class=\"col-12\">\r\n <mat-label>{{ data.config.language.name }}</mat-label>\r\n <input matInput id=\"name\" name=\"name\" [(ngModel)]=\"nameColumn\" #name=\"ngModel\">\r\n </mat-form-field>\r\n\r\n <mat-form-field *ngIf=\"data.action === 1\" class=\"col-12\" style=\"margin-top: 20px;\">\r\n <mat-label>{{ data.config.language.predefinedContent }}</mat-label>\r\n <input matInput id=\"textN\" name=\"textN\" [(ngModel)]=\"predefinedText\" #name=\"ngModel\">\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"col-12\" style=\"margin-top: 20px;\">\r\n <mat-label>{{ (data.action === 1) ? data.config.language.position : data.config.language.newPosition }}</mat-label>\r\n <mat-select id=\"position\" name=\"position\" [(ngModel)]=\"positionColumn\" #name=\"ngModel\">\r\n <mat-option *ngFor=\"let c of numberColumns; let i = index\" [value]=\"i + 1\">\r\n {{ i + 1 }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"data.action === 3|| data.action === 2\" class=\"form-group\">\r\n\r\n <mat-form-field class=\"col-12\" style=\"margin-top: 20px;\">\r\n <mat-label>{{ data.config.language.column }}</mat-label>\r\n <mat-select id=\"col\" name=\"col\" [(ngModel)]=\"column\" #name=\"ngModel\" (selectionChange)=\"changeColumn()\">\r\n <mat-option *ngFor=\"let c of columns; let i = index\" [value]=\"i + 1\">\r\n {{ c.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-content [style.marginLeft]=\"(data.config.classTable === 'material') ? '-10px' : '-20px'\">\r\n\r\n <div *ngIf=\"data.action === 1 || data.action === 2\">\r\n <mat-checkbox [color]=\"'primary'\" [(ngModel)]=\"editable\">{{ data.config.language.editable }}</mat-checkbox>\r\n </div>\r\n\r\n <div *ngIf=\"data.action === 1 || data.action === 2\">\r\n <label for=\"position\" style=\"margin-top: 20px;\">{{ data.config.language.applyFunction }}:</label>\r\n <table>\r\n <tr *ngFor=\"let f of functions; let i = index\">\r\n <td><mat-checkbox [color]=\"'primary'\" [(ngModel)]=\"applyFunctions[i]\">{{ data.config.language[f.name] }}</mat-checkbox></td>\r\n <td class=\"unit\">\r\n <div *ngIf=\"data.config.classTable === 'boostrap'\" class=\"row\">\r\n <div class=\"unit-text\">{{ data.config.language.units }} </div>\r\n <input id=\"unit\" name=\"unit\" class=\"form-control\" [(ngModel)]=\"unitsFunctions[i]\" style=\"width: 70px;\" [disabled]=\"!applyFunctions[i]\"/>\r\n </div>\r\n\r\n <mat-form-field *ngIf=\"data.config.classTable === 'material'\" style=\"width: 70px;\">\r\n <mat-label>{{ data.config.language.units }}</mat-label>\r\n <input matInput id=\"unit\" name=\"unit\" [(ngModel)]=\"unitsFunctions[i]\" #name=\"ngModel\" [disabled]=\"!applyFunctions[i]\">\r\n </mat-form-field>\r\n\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions class=\"footer-actions\" style=\"float: right;\">\r\n\r\n <button mat-button (click)=\"close()\">{{ data.config.language.close }}</button>\r\n <button mat-button class=\"btn btnPrimary\" (click)=\"onSubmit()\">{{ data.config.language.accept }}</button>\r\n\r\n</mat-dialog-actions>",
encapsulation: ViewEncapsulation.None,
styles: [".unit{font-size:16px;padding-left:40px}.unit-text{margin-right:10px;margin-top:8px}.header-title{padding:15px .5rem .5rem 25px;font-size:1.5rem;background:#efefef;margin:-25px 0 20px -25px!important;width:40vw}.footer-actions{background:#efefef;width:40vw;padding:1rem 20px 1rem 1rem!important;margin-left:-25px!important;margin-right:-24px;margin-top:20px;display:flex;justify-content:flex-end}"]
}),
tslib_1.__param(1, Inject(MAT_DIALOG_DATA))
], EditColumnDialogComponent);
return EditColumnDialogComponent;
}());
export { EditColumnDialogComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdENvbHVtbkRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdGFibGUtcG93ZXJmdWxsLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZWRpdENvbHVtbkRpYWxvZy9lZGl0Q29sdW1uRGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFRbEU7SUFhRSxtQ0FDUyxTQUFrRCxFQUN6QixJQUFTO1FBRGxDLGNBQVMsR0FBVCxTQUFTLENBQXlDO1FBQ3pCLFNBQUksR0FBSixJQUFJLENBQUs7UUFibEMsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixtQkFBYyxHQUFXLEdBQUcsQ0FBQztRQUM3QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUczQixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLGNBQVMsR0FBVSxhQUFhLENBQUM7UUFDakMsbUJBQWMsR0FBYyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsbUJBQWMsR0FBYSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0QsYUFBUSxHQUFZLEtBQUssQ0FBQztRQU8vQixRQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFDO1lBRXRCLEtBQUssZ0JBQWdCLENBQUMsR0FBRztnQkFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJ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OzRCQUNuQyxLQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO3lCQUN4QztvQkFDSCxDQUFDLENBQUMsQ0FBQztpQkFDSjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQztJQUVNLHlDQUFLLEdBQVo7UUFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7O2dCQWpHaUIsWUFBWTtnREFDN0IsTUFBTSxTQUFDLGVBQWU7O0lBZmQseUJBQXlCO1FBTnJDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSw4QkFBOEI7WUFDeEMsMGhMQUFnRDtZQUVoRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7U0FDdEMsQ0FBQztRQWdCRyxtQkFBQSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7T0FmZix5QkFBeUIsQ0FpSHJDO0lBQUQsZ0NBQUM7Q0FBQSxBQWpIRCxJQWlIQztTQWpIWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XHJcbmltcG9ydCB7IEFjdGlvbkNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vYWN0aW9uc0NvbHVtbi50eXBlJztcclxuaW1wb3J0IHsgRnVuY3Rpb25UeXBlcyB9IGZyb20gJy4uLy4uL21vZGVscy9zdW1hcnlDb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBDb2x1bW5UYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbHVtblRhYmxlLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWRpdC1jb2x1bW4tZGlhbG9nLWNvbXBvbmVudCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRDb2x1bW5EaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXRDb2x1bW5EaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0Q29sdW1uRGlhbG9nQ29tcG9uZW50IHtcclxuICAgIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xyXG4gICAgcHVibGljIG5hbWVDb2x1bW46IHN0cmluZyA9ICcnO1xyXG4gICAgcHVibGljIHByZWRlZmluZWRUZXh0OiBzdHJpbmcgPSAnLSc7XHJcbiAgICBwdWJsaWMgbnVtYmVyQ29sdW1uczogIGFueVtdID0gW107XHJcbiAgICBwdWJsaWMgcG9zaXRpb25Db2x1bW46IG51bWJlcjtcclxuICAgIHB1YmxpYyBjb2x1bW5zOiBPYmplY3RbXTtcclxuICAgIHB1YmxpYyBjb2x1bW46IG51bWJlciA9IDE7XHJcbiAgICBwdWJsaWMgZnVuY3Rpb25zOiBhbnlbXSA9IEZ1bmN0aW9uVHlwZXM7XHJcbiAgICBwdWJsaWMgYXBwbHlGdW5jdGlvbnM6IGJvb2xlYW5bXSA9IG5ldyBBcnJheShGdW5jdGlvblR5cGVzLmxlbmd0aCk7XHJcbiAgICBwdWJsaWMgdW5pdHNGdW5jdGlvbnM6IHN0cmluZ1tdID0gbmV3IEFycmF5KEZ1bmN0aW9uVHlwZXMubGVuZ3RoKTtcclxuICAgIHB1YmxpYyBlZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxFZGl0Q29sdW1uRGlhbG9nQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxyXG4gICAgKXtcclxuXHJcbiAgICAgIHN3aXRjaCh0aGlzLmRhdGEuYWN0aW9uKXtcclxuXHJcbiAgICAgICAgY2FzZSBBY3Rpb25Db2x1bW5UeXBlLkFERDpcclxuICAgICAgICAgIHRoaXMubnVtYmVyQ29sdW1ucyA9IG5ldyBBcnJheSh0aGlzLmRhdGEubkNvbHVtbnMpO1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkNvbHVtbiA9IHRoaXMuZGF0YS5uQ29sdW1ucztcclxuICAgICAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmRhdGEuY29uZmlnLmxhbmd1YWdlLm5ld0NvbHVtbjtcclxuICAgICAgICAgIHRoaXMuZWRpdGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQWN0aW9uQ29sdW1uVHlwZS5FRElUOlxyXG4gICAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XHJcbiAgICAgICAgICB0aGlzLm5hbWVDb2x1bW4gPSB0aGlzLmNvbHVtbnNbMF1bJ25hbWUnXTtcclxuICAgICAgICAgIHRoaXMubnVtYmVyQ29sdW1ucyA9IG5ldyBBcnJheSh0aGlzLmNvbHVtbnMubGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25Db2x1bW4gPSAxO1xyXG4gICAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMuZGF0YS5jb25maWcubGFuZ3VhZ2UuZWRpdENvbHVtbjtcclxuICAgICAgICAgIHRoaXMuY2hlY2tGdW5jdGlvbkNvbHVtbigpO1xyXG4gICAgICAgICAgdGhpcy5lZGl0YWJsZSA9IHRoaXMuaXNFZGl0YWJsZSgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgIGNhc2UgQWN0aW9uQ29sdW1uVHlwZS5ERUxFVEU6XHJcbiAgICAgICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmRhdGEuY29sdW1ucztcclxuICAgICAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmRhdGEuY29uZmlnLmxhbmd1YWdlLmRlbGV0ZUNvbHVtbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZUNvbHVtbigpe1xyXG5cclxuICAgICAgaWYodGhpcy5kYXRhLmFjdGlvbiA9PT0gQWN0aW9uQ29sdW1uVHlwZS5FRElUKSB7IFxyXG4gICAgICAgIHRoaXMubmFtZUNvbHVtbiA9IHRoaXMuY29sdW1uc1t0aGlzLmNvbHVtbiAtIDFdWyduYW1lJ107XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkNvbHVtbiA9IHRoaXMuY29sdW1uO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmFwcGx5RnVuY3Rpb25zID0gbmV3IEFycmF5KEZ1bmN0aW9uVHlwZXMubGVuZ3RoKTtcclxuICAgICAgdGhpcy51bml0c0Z1bmN0aW9ucyA9IG5ldyBBcnJheShGdW5jdGlvblR5cGVzLmxlbmd0aCk7XHJcbiAgICAgIHRoaXMuY2hlY2tGdW5jdGlvbkNvbHVtbigpO1xyXG4gICAgICB0aGlzLmVkaXRhYmxlID0gdGhpcy5pc0VkaXRhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uU3VibWl0KCl7XHJcblxyXG4gICAgICBzd2l0Y2godGhpcy5kYXRhLmFjdGlvbil7XHJcblxyXG4gICAgICAgIGNhc2UgQWN0aW9uQ29sdW1uVHlwZS5BREQ6XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IG5hbWU6dGhpcy5uYW1lQ29sdW1uLnRyaW0oKSwgcHJlZGVmaW5lZDogdGhpcy5wcmVkZWZpbmVkVGV4dCwgcG9zaXRpb246IHRoaXMucG9zaXRpb25Db2x1bW4sIGZ1bmN0aW9uczogdGhpcy5hcHBseUZ1bmN0aW9ucywgdW5pdHNGdW50aW9uczogdGhpcy51bml0c0Z1bmN0aW9ucywgZWRpdGFibGU6IHRoaXMuZWRpdGFibGUgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBBY3Rpb25Db2x1bW5UeXBlLkVESVQ6XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IG5hbWU6dGhpcy5uYW1lQ29sdW1uLnRyaW0oKSwgY29sdW1uOiB0aGlzLmNvbHVtbiwgbmV3UG9zaXRpb246IHRoaXMucG9zaXRpb25Db2x1bW4sIGZ1bmN0aW9uczogdGhpcy5hcHBseUZ1bmN0aW9ucywgdW5pdHNGdW50aW9uczogdGhpcy51bml0c0Z1bmN0aW9ucywgZWRpdGFibGU6IHRoaXMuZWRpdGFibGV9KTsgXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIFxyXG4gICAgICAgIGNhc2UgQWN0aW9uQ29sdW1uVHlwZS5ERUxFVEU6XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IGNvbHVtbjogdGhpcy5jb2x1bW59KTsgXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIFxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzRWRpdGFibGUoKTogYm9vbGVhbntcclxuICAgICAgcmV0dXJuIG5ldyBDb2x1bW5UYWJsZU1vZGVsKHRoaXMuY29sdW1uc1t0aGlzLmNvbHVtbiAtIDFdKS5lZGl0YWJsZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2hlY2tGdW5jdGlvbkNvbHVtbigpe1xyXG5cclxuICAgICAgY29uc3Qgc3VtYXJ5ID0gbmV3IENvbHVtblRhYmxlTW9kZWwodGhpcy5jb2x1bW5zW3RoaXMuY29sdW1uIC0gMV0pLnN1bWFyeTtcclxuICAgICAgaWYoISFzdW1hcnkubGVuZ3RoKXtcclxuICAgICAgICBzdW1hcnkuZm9yRWFjaCggcyA9PiB7XHJcbiAgICAgICAgICBpZihzLnR5cGUgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMuZnVuY3Rpb25zLmZvckVhY2goKGYpID0+IHtcclxuICAgICAgICAgICAgICBpZihmLnR5cGUgPT09IHMudHlwZSl7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlGdW5jdGlvbnNbcy50eXBlXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudW5pdHNGdW5jdGlvbnNbcy50eXBlXSA9IHMudW5pdDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYXBwbHlGdW5jdGlvbnMgPSBuZXcgQXJyYXkoRnVuY3Rpb25UeXBlcy5sZW5ndGgpO1xyXG4gICAgICAgIHRoaXMudW5pdHNGdW5jdGlvbnMgPSBuZXcgQXJyYXkoRnVuY3Rpb25UeXBlcy5sZW5ndGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlKCl7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG59Il19