e5core-angular-ui
Version:
e5 Anywhere Angular UI
181 lines • 19.4 kB
JavaScript
/**
* @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLXNlYXJjaC1yZXN1bHRzLW1hdGVyaWFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2U1Y29yZS1hbmd1bGFyLXVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZTVjb3JlLXVpLXNlYXJjaC1yZXN1bHRzL2NvbXBvbmVudC9lNWNvcmUtdWktc2VhcmNoLXJlc3VsdHMtbWF0ZXJpYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQWEsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7O0FBSXpGLCtCQU1DOzs7SUFMQSx5QkFBYTs7SUFDYiwwQkFBYzs7SUFDZCx5QkFBYTs7SUFDYiwyQkFBZTs7Ozs7SUFDZiw4Q0FBeUI7Ozs7QUFXMUIsTUFBTSxPQUFPLHNDQUF1QyxTQUFRLGtDQUFrQzs7OztJQXdCN0YsWUFBb0IsYUFBcUM7UUFDeEQsS0FBSyxFQUFFLENBQUM7UUFEVyxrQkFBYSxHQUFiLGFBQWEsQ0FBd0I7UUFmekQsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUV6QixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUdkLFlBQU8sR0FBWSxJQUFJLENBQUU7SUFXekIsQ0FBQzs7OztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RyxnSEFBZ0g7UUFFaEgsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLHVDQUF1QztRQUM3RyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUMzQyxPQUFPLENBQUMsRUFBRTtZQUNULElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3ZCLENBQUMsQ0FDRCxDQUFBO1FBQ0QsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFFO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUNsQyxTQUFTLENBQUMsRUFBRTtZQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFFO1lBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFFO1lBQ3RCLElBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBRTthQUNoQztRQUNGLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRSxHQUFFLENBQUMsRUFDWCxHQUFHLEVBQUU7WUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBRTtRQUN2QixDQUFDLENBQ0QsQ0FBQTtJQUNGLENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1YsNEJBQTRCO1FBQzVCLHFEQUFxRDtJQUN0RCxDQUFDOzs7OztJQUVELGtCQUFrQixDQUFDLHVCQUErQjtRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Ozs7O0lBS0QsT0FBTztRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTs7Z0JBQ2QsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVE7aUJBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsK0JBQStCO2lCQUM1RCxHQUFHLENBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtQkFBVztnQkFDL0IsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUNkLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDWixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7Z0JBQ1osTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO2FBQ2hCLEVBQUEsQ0FBQyxDQUFDO1lBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNYLENBQUM7Ozs7O0lBS0QsZ0JBQWdCOztZQUNYLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO2FBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCO2FBQzFDLEdBQUcsQ0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixDQUFDOzs7OztJQUVELE1BQU0sQ0FBQyxLQUFxQjtRQUMzQixJQUFHLElBQUksQ0FBQyxlQUFlO1lBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFFOztZQUVwQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBRTtJQUM3QixDQUFDOzs7O0lBRUQsS0FBSztRQUNKLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUU7SUFDL0IsQ0FBQzs7OztJQUVELE9BQU87UUFDTixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFFO0lBQ2pDLENBQUM7OztZQWpIRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLG1DQUFtQztnQkFDN0MscWdHQUFpRTs7YUFFakU7Ozs7WUFuQlEsdUJBQXVCOzs7bUJBeUM5QixTQUFTLFNBQUMsT0FBTzt3QkFDakIsU0FBUyxTQUFDLFlBQVk7Ozs7SUFkdkIsaUVBQTBDOztJQUMxQyx5REFBeUI7O0lBRXpCLHdEQUFXOztJQUNYLDBEQUFjOztJQUNkLGlFQUEwQjs7SUFDMUIsNkRBQW9COztJQUNwQix5REFBeUI7O0lBQ3pCLDhEQUErQjs7SUFDL0IsMERBQTZCOztJQUc3QiwyREFBcUI7O0lBQ3JCLHNEQUFrQzs7SUFDbEMsMkRBQWlEOzs7OztJQUVyQywrREFBNkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEU1Y29yZVVpU2VhcmNoUmVzdWx0c0Jhc2VDb21wb25lbnQgfSBmcm9tICcuL2U1Y29yZS11aS1zZWFyY2gtcmVzdWx0cy1iYXNlJztcbmltcG9ydCB7IFBhZ2VFdmVudCwgTWF0U29ydCwgTWF0UGFnaW5hdG9yLCBNYXRTcGlubmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgU2VhcmNoTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9zZWFyY2gtbWF0ZXJpYWwtdGFibGUtZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgU2VhcmNoRGF0YVNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kYXRhc291cmNlL3NlYXJjaC1kYXRhLXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFTb3VyY2VDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9kYXRhc291cmNlL2RhdGEtc291cmNlLWNvbHVtbic7XG5pbXBvcnQgeyBEYXRhU291cmNlUXVlcnkgfSBmcm9tICcuLi8uLi8uLi9kYXRhc291cmNlL2RhdGEtc291cmNlLXF1ZXJ5JztcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5EZWYge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdHR5cGU6IHN0cmluZztcblx0c3RhdHVzOiBudW1iZXI7IC8vIDAgSGlkZGVuLCAxIGF2YWlsYWJsZSwgMiBzZWxlY3RlZFxuXHRjZWxsKHJvdzogYW55W10pOiBzdHJpbmc7XG59XG5cbi8vIGh0dHBzOi8vc3RhY2tibGl0ei5jb20vZWRpdC9keW5hbWljLWNvbHVtbnMtbWF0LXRhYmxlP2ZpbGU9YXBwJTJGdGFibGUtcGFnaW5hdGlvbi1leGFtcGxlLmh0bWxcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL21hdGVyaWFsMi9pc3N1ZXMvNTkyN1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdlNWNvcmUtdWktc2VhcmNoLXJlc3VsdHMtbWF0ZXJpYWwnLFxuXHR0ZW1wbGF0ZVVybDogJy4vZTVjb3JlLXVpLXNlYXJjaC1yZXN1bHRzLW1hdGVyaWFsLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZTVjb3JlLXVpLXNlYXJjaC1yZXN1bHRzLW1hdGVyaWFsLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFNWNvcmVVaVNlYXJjaFJlc3VsdHNNYXRlcmlhbENvbXBvbmVudCBleHRlbmRzIEU1Y29yZVVpU2VhcmNoUmVzdWx0c0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cblx0Ly8gIEZyb20gRTVjb3JlVWlTZWFyY2hSZXN1bHRzQmFzZUNvbXBvbmVudFxuXHQvLyBASW5wdXQoKSBzZWFyY2hSZXN1bHRzJDogQmVoYXZpb3JTdWJqZWN0PFNlYXJjaFJlc3VsdHNNb2RlbD4gO1xuXHQvLyBASW5wdXQoKSBwYWdlc2l6ZXM6IG51bWJlcltdIDtcblx0Ly8gQElucHV0KCkgaGVhZGluZ3M6IFVJU2VhcmNoRmllbGRNb2RlbFtdIDtcblx0Ly8gQElucHV0KCkgcHJvcGVydGllczogVUlQcm9wZXJ0eU1vZGVsW10gO1xuXG5cdHRhYmxlRGF0YVNvdXJjZTogU2VhcmNoTWF0VGFibGVEYXRhU291cmNlO1xuXHRpc0VtcHR5OiBib29sZWFuID0gZmFsc2U7XG5cblx0bGVuZ3RoID0gMDtcblx0cGFnZVNpemUgPSAxMDtcblx0cGFnZVNpemVPcHRpb25zOiBudW1iZXJbXTtcblx0ZmluZENsYXNzSWQ6IG51bWJlcjtcblx0bG9hZGluZzogYm9vbGVhbiA9IHRydWUgO1xuXHRkZWxheWVkUXVlcnk6IERhdGFTb3VyY2VRdWVyeSA7XG5cdGhlYWRpbmdzOkRhdGFTb3VyY2VDb2x1bW5bXSA7XG5cblx0Ly8gTWF0UGFnaW5hdG9yIE91dHB1dFxuXHRwYWdlRXZlbnQ6IFBhZ2VFdmVudDtcblx0QFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0OiBNYXRTb3J0O1xuXHRAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOlNlYXJjaERhdGFTb3VyY2VTZXJ2aWNlKSB7XG5cdFx0c3VwZXIoKTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMucGFnZVNpemVPcHRpb25zID0gKHRoaXMucGFnZXNpemVzICYmIHRoaXMucGFnZXNpemVzLmxlbmd0aCA+IDApID8gdGhpcy5wYWdlc2l6ZXMgOiBbNSwgMTAsIDI1LCA1MF07XG5cdFx0Ly8gdGhpcy50YWJsZURhdGFTb3VyY2UgPSBuZXcgU2VhcmNoTWF0VGFibGVEYXRhU291cmNlKHRoaXMuZGF0YXNvdXJjZSk7IC8vIHRoaXMuaGlzdG9yeS5nZXRIaXN0b3J5KGlkLCAwLCAxMCkgO1xuXG5cdFx0dGhpcy50YWJsZURhdGFTb3VyY2UgPSBuZXcgU2VhcmNoTWF0VGFibGVEYXRhU291cmNlKHRoaXMuZGF0YXNvdXJjZSk7IC8vIHRoaXMuaGlzdG9yeS5nZXRIaXN0b3J5KGlkLCAwLCAxMCkgO1xuXHRcdHRoaXMudGFibGVEYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XG5cdFx0dGhpcy50YWJsZURhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XG5cdFx0dGhpcy50YWJsZURhdGFTb3VyY2UubG9hZGluZ0V2ZW50cy5zdWJzY3JpYmUoXG5cdFx0XHRsb2FkaW5nID0+IHsgXG5cdFx0XHRcdHRoaXMubG9hZGluZyA9IGxvYWRpbmcgXG5cdFx0XHR9XG5cdFx0KVxuXHRcdC8vIExvYWQgdGhlIGNvbHVtbnNcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlIDtcblx0XHR0aGlzLmRhdGFzb3VyY2UuY29sdW1ucygpLnN1YnNjcmliZShcblx0XHRcdGRzQ29sdW1ucyA9PiB7XG5cdFx0XHRcdHRoaXMuaGVhZGluZ3MgPSBkc0NvbHVtbnMgO1xuXHRcdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZSA7XG5cdFx0XHRcdGlmKHRoaXMuZGVsYXllZFF1ZXJ5IHx8IHRoaXMuYXV0b1NlYXJjaCkge1xuXHRcdFx0XHRcdHRoaXMuc2VhcmNoKHRoaXMuZGVsYXllZFF1ZXJ5KSA7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRlcnJvciA9PiB7fSxcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2UgO1xuXHRcdFx0fVxuXHRcdClcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdC8vIGlmICh0aGlzLnRhYmxlRGF0YVNvdXJjZSlcblx0XHQvLyBcdHRoaXMudGFibGVEYXRhU291cmNlLmxvYWRpbmdFdmVudHMudW5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdHNldFBhZ2VTaXplT3B0aW9ucyhzZXRQYWdlU2l6ZU9wdGlvbnNJbnB1dDogc3RyaW5nKSB7XG5cdFx0dGhpcy5wYWdlU2l6ZU9wdGlvbnMgPSBzZXRQYWdlU2l6ZU9wdGlvbnNJbnB1dC5zcGxpdCgnLCcpLm1hcChzdHIgPT4gK3N0cik7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJuIHRoZSBsaXN0IG9mIGNvbHVtbnMgYXZhaWxhYmxlIGluIHRoZSB0YWJsZS5cblx0ICovXG5cdGNvbHVtbnMoKTogQ29sdW1uRGVmW10ge1xuXHRcdGlmICh0aGlzLmhlYWRpbmdzKSB7XG5cdFx0XHRsZXQgY29scyA9ICh0aGlzLmhlYWRpbmdzXG5cdFx0XHRcdC5maWx0ZXIoZiA9PiBmLmNvZGUgIT09ICdJZCcpIC8vIElkIGlzIGFkZGVkIGF0IHRoZSBiZWdpbm5pbmdcblx0XHRcdFx0Lm1hcDxDb2x1bW5EZWY+KGYgPT4gPENvbHVtbkRlZj57XG5cdFx0XHRcdFx0bGFiZWw6IGYubGFiZWwsXG5cdFx0XHRcdFx0bmFtZTogZi5jb2RlLFxuXHRcdFx0XHRcdHR5cGU6IGYudHlwZSxcblx0XHRcdFx0XHRzdGF0dXM6IGYuc3RhdHVzXG5cdFx0XHRcdH0pKTtcblx0XHRcdHJldHVybiAoY29scyk7XG5cdFx0fVxuXHRcdHJldHVybiBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm4gdGhlIGxpc3Qgb2YgY29sdW1uIG5hbWVzIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlLlxuXHQgKi9cblx0ZGlzcGxheWVkQ29sdW1ucygpOiBzdHJpbmdbXSB7XG5cdFx0dmFyIGNvbHMgPSB0aGlzLmNvbHVtbnMoKVxuXHRcdFx0LmZpbHRlcihmID0+IGYuc3RhdHVzID4gMSkgLy8gU2VsZWN0ZWQgb25seVxuXHRcdFx0Lm1hcDxzdHJpbmc+KGMgPT4gYy5uYW1lKTtcblx0XHRjb2xzLnVuc2hpZnQoXCJJZFwiKTtcblx0XHRyZXR1cm4gKGNvbHMpO1xuXHR9XG5cblx0c2VhcmNoKHF1ZXJ5OkRhdGFTb3VyY2VRdWVyeSkge1xuXHRcdGlmKHRoaXMudGFibGVEYXRhU291cmNlKSBcblx0XHRcdHRoaXMudGFibGVEYXRhU291cmNlLnNlYXJjaChxdWVyeSkgO1xuXHRcdGVsc2Vcblx0XHRcdHRoaXMuZGVsYXllZFF1ZXJ5ID0gcXVlcnkgO1xuXHR9XG5cblx0cmVzZXQoKSB7XG5cdFx0dGhpcy50YWJsZURhdGFTb3VyY2UucmVzZXQoKSA7XG5cdH1cblxuXHRyZWZyZXNoKCkge1xuXHRcdHRoaXMudGFibGVEYXRhU291cmNlLnJlZnJlc2goKSA7XG5cdH1cblxufVxuIl19