UNPKG

igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

270 lines • 19.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Pipe } from '@angular/core'; import { cloneArray } from '../../core/utils'; import { DataUtil } from '../../data-operations/data-util'; import { GridBaseAPIService } from '../api.service'; /** * @hidden */ export class IgxGridSortingPipe { /** * @param {?} gridAPI */ constructor(gridAPI) { this.gridAPI = (/** @type {?} */ (gridAPI)); } /** * @param {?} collection * @param {?} expressions * @param {?} id * @param {?} pipeTrigger * @return {?} */ transform(collection, expressions, id, pipeTrigger) { /** @type {?} */ const grid = this.gridAPI.grid; /** @type {?} */ let result; if (!expressions.length) { result = collection; } else { result = DataUtil.sort(cloneArray(collection), expressions); } grid.filteredSortedData = result; return result; } } IgxGridSortingPipe.decorators = [ { type: Pipe, args: [{ name: 'gridSort', pure: true },] } ]; /** @nocollapse */ IgxGridSortingPipe.ctorParameters = () => [ { type: GridBaseAPIService } ]; if (false) { /** * @type {?} * @private */ IgxGridSortingPipe.prototype.gridAPI; } /** * @hidden */ export class IgxGridPreGroupingPipe { /** * @param {?} gridAPI */ constructor(gridAPI) { this.gridAPI = (/** @type {?} */ (gridAPI)); } /** * @param {?} collection * @param {?} expression * @param {?} expansion * @param {?} defaultExpanded * @param {?} id * @param {?} groupsRecords * @param {?} pipeTrigger * @return {?} */ transform(collection, expression, expansion, defaultExpanded, id, groupsRecords, pipeTrigger) { /** @type {?} */ const state = { expressions: [], expansion: [], defaultExpanded }; /** @type {?} */ const grid = this.gridAPI.grid; state.expressions = grid.groupingExpressions; if (!state.expressions.length) { // empty the array without changing reference groupsRecords.splice(0, groupsRecords.length); return { data: collection, metadata: collection }; } state.expansion = grid.groupingExpansionState; state.defaultExpanded = grid.groupsExpanded; return DataUtil.group(cloneArray(collection), state, groupsRecords); } } IgxGridPreGroupingPipe.decorators = [ { type: Pipe, args: [{ name: 'gridPreGroupBy', pure: true },] } ]; /** @nocollapse */ IgxGridPreGroupingPipe.ctorParameters = () => [ { type: GridBaseAPIService } ]; if (false) { /** * @type {?} * @private */ IgxGridPreGroupingPipe.prototype.gridAPI; } /** * @hidden */ export class IgxGridPostGroupingPipe { /** * @param {?} gridAPI */ constructor(gridAPI) { this.gridAPI = (/** @type {?} */ (gridAPI)); } /** * @param {?} collection * @param {?} expression * @param {?} expansion * @param {?} defaultExpanded * @param {?} id * @param {?} pipeTrigger * @return {?} */ transform(collection, expression, expansion, defaultExpanded, id, pipeTrigger) { /** @type {?} */ const state = { expressions: [], expansion: [], defaultExpanded }; /** @type {?} */ const grid = this.gridAPI.grid; state.expressions = grid.groupingExpressions; if (!state.expressions.length) { return collection.data; } state.expansion = grid.groupingExpansionState; state.defaultExpanded = grid.groupsExpanded; return DataUtil.restoreGroups({ data: cloneArray(collection.data), metadata: cloneArray(collection.metadata) }, state); } } IgxGridPostGroupingPipe.decorators = [ { type: Pipe, args: [{ name: 'gridPostGroupBy', pure: true },] } ]; /** @nocollapse */ IgxGridPostGroupingPipe.ctorParameters = () => [ { type: GridBaseAPIService } ]; if (false) { /** * @type {?} * @private */ IgxGridPostGroupingPipe.prototype.gridAPI; } /** * @hidden */ export class IgxGridPagingPipe { /** * @param {?} gridAPI */ constructor(gridAPI) { this.gridAPI = gridAPI; } /** * @param {?} collection * @param {?=} page * @param {?=} perPage * @param {?=} id * @param {?=} pipeTrigger * @return {?} */ transform(collection, page = 0, perPage = 15, id, pipeTrigger) { if (!this.gridAPI.grid.paging) { return collection; } /** @type {?} */ const state = { index: page, recordsPerPage: perPage }; /** @type {?} */ const result = { data: DataUtil.page(cloneArray(collection.data), state), metadata: DataUtil.page(cloneArray(collection.metadata), state) }; this.gridAPI.grid.pagingState = state; return result; } } IgxGridPagingPipe.decorators = [ { type: Pipe, args: [{ name: 'gridPaging', pure: true },] } ]; /** @nocollapse */ IgxGridPagingPipe.ctorParameters = () => [ { type: GridBaseAPIService } ]; if (false) { /** * @type {?} * @private */ IgxGridPagingPipe.prototype.gridAPI; } /** * @hidden */ export class IgxGridFilteringPipe { /** * @param {?} gridAPI */ constructor(gridAPI) { this.gridAPI = gridAPI; } /** * @param {?} collection * @param {?} expressionsTree * @param {?} id * @param {?} pipeTrigger * @return {?} */ transform(collection, expressionsTree, id, pipeTrigger) { /** @type {?} */ const grid = this.gridAPI.grid; /** @type {?} */ const state = { expressionsTree: expressionsTree }; if (!state.expressionsTree || !state.expressionsTree.filteringOperands || state.expressionsTree.filteringOperands.length === 0) { return collection; } /** @type {?} */ const result = DataUtil.filter(cloneArray(collection), state); grid.filteredData = result; return result; } } IgxGridFilteringPipe.decorators = [ { type: Pipe, args: [{ name: 'gridFiltering', pure: true },] } ]; /** @nocollapse */ IgxGridFilteringPipe.ctorParameters = () => [ { type: GridBaseAPIService } ]; if (false) { /** * @type {?} * @private */ IgxGridFilteringPipe.prototype.gridAPI; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5waXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZ3JpZHMvZ3JpZC9ncmlkLnBpcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBUTNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBVXBELE1BQU0sT0FBTyxrQkFBa0I7Ozs7SUFHM0IsWUFBWSxPQUFxRTtRQUM3RSxJQUFJLENBQUMsT0FBTyxHQUFHLG1CQUFtQixPQUFPLEVBQUEsQ0FBQztJQUM5QyxDQUFDOzs7Ozs7OztJQUVNLFNBQVMsQ0FBQyxVQUFpQixFQUFFLFdBQWlDLEVBQUUsRUFBVSxFQUFFLFdBQW1COztjQUM1RixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJOztZQUMxQixNQUFhO1FBRWpCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQ3JCLE1BQU0sR0FBRyxVQUFVLENBQUM7U0FDdkI7YUFBTTtZQUNILE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUMvRDtRQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUM7UUFFakMsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQzs7O1lBdkJKLElBQUksU0FBQztnQkFDRixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsSUFBSSxFQUFFLElBQUk7YUFDYjs7OztZQVRRLGtCQUFrQjs7Ozs7OztJQVd2QixxQ0FBbUM7Ozs7O0FBNEJ2QyxNQUFNLE9BQU8sc0JBQXNCOzs7O0lBRy9CLFlBQVks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USxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQzdELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1FBQzNCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7OztZQXRCSixJQUFJLFNBQUM7Z0JBQ0YsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLElBQUksRUFBRSxJQUFJO2FBQ2I7Ozs7WUEvSVEsa0JBQWtCOzs7Ozs7O0lBa0pYLHVDQUE2RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lQXJyYXkgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IERhdGFVdGlsIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBJR3JvdXBCeUV4cGFuZFN0YXRlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwYnktZXhwYW5kLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJR3JvdXBCeVJlc3VsdCB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9ncm91cGluZy1zdHJhdGVneSc7XG5pbXBvcnQgeyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9ucy10cmVlJztcbmltcG9ydCB7IElTb3J0aW5nRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IElneEdyaWRBUElTZXJ2aWNlIH0gZnJvbSAnLi9ncmlkLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IElneEdyaWRDb21wb25lbnQgfSBmcm9tICcuL2dyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IElHcm91cGluZ0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR3JpZEJhc2VBUElTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4R3JpZEJhc2VDb21wb25lbnQsIElHcmlkRGF0YUJpbmRhYmxlIH0gZnJvbSAnLi4vZ3JpZC1iYXNlLmNvbXBvbmVudCc7XG5cbi8qKlxuICpAaGlkZGVuXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JpZFNvcnQnLFxuICAgIHB1cmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZFNvcnRpbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHJpdmF0ZSBncmlkQVBJOiBJZ3hHcmlkQVBJU2VydmljZTtcblxuICAgIGNvbnN0cnVjdG9yKGdyaWRBUEk6IEdyaWRCYXNlQVBJU2VydmljZTxJZ3hHcmlkQmFzZUNvbXBvbmVudCAmIElHcmlkRGF0YUJpbmRhYmxlPikge1xuICAgICAgICB0aGlzLmdyaWRBUEkgPSA8SWd4R3JpZEFQSVNlcnZpY2U+Z3JpZEFQSTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueVtdLCBleHByZXNzaW9uczogSVNvcnRpbmdFeHByZXNzaW9uW10sIGlkOiBzdHJpbmcsIHBpcGVUcmlnZ2VyOiBudW1iZXIpOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdyaWRBUEkuZ3JpZDtcbiAgICAgICAgbGV0IHJlc3VsdDogYW55W107XG5cbiAgICAgICAgaWYgKCFleHByZXNzaW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGNvbGxlY3Rpb247XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBEYXRhVXRpbC5zb3J0KGNsb25lQXJyYXkoY29sbGVjdGlvbiksIGV4cHJlc3Npb25zKTtcbiAgICAgICAgfVxuICAgICAgICBncmlkLmZpbHRlcmVkU29ydGVkRGF0YSA9IHJlc3VsdDtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cblxuLyoqXG4gKkBoaWRkZW5cbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdncmlkUHJlR3JvdXBCeScsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkUHJlR3JvdXBpbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHJpdmF0ZSBncmlkQVBJOiBJZ3hHcmlkQVBJU2VydmljZTtcblxuICAgIGNvbnN0cnVjdG9yKGdyaWRBUEk6IEdyaWRCYXNlQVBJU2VydmljZTxJZ3hHcmlkQmFzZUNvbXBvbmVudCAmIElHcmlkRGF0YUJpbmRhYmxlPikge1xuICAgICAgICB0aGlzLmdyaWRBUEkgPSA8SWd4R3JpZEFQSVNlcnZpY2U+Z3JpZEFQSTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueVtdLCBleHByZXNzaW9uOiBJR3JvdXBpbmdFeHByZXNzaW9uIHwgSUdyb3VwaW5nRXhwcmVzc2lvbltdLFxuICAgICAgICBleHBhbnNpb246IElHcm91cEJ5RXhwYW5kU3RhdGUgfCBJR3JvdXBCeUV4cGFuZFN0YXRlW10sIGRlZmF1bHRFeHBhbmRlZDogYm9vbGVhbixcbiAgICAgICAgaWQ6IHN0cmluZywgZ3JvdXBzUmVjb3JkczogYW55W10sIHBpcGVUcmlnZ2VyOiBudW1iZXIpOiBJR3JvdXBCeVJlc3VsdCB7XG5cbiAgICAgICAgY29uc3Qgc3RhdGUgPSB7IGV4cHJlc3Npb25zOiBbXSwgZXhwYW5zaW9uOiBbXSwgZGVmYXVsdEV4cGFuZGVkIH07XG4gICAgICAgIGNvbnN0IGdyaWQ6IElneEdyaWRDb21wb25lbnQgPSB0aGlzLmdyaWRBUEkuZ3JpZDtcbiAgICAgICAgc3RhdGUuZXhwcmVzc2lvbnMgPSBncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnM7XG5cbiAgICAgICAgaWYgKCFzdGF0ZS5leHByZXNzaW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGVtcHR5IHRoZSBhcnJheSB3aXRob3V0IGNoYW5naW5nIHJlZmVyZW5jZVxuICAgICAgICAgICAgZ3JvdXBzUmVjb3Jkcy5zcGxpY2UoMCwgZ3JvdXBzUmVjb3Jkcy5sZW5ndGgpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhOiBjb2xsZWN0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUuZXhwYW5zaW9uID0gZ3JpZC5ncm91cGluZ0V4cGFuc2lvblN0YXRlO1xuICAgICAgICBzdGF0ZS5kZWZhdWx0RXhwYW5kZWQgPSBncmlkLmdyb3Vwc0V4cGFuZGVkO1xuXG4gICAgICAgIHJldHVybiBEYXRhVXRpbC5ncm91cChjbG9uZUFycmF5KGNvbGxlY3Rpb24pLCBzdGF0ZSwgZ3JvdXBzUmVjb3Jkcyk7XG4gICAgfVxufVxuXG4vKipcbiAqQGhpZGRlblxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2dyaWRQb3N0R3JvdXBCeScsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkUG9zdEdyb3VwaW5nUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHByaXZhdGUgZ3JpZEFQSTogSWd4R3JpZEFQSVNlcnZpY2U7XG5cbiAgICBjb25zdHJ1Y3RvcihncmlkQVBJOiBHcmlkQmFzZUFQSVNlcnZpY2U8SWd4R3JpZEJhc2VDb21wb25lbnQgJiBJR3JpZERhdGFCaW5kYWJsZT4pIHtcbiAgICAgICAgdGhpcy5ncmlkQVBJID0gPElneEdyaWRBUElTZXJ2aWNlPmdyaWRBUEk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShjb2xsZWN0aW9uOiBJR3JvdXBCeVJlc3VsdCwgZXhwcmVzc2lvbjogSUdyb3VwaW5nRXhwcmVzc2lvbiB8IElHcm91cGluZ0V4cHJlc3Npb25bXSxcbiAgICAgICAgZXhwYW5zaW9uOiBJR3JvdXBCeUV4cGFuZFN0YXRlIHwgSUdyb3VwQnlFeHBhbmRTdGF0ZVtdLCBkZWZhdWx0RXhwYW5kZWQ6IGJvb2xlYW4sXG4gICAgICAgIGlkOiBzdHJpbmcsIHBpcGVUcmlnZ2VyOiBudW1iZXIpOiBhbnlbXSB7XG5cbiAgICAgICAgY29uc3Qgc3RhdGUgPSB7IGV4cHJlc3Npb25zOiBbXSwgZXhwYW5zaW9uOiBbXSwgZGVmYXVsdEV4cGFuZGVkIH07XG4gICAgICAgIGNvbnN0IGdyaWQ6IElneEdyaWRDb21wb25lbnQgPSB0aGlzLmdyaWRBUEkuZ3JpZDtcbiAgICAgICAgc3RhdGUuZXhwcmVzc2lvbnMgPSBncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnM7XG5cbiAgICAgICAgaWYgKCFzdGF0ZS5leHByZXNzaW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5leHBhbnNpb24gPSBncmlkLmdyb3VwaW5nRXhwYW5zaW9uU3RhdGU7XG4gICAgICAgIHN0YXRlLmRlZmF1bHRFeHBhbmRlZCA9IGdyaWQuZ3JvdXBzRXhwYW5kZWQ7XG5cbiAgICAgICAgcmV0dXJuIERhdGFVdGlsLnJlc3RvcmVHcm91cHMoe1xuICAgICAgICAgICAgZGF0YTogY2xvbmVBcnJheShjb2xsZWN0aW9uLmRhdGEpLFxuICAgICAgICAgICAgbWV0YWRhdGE6IGNsb25lQXJyYXkoY29sbGVjdGlvbi5tZXRhZGF0YSlcbiAgICAgICAgfSwgc3RhdGUpO1xuICAgIH1cbn1cblxuLyoqXG4gKkBoaWRkZW5cbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdncmlkUGFnaW5nJyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRQYWdpbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyaWRBUEk6IEdyaWRCYXNlQVBJU2VydmljZTxJZ3hHcmlkQmFzZUNvbXBvbmVudCAmIElHcmlkRGF0YUJpbmRhYmxlPikgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IElHcm91cEJ5UmVzdWx0LCBwYWdlID0gMCwgcGVyUGFnZSA9IDE1LCBpZDogc3RyaW5nLCBwaXBlVHJpZ2dlcjogbnVtYmVyKTogSUdyb3VwQnlSZXN1bHQge1xuXG4gICAgICAgIGlmICghdGhpcy5ncmlkQVBJLmdyaWQucGFnaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgICAgICAgaW5kZXg6IHBhZ2UsXG4gICAgICAgICAgICByZWNvcmRzUGVyUGFnZTogcGVyUGFnZVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogSUdyb3VwQnlSZXN1bHQgPSB7XG4gICAgICAgICAgICBkYXRhOiBEYXRhVXRpbC5wYWdlKGNsb25lQXJyYXkoY29sbGVjdGlvbi5kYXRhKSwgc3RhdGUpLFxuICAgICAgICAgICAgbWV0YWRhdGE6IERhdGFVdGlsLnBhZ2UoY2xvbmVBcnJheShjb2xsZWN0aW9uLm1ldGFkYXRhKSwgc3RhdGUpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZ3JpZEFQSS5ncmlkLnBhZ2luZ1N0YXRlID0gc3RhdGU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuXG4vKipcbiAqQGhpZGRlblxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2dyaWRGaWx0ZXJpbmcnLFxuICAgIHB1cmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZEZpbHRlcmluZ1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZ3JpZEFQSTogR3JpZEJhc2VBUElTZXJ2aWNlPElneEdyaWRCYXNlQ29tcG9uZW50ICYgSUdyaWREYXRhQmluZGFibGU+KSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogYW55W10sIGV4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSxcbiAgICAgICAgaWQ6IHN0cmluZywgcGlwZVRyaWdnZXI6IG51bWJlcikge1xuICAgICAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkQVBJLmdyaWQ7XG4gICAgICAgIGNvbnN0IHN0YXRlID0geyBleHByZXNzaW9uc1RyZWU6IGV4cHJlc3Npb25zVHJlZSB9O1xuXG4gICAgICAgIGlmICghc3RhdGUuZXhwcmVzc2lvbnNUcmVlIHx8XG4gICAgICAgICAgICAhc3RhdGUuZXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzIHx8XG4gICAgICAgICAgICBzdGF0ZS5leHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IERhdGFVdGlsLmZpbHRlcihjbG9uZUFycmF5KGNvbGxlY3Rpb24pLCBzdGF0ZSk7XG4gICAgICAgIGdyaWQuZmlsdGVyZWREYXRhID0gcmVzdWx0O1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbiJdfQ==