UNPKG

@catull/igniteui-angular

Version:

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

226 lines 23.3 kB
import { __decorate, __metadata } from "tslib"; import { Component, Input, HostBinding, HostListener, ChangeDetectionStrategy, ElementRef } from '@angular/core'; import { IgxColumnComponent } from '../columns/column.component'; import { SUPPORTED_KEYS } from '../../core/utils'; var IgxSummaryCellComponent = /** @class */ (function () { function IgxSummaryCellComponent(element) { this.element = element; this.firstCellIndentation = 0; this.hasSummary = false; this.tabindex = 0; } Object.defineProperty(IgxSummaryCellComponent.prototype, "visibleColumnIndex", { get: function () { return this.column.visibleIndex; }, enumerable: true, configurable: true }); Object.defineProperty(IgxSummaryCellComponent.prototype, "describeby", { get: function () { return "Summary_" + this.column.field; }, enumerable: true, configurable: true }); IgxSummaryCellComponent.prototype.onFocus = function () { this.focused = true; }; IgxSummaryCellComponent.prototype.onBlur = function () { this.focused = false; }; Object.defineProperty(IgxSummaryCellComponent.prototype, "selectionNode", { get: function () { return { row: this.rowIndex, column: this.column.columnLayoutChild ? this.column.parent.visibleIndex : this.visibleColumnIndex, isSummaryRow: true }; }, enumerable: true, configurable: true }); IgxSummaryCellComponent.prototype.dispatchEvent = function (event) { // TODO: Refactor var key = event.key.toLowerCase(); var ctrl = event.ctrlKey; var shift = event.shiftKey; if (!SUPPORTED_KEYS.has(key)) { return; } event.stopPropagation(); var args = { targetType: 'summaryCell', target: this, event: event, cancel: false }; this.grid.onGridKeydown.emit(args); if (args.cancel) { return; } event.preventDefault(); if (!this.isKeySupportedInCell(key, ctrl)) { return; } this.grid.selectionService.keyboardState.shift = shift && !(key === 'tab'); var row = this.getRowElementByIndex(this.rowIndex); switch (key) { case 'tab': if (shift) { this.grid.navigation.performShiftTabKey(row, this.selectionNode); break; } this.grid.navigation.performTab(row, this.selectionNode); break; case 'arrowleft': case 'home': case 'left': if (ctrl || key === 'home') { this.grid.navigation.onKeydownHome(this.rowIndex, true); break; } this.grid.navigation.onKeydownArrowLeft(this.nativeElement, this.selectionNode); break; case 'end': case 'arrowright': case 'right': if (ctrl || key === 'end') { this.grid.navigation.onKeydownEnd(this.rowIndex, true); break; } this.grid.navigation.onKeydownArrowRight(this.nativeElement, this.selectionNode); break; case 'arrowup': case 'up': this.grid.navigation.navigateUp(row, this.selectionNode); break; case 'arrowdown': case 'down': this.grid.navigation.navigateDown(row, this.selectionNode); break; } }; Object.defineProperty(IgxSummaryCellComponent.prototype, "width", { get: function () { return this.column.getCellWidth(); }, enumerable: true, configurable: true }); Object.defineProperty(IgxSummaryCellComponent.prototype, "nativeElement", { get: function () { return this.element.nativeElement; }, enumerable: true, configurable: true }); Object.defineProperty(IgxSummaryCellComponent.prototype, "columnDatatype", { get: function () { return this.column.dataType; }, enumerable: true, configurable: true }); Object.defineProperty(IgxSummaryCellComponent.prototype, "itemHeight", { get: function () { return this.column.grid.defaultSummaryHeight; }, enumerable: true, configurable: true }); Object.defineProperty(IgxSummaryCellComponent.prototype, "grid", { /** * @hidden */ get: function () { return this.column.grid; }, enumerable: true, configurable: true }); IgxSummaryCellComponent.prototype.getRowElementByIndex = function (rowIndex) { var summaryRows = this.grid.summariesRowList.toArray(); return summaryRows.find(function (sr) { return sr.dataRowIndex === rowIndex; }).nativeElement; }; IgxSummaryCellComponent.prototype.isKeySupportedInCell = function (key, ctrl) { if (ctrl) { return ['arrowup', 'arrowdown', 'up', 'down', 'end', 'home'].indexOf(key) === -1; } return ['down', 'up', 'left', 'right', 'arrowdown', 'arrowup', 'arrowleft', 'arrowright', 'home', 'end', 'tab'].indexOf(key) !== -1; }; IgxSummaryCellComponent.prototype.translateSummary = function (summary) { return this.grid.resourceStrings["igx_grid_summary_" + summary.key] || summary.label; }; IgxSummaryCellComponent.ctorParameters = function () { return [ { type: ElementRef } ]; }; __decorate([ Input(), __metadata("design:type", Array) ], IgxSummaryCellComponent.prototype, "summaryResults", void 0); __decorate([ Input(), __metadata("design:type", IgxColumnComponent) ], IgxSummaryCellComponent.prototype, "column", void 0); __decorate([ Input(), __metadata("design:type", Object) ], IgxSummaryCellComponent.prototype, "firstCellIndentation", void 0); __decorate([ Input(), __metadata("design:type", Object) ], IgxSummaryCellComponent.prototype, "hasSummary", void 0); __decorate([ Input(), __metadata("design:type", Object) ], IgxSummaryCellComponent.prototype, "density", void 0); __decorate([ Input(), HostBinding('attr.data-rowIndex'), __metadata("design:type", Number) ], IgxSummaryCellComponent.prototype, "rowIndex", void 0); __decorate([ HostBinding('attr.data-visibleIndex'), __metadata("design:type", Number), __metadata("design:paramtypes", []) ], IgxSummaryCellComponent.prototype, "visibleColumnIndex", null); __decorate([ HostBinding('attr.tabindex'), __metadata("design:type", Object) ], IgxSummaryCellComponent.prototype, "tabindex", void 0); __decorate([ HostBinding('attr.aria-describedby'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], IgxSummaryCellComponent.prototype, "describeby", null); __decorate([ HostBinding('class.igx-grid-summary--active'), __metadata("design:type", Boolean) ], IgxSummaryCellComponent.prototype, "focused", void 0); __decorate([ HostListener('focus'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], IgxSummaryCellComponent.prototype, "onFocus", null); __decorate([ HostListener('blur'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], IgxSummaryCellComponent.prototype, "onBlur", null); __decorate([ HostListener('keydown', ['$event']), __metadata("design:type", Function), __metadata("design:paramtypes", [KeyboardEvent]), __metadata("design:returntype", void 0) ], IgxSummaryCellComponent.prototype, "dispatchEvent", null); IgxSummaryCellComponent = __decorate([ Component({ changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, selector: 'igx-grid-summary-cell', template: "<ng-container *ngIf=\"hasSummary\">\n <ng-container *ngFor=\"let summary of summaryResults\">\n <div class=\"igx-grid-summary__item\" [style.height.px]=\"itemHeight\">\n\n <ng-container *ngIf=\"visibleColumnIndex === 0 && firstCellIndentation >= 0\">\n <div class=\"igx-grid__tree-cell--padding-level-{{firstCellIndentation}}\"></div>\n\n <div #indicator class=\"igx-grid__tree-grouping-indicator\" style=\"visibility: hidden\">\n <igx-icon fontSet=\"material\">chevron_right</igx-icon>\n </div>\n </ng-container>\n\n <span class=\"igx-grid-summary__label\" title=\"{{ summary.label }}\">{{ translateSummary(summary) }}</span>\n <span class=\"igx-grid-summary__result\" title=\"{{ summary.summaryResult }}\">\n {{ columnDatatype === 'number' ? (summary.summaryResult | igxdecimal: grid.locale) : columnDatatype === 'date' ? (summary.summaryResult | igxdate: grid.locale) : (summary.summaryResult) }}\n </span>\n </div>\n </ng-container>\n</ng-container>\n" }), __metadata("design:paramtypes", [ElementRef]) ], IgxSummaryCellComponent); return IgxSummaryCellComponent; }()); export { IgxSummaryCellComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtbWFyeS1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZ3JpZHMvc3VtbWFyaWVzL3N1bW1hcnktY2VsbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVFsRDtJQWlCSSxpQ0FBb0IsT0FBbUI7UUFBbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQVJoQyx5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUFHekIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQWtCbkIsYUFBUSxHQUFHLENBQUMsQ0FBQztJQVpwQixDQUFDO0lBT0Qsc0JBQUksdURBQWtCO2FBQXRCO1lBQ0ksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUNwQyxDQUFDOzs7T0FBQTtJQU1ELHNCQUFXLCtDQUFVO2FBQXJCO1lBQ0ksT0FBTyxhQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBTyxDQUFDO1FBQzFDLENBQUM7OztPQUFBO0lBTU0seUNBQU8sR0FBZDtRQUNJLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFHTSx3Q0FBTSxHQUFiO1FBQ0ksSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELHNCQUFjLGtEQUFhO2FBQTNCO1lBQ0ksT0FBTztnQkFDSCxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ2xCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENB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RDtRQURDLFlBQVksQ0FBQyxNQUFNLENBQUM7Ozs7eURBR3BCO0lBV0Q7UUFEQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7O3lDQUNmLGFBQWE7O2dFQXdEakM7SUFuSFEsdUJBQXVCO1FBTm5DLFNBQVMsQ0FBQztZQUNQLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1lBQy9DLG1CQUFtQixFQUFFLEtBQUs7WUFDMUIsUUFBUSxFQUFFLHVCQUF1QjtZQUNqQyxpcENBQTRDO1NBQy9DLENBQUM7eUNBa0IrQixVQUFVO09BakI5Qix1QkFBdUIsQ0EySm5DO0lBQUQsOEJBQUM7Q0FBQSxBQTNKRCxJQTJKQztTQTNKWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4U3VtbWFyeVJlc3VsdCB9IGZyb20gJy4vZ3JpZC1zdW1tYXJ5JztcbmltcG9ydCB7IElneENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbnMvY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9kYXRhLXV0aWwnO1xuaW1wb3J0IHsgSVNlbGVjdGlvbk5vZGUgfSBmcm9tICcuLi9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU1VQUE9SVEVEX0tFWVMgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgc2VsZWN0b3I6ICdpZ3gtZ3JpZC1zdW1tYXJ5LWNlbGwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdW1tYXJ5LWNlbGwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIElneFN1bW1hcnlDZWxsQ29tcG9uZW50IHtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN1bW1hcnlSZXN1bHRzOiBJZ3hTdW1tYXJ5UmVzdWx0W107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2x1bW46IElneENvbHVtbkNvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpcnN0Q2VsbEluZGVudGF0aW9uID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhhc1N1bW1hcnkgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlbnNpdHk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYpIHtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXJvd0luZGV4JylcbiAgICBwdWJsaWMgcm93SW5kZXg6IG51bWJlcjtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXZpc2libGVJbmRleCcpXG4gICAgZ2V0IHZpc2libGVDb2x1bW5JbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4udmlzaWJsZUluZGV4O1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gICAgcHVibGljIHRhYmluZGV4ID0gMDtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JylcbiAgICBwdWJsaWMgZ2V0IGRlc2NyaWJlYnkoKSB7XG4gICAgICAgIHJldHVybiBgU3VtbWFyeV8ke3RoaXMuY29sdW1uLmZpZWxkfWA7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC1zdW1tYXJ5LS1hY3RpdmUnKVxuICAgIHB1YmxpYyBmb2N1c2VkOiBib29sZWFuO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIHB1YmxpYyBvbkZvY3VzKCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICAgIHB1YmxpYyBvbkJsdXIoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgc2VsZWN0aW9uTm9kZSgpOiBJU2VsZWN0aW9uTm9kZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByb3c6IHRoaXMucm93SW5kZXgsXG4gICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLmNvbHVtbkxheW91dENoaWxkID8gdGhpcy5jb2x1bW4ucGFyZW50LnZpc2libGVJbmRleCA6IHRoaXMudmlzaWJsZUNvbHVtbkluZGV4LFxuICAgICAgICAgICAgaXNTdW1tYXJ5Um93OiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgZGlzcGF0Y2hFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICAvLyBUT0RPOiBSZWZhY3RvclxuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgY3RybCA9IGV2ZW50LmN0cmxLZXk7XG4gICAgICAgIGNvbnN0IHNoaWZ0ID0gZXZlbnQuc2hpZnRLZXk7XG5cbiAgICAgICAgaWYgKCFTVVBQT1JURURfS0VZUy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCBhcmdzID0geyB0YXJnZXRUeXBlOiAnc3VtbWFyeUNlbGwnLCB0YXJnZXQ6IHRoaXMsIGV2ZW50OiBldmVudCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLmdyaWQub25HcmlkS2V5ZG93bi5lbWl0KGFyZ3MpO1xuICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0tleVN1cHBvcnRlZEluQ2VsbChrZXksIGN0cmwpKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmtleWJvYXJkU3RhdGUuc2hpZnQgPSBzaGlmdCAmJiAhKGtleSA9PT0gJ3RhYicpO1xuICAgICAgICBjb25zdCByb3cgPSB0aGlzLmdldFJvd0VsZW1lbnRCeUluZGV4KHRoaXMucm93SW5kZXgpO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAndGFiJzpcbiAgICAgICAgICAgICAgICBpZiAoc2hpZnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLm5hdmlnYXRpb24ucGVyZm9ybVNoaWZ0VGFiS2V5KHJvdywgdGhpcy5zZWxlY3Rpb25Ob2RlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLnBlcmZvcm1UYWIocm93LCB0aGlzLnNlbGVjdGlvbk5vZGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYXJyb3dsZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ2hvbWUnOlxuICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgICAgaWYgKGN0cmwgfHwga2V5ID09PSAnaG9tZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLm5hdmlnYXRpb24ub25LZXlkb3duSG9tZSh0aGlzLnJvd0luZGV4LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLm9uS2V5ZG93bkFycm93TGVmdCh0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMuc2VsZWN0aW9uTm9kZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgY2FzZSAnYXJyb3dyaWdodCc6XG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgaWYgKGN0cmwgfHwga2V5ID09PSAnZW5kJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGlvbi5vbktleWRvd25FbmQodGhpcy5yb3dJbmRleCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGlvbi5vbktleWRvd25BcnJvd1JpZ2h0KHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcy5zZWxlY3Rpb25Ob2RlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Fycm93dXAnOlxuICAgICAgICAgICAgY2FzZSAndXAnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGlvbi5uYXZpZ2F0ZVVwKHJvdywgdGhpcy5zZWxlY3Rpb25Ob2RlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Fycm93ZG93bic6XG4gICAgICAgICAgICBjYXNlICdkb3duJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLm5hdmlnYXRpb24ubmF2aWdhdGVEb3duKHJvdywgdGhpcy5zZWxlY3Rpb25Ob2RlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCB3aWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmdldENlbGxXaWR0aCgpO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVFbGVtZW50KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgY29sdW1uRGF0YXR5cGUoKTogRGF0YVR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4uZGF0YVR5cGU7XG4gICAgfVxuXG4gICAgZ2V0IGl0ZW1IZWlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5ncmlkLmRlZmF1bHRTdW1tYXJ5SGVpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICogQGhpZGRlblxuICAgICovXG4gICAgcHVibGljIGdldCBncmlkKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuY29sdW1uLmdyaWQgYXMgYW55KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJvd0VsZW1lbnRCeUluZGV4KHJvd0luZGV4KSB7XG4gICAgICAgIGNvbnN0IHN1bW1hcnlSb3dzID0gdGhpcy5ncmlkLnN1bW1hcmllc1Jvd0xpc3QudG9BcnJheSgpO1xuICAgICAgICByZXR1cm4gc3VtbWFyeVJvd3MuZmluZCgoc3IpID0+IHNyLmRhdGFSb3dJbmRleCA9PT0gcm93SW5kZXgpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0tleVN1cHBvcnRlZEluQ2VsbChrZXksIGN0cmwpIHtcbiAgICAgICAgaWYgKGN0cmwpIHtcbiAgICAgICAgICAgcmV0dXJuIFsnYXJyb3d1cCcsICdhcnJvd2Rvd24nLCAndXAnLCAnZG93bicsICdlbmQnLCAnaG9tZSddLmluZGV4T2Yoa2V5KSA9PT0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsnZG93bicsICd1cCcsICdsZWZ0JywgJ3JpZ2h0JywgJ2Fycm93ZG93bicsICdhcnJvd3VwJywgJ2Fycm93bGVmdCcsICdhcnJvd3JpZ2h0JywgJ2hvbWUnLCAnZW5kJywgJ3RhYiddLmluZGV4T2Yoa2V5KSAhPT0gLTE7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYW5zbGF0ZVN1bW1hcnkoc3VtbWFyeTogSWd4U3VtbWFyeVJlc3VsdCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQucmVzb3VyY2VTdHJpbmdzW2BpZ3hfZ3JpZF9zdW1tYXJ5XyR7c3VtbWFyeS5rZXl9YF0gfHwgc3VtbWFyeS5sYWJlbDtcbiAgICB9XG59XG4iXX0=