igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
270 lines • 19.8 kB
JavaScript
/**
* @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==