UNPKG

e5core-angular-ui

Version:

e5 Anywhere Angular UI

181 lines 19.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ 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 export class E5coreUiSearchResultsMaterialComponent extends E5coreUiSearchResultsBaseComponent { /** * @param {?} searchService */ constructor(searchService) { super(); this.searchService = searchService; this.isEmpty = false; this.length = 0; this.pageSize = 10; this.loading = true; } /** * @return {?} */ ngOnInit() { 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(loading => { this.loading = loading; }); // Load the columns this.loading = true; this.datasource.columns().subscribe(dsColumns => { this.headings = dsColumns; this.loading = false; if (this.delayedQuery || this.autoSearch) { this.search(this.delayedQuery); } }, error => { }, () => { this.loading = false; }); } /** * @return {?} */ ngOnDestroy() { // if (this.tableDataSource) // this.tableDataSource.loadingEvents.unsubscribe(); } /** * @param {?} setPageSizeOptionsInput * @return {?} */ setPageSizeOptions(setPageSizeOptionsInput) { this.pageSizeOptions = setPageSizeOptionsInput.split(',').map(str => +str); } /** * Return the list of columns available in the table. * @return {?} */ columns() { if (this.headings) { /** @type {?} */ let cols = (this.headings .filter(f => f.code !== 'Id') // Id is added at the beginning .map(f => (/** @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 {?} */ displayedColumns() { /** @type {?} */ var cols = this.columns() .filter(f => f.status > 1) // Selected only .map(c => c.name); cols.unshift("Id"); return (cols); } /** * @param {?} query * @return {?} */ search(query) { if (this.tableDataSource) this.tableDataSource.search(query); else this.delayedQuery = query; } /** * @return {?} */ reset() { this.tableDataSource.reset(); } /** * @return {?} */ refresh() { 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 = () => [ { type: SearchDataSourceService } ]; E5coreUiSearchResultsMaterialComponent.propDecorators = { sort: [{ type: ViewChild, args: [MatSort,] }], paginator: [{ type: ViewChild, args: [MatPaginator,] }] }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLXNlYXJjaC1yZXN1bHRzLW1hdGVyaWFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2U1Y29yZS1hbmd1bGFyLXVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZTVjb3JlLXVpLXNlYXJjaC1yZXN1bHRzL2NvbXBvbmVudC9lNWNvcmUtdWktc2VhcmNoLXJlc3VsdHMtbWF0ZXJpYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQWEsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7O0FBSXpGLCtCQU1DOzs7SUFMQSx5QkFBYTs7SUFDYiwwQkFBYzs7SUFDZCx5QkFBYTs7SUFDYiwyQkFBZTs7Ozs7SUFDZiw4Q0FBeUI7Ozs7QUFXMUIsTUFBTSxPQUFPLHNDQUF1QyxTQUFRLGtDQUFrQzs7OztJQXdCN0YsWUFBb0IsYUFBcUM7UUFDeEQsS0FBSyxFQUFFLENBQUM7UUFEVyxrQkFBYSxHQUFiLGFBQWEsQ0FBd0I7UUFmekQsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUV6QixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUdkLFlBQU8sR0FBWSxJQUFJLENBQUU7SUFXekIsQ0FBQzs7OztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENB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QyxDQUFFOztZQUVwQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBRTtJQUM3QixDQUFDOzs7O0lBRUQsS0FBSztRQUNKLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUU7SUFDL0IsQ0FBQzs7OztJQUVELE9BQU87UUFDTixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFFO0lBQ2pDLENBQUM7OztZQWpIRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLG1DQUFtQztnQkFDN0MscWdHQUFpRTs7YUFFakU7Ozs7WUFuQlEsdUJBQXVCOzs7bUJBeUM5QixTQUFTLFNBQUMsT0FBTzt3QkFDakIsU0FBUyxTQUFDLFlBQVk7Ozs7SUFkdkIsaUVBQTBDOztJQUMxQyx5REFBeUI7O0lBRXpCLHdEQUFXOztJQUNYLDBEQUFjOztJQUNkLGlFQUEwQjs7SUFDMUIsNkRBQW9COztJQUNwQix5REFBeUI7O0lBQ3pCLDhEQUErQjs7SUFDL0IsMERBQTZCOztJQUc3QiwyREFBcUI7O0lBQ3JCLHNEQUFrQzs7SUFDbEMsMkRBQWlEOzs7OztJQUVyQywrREFBNkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEU1Y29yZVVpU2VhcmNoUmVzdWx0c0Jhc2VDb21wb25lbnQgfSBmcm9tICcuL2U1Y29yZS11aS1zZWFyY2gtcmVzdWx0cy1iYXNlJztcbmltcG9ydCB7IFBhZ2VFdmVudCwgTWF0U29ydCwgTWF0UGFnaW5hdG9yLCBNYXRTcGlubmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgU2VhcmNoTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9zZWFyY2gtbWF0ZXJpYWwtdGFibGUtZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgU2VhcmNoRGF0YVNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kYXRhc291cmNlL3NlYXJjaC1kYXRhLXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFTb3VyY2VDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9kYXRhc291cmNlL2RhdGEtc291cmNlLWNvbHVtbic7XG5pbXBvcnQgeyBEYXRhU291cmNlUXVlcnkgfSBmcm9tICcuLi8uLi8uLi9kYXRhc291cmNlL2RhdGEtc291cmNlLXF1ZXJ5JztcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5EZWYge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdHR5cGU6IHN0cmluZztcblx0c3RhdHVzOiBudW1iZXI7IC8vIDAgSGlkZGVuLCAxIGF2YWlsYWJsZSwgMiBzZWxlY3RlZFxuXHRjZWxsKHJvdzogYW55W10pOiBzdHJpbmc7XG59XG5cbi8vIGh0dHBzOi8vc3RhY2tibGl0ei5jb20vZWRpdC9keW5hbWljLWNvbHVtbnMtbWF0LXRhYmxlP2ZpbGU9YXBwJTJGdGFibGUtcGFnaW5hdGlvbi1leGFtcGxlLmh0bWxcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL21hdGVyaWFsMi9pc3N1ZXMvNTkyN1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdlNWNvcmUtdWktc2VhcmNoLXJlc3VsdHMtbWF0ZXJpYWwnLFxuXHR0ZW1wbGF0ZVVybDogJy4vZTVjb3JlLXVpLXNlYXJjaC1yZXN1bHRzLW1hdGVyaWFsLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZTVjb3JlLXVpLXNlYXJjaC1yZXN1bHRzLW1hdGVyaWFsLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFNWNvcmVVaVNlYXJjaFJlc3VsdHNNYXRlcmlhbENvbXBvbmVudCBleHRlbmRzIEU1Y29yZVVpU2VhcmNoUmVzdWx0c0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cblx0Ly8gIEZyb20gRTVjb3JlVWlTZWFyY2hSZXN1bHRzQmFzZUNvbXBvbmVudFxuXHQvLyBASW5wdXQoKSBzZWFyY2hSZXN1bHRzJDogQmVoYXZpb3JTdWJqZWN0PFNlYXJjaFJlc3VsdHNNb2RlbD4gO1xuXHQvLyBASW5wdXQoKSBwYWdlc2l6ZXM6IG51bWJlcltdIDtcblx0Ly8gQElucHV0KCkgaGVhZGluZ3M6IFVJU2VhcmNoRmllbGRNb2RlbFtdIDtcblx0Ly8gQElucHV0KCkgcHJvcGVydGllczogVUlQcm9wZXJ0eU1vZGVsW10gO1xuXG5cdHRhYmxlRGF0YVNvdXJjZTogU2VhcmNoTWF0VGFibGVEYXRhU291cmNlO1xuXHRpc0VtcHR5OiBib29sZWFuID0gZmFsc2U7XG5cblx0bGVuZ3RoID0gMDtcblx0cGFnZVNpemUgPSAxMDtcblx0cGFnZVNpemVPcHRpb25zOiBudW1iZXJbXTtcblx0ZmluZENsYXNzSWQ6IG51bWJlcjtcblx0bG9hZGluZzogYm9vbGVhbiA9IHRydWUgO1xuXHRkZWxheWVkUXVlcnk6IERhdGFTb3VyY2VRdWVyeSA7XG5cdGhlYWRpbmdzOkRhdGFTb3VyY2VDb2x1bW5bXSA7XG5cblx0Ly8gTWF0UGFnaW5hdG9yIE91dHB1dFxuXHRwYWdlRXZlbnQ6IFBhZ2VFdmVudDtcblx0QFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0OiBNYXRTb3J0O1xuXHRAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOlNlYXJjaERhdGFTb3VyY2VTZXJ2aWNlKSB7XG5cdFx0c3VwZXIoKTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMucGFnZVNpemVPcHRpb25zID0gKHRoaXMucGFnZXNpemVzICYmIHRoaXMucGFnZXNpemVzLmxlbmd0aCA+IDApID8gdGhpcy5wYWdlc2l6ZXMgOiBbNSwgMTAsIDI1LCA1MF07XG5cdFx0Ly8gdGhpcy50YWJsZURhdGFTb3VyY2UgPSBuZXcgU2VhcmNoTWF0VGFibGVEYXRhU291cmNlKHRoaXMuZGF0YXNvdXJjZSk7IC8vIHRoaXMuaGlzdG9yeS5nZXRIaXN0b3J5KGlkLCAwLCAxMCkgO1xuXG5cdFx0dGhpcy50YWJsZURhdGFTb3VyY2UgPSBuZXcgU2VhcmNoTWF0VGFibGVEYXRhU291cmNlKHRoaXMuZGF0YXNvdXJjZSk7IC8vIHRoaXMuaGlzdG9yeS5nZXRIaXN0b3J5KGlkLCAwLCAxMCkgO1xuXHRcdHRoaXMudGFibGVEYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XG5cdFx0dGhpcy50YWJsZURhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XG5cdFx0dGhpcy50YWJsZURhdGFTb3VyY2UubG9hZGluZ0V2ZW50cy5zdWJzY3JpYmUoXG5cdFx0XHRsb2FkaW5nID0+IHsgXG5cdFx0XHRcdHRoaXMubG9hZGluZyA9IGxvYWRpbmcgXG5cdFx0XHR9XG5cdFx0KVxuXHRcdC8vIExvYWQgdGhlIGNvbHVtbnNcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlIDtcblx0XHR0aGlzLmRhdGFzb3VyY2UuY29sdW1ucygpLnN1YnNjcmliZShcblx0XHRcdGRzQ29sdW1ucyA9PiB7XG5cdFx0XHRcdHRoaXMuaGVhZGluZ3MgPSBkc0NvbHVtbnMgO1xuXHRcdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZSA7XG5cdFx0XHRcdGlmKHRoaXMuZGVsYXllZFF1ZXJ5IHx8IHRoaXMuYXV0b1NlYXJjaCkge1xuXHRcdFx0XHRcdHRoaXMuc2VhcmNoKHRoaXMuZGVsYXllZFF1ZXJ5KSA7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRlcnJvciA9PiB7fSxcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2UgO1xuXHRcdFx0fVxuXHRcdClcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdC8vIGlmICh0aGlzLnRhYmxlRGF0YVNvdXJjZSlcblx0XHQvLyBcdHRoaXMudGFibGVEYXRhU291cmNlLmxvYWRpbmdFdmVudHMudW5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdHNldFBhZ2VTaXplT3B0aW9ucyhzZXRQYWdlU2l6ZU9wdGlvbnNJbnB1dDogc3RyaW5nKSB7XG5cdFx0dGhpcy5wYWdlU2l6ZU9wdGlvbnMgPSBzZXRQYWdlU2l6ZU9wdGlvbnNJbnB1dC5zcGxpdCgnLCcpLm1hcChzdHIgPT4gK3N0cik7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJuIHRoZSBsaXN0IG9mIGNvbHVtbnMgYXZhaWxhYmxlIGluIHRoZSB0YWJsZS5cblx0ICovXG5cdGNvbHVtbnMoKTogQ29sdW1uRGVmW10ge1xuXHRcdGlmICh0aGlzLmhlYWRpbmdzKSB7XG5cdFx0XHRsZXQgY29scyA9ICh0aGlzLmhlYWRpbmdzXG5cdFx0XHRcdC5maWx0ZXIoZiA9PiBmLmNvZGUgIT09ICdJZCcpIC8vIElkIGlzIGFkZGVkIGF0IHRoZSBiZWdpbm5pbmdcblx0XHRcdFx0Lm1hcDxDb2x1bW5EZWY+KGYgPT4gPENvbHVtbkRlZj57XG5cdFx0XHRcdFx0bGFiZWw6IGYubGFiZWwsXG5cdFx0XHRcdFx0bmFtZTogZi5jb2RlLFxuXHRcdFx0XHRcdHR5cGU6IGYudHlwZSxcblx0XHRcdFx0XHRzdGF0dXM6IGYuc3RhdHVzXG5cdFx0XHRcdH0pKTtcblx0XHRcdHJldHVybiAoY29scyk7XG5cdFx0fVxuXHRcdHJldHVybiBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm4gdGhlIGxpc3Qgb2YgY29sdW1uIG5hbWVzIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlLlxuXHQgKi9cblx0ZGlzcGxheWVkQ29sdW1ucygpOiBzdHJpbmdbXSB7XG5cdFx0dmFyIGNvbHMgPSB0aGlzLmNvbHVtbnMoKVxuXHRcdFx0LmZpbHRlcihmID0+IGYuc3RhdHVzID4gMSkgLy8gU2VsZWN0ZWQgb25seVxuXHRcdFx0Lm1hcDxzdHJpbmc+KGMgPT4gYy5uYW1lKTtcblx0XHRjb2xzLnVuc2hpZnQoXCJJZFwiKTtcblx0XHRyZXR1cm4gKGNvbHMpO1xuXHR9XG5cblx0c2VhcmNoKHF1ZXJ5OkRhdGFTb3VyY2VRdWVyeSkge1xuXHRcdGlmKHRoaXMudGFibGVEYXRhU291cmNlKSBcblx0XHRcdHRoaXMudGFibGVEYXRhU291cmNlLnNlYXJjaChxdWVyeSkgO1xuXHRcdGVsc2Vcblx0XHRcdHRoaXMuZGVsYXllZFF1ZXJ5ID0gcXVlcnkgO1xuXHR9XG5cblx0cmVzZXQoKSB7XG5cdFx0dGhpcy50YWJsZURhdGFTb3VyY2UucmVzZXQoKSA7XG5cdH1cblxuXHRyZWZyZXNoKCkge1xuXHRcdHRoaXMudGFibGVEYXRhU291cmNlLnJlZnJlc2goKSA7XG5cdH1cblxufVxuIl19