UNPKG

e5core-angular-ui

Version:

e5 Anywhere Angular UI

218 lines 21.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ViewChild } from '@angular/core'; import { E5coreUiSearchResultsBaseComponent } from './e5core-ui-search-results-base'; import { MatSort, MatPaginator } from '@angular/material'; import { SearchMatTableDataSource } from './search-material-table-data-source'; import { SearchDataSourceService } from '../../../datasource/search-data-source.service'; /** * @record */ export function ColumnDef() { } if (false) { /** @type {?} */ ColumnDef.prototype.name; /** @type {?} */ ColumnDef.prototype.label; /** @type {?} */ ColumnDef.prototype.type; /** @type {?} */ ColumnDef.prototype.status; /** * @param {?} row * @return {?} */ ColumnDef.prototype.cell = function (row) { }; } // https://stackblitz.com/edit/dynamic-columns-mat-table?file=app%2Ftable-pagination-example.html // https://github.com/angular/material2/issues/5927 var E5coreUiSearchResultsMaterialComponent = /** @class */ (function (_super) { tslib_1.__extends(E5coreUiSearchResultsMaterialComponent, _super); function E5coreUiSearchResultsMaterialComponent(searchService) { var _this = _super.call(this) || this; _this.searchService = searchService; _this.isEmpty = false; _this.length = 0; _this.pageSize = 10; _this.loading = true; return _this; } /** * @return {?} */ E5coreUiSearchResultsMaterialComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; this.pageSizeOptions = (this.pagesizes && this.pagesizes.length > 0) ? this.pagesizes : [5, 10, 25, 50]; // this.tableDataSource = new SearchMatTableDataSource(this.datasource); // this.history.getHistory(id, 0, 10) ; this.tableDataSource = new SearchMatTableDataSource(this.datasource); // this.history.getHistory(id, 0, 10) ; this.tableDataSource.sort = this.sort; this.tableDataSource.paginator = this.paginator; this.tableDataSource.loadingEvents.subscribe(function (loading) { _this.loading = loading; }); // Load the columns this.loading = true; this.datasource.columns().subscribe(function (dsColumns) { _this.headings = dsColumns; _this.loading = false; if (_this.delayedQuery || _this.autoSearch) { _this.search(_this.delayedQuery); } }, function (error) { }, function () { _this.loading = false; }); }; /** * @return {?} */ E5coreUiSearchResultsMaterialComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { // if (this.tableDataSource) // this.tableDataSource.loadingEvents.unsubscribe(); }; /** * @param {?} setPageSizeOptionsInput * @return {?} */ E5coreUiSearchResultsMaterialComponent.prototype.setPageSizeOptions = /** * @param {?} setPageSizeOptionsInput * @return {?} */ function (setPageSizeOptionsInput) { this.pageSizeOptions = setPageSizeOptionsInput.split(',').map(function (str) { return +str; }); }; /** * Return the list of columns available in the table. */ /** * Return the list of columns available in the table. * @return {?} */ E5coreUiSearchResultsMaterialComponent.prototype.columns = /** * Return the list of columns available in the table. * @return {?} */ function () { if (this.headings) { /** @type {?} */ var cols = (this.headings .filter(function (f) { return f.code !== 'Id'; }) // Id is added at the beginning .map(function (f) { return (/** @type {?} */ ({ label: f.label, name: f.code, type: f.type, status: f.status })); })); return (cols); } return []; }; /** * Return the list of column names that will be displayed in the table. */ /** * Return the list of column names that will be displayed in the table. * @return {?} */ E5coreUiSearchResultsMaterialComponent.prototype.displayedColumns = /** * Return the list of column names that will be displayed in the table. * @return {?} */ function () { /** @type {?} */ var cols = this.columns() .filter(function (f) { return f.status > 1; }) // Selected only .map(function (c) { return c.name; }); cols.unshift("Id"); return (cols); }; /** * @param {?} query * @return {?} */ E5coreUiSearchResultsMaterialComponent.prototype.search = /** * @param {?} query * @return {?} */ function (query) { if (this.tableDataSource) this.tableDataSource.search(query); else this.delayedQuery = query; }; /** * @return {?} */ E5coreUiSearchResultsMaterialComponent.prototype.reset = /** * @return {?} */ function () { this.tableDataSource.reset(); }; /** * @return {?} */ E5coreUiSearchResultsMaterialComponent.prototype.refresh = /** * @return {?} */ function () { this.tableDataSource.refresh(); }; E5coreUiSearchResultsMaterialComponent.decorators = [ { type: Component, args: [{ selector: 'e5core-ui-search-results-material', template: "<mat-card class='e5core-ui-search-results' [ngClass]=\"{'loading': loading}\">\n\t<div class=\"e5core-content\" [ngClass]=\"{'loading': loading}\">\n\n\t\t<div *ngIf=\"loading\" class=\"e5core-loader\">\n\t\t\t<mat-spinner></mat-spinner>\n\t\t</div>\n\n\t\t<table mat-table [dataSource]=\"tableDataSource\" matSort class=\"e5core-ui-search-results-sort\">\n\n\t\t\t<!-- <ng-container matColumnDef=\"CasenoteDate\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Date </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.CasenoteDate | date : 'd LLL yyyy h:mm aa' }} </td>\n </ng-container> -->\n\n\t\t\t<ng-container matColumnDef=\"Id\">\n\t\t\t\t<th mat-header-cell *matHeaderCellDef class='e5core-ui-search-results-column-workid'>Work</th>\n\t\t\t\t<td mat-cell *matCellDef=\"let element\" class='e5core-ui-search-results-column-workid'>\n\t\t\t\t\t<button mat-icon-button (click)='onOpen(element)'>\n\t\t\t\t\t\t<mat-icon aria-label=\"Open work item\">folder</mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngFor=\"let column of columns()\" matColumnDef=\"{{column.name}}\">\n\t\t\t\t<th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}} </th>\n\t\t\t\t<td mat-cell *matCellDef=\"let element\">\n\t\t\t\t\t<!-- {{ formatCell(element, column) }} {{column.type}} -->\n\t\t\t\t\t<span [ngSwitch]=\"column.type\">\n\t\t\t\t\t\t<span *ngSwitchCase=\"'DateTime'\">{{ element[column.name] | date : 'd LLL yyyy h:mm aa' }}</span>\n\t\t\t\t\t\t<span *ngSwitchCase=\"'Date'\">{{ element[column.name] | date : 'd LLL yyyy' }}</span>\n\t\t\t\t\t\t<span *ngSwitchCase=\"'Currency'\">{{element[column.name] | currency}}</span>\n\t\t\t\t\t\t<span *ngSwitchCase=\"'Checkbox'\">\n\t\t\t\t\t\t\t<mat-checkbox [(ngModel)]='element[column.name]' [disabled]=\"1\"></mat-checkbox>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span *ngSwitchCase=\"'Link'\">\n\t\t\t\t\t\t\t<button mat-icon-button (click)='onLink(element[column.name])'>\n\t\t\t\t\t\t\t\t<mat-icon aria-label=\"Open work item\">public</mat-icon>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span *ngSwitchCase=\"'SLA'\">\n\t\t\t\t\t\t\t<mat-icon *ngIf=\"element[column.name] == 'expired'\" aria-label=\"Breached SLA\" color=\"warn\">report_problem</mat-icon>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span *ngSwitchDefault>{{element[column.name]}}</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t</ng-container>\n\n\t\t\t<tr mat-header-row *matHeaderRowDef=\"displayedColumns()\"></tr>\n\t\t\t<tr mat-row *matRowDef=\"let row; columns: displayedColumns();\"></tr>\n\t\t</table>\n\n\t\t<div *ngIf=\"paginator.length == 0\" class=\"empty\">\n\t\t\tNo Results\n\t\t</div>\n\n\t\t<mat-paginator [length]=\"length\" [pageSize]=\"pageSize\" [pageSizeOptions]=\"pageSizeOptions\" (page)=\"pageEvent = $event\"\n\t\t showFirstLastButtons></mat-paginator>\n\n\t</div>\n\n\t<!-- <div><code>headings = {{ headings | json }}</code></div>\n <div><code>properties = {{ properties | json }}</code></div> -->\n\n</mat-card>", styles: ["table{width:100%}.mat-paginator{margin-top:0;background:0 0}.e5core-ui-search-results{margin:10pt}.empty{width:100%;text-align:center;padding:15pt}.e5core-ui-search-results-column-workid{width:50px}.e5core-content.loading{background-color:rgba(.1,.1,.1,.1)}.e5core-content.loading table{background-color:transparent}.e5core-content .e5core-loader{position:absolute;margin-left:50%;margin-right:50%}.e5core-content .e5core-loader mat-spinner{top:20pt;left:-55pt}"] }] } ]; /** @nocollapse */ E5coreUiSearchResultsMaterialComponent.ctorParameters = function () { return [ { type: SearchDataSourceService } ]; }; E5coreUiSearchResultsMaterialComponent.propDecorators = { sort: [{ type: ViewChild, args: [MatSort,] }], paginator: [{ type: ViewChild, args: [MatPaginator,] }] }; return E5coreUiSearchResultsMaterialComponent; }(E5coreUiSearchResultsBaseComponent)); export { E5coreUiSearchResultsMaterialComponent }; if (false) { /** @type {?} */ E5coreUiSearchResultsMaterialComponent.prototype.tableDataSource; /** @type {?} */ E5coreUiSearchResultsMaterialComponent.prototype.isEmpty; /** @type {?} */ E5coreUiSearchResultsMaterialComponent.prototype.length; /** @type {?} */ E5coreUiSearchResultsMaterialComponent.prototype.pageSize; /** @type {?} */ E5coreUiSearchResultsMaterialComponent.prototype.pageSizeOptions; /** @type {?} */ E5coreUiSearchResultsMaterialComponent.prototype.findClassId; /** @type {?} */ E5coreUiSearchResultsMaterialComponent.prototype.loading; /** @type {?} */ E5coreUiSearchResultsMaterialComponent.prototype.delayedQuery; /** @type {?} */ E5coreUiSearchResultsMaterialComponent.prototype.headings; /** @type {?} */ E5coreUiSearchResultsMaterialComponent.prototype.pageEvent; /** @type {?} */ E5coreUiSearchResultsMaterialComponent.prototype.sort; /** @type {?} */ E5coreUiSearchResultsMaterialComponent.prototype.paginator; /** * @type {?} * @private */ E5coreUiSearchResultsMaterialComponent.prototype.searchService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLXNlYXJjaC1yZXN1bHRzLW1hdGVyaWFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2U1Y29yZS1hbmd1bGFyLXVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZTVjb3JlLXVpLXNlYXJjaC1yZXN1bHRzL2NvbXBvbmVudC9lNWNvcmUtdWktc2VhcmNoLXJlc3VsdHMtbWF0ZXJpYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckYsT0FBTyxFQUFhLE9BQU8sRUFBRSxZQUFZLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7OztBQUl6RiwrQkFNQzs7O0lBTEEseUJBQWE7O0lBQ2IsMEJBQWM7O0lBQ2QseUJBQWE7O0lBQ2IsMkJBQWU7Ozs7O0lBQ2YsOENBQXlCOzs7O0FBTTFCO0lBSzRELGtFQUFrQztJQXdCN0YsZ0RBQW9CLGFBQXFDO1FBQXpELFlBQ0MsaUJBQU8sU0FDUDtRQUZtQixtQkFBYSxHQUFiLGFBQWEsQ0FBd0I7UUFmekQsYUFBTyxHQUFZLEtBQUssQ0FBQztRQUV6QixZQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsY0FBUSxHQUFHLEVBQUUsQ0FBQztRQUdkLGFBQU8sR0FBWSxJQUFJLENBQUU7O0lBV3pCLENBQUM7Ozs7SUFFRCx5REFBUTs7O0lBQVI7UUFBQSxpQkEyQkM7UUExQkEsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMs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Ozs7SUFBTixVQUFPLEtBQXFCO1FBQzNCLElBQUcsSUFBSSxDQUFDLGVBQWU7WUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUU7O1lBRXBDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFFO0lBQzdCLENBQUM7Ozs7SUFFRCxzREFBSzs7O0lBQUw7UUFDQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFFO0lBQy9CLENBQUM7Ozs7SUFFRCx3REFBTzs7O0lBQVA7UUFDQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFFO0lBQ2pDLENBQUM7O2dCQWpIRCxTQUFTLFNBQUM7b0JBQ1YsUUFBUSxFQUFFLG1DQUFtQztvQkFDN0MscWdHQUFpRTs7aUJBRWpFOzs7O2dCQW5CUSx1QkFBdUI7Ozt1QkF5QzlCLFNBQVMsU0FBQyxPQUFPOzRCQUNqQixTQUFTLFNBQUMsWUFBWTs7SUF3RnhCLDZDQUFDO0NBQUEsQUFuSEQsQ0FLNEQsa0NBQWtDLEdBOEc3RjtTQTlHWSxzQ0FBc0M7OztJQVFsRCxpRUFBMEM7O0lBQzFDLHlEQUF5Qjs7SUFFekIsd0RBQVc7O0lBQ1gsMERBQWM7O0lBQ2QsaUVBQTBCOztJQUMxQiw2REFBb0I7O0lBQ3BCLHlEQUF5Qjs7SUFDekIsOERBQStCOztJQUMvQiwwREFBNkI7O0lBRzdCLDJEQUFxQjs7SUFDckIsc0RBQWtDOztJQUNsQywyREFBaUQ7Ozs7O0lBRXJDLCtEQUE2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRTVjb3JlVWlTZWFyY2hSZXN1bHRzQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vZTVjb3JlLXVpLXNlYXJjaC1yZXN1bHRzLWJhc2UnO1xuaW1wb3J0IHsgUGFnZUV2ZW50LCBNYXRTb3J0LCBNYXRQYWdpbmF0b3IsIE1hdFNwaW5uZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XG5pbXBvcnQgeyBTZWFyY2hNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL3NlYXJjaC1tYXRlcmlhbC10YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBTZWFyY2hEYXRhU291cmNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2RhdGFzb3VyY2Uvc2VhcmNoLWRhdGEtc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZUNvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2RhdGFzb3VyY2UvZGF0YS1zb3VyY2UtY29sdW1uJztcbmltcG9ydCB7IERhdGFTb3VyY2VRdWVyeSB9IGZyb20gJy4uLy4uLy4uL2RhdGFzb3VyY2UvZGF0YS1zb3VyY2UtcXVlcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkRlZiB7XG5cdG5hbWU6IHN0cmluZztcblx0bGFiZWw6IHN0cmluZztcblx0dHlwZTogc3RyaW5nO1xuXHRzdGF0dXM6IG51bWJlcjsgLy8gMCBIaWRkZW4sIDEgYXZhaWxhYmxlLCAyIHNlbGVjdGVkXG5cdGNlbGwocm93OiBhbnlbXSk6IHN0cmluZztcbn1cblxuLy8gaHR0cHM6Ly9zdGFja2JsaXR6LmNvbS9lZGl0L2R5bmFtaWMtY29sdW1ucy1tYXQtdGFibGU/ZmlsZT1hcHAlMkZ0YWJsZS1wYWdpbmF0aW9uLWV4YW1wbGUuaHRtbFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvbWF0ZXJpYWwyL2lzc3Vlcy81OTI3XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2U1Y29yZS11aS1zZWFyY2gtcmVzdWx0cy1tYXRlcmlhbCcsXG5cdHRlbXBsYXRlVXJsOiAnLi9lNWNvcmUtdWktc2VhcmNoLXJlc3VsdHMtbWF0ZXJpYWwuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9lNWNvcmUtdWktc2VhcmNoLXJlc3VsdHMtbWF0ZXJpYWwuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEU1Y29yZVVpU2VhcmNoUmVzdWx0c01hdGVyaWFsQ29tcG9uZW50IGV4dGVuZHMgRTVjb3JlVWlTZWFyY2hSZXN1bHRzQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuXHQvLyAgRnJvbSBFNWNvcmVVaVNlYXJjaFJlc3VsdHNCYXNlQ29tcG9uZW50XG5cdC8vIEBJbnB1dCgpIHNlYXJjaFJlc3VsdHMkOiBCZWhhdmlvclN1YmplY3Q8U2VhcmNoUmVzdWx0c01vZGVsPiA7XG5cdC8vIEBJbnB1dCgpIHBhZ2VzaXplczogbnVtYmVyW10gO1xuXHQvLyBASW5wdXQoKSBoZWFkaW5nczogVUlTZWFyY2hGaWVsZE1vZGVsW10gO1xuXHQvLyBASW5wdXQoKSBwcm9wZXJ0aWVzOiBVSVByb3BlcnR5TW9kZWxbXSA7XG5cblx0dGFibGVEYXRhU291cmNlOiBTZWFyY2hNYXRUYWJsZURhdGFTb3VyY2U7XG5cdGlzRW1wdHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRsZW5ndGggPSAwO1xuXHRwYWdlU2l6ZSA9IDEwO1xuXHRwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdO1xuXHRmaW5kQ2xhc3NJZDogbnVtYmVyO1xuXHRsb2FkaW5nOiBib29sZWFuID0gdHJ1ZSA7XG5cdGRlbGF5ZWRRdWVyeTogRGF0YVNvdXJjZVF1ZXJ5IDtcblx0aGVhZGluZ3M6RGF0YVNvdXJjZUNvbHVtbltdIDtcblxuXHQvLyBNYXRQYWdpbmF0b3IgT3V0cHV0XG5cdHBhZ2VFdmVudDogUGFnZUV2ZW50O1xuXHRAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XG5cdEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHNlYXJjaFNlcnZpY2U6U2VhcmNoRGF0YVNvdXJjZVNlcnZpY2UpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5wYWdlU2l6ZU9wdGlvbnMgPSAodGhpcy5wYWdlc2l6ZXMgJiYgdGhpcy5wYWdlc2l6ZXMubGVuZ3RoID4gMCkgPyB0aGlzLnBhZ2VzaXplcyA6IFs1LCAxMCwgMjUsIDUwXTtcblx0XHQvLyB0aGlzLnRhYmxlRGF0YVNvdXJjZSA9IG5ldyBTZWFyY2hNYXRUYWJsZURhdGFTb3VyY2UodGhpcy5kYXRhc291cmNlKTsgLy8gdGhpcy5oaXN0b3J5LmdldEhpc3RvcnkoaWQsIDAsIDEwKSA7XG5cblx0XHR0aGlzLnRhYmxlRGF0YVNvdXJjZSA9IG5ldyBTZWFyY2hNYXRUYWJsZURhdGFTb3VyY2UodGhpcy5kYXRhc291cmNlKTsgLy8gdGhpcy5oaXN0b3J5LmdldEhpc3RvcnkoaWQsIDAsIDEwKSA7XG5cdFx0dGhpcy50YWJsZURhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcblx0XHR0aGlzLnRhYmxlRGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcblx0XHR0aGlzLnRhYmxlRGF0YVNvdXJjZS5sb2FkaW5nRXZlbnRzLnN1YnNjcmliZShcblx0XHRcdGxvYWRpbmcgPT4geyBcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0gbG9hZGluZyBcblx0XHRcdH1cblx0XHQpXG5cdFx0Ly8gTG9hZCB0aGUgY29sdW1uc1xuXHRcdHRoaXMubG9hZGluZyA9IHRydWUgO1xuXHRcdHRoaXMuZGF0YXNvdXJjZS5jb2x1bW5zKCkuc3Vic2NyaWJlKFxuXHRcdFx0ZHNDb2x1bW5zID0+IHtcblx0XHRcdFx0dGhpcy5oZWFkaW5ncyA9IGRzQ29sdW1ucyA7XG5cdFx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlIDtcblx0XHRcdFx0aWYodGhpcy5kZWxheWVkUXVlcnkgfHwgdGhpcy5hdXRvU2VhcmNoKSB7XG5cdFx0XHRcdFx0dGhpcy5zZWFyY2godGhpcy5kZWxheWVkUXVlcnkpIDtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGVycm9yID0+IHt9LFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZSA7XG5cdFx0XHR9XG5cdFx0KVxuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0Ly8gaWYgKHRoaXMudGFibGVEYXRhU291cmNlKVxuXHRcdC8vIFx0dGhpcy50YWJsZURhdGFTb3VyY2UubG9hZGluZ0V2ZW50cy51bnN1YnNjcmliZSgpO1xuXHR9XG5cblx0c2V0UGFnZVNpemVPcHRpb25zKHNldFBhZ2VTaXplT3B0aW9uc0lucHV0OiBzdHJpbmcpIHtcblx0XHR0aGlzLnBhZ2VTaXplT3B0aW9ucyA9IHNldFBhZ2VTaXplT3B0aW9uc0lucHV0LnNwbGl0KCcsJykubWFwKHN0ciA9PiArc3RyKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm4gdGhlIGxpc3Qgb2YgY29sdW1ucyBhdmFpbGFibGUgaW4gdGhlIHRhYmxlLlxuXHQgKi9cblx0Y29sdW1ucygpOiBDb2x1bW5EZWZbXSB7XG5cdFx0aWYgKHRoaXMuaGVhZGluZ3MpIHtcblx0XHRcdGxldCBjb2xzID0gKHRoaXMuaGVhZGluZ3Ncblx0XHRcdFx0LmZpbHRlcihmID0+IGYuY29kZSAhPT0gJ0lkJykgLy8gSWQgaXMgYWRkZWQgYXQgdGhlIGJlZ2lubmluZ1xuXHRcdFx0XHQubWFwPENvbHVtbkRlZj4oZiA9PiA8Q29sdW1uRGVmPntcblx0XHRcdFx0XHRsYWJlbDogZi5sYWJlbCxcblx0XHRcdFx0XHRuYW1lOiBmLmNvZGUsXG5cdFx0XHRcdFx0dHlwZTogZi50eXBlLFxuXHRcdFx0XHRcdHN0YXR1czogZi5zdGF0dXNcblx0XHRcdFx0fSkpO1xuXHRcdFx0cmV0dXJuIChjb2xzKTtcblx0XHR9XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybiB0aGUgbGlzdCBvZiBjb2x1bW4gbmFtZXMgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgdGFibGUuXG5cdCAqL1xuXHRkaXNwbGF5ZWRDb2x1bW5zKCk6IHN0cmluZ1tdIHtcblx0XHR2YXIgY29scyA9IHRoaXMuY29sdW1ucygpXG5cdFx0XHQuZmlsdGVyKGYgPT4gZi5zdGF0dXMgPiAxKSAvLyBTZWxlY3RlZCBvbmx5XG5cdFx0XHQubWFwPHN0cmluZz4oYyA9PiBjLm5hbWUpO1xuXHRcdGNvbHMudW5zaGlmdChcIklkXCIpO1xuXHRcdHJldHVybiAoY29scyk7XG5cdH1cblxuXHRzZWFyY2gocXVlcnk6RGF0YVNvdXJjZVF1ZXJ5KSB7XG5cdFx0aWYodGhpcy50YWJsZURhdGFTb3VyY2UpIFxuXHRcdFx0dGhpcy50YWJsZURhdGFTb3VyY2Uuc2VhcmNoKHF1ZXJ5KSA7XG5cdFx0ZWxzZVxuXHRcdFx0dGhpcy5kZWxheWVkUXVlcnkgPSBxdWVyeSA7XG5cdH1cblxuXHRyZXNldCgpIHtcblx0XHR0aGlzLnRhYmxlRGF0YVNvdXJjZS5yZXNldCgpIDtcblx0fVxuXG5cdHJlZnJlc2goKSB7XG5cdFx0dGhpcy50YWJsZURhdGFTb3VyY2UucmVmcmVzaCgpIDtcblx0fVxuXG59XG4iXX0=