UNPKG

@catull/igniteui-angular

Version:

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

216 lines 22.4 kB
import { __decorate, __metadata } from "tslib"; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, Input, OnInit, ViewChild, AfterViewInit, SimpleChanges, ComponentFactoryResolver } from '@angular/core'; import { GridBaseAPIService } from '.././api.service'; import { IgxRowIslandComponent } from './row-island.component'; import { IgxGridComponent } from '../grid/grid.component'; import { takeUntil } from 'rxjs/operators'; var IgxChildGridRowComponent = /** @class */ (function () { function IgxChildGridRowComponent(gridAPI, element, resolver, cdr) { this.gridAPI = gridAPI; this.element = element; this.cdr = cdr; /** * Returns whether the row is expanded. * ```typescript * const RowExpanded = this.grid1.rowList.first.expanded; * ``` */ this.expanded = false; /** * The data passed to the row component. * * ```typescript * // get the row data for the first selected row * let selectedRowData = this.grid.selectedRows[0].rowData; * ``` */ this.rowData = []; /** * @hidden */ this.tabindex = 0; /** * @hidden */ this.role = 'row'; this.resolver = resolver; } Object.defineProperty(IgxChildGridRowComponent.prototype, "parentHasScroll", { /** * @hidden */ get: function () { return !this.parentGrid.verticalScrollContainer.dc.instance.notVirtual; }, enumerable: true, configurable: true }); Object.defineProperty(IgxChildGridRowComponent.prototype, "parentGrid", { /** * Get a reference to the grid that contains the selected row. * * ```typescript * handleRowSelection(event) { * // the grid on which the onRowSelectionChange event was triggered * const grid = event.row.grid; * } * ``` * * ```html * <igx-grid * [data]="data" * (onRowSelectionChange)="handleRowSelection($event)"> * </igx-grid> * ``` */ // TODO: Refactor get: function () { return this.gridAPI.grid; }, enumerable: true, configurable: true }); Object.defineProperty(IgxChildGridRowComponent.prototype, "level", { get: function () { return this.layout.level; }, enumerable: true, configurable: true }); Object.defineProperty(IgxChildGridRowComponent.prototype, "nativeElement", { /** * The native DOM element representing the row. Could be null in certain environments. * * ```typescript * // get the nativeElement of the second selected row * let selectedRowNativeElement = this.grid.selectedRows[1].nativeElement; * ``` */ get: function () { return this.element.nativeElement; }, enumerable: true, configurable: true }); /** * @hidden */ IgxChildGridRowComponent.prototype.ngOnInit = function () { var _this = this; this.layout.onLayoutChange.subscribe(function (ch) { _this._handleLayoutChanges(ch); }); var changes = this.layout.initialChanges; changes.forEach(function (change) { _this._handleLayoutChanges(change); }); this.hGrid.parent = this.parentGrid; this.hGrid.parentIsland = this.layout; this.hGrid.childRow = this; // handler logic that re-emits hgrid events on the row island this.setupEventEmitters(); this.layout.onGridCreated.emit({ owner: this.layout, parentID: this.rowData.rowID, grid: this.hGrid }); }; /** * @hidden */ IgxChildGridRowComponent.prototype.ngAfterViewInit = function () { var _this = this; this.hGrid.childLayoutList = this.layout.children; if (this.layout.childColumns.length > 0 && !this.hGrid.autoGenerate) { this.hGrid.createColumnsList(this.layout.childColumns.toArray()); } var layouts = this.hGrid.childLayoutList.toArray(); layouts.forEach(function (l) { return _this.hGrid.hgridAPI.registerChildRowIsland(l); }); this.parentGrid.hgridAPI.registerChildGrid(this.rowData.rowID, this.layout.key, this.hGrid); this.layout.rowIslandAPI.registerChildGrid(this.rowData.rowID, this.hGrid); this.hGrid.cdr.detectChanges(); }; IgxChildGridRowComponent.prototype.setupEventEmitters = function () { var _this = this; var destructor = takeUntil(this.hGrid.destroy$); var factory = this.resolver.resolveComponentFactory(IgxGridComponent); // exclude outputs related to two-way binding functionality var inputNames = factory.inputs.map(function (input) { return input.propName; }); var outputs = factory.outputs.filter(function (o) { var matchingInputPropName = o.propName.slice(0, o.propName.indexOf('Change')); return inputNames.indexOf(matchingInputPropName) === -1; }); outputs.forEach(function (output) { if (_this.hGrid[output.propName]) { _this.hGrid[output.propName].pipe(destructor).subscribe(function (args) { if (!args) { args = {}; } args.owner = _this.hGrid; _this.layout[output.propName].emit(args); }); } }); }; IgxChildGridRowComponent.prototype._handleLayoutChanges = function (changes) { for (var change in changes) { if (changes.hasOwnProperty(change)) { this.hGrid[change] = changes[change].currentValue; } } }; IgxChildGridRowComponent.ctorParameters = function () { return [ { type: GridBaseAPIService }, { type: ElementRef }, { type: ComponentFactoryResolver }, { type: ChangeDetectorRef } ]; }; __decorate([ Input(), __metadata("design:type", IgxRowIslandComponent) ], IgxChildGridRowComponent.prototype, "layout", void 0); __decorate([ Input(), __metadata("design:type", String) ], IgxChildGridRowComponent.prototype, "parentGridID", void 0); __decorate([ Input(), __metadata("design:type", Object) ], IgxChildGridRowComponent.prototype, "rowData", void 0); __decorate([ Input(), __metadata("design:type", Number) ], IgxChildGridRowComponent.prototype, "index", void 0); __decorate([ ViewChild('hgrid', { static: true }), __metadata("design:type", Object) ], IgxChildGridRowComponent.prototype, "hGrid", void 0); __decorate([ HostBinding('attr.tabindex'), __metadata("design:type", Object) ], IgxChildGridRowComponent.prototype, "tabindex", void 0); __decorate([ HostBinding('attr.role'), __metadata("design:type", Object) ], IgxChildGridRowComponent.prototype, "role", void 0); __decorate([ HostBinding('attr.data-level'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], IgxChildGridRowComponent.prototype, "level", null); IgxChildGridRowComponent = __decorate([ Component({ changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, selector: 'igx-child-grid-row', template: "<div class=\"igx-grid__hierarchical-indent\" [ngClass]=\"{'igx-grid__hierarchical-indent--scroll': parentHasScroll}\">\n <igx-hierarchical-grid #hgrid [data]='rowData.childGridsData[layout.key]'></igx-hierarchical-grid>\n</div>\n" }), __metadata("design:paramtypes", [GridBaseAPIService, ElementRef, ComponentFactoryResolver, ChangeDetectorRef]) ], IgxChildGridRowComponent); return IgxChildGridRowComponent; }()); export { IgxChildGridRowComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGQtZ3JpZC1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9ncmlkcy9oaWVyYXJjaGljYWwtZ3JpZC9jaGlsZC1ncmlkLXJvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGFBQWEsRUFDYixhQUFhLEVBQ2Isd0JBQXdCLEVBQzNCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVEzQztJQXdHSSxrQ0FBbUIsT0FBdUUsRUFDL0UsT0FBbUIsRUFDMUIsUUFBa0MsRUFDM0IsR0FBc0I7UUFIZCxZQUFPLEdBQVAsT0FBTyxDQUFnRTtRQUMvRSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBRW5CLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBeEdqQzs7Ozs7T0FLRDtRQUNRLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFtQnhCOzs7Ozs7O1dBT0c7UUFFSSxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBZ0J6Qjs7V0FFRztRQUVJLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFFcEI7O1dBRUc7UUFFSSxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBNkNaLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUE1RkQsc0JBQVcscURBQWU7UUFIMUI7O1dBRUc7YUFDSDtZQUNJLE9BQU8s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QztJQUFELCtCQUFDO0NBQUEsQUFyTEQsSUFxTEM7U0FyTFksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcmlkQmFzZUFQSVNlcnZpY2UgfSBmcm9tICcuLi8uL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IElneFJvd0lzbGFuZENvbXBvbmVudCB9IGZyb20gJy4vcm93LWlzbGFuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4R3JpZENvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBzZWxlY3RvcjogJ2lneC1jaGlsZC1ncmlkLXJvdycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoaWxkLWdyaWQtcm93LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hDaGlsZEdyaWRSb3dDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xucHJpdmF0ZSByZXNvbHZlcjtcblxuICAgIC8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSByb3cgaXMgZXhwYW5kZWQuXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBSb3dFeHBhbmRlZCA9IHRoaXMuZ3JpZDEucm93TGlzdC5maXJzdC5leHBhbmRlZDtcbiAqIGBgYFxuICovXG4gICAgcHVibGljIGV4cGFuZGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGxheW91dDogSWd4Um93SXNsYW5kQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcGFyZW50SGFzU2Nyb2xsKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMucGFyZW50R3JpZC52ZXJ0aWNhbFNjcm9sbENvbnRhaW5lci5kYy5pbnN0YW5jZS5ub3RWaXJ0dWFsO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgKiBAaGlkZGVuXG4gICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwYXJlbnRHcmlkSUQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqICBUaGUgZGF0YSBwYXNzZWQgdG8gdGhlIHJvdyBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0IHRoZSByb3cgZGF0YSBmb3IgdGhlIGZpcnN0IHNlbGVjdGVkIHJvd1xuICAgICAqIGxldCBzZWxlY3RlZFJvd0RhdGEgPSB0aGlzLmdyaWQuc2VsZWN0ZWRSb3dzWzBdLnJvd0RhdGE7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm93RGF0YTogYW55ID0gW107XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW5kZXggb2YgdGhlIHJvdy5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXQgdGhlIGluZGV4IG9mIHRoZSBzZWNvbmQgc2VsZWN0ZWQgcm93XG4gICAgICogbGV0IHNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdyaWQuc2VsZWN0ZWRSb3dzWzFdLmluZGV4O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluZGV4OiBudW1iZXI7XG5cbiAgICBAVmlld0NoaWxkKCdoZ3JpZCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSBoR3JpZDogYW55LyogVE9ETzogSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudCovO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gICAgcHVibGljIHRhYmluZGV4ID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgcHVibGljIHJvbGUgPSAncm93JztcblxuICAgIC8qKlxuICAgICAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgZ3JpZCB0aGF0IGNvbnRhaW5zIHRoZSBzZWxlY3RlZCByb3cuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogaGFuZGxlUm93U2VsZWN0aW9uKGV2ZW50KSB7XG4gICAgICogIC8vIHRoZSBncmlkIG9uIHdoaWNoIHRoZSBvblJvd1NlbGVjdGlvbkNoYW5nZSBldmVudCB3YXMgdHJpZ2dlcmVkXG4gICAgICogIGNvbnN0IGdyaWQgPSBldmVudC5yb3cuZ3JpZDtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZ3JpZFxuICAgICAqICAgIFtkYXRhXT1cImRhdGFcIlxuICAgICAqICAgIChvblJvd1NlbGVjdGlvbkNoYW5nZSk9XCJoYW5kbGVSb3dTZWxlY3Rpb24oJGV2ZW50KVwiPlxuICAgICAqICA8L2lneC1ncmlkPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIC8vIFRPRE86IFJlZmFjdG9yXG4gICAgZ2V0IHBhcmVudEdyaWQoKTogYW55LyogVE9ETzogSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudCovIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZEFQSS5ncmlkO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWxldmVsJylcbiAgICBnZXQgbGV2ZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dC5sZXZlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbmF0aXZlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgcm93LiBDb3VsZCBiZSBudWxsIGluIGNlcnRhaW4gZW52aXJvbm1lbnRzLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldCB0aGUgbmF0aXZlRWxlbWVudCBvZiB0aGUgc2Vjb25kIHNlbGVjdGVkIHJvd1xuICAgICAqIGxldCBzZWxlY3RlZFJvd05hdGl2ZUVsZW1lbnQgPSB0aGlzLmdyaWQuc2VsZWN0ZWRSb3dzWzFdLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3JpZEFQSTogR3JpZEJhc2VBUElTZXJ2aWNlPGFueS8qIFRPRE86IElneEhpZXJhcmNoaWNhbEdyaWRDb21wb25lbnQqLz4sXG4gICAgICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlciA9IHJlc29sdmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5sYXlvdXQub25MYXlvdXRDaGFuZ2Uuc3Vic2NyaWJlKChjaCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlTGF5b3V0Q2hhbmdlcyhjaCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5sYXlvdXQuaW5pdGlhbENoYW5nZXM7XG4gICAgICAgIGNoYW5nZXMuZm9yRWFjaChjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlTGF5b3V0Q2hhbmdlcyhjaGFuZ2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5oR3JpZC5wYXJlbnQgPSB0aGlzLnBhcmVudEdyaWQ7XG4gICAgICAgIHRoaXMuaEdyaWQucGFyZW50SXNsYW5kID0gdGhpcy5sYXlvdXQ7XG4gICAgICAgIHRoaXMuaEdyaWQuY2hpbGRSb3cgPSAgdGhpcztcbiAgICAgICAgLy8gaGFuZGxlciBsb2dpYyB0aGF0IHJlLWVtaXRzIGhncmlkIGV2ZW50cyBvbiB0aGUgcm93IGlzbGFuZFxuICAgICAgICB0aGlzLnNldHVwRXZlbnRFbWl0dGVycygpO1xuICAgICAgICB0aGlzLmxheW91dC5vbkdyaWRDcmVhdGVkLmVtaXQoe1xuICAgICAgICAgICAgb3duZXI6IHRoaXMubGF5b3V0LFxuICAgICAgICAgICAgcGFyZW50SUQ6IHRoaXMucm93RGF0YS5yb3dJRCxcbiAgICAgICAgICAgIGdyaWQ6IHRoaXMuaEdyaWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5oR3JpZC5jaGlsZExheW91dExpc3QgPSB0aGlzLmxheW91dC5jaGlsZHJlbjtcbiAgICAgICAgaWYgKHRoaXMubGF5b3V0LmNoaWxkQ29sdW1ucy5sZW5ndGggPiAwICYmICF0aGlzLmhHcmlkLmF1dG9HZW5lcmF0ZSkge1xuICAgICAgICAgICAgdGhpcy5oR3JpZC5jcmVhdGVDb2x1bW5zTGlzdCh0aGlzLmxheW91dC5jaGlsZENvbHVtbnMudG9BcnJheSgpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXlvdXRzID0gdGhpcy5oR3JpZC5jaGlsZExheW91dExpc3QudG9BcnJheSgpO1xuICAgICAgICBsYXlvdXRzLmZvckVhY2goKGwpID0+IHRoaXMuaEdyaWQuaGdyaWRBUEkucmVnaXN0ZXJDaGlsZFJvd0lzbGFuZChsKSk7XG4gICAgICAgIHRoaXMucGFyZW50R3JpZC5oZ3JpZEFQSS5yZWdpc3RlckNoaWxkR3JpZCh0aGlzLnJvd0RhdGEucm93SUQsIHRoaXMubGF5b3V0LmtleSwgdGhpcy5oR3JpZCk7XG4gICAgICAgIHRoaXMubGF5b3V0LnJvd0lzbGFuZEFQSS5yZWdpc3RlckNoaWxkR3JpZCh0aGlzLnJvd0RhdGEucm93SUQsIHRoaXMuaEdyaWQpO1xuXG4gICAgICAgIHRoaXMuaEdyaWQuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwRXZlbnRFbWl0dGVycygpIHtcbiAgICAgICAgY29uc3QgZGVzdHJ1Y3RvciA9IHRha2VVbnRpbCh0aGlzLmhHcmlkLmRlc3Ryb3kkKTtcblxuICAgICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShJZ3hHcmlkQ29tcG9uZW50KTtcbiAgICAgICAgLy8gZXhjbHVkZSBvdXRwdXRzIHJlbGF0ZWQgdG8gdHdvLXdheSBiaW5kaW5nIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgY29uc3QgaW5wdXROYW1lcyA9IGZhY3RvcnkuaW5wdXRzLm1hcChpbnB1dCA9PiBpbnB1dC5wcm9wTmFtZSk7XG4gICAgICAgIGNvbnN0IG91dHB1dHMgPSBmYWN0b3J5Lm91dHB1dHMuZmlsdGVyKG8gPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdJbnB1dFByb3BOYW1lID0gby5wcm9wTmFtZS5zbGljZSgwLCBvLnByb3BOYW1lLmluZGV4T2YoJ0NoYW5nZScpKTtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dE5hbWVzLmluZGV4T2YobWF0Y2hpbmdJbnB1dFByb3BOYW1lKSA9PT0gLTE7XG4gICAgICAgIH0pO1xuICAgICAgICBvdXRwdXRzLmZvckVhY2gob3V0cHV0ID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhHcmlkW291dHB1dC5wcm9wTmFtZV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhHcmlkW291dHB1dC5wcm9wTmFtZV0ucGlwZShkZXN0cnVjdG9yKS5zdWJzY3JpYmUoKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0ge307XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJncy5vd25lciA9IHRoaXMuaEdyaWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0W291dHB1dC5wcm9wTmFtZV0uZW1pdChhcmdzKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIF9oYW5kbGVMYXlvdXRDaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGFuZ2UgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoY2hhbmdlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaEdyaWRbY2hhbmdlXSA9IGNoYW5nZXNbY2hhbmdlXS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=