UNPKG

@catull/igniteui-angular

Version:

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

197 lines 19.8 kB
import { __decorate, __metadata } from "tslib"; import { ChangeDetectorRef, Component, EventEmitter, Input, Output, OnDestroy } from '@angular/core'; import { IgxColumnHidingItemDirective } from './column-hiding-item.directive'; import { ColumnChooserBaseDirective } from '../column-chooser-base'; import { takeUntil } from 'rxjs/operators'; import { Subject } from 'rxjs'; let IgxColumnHidingComponent = class IgxColumnHidingComponent extends ColumnChooserBaseDirective { constructor(cdr) { super(cdr); this.cdr = cdr; /** * Sets/gets the text of the button that shows all columns if they are hidden. * ```typescript * let showAllButtonText = this.columnHiding.showAllText; * ``` * * ```html * <igx-column-hiding [showAllText] = "'Show Columns'"></igx-column-hiding> * ``` * @memberof IgxColumnHidingComponent */ this.showAllText = 'Show All'; /** * Sets/gets the text of the button that hides all columns if they are shown. * ```typescript * let hideAllButtonText = this.columnHiding.hideAllText; * ``` * * ```html * <igx-column-hiding [hideAllText] = "'Hide Columns'"></igx-column-hiding> * ``` * @memberof IgxColumnHidingComponent */ this.hideAllText = 'Hide All'; /** * An event that is emitted after the columns visibility is changed. * Provides references to the `column` and the `newValue` properties as event arguments. * ```html * <igx-column-hiding (onColumnVisibilityChanged) = "onColumnVisibilityChanged($event)"></igx-column-hiding> * ``` * @memberof IgxColumnHidingComponent */ this.onColumnVisibilityChanged = new EventEmitter(); this.destroy$ = new Subject(); } /** * Returns a boolean indicating whether the `HIDE ALL` button is disabled. * ```html * <igx-column-hiding #columnHidingUI * [columns]="grid.columns" [title]="'Column Hiding'"> * </igx-column-hiding> * ``` * ```typescript * @ViewChild("'columnHidingUI'") * public columnHiding: IgxColumnHidingComponent; * let isHideAlldisabled = this.columnHiding.disableHideAll; * ``` *@memberof IgxColumnHidingComponent */ get disableHideAll() { if (!this.columnItems || this.columnItems.length < 1 || this.hiddenColumnsCount === this.columns.length) { return true; } else if (this.hidableColumns.length < 1 || this.hidableColumns.length === this.hidableColumns.filter((col) => col.value).length) { return true; } else { return false; } } /** * Returns a boolean indicating whether the `SHOW ALL` button is disabled. * ```typescript * let isShowAlldisabled = this.columnHiding.disableShowAll; * ``` * @memberof IgxColumnHidingComponent */ get disableShowAll() { if (!this.columnItems || this.columnItems.length < 1 || this.hiddenColumnsCount < 1 || this.hidableColumns.length < 1) { return true; } else if (this.hidableColumns.length === this.hidableColumns.filter((col) => !col.value).length) { return true; } else { return false; } } /** * Gets the count of the hidden columns. * ```typescript * let hiddenColumnsCount = this.columnHiding.hiddenColumnsCount; * ``` * @memberof IgxColumnHidingComponent */ get hiddenColumnsCount() { return (this.columns) ? this.columns.filter((col) => col.hidden).length : 0; } /** *@hidden */ get hidableColumns() { return this.columnItems.filter((col) => !col.disabled); } /** *@hidden */ createColumnItem(container, column) { if (column.grid.hasColumnLayouts && !column.columnLayout) { return null; } const item = new IgxColumnHidingItemDirective(); item.container = container; item.column = column; item.valueChanged.pipe(takeUntil(this.destroy$)).subscribe((args) => { this.onVisibilityChanged({ column: item.column, newValue: args.newValue }); }); return item; } /** * Shows all columns in the grid. * ```typescript * this.columnHiding.showAllColumns(); * ``` * @memberof IgxColumnHidingComponent */ showAllColumns() { const collection = this.hidableColumns; for (const col of collection) { col.value = false; } } /** * Hides all columns in the grid. * ```typescript * this.columnHiding.hideAllColumns(); * ``` * @memberof IgxColumnHidingComponent */ hideAllColumns() { const collection = this.hidableColumns; for (const col of collection) { col.value = true; } } /** * @hidden */ onVisibilityChanged(args) { this.onColumnVisibilityChanged.emit(args); } /** *@hidden */ ngOnDestroy() { this.destroy$.next(true); this.destroy$.complete(); } }; IgxColumnHidingComponent.ctorParameters = () => [ { type: ChangeDetectorRef } ]; __decorate([ Input(), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxColumnHidingComponent.prototype, "disableHideAll", null); __decorate([ Input(), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxColumnHidingComponent.prototype, "disableShowAll", null); __decorate([ Input(), __metadata("design:type", Object) ], IgxColumnHidingComponent.prototype, "showAllText", void 0); __decorate([ Input(), __metadata("design:type", Object) ], IgxColumnHidingComponent.prototype, "hideAllText", void 0); __decorate([ Output(), __metadata("design:type", Object) ], IgxColumnHidingComponent.prototype, "onColumnVisibilityChanged", void 0); IgxColumnHidingComponent = __decorate([ Component({ preserveWhitespaces: false, selector: 'igx-column-hiding', template: "<div class=\"igx-column-hiding__header\">\n <h4 class=\"igx-column-hiding__header-title\" *ngIf=\"title\">{{ title }}</h4>\n\n <igx-input-group class=\"igx-column-hiding__header-input\" *ngIf=\"!disableFilter\">\n <input igxInput\n type=\"text\"\n [(ngModel)]=\"filterCriteria\"\n [placeholder]=\"filterColumnsPrompt\"\n autocomplete=\"off\" />\n </igx-input-group>\n</div>\n\n<div class=\"igx-column-hiding__columns\"\n [style.max-height]=\"columnsAreaMaxHeight\">\n <igx-checkbox\n *ngFor=\"let columnItem of hidableColumns\"\n class=\"igx-column-hiding__columns-item\"\n (onColumnVisibilityChanged)=\"onVisibilityChanged($event)\"\n (change)=\"columnItem.value = !columnItem.value\"\n [checked]=\"columnItem.value\"\n [disabled]=\"columnItem.disabled\"\n [style.margin-left.px]=\"columnItem.calcIndent\">\n {{ columnItem.name }}\n </igx-checkbox>\n</div>\n\n<div class=\"igx-column-hiding__buttons\">\n <button igxButton igxRipple (click)=\"showAllColumns()\" [disabled]=\"disableShowAll\">{{ showAllText }}</button>\n <button igxButton igxRipple (click)=\"hideAllColumns()\" [disabled]=\"disableHideAll\">{{ hideAllText }}</button>\n</div>\n" }), __metadata("design:paramtypes", [ChangeDetectorRef]) ], IgxColumnHidingComponent); export { IgxColumnHidingComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWhpZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL2dyaWRzL2hpZGluZy9jb2x1bW4taGlkaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUMsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU8vQixJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF5QixTQUFRLDBCQUEwQjtJQTRGcEUsWUFBbUIsR0FBc0I7UUFDckMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBREksUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEvQ3pDOzs7Ozs7Ozs7O1dBVUc7UUFFSSxnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUNoQzs7Ozs7Ozs7OztXQVVHO1FBRUksZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFDaEM7Ozs7Ozs7V0FPRztRQUVJLDhCQUF5QixHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBdUJqRixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQVQxQyxDQUFDO0lBN0ZEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFFSCxJQUFJLGNBQWM7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ2hELElBQUksQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLENB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QUMxQixHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFDRDs7T0FFRztJQUNJLG1CQUFtQixDQUFDLElBQXVDO1FBQzlELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNKLENBQUE7O1lBckUyQixpQkFBaUI7O0FBNUV6QztJQURDLEtBQUssRUFBRTs7OzhEQVdQO0FBU0Q7SUFEQyxLQUFLLEVBQUU7Ozs4REFVUDtBQWFEO0lBREMsS0FBSyxFQUFFOzs2REFDd0I7QUFhaEM7SUFEQyxLQUFLLEVBQUU7OzZEQUN3QjtBQVVoQztJQURDLE1BQU0sRUFBRTs7MkVBQ2dGO0FBaEZoRix3QkFBd0I7SUFMcEMsU0FBUyxDQUFDO1FBQ1AsbUJBQW1CLEVBQUUsS0FBSztRQUMxQixRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLHd3Q0FBNkM7S0FDaEQsQ0FBQztxQ0E2RjBCLGlCQUFpQjtHQTVGaEMsd0JBQXdCLENBaUtwQztTQWpLWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZEV2ZW50QXJncywgSWd4Q29sdW1uSGlkaW5nSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vY29sdW1uLWhpZGluZy1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb2x1bW5DaG9vc2VyQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2NvbHVtbi1jaG9vc2VyLWJhc2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBzZWxlY3RvcjogJ2lneC1jb2x1bW4taGlkaW5nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLWhpZGluZy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgSWd4Q29sdW1uSGlkaW5nQ29tcG9uZW50IGV4dGVuZHMgQ29sdW1uQ2hvb3NlckJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgYEhJREUgQUxMYCBidXR0b24gaXMgZGlzYWJsZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29sdW1uLWhpZGluZyAjY29sdW1uSGlkaW5nVUlcbiAgICAgKiAgICAgW2NvbHVtbnNdPVwiZ3JpZC5jb2x1bW5zXCIgW3RpdGxlXT1cIidDb2x1bW4gSGlkaW5nJ1wiPlxuICAgICAqIDwvaWd4LWNvbHVtbi1oaWRpbmc+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCInY29sdW1uSGlkaW5nVUknXCIpXG4gICAgICogcHVibGljIGNvbHVtbkhpZGluZzogSWd4Q29sdW1uSGlkaW5nQ29tcG9uZW50O1xuICAgICAqIGxldCBpc0hpZGVBbGxkaXNhYmxlZCA9ICB0aGlzLmNvbHVtbkhpZGluZy5kaXNhYmxlSGlkZUFsbDtcbiAgICAgKiBgYGBcbiAgICAgKkBtZW1iZXJvZiBJZ3hDb2x1bW5IaWRpbmdDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBkaXNhYmxlSGlkZUFsbCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbkl0ZW1zIHx8IHRoaXMuY29sdW1uSXRlbXMubGVuZ3RoIDwgMSB8fFxuICAgICAgICAgICAgdGhpcy5oaWRkZW5Db2x1bW5zQ291bnQgPT09IHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaGlkYWJsZUNvbHVtbnMubGVuZ3RoIDwgMSB8fFxuICAgICAgICAgICAgdGhpcy5oaWRhYmxlQ29sdW1ucy5sZW5ndGggPT09IHRoaXMuaGlkYWJsZUNvbHVtbnMuZmlsdGVyKChjb2wpID0+IGNvbC52YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGBTSE9XIEFMTGAgYnV0dG9uIGlzIGRpc2FibGVkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaXNTaG93QWxsZGlzYWJsZWQgPSAgdGhpcy5jb2x1bW5IaWRpbmcuZGlzYWJsZVNob3dBbGw7XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneENvbHVtbkhpZGluZ0NvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRpc2FibGVTaG93QWxsKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY29sdW1uSXRlbXMgfHwgdGhpcy5jb2x1bW5JdGVtcy5sZW5ndGggPCAxIHx8XG4gICAgICAgICAgICB0aGlzLmhpZGRlbkNvbHVtbnNDb3VudCA8IDEgfHwgdGhpcy5oaWRhYmxlQ29sdW1ucy5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhpZGFibGVDb2x1bW5zLmxlbmd0aCA9PT0gdGhpcy5oaWRhYmxlQ29sdW1ucy5maWx0ZXIoKGNvbCkgPT4gIWNvbC52YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIHRleHQgb2YgdGhlIGJ1dHRvbiB0aGF0IHNob3dzIGFsbCBjb2x1bW5zIGlmIHRoZXkgYXJlIGhpZGRlbi5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHNob3dBbGxCdXR0b25UZXh0ID0gIHRoaXMuY29sdW1uSGlkaW5nLnNob3dBbGxUZXh0O1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29sdW1uLWhpZGluZyBbc2hvd0FsbFRleHRdID0gXCInU2hvdyBDb2x1bW5zJ1wiPjwvaWd4LWNvbHVtbi1oaWRpbmc+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneENvbHVtbkhpZGluZ0NvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dBbGxUZXh0ID0gJ1Nob3cgQWxsJztcbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIHRleHQgb2YgdGhlIGJ1dHRvbiB0aGF0IGhpZGVzIGFsbCBjb2x1bW5zIGlmIHRoZXkgYXJlIHNob3duLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaGlkZUFsbEJ1dHRvblRleHQgPSAgdGhpcy5jb2x1bW5IaWRpbmcuaGlkZUFsbFRleHQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jb2x1bW4taGlkaW5nIFtoaWRlQWxsVGV4dF0gPSBcIidIaWRlIENvbHVtbnMnXCI+PC9pZ3gtY29sdW1uLWhpZGluZz5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4Q29sdW1uSGlkaW5nQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGlkZUFsbFRleHQgPSAnSGlkZSBBbGwnO1xuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgY29sdW1ucyB2aXNpYmlsaXR5IGlzIGNoYW5nZWQuXG4gICAgICogUHJvdmlkZXMgcmVmZXJlbmNlcyB0byB0aGUgYGNvbHVtbmAgYW5kIHRoZSBgbmV3VmFsdWVgIHByb3BlcnRpZXMgYXMgZXZlbnQgYXJndW1lbnRzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1jb2x1bW4taGlkaW5nIChvbkNvbHVtblZpc2liaWxpdHlDaGFuZ2VkKSA9IFwib25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlZCgkZXZlbnQpXCI+PC9pZ3gtY29sdW1uLWhpZGluZz5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4Q29sdW1uSGlkaW5nQ29tcG9uZW50XG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZEV2ZW50QXJncz4oKTtcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjb3VudCBvZiB0aGUgaGlkZGVuIGNvbHVtbnMuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBoaWRkZW5Db2x1bW5zQ291bnQgPSAgdGhpcy5jb2x1bW5IaWRpbmcuaGlkZGVuQ29sdW1uc0NvdW50O1xuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hDb2x1bW5IaWRpbmdDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhpZGRlbkNvbHVtbnNDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmNvbHVtbnMpID8gdGhpcy5jb2x1bW5zLmZpbHRlcigoY29sKSA9PiBjb2wuaGlkZGVuKS5sZW5ndGggOiAwO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKGNkcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBoaWRhYmxlQ29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uSXRlbXMuZmlsdGVyKChjb2wpID0+ICFjb2wuZGlzYWJsZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVDb2x1bW5JdGVtKGNvbnRhaW5lcjogYW55LCBjb2x1bW46IGFueSkge1xuICAgICAgICBpZiAoY29sdW1uLmdyaWQuaGFzQ29sdW1uTGF5b3V0cyAmJiAhY29sdW1uLmNvbHVtbkxheW91dCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbSA9IG5ldyBJZ3hDb2x1bW5IaWRpbmdJdGVtRGlyZWN0aXZlKCk7XG4gICAgICAgIGl0ZW0uY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgICAgICBpdGVtLmNvbHVtbiA9IGNvbHVtbjtcblxuICAgICAgICBpdGVtLnZhbHVlQ2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChhcmdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uVmlzaWJpbGl0eUNoYW5nZWQoeyBjb2x1bW46IGl0ZW0uY29sdW1uLCBuZXdWYWx1ZTogYXJncy5uZXdWYWx1ZSB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNob3dzIGFsbCBjb2x1bW5zIGluIHRoZSBncmlkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbHVtbkhpZGluZy5zaG93QWxsQ29sdW1ucygpO1xuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hDb2x1bW5IaWRpbmdDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd0FsbENvbHVtbnMoKSB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmhpZGFibGVDb2x1bW5zO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb2wudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBIaWRlcyBhbGwgY29sdW1ucyBpbiB0aGUgZ3JpZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb2x1bW5IaWRpbmcuaGlkZUFsbENvbHVtbnMoKTtcbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4Q29sdW1uSGlkaW5nQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGhpZGVBbGxDb2x1bW5zKCkge1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5oaWRhYmxlQ29sdW1ucztcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29sbGVjdGlvbikge1xuICAgICAgICAgICAgY29sLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG9uVmlzaWJpbGl0eUNoYW5nZWQoYXJnczogSUNvbHVtblZpc2liaWxpdHlDaGFuZ2VkRXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMub25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlZC5lbWl0KGFyZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuXG4iXX0=