UNPKG

igniteui-angular

Version:

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

395 lines • 27.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { CommonModule } from '@angular/common'; import { ChangeDetectorRef, Component, EventEmitter, Input, NgModule, Output } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { IgxCheckboxModule } from '../checkbox/checkbox.component'; import { IgxButtonModule } from '../directives/button/button.directive'; import { IgxColumnHidingItemDirective } from './column-hiding-item.directive'; import { IgxInputGroupModule } from '../input-group/input-group.component'; import { ColumnChooserBase } from './column-chooser-base'; import { takeUntil } from 'rxjs/operators'; import { Subject } from 'rxjs'; var IgxColumnHidingComponent = /** @class */ (function (_super) { tslib_1.__extends(IgxColumnHidingComponent, _super); function IgxColumnHidingComponent(cdr) { var _this = _super.call(this, cdr) || this; _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(); return _this; } Object.defineProperty(IgxColumnHidingComponent.prototype, "disableHideAll", { /** * 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: /** * 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 * @return {?} */ function () { 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(function (col) { return col.value; }).length) { return true; } else { return false; } }, enumerable: true, configurable: true }); Object.defineProperty(IgxColumnHidingComponent.prototype, "disableShowAll", { /** * Returns a boolean indicating whether the `SHOW ALL` button is disabled. * ```typescript * let isShowAlldisabled = this.columnHiding.disableShowAll; * ``` * @memberof IgxColumnHidingComponent */ get: /** * Returns a boolean indicating whether the `SHOW ALL` button is disabled. * ```typescript * let isShowAlldisabled = this.columnHiding.disableShowAll; * ``` * \@memberof IgxColumnHidingComponent * @return {?} */ function () { if (!this.columnItems || this.columnItems.length < 1 || this.hiddenColumnsCount < 1 || this.hidableColumns.length < 1) { return true; } else if (this.hidableColumns.length === this.hidableColumns.filter(function (col) { return !col.value; }).length) { return true; } else { return false; } }, enumerable: true, configurable: true }); Object.defineProperty(IgxColumnHidingComponent.prototype, "hiddenColumnsCount", { /** * Gets the count of the hidden columns. * ```typescript * let hiddenColumnsCount = this.columnHiding.hiddenColumnsCount; * ``` * @memberof IgxColumnHidingComponent */ get: /** * Gets the count of the hidden columns. * ```typescript * let hiddenColumnsCount = this.columnHiding.hiddenColumnsCount; * ``` * \@memberof IgxColumnHidingComponent * @return {?} */ function () { return (this.columns) ? this.columns.filter(function (col) { return col.hidden; }).length : 0; }, enumerable: true, configurable: true }); Object.defineProperty(IgxColumnHidingComponent.prototype, "hidableColumns", { /** *@hidden */ get: /** * @hidden * @return {?} */ function () { return this.columnItems.filter(function (col) { return !col.disabled; }); }, enumerable: true, configurable: true }); /** *@hidden */ /** * @hidden * @protected * @param {?} container * @param {?} column * @return {?} */ IgxColumnHidingComponent.prototype.createColumnItem = /** * @hidden * @protected * @param {?} container * @param {?} column * @return {?} */ function (container, column) { var _this = this; /** @type {?} */ var item = new IgxColumnHidingItemDirective(); item.container = container; item.column = column; item.valueChanged.pipe(takeUntil(this.destroy$)).subscribe(function (args) { _this.onVisibilityChanged({ column: item.column, newValue: args.newValue }); }); return item; }; /** * Shows all columns in the grid. * ```typescript * this.columnHiding.showAllColumns(); * ``` * @memberof IgxColumnHidingComponent */ /** * Shows all columns in the grid. * ```typescript * this.columnHiding.showAllColumns(); * ``` * \@memberof IgxColumnHidingComponent * @return {?} */ IgxColumnHidingComponent.prototype.showAllColumns = /** * Shows all columns in the grid. * ```typescript * this.columnHiding.showAllColumns(); * ``` * \@memberof IgxColumnHidingComponent * @return {?} */ function () { var e_1, _a; try { for (var _b = tslib_1.__values(this.hidableColumns), _c = _b.next(); !_c.done; _c = _b.next()) { var col = _c.value; col.value = false; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } }; /** * Hides all columns in the grid. * ```typescript * this.columnHiding.hideAllColumns(); * ``` * @memberof IgxColumnHidingComponent */ /** * Hides all columns in the grid. * ```typescript * this.columnHiding.hideAllColumns(); * ``` * \@memberof IgxColumnHidingComponent * @return {?} */ IgxColumnHidingComponent.prototype.hideAllColumns = /** * Hides all columns in the grid. * ```typescript * this.columnHiding.hideAllColumns(); * ``` * \@memberof IgxColumnHidingComponent * @return {?} */ function () { var e_2, _a; try { for (var _b = tslib_1.__values(this.hidableColumns), _c = _b.next(); !_c.done; _c = _b.next()) { var col = _c.value; col.value = true; } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_2) throw e_2.error; } } }; /** * @hidden */ /** * @hidden * @param {?} args * @return {?} */ IgxColumnHidingComponent.prototype.onVisibilityChanged = /** * @hidden * @param {?} args * @return {?} */ function (args) { this.onColumnVisibilityChanged.emit(args); }; /** *@hidden */ /** * @hidden * @return {?} */ IgxColumnHidingComponent.prototype.ngOnDestroy = /** * @hidden * @return {?} */ function () { this.destroy$.next(true); this.destroy$.complete(); }; IgxColumnHidingComponent.decorators = [ { type: Component, args: [{ 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" }] } ]; /** @nocollapse */ IgxColumnHidingComponent.ctorParameters = function () { return [ { type: ChangeDetectorRef } ]; }; IgxColumnHidingComponent.propDecorators = { disableHideAll: [{ type: Input }], disableShowAll: [{ type: Input }], showAllText: [{ type: Input }], hideAllText: [{ type: Input }], onColumnVisibilityChanged: [{ type: Output }] }; return IgxColumnHidingComponent; }(ColumnChooserBase)); export { IgxColumnHidingComponent }; if (false) { /** * 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 * @type {?} */ IgxColumnHidingComponent.prototype.showAllText; /** * 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 * @type {?} */ IgxColumnHidingComponent.prototype.hideAllText; /** * 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 * @type {?} */ IgxColumnHidingComponent.prototype.onColumnVisibilityChanged; /** * @type {?} * @private */ IgxColumnHidingComponent.prototype.destroy$; /** @type {?} */ IgxColumnHidingComponent.prototype.cdr; } /** * @hidden */ var IgxColumnHidingModule = /** @class */ (function () { function IgxColumnHidingModule() { } IgxColumnHidingModule.decorators = [ { type: NgModule, args: [{ declarations: [IgxColumnHidingComponent, IgxColumnHidingItemDirective], exports: [IgxColumnHidingComponent], imports: [ IgxButtonModule, IgxCheckboxModule, IgxInputGroupModule, CommonModule, FormsModule, ] },] } ]; return IgxColumnHidingModule; }()); export { IgxColumnHidingModule }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWhpZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL2dyaWRzL2NvbHVtbi1oaWRpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBcUMsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQjtJQUs4QyxvREFBaUI7SUE0RjNELGtDQUFtQixHQUFzQjtRQUF6QyxZQUNJLGtCQUFNLEdBQUcsQ0FBQyxTQUNiO1FBRmtCLFNBQUcsR0FBSCxHQUFHLENBQW1COzs7Ozs7Ozs7Ozs7UUFuQ2xDLGlCQUFXLEdBQUcsVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7UUFhekIsaUJBQVcsR0FBRyxVQUFVLENBQUM7Ozs7Ozs7OztRQVV6QiwrQkFBeUIsR0FBRyxJQUFJLFlBQVksRUFBcUMsQ0FBQztRQXVCakYsY0FBUSxHQUFHLElBQUksT0FB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SUFYOUIsdUNBQTZCOzs7OztBQXFFN0M7SUFBQTtJQVlBLENBQUM7O2dCQVpBLFFBQVEsU0FBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSw0QkFBNEIsQ0FBQztvQkFDdEUsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUM7b0JBQ25DLE9BQU8sRUFBRTt3QkFDTCxlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLFdBQVc7cUJBQ2Q7aUJBQ0o7O0lBRUQsNEJBQUM7Q0FBQSxBQVpELElBWUM7U0FEWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE91dHB1dCxcbiAgICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElneENoZWNrYm94TW9kdWxlIH0gZnJvbSAnLi4vY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IElneEJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSUNvbHVtblZpc2liaWxpdHlDaGFuZ2VkRXZlbnRBcmdzLCBJZ3hDb2x1bW5IaWRpbmdJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9jb2x1bW4taGlkaW5nLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneElucHV0R3JvdXBNb2R1bGUgfSBmcm9tICcuLi9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29sdW1uQ2hvb3NlckJhc2UgfSBmcm9tICcuL2NvbHVtbi1jaG9vc2VyLWJhc2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBzZWxlY3RvcjogJ2lneC1jb2x1bW4taGlkaW5nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLWhpZGluZy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgSWd4Q29sdW1uSGlkaW5nQ29tcG9uZW50IGV4dGVuZHMgQ29sdW1uQ2hvb3NlckJhc2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgYEhJREUgQUxMYCBidXR0b24gaXMgZGlzYWJsZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29sdW1uLWhpZGluZyAjY29sdW1uSGlkaW5nVUlcbiAgICAgKiAgICAgW2NvbHVtbnNdPVwiZ3JpZC5jb2x1bW5zXCIgW3RpdGxlXT1cIidDb2x1bW4gSGlkaW5nJ1wiPlxuICAgICAqIDwvaWd4LWNvbHVtbi1oaWRpbmc+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCInY29sdW1uSGlkaW5nVUknXCIpXG4gICAgICogcHVibGljIGNvbHVtbkhpZGluZzogSWd4Q29sdW1uSGlkaW5nQ29tcG9uZW50O1xuICAgICAqIGxldCBpc0hpZGVBbGxkaXNhYmxlZCA9ICB0aGlzLmNvbHVtbkhpZGluZy5kaXNhYmxlSGlkZUFsbDtcbiAgICAgKiBgYGBcbiAgICAgKkBtZW1iZXJvZiBJZ3hDb2x1bW5IaWRpbmdDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBkaXNhYmxlSGlkZUFsbCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbkl0ZW1zIHx8IHRoaXMuY29sdW1uSXRlbXMubGVuZ3RoIDwgMSB8fFxuICAgICAgICAgICAgdGhpcy5oaWRkZW5Db2x1bW5zQ291bnQgPT09IHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaGlkYWJsZUNvbHVtbnMubGVuZ3RoIDwgMSB8fFxuICAgICAgICAgICAgdGhpcy5oaWRhYmxlQ29sdW1ucy5sZW5ndGggPT09IHRoaXMuaGlkYWJsZUNvbHVtbnMuZmlsdGVyKChjb2wpID0+IGNvbC52YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGBTSE9XIEFMTGAgYnV0dG9uIGlzIGRpc2FibGVkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaXNTaG93QWxsZGlzYWJsZWQgPSAgdGhpcy5jb2x1bW5IaWRpbmcuZGlzYWJsZVNob3dBbGw7XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneENvbHVtbkhpZGluZ0NvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRpc2FibGVTaG93QWxsKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY29sdW1uSXRlbXMgfHwgdGhpcy5jb2x1bW5JdGVtcy5sZW5ndGggPCAxIHx8XG4gICAgICAgICAgICB0aGlzLmhpZGRlbkNvbHVtbnNDb3VudCA8IDEgfHwgdGhpcy5oaWRhYmxlQ29sdW1ucy5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhpZGFibGVDb2x1bW5zLmxlbmd0aCA9PT0gdGhpcy5oaWRhYmxlQ29sdW1ucy5maWx0ZXIoKGNvbCkgPT4gIWNvbC52YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIHRleHQgb2YgdGhlIGJ1dHRvbiB0aGF0IHNob3dzIGFsbCBjb2x1bW5zIGlmIHRoZXkgYXJlIGhpZGRlbi5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHNob3dBbGxCdXR0b25UZXh0ID0gIHRoaXMuY29sdW1uSGlkaW5nLnNob3dBbGxUZXh0O1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29sdW1uLWhpZGluZyBbc2hvd0FsbFRleHRdID0gXCInU2hvdyBDb2x1bW5zJ1wiPjwvaWd4LWNvbHVtbi1oaWRpbmc+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneENvbHVtbkhpZGluZ0NvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dBbGxUZXh0ID0gJ1Nob3cgQWxsJztcbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIHRleHQgb2YgdGhlIGJ1dHRvbiB0aGF0IGhpZGVzIGFsbCBjb2x1bW5zIGlmIHRoZXkgYXJlIHNob3duLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaGlkZUFsbEJ1dHRvblRleHQgPSAgdGhpcy5jb2x1bW5IaWRpbmcuaGlkZUFsbFRleHQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jb2x1bW4taGlkaW5nIFtoaWRlQWxsVGV4dF0gPSBcIidIaWRlIENvbHVtbnMnXCI+PC9pZ3gtY29sdW1uLWhpZGluZz5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4Q29sdW1uSGlkaW5nQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGlkZUFsbFRleHQgPSAnSGlkZSBBbGwnO1xuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgY29sdW1ucyB2aXNpYmlsaXR5IGlzIGNoYW5nZWQuXG4gICAgICogUHJvdmlkZXMgcmVmZXJlbmNlcyB0byB0aGUgYGNvbHVtbmAgYW5kIHRoZSBgbmV3VmFsdWVgIHByb3BlcnRpZXMgYXMgZXZlbnQgYXJndW1lbnRzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1jb2x1bW4taGlkaW5nIChvbkNvbHVtblZpc2liaWxpdHlDaGFuZ2VkKSA9IFwib25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlZCgkZXZlbnQpXCI+PC9pZ3gtY29sdW1uLWhpZGluZz5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4Q29sdW1uSGlkaW5nQ29tcG9uZW50XG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZEV2ZW50QXJncz4oKTtcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjb3VudCBvZiB0aGUgaGlkZGVuIGNvbHVtbnMuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBoaWRkZW5Db2x1bW5zQ291bnQgPSAgdGhpcy5jb2x1bW5IaWRpbmcuaGlkZGVuQ29sdW1uc0NvdW50O1xuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hDb2x1bW5IaWRpbmdDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhpZGRlbkNvbHVtbnNDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmNvbHVtbnMpID8gdGhpcy5jb2x1bW5zLmZpbHRlcigoY29sKSA9PiBjb2wuaGlkZGVuKS5sZW5ndGggOiAwO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKGNkcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBoaWRhYmxlQ29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uSXRlbXMuZmlsdGVyKChjb2wpID0+ICFjb2wuZGlzYWJsZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVDb2x1bW5JdGVtKGNvbnRhaW5lcjogYW55LCBjb2x1bW46IGFueSkge1xuICAgICAgICBjb25zdCBpdGVtID0gbmV3IElneENvbHVtbkhpZGluZ0l0ZW1EaXJlY3RpdmUoKTtcbiAgICAgICAgaXRlbS5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgICAgIGl0ZW0uY29sdW1uID0gY29sdW1uO1xuXG4gICAgICAgIGl0ZW0udmFsdWVDaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25WaXNpYmlsaXR5Q2hhbmdlZCh7IGNvbHVtbjogaXRlbS5jb2x1bW4sIG5ld1ZhbHVlOiBhcmdzLm5ld1ZhbHVlIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2hvd3MgYWxsIGNvbHVtbnMgaW4gdGhlIGdyaWQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY29sdW1uSGlkaW5nLnNob3dBbGxDb2x1bW5zKCk7XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneENvbHVtbkhpZGluZ0NvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93QWxsQ29sdW1ucygpIHtcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5oaWRhYmxlQ29sdW1ucykge1xuICAgICAgICAgICAgY29sLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogSGlkZXMgYWxsIGNvbHVtbnMgaW4gdGhlIGdyaWQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY29sdW1uSGlkaW5nLmhpZGVBbGxDb2x1bW5zKCk7XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneENvbHVtbkhpZGluZ0NvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBoaWRlQWxsQ29sdW1ucygpIHtcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5oaWRhYmxlQ29sdW1ucykge1xuICAgICAgICAgICAgY29sLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG9uVmlzaWJpbGl0eUNoYW5nZWQoYXJnczogSUNvbHVtblZpc2liaWxpdHlDaGFuZ2VkRXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMub25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlZC5lbWl0KGFyZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtJZ3hDb2x1bW5IaWRpbmdDb21wb25lbnQsIElneENvbHVtbkhpZGluZ0l0ZW1EaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ3hDb2x1bW5IaWRpbmdDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgSWd4QnV0dG9uTW9kdWxlLFxuICAgICAgICBJZ3hDaGVja2JveE1vZHVsZSxcbiAgICAgICAgSWd4SW5wdXRHcm91cE1vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIElneENvbHVtbkhpZGluZ01vZHVsZSB7XG59XG4iXX0=