UNPKG

@catull/igniteui-angular

Version:

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

205 lines 23.4 kB
import { __decorate, __extends, __metadata } from "tslib"; import { Directive, Input, OnDestroy, NgModule, TemplateRef } from '@angular/core'; import { IgxDragDirective } from '../directives/drag-drop/drag-drop.directive'; import { fromEvent } from 'rxjs'; var ghostBackgroundClass = 'igx-grid__tr--ghost'; var gridCellClass = 'igx-grid__td'; var rowSelectedClass = 'igx-grid__tr--selected'; var cellSelectedClass = 'igx-grid__td--selected'; var cellActiveClass = 'igx-grid__td--active'; /** * @hidden */ var IgxRowDragDirective = /** @class */ (function (_super) { __extends(IgxRowDragDirective, _super); function IgxRowDragDirective() { var _this = _super !== null && _super.apply(this, arguments) || this; _this._rowDragStarted = false; _this.transitionEndEvent = function (evt) { if (_this.ghostElement) { _this.ghostElement.removeEventListener('transitionend', _this.transitionEndEvent, false); } _this.endDragging(); }; return _this; } Object.defineProperty(IgxRowDragDirective.prototype, "data", { get: function () { return this.row; }, set: function (val) { this.row = val; }, enumerable: true, configurable: true }); IgxRowDragDirective.prototype.onPointerDown = function (event) { event.preventDefault(); this._rowDragStarted = false; this._removeOnDestroy = false; _super.prototype.onPointerDown.call(this, event); }; IgxRowDragDirective.prototype.onPointerMove = function (event) { var _this = this; _super.prototype.onPointerMove.call(this, event); if (this._dragStarted && !this._rowDragStarted) { this._rowDragStarted = true; var args = { dragDirective: this, dragData: this.row, cancel: false, owner: this.row.grid }; this.row.grid.onRowDragStart.emit(args); if (args.cancel) { this.ghostElement.parentNode.removeChild(this.ghostElement); this.ghostElement = null; this._dragStarted = false; this._clicked = false; return; } this.row.dragging = true; this.row.grid.rowDragging = true; this.row.grid.markForCheck(); this.subscription$ = fromEvent(this.row.grid.document.defaultView, 'keydown').subscribe(function (ev) { if (ev.key === "Escape" /* ESCAPE */ || ev.key === "Esc" /* ESCAPE_IE */) { _this._lastDropArea = false; _this.onPointerUp(event); } }); } }; IgxRowDragDirective.prototype.onPointerUp = function (event) { var _this = this; if (!this._clicked) { return; } var args = { dragDirective: this, dragData: this.row, animation: false, owner: this.row.grid }; this.zone.run(function () { _this.row.grid.onRowDragEnd.emit(args); }); var dropArea = this._lastDropArea; _super.prototype.onPointerUp.call(this, event); if (!dropArea && this.ghostElement) { this.ghostElement.addEventListener('transitionend', this.transitionEndEvent, false); } else { this.endDragging(); } }; IgxRowDragDirective.prototype.createGhost = function (pageX, pageY) { this.row.grid.endEdit(true); this.row.grid.markForCheck(); this.ghostContext = { $implicit: this.row.rowData, data: this.row.rowData, grid: this.row.grid }; _super.prototype.createGhost.call(this, pageX, pageY, this.row.nativeElement); // check if there is an expander icon and create the ghost at the corresponding position if (this.isHierarchicalGrid) { var row = this.row; if (row.expander) { var expanderWidth = row.expander.nativeElement.getBoundingClientRect().width; this._ghostHostX += expanderWidth; } } var ghost = this.ghostElement; var gridRect = this.row.grid.nativeElement.getBoundingClientRect(); var rowRect = this.row.nativeElement.getBoundingClientRect(); ghost.style.overflow = 'hidden'; ghost.style.width = gridRect.width + 'px'; ghost.style.height = rowRect.height + 'px'; this.renderer.addClass(ghost, ghostBackgroundClass); this.renderer.removeClass(ghost, rowSelectedClass); var ghostCells = ghost.getElementsByClassName(gridCellClass); for (var index = 0; index < ghostCells.length; index++) { this.renderer.removeClass(ghostCells[index], cellSelectedClass); this.renderer.removeClass(ghostCells[index], cellActiveClass); } }; IgxRowDragDirective.prototype._unsubscribe = function () { if (this.subscription$ && !this.subscription$.closed) { this.subscription$.unsubscribe(); } }; IgxRowDragDirective.prototype.endDragging = function () { this.onTransitionEnd(null); this.row.dragging = false; this.row.grid.rowDragging = false; this.row.grid.markForCheck(); this._unsubscribe(); }; Object.defineProperty(IgxRowDragDirective.prototype, "isHierarchicalGrid", { get: function () { return this.row.grid.nativeElement.tagName.toLowerCase() === 'igx-hierarchical-grid'; }, enumerable: true, configurable: true }); __decorate([ Input('igxRowDrag'), __metadata("design:type", Object), __metadata("design:paramtypes", [Object]) ], IgxRowDragDirective.prototype, "data", null); IgxRowDragDirective = __decorate([ Directive({ selector: '[igxRowDrag]' }) ], IgxRowDragDirective); return IgxRowDragDirective; }(IgxDragDirective)); export { IgxRowDragDirective }; /** * @hidden */ var IgxDragIndicatorIconDirective = /** @class */ (function () { function IgxDragIndicatorIconDirective() { } IgxDragIndicatorIconDirective = __decorate([ Directive({ selector: '[igxDragIndicatorIcon]' }) ], IgxDragIndicatorIconDirective); return IgxDragIndicatorIconDirective; }()); export { IgxDragIndicatorIconDirective }; /** * @hidden */ var IgxRowDragGhostDirective = /** @class */ (function () { function IgxRowDragGhostDirective(templateRef) { this.templateRef = templateRef; } IgxRowDragGhostDirective.ctorParameters = function () { return [ { type: TemplateRef } ]; }; IgxRowDragGhostDirective = __decorate([ Directive({ selector: '[igxRowDragGhost]' }), __metadata("design:paramtypes", [TemplateRef]) ], IgxRowDragGhostDirective); return IgxRowDragGhostDirective; }()); export { IgxRowDragGhostDirective }; var IgxRowDragModule = /** @class */ (function () { function IgxRowDragModule() { } IgxRowDragModule = __decorate([ NgModule({ declarations: [IgxRowDragDirective, IgxDragIndicatorIconDirective, IgxRowDragGhostDirective], entryComponents: [], exports: [IgxRowDragDirective, IgxDragIndicatorIconDirective, IgxRowDragGhostDirective], imports: [] }) ], IgxRowDragModule); return IgxRowDragModule; }()); export { IgxRowDragModule }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWRyYWcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9ncmlkcy9yb3ctZHJhZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBTy9DLElBQU0sb0JBQW9CLEdBQUcscUJBQXFCLENBQUM7QUFDbkQsSUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0FBQ3JDLElBQU0sZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUM7QUFDbEQsSUFBTSxpQkFBaUIsR0FBRyx3QkFBd0IsQ0FBQztBQUNuRCxJQUFNLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQztBQUUvQzs7R0FFRztBQUlIO0lBQXlDLHVDQUFnQjtJQUF6RDtRQUFBLHFFQTJJQztRQXhJVyxxQkFBZSxHQUFHLEtBQUssQ0FBQztRQThIeEIsd0JBQWtCLEdBQUcsVUFBQyxHQUFJO1lBQzlCLElBQUksS0FBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsS0FBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsS0FBSSxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzFGO1lBQ0QsS0FBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQTs7SUFLTCxDQUFDO0lBcklHLHNCQUFJLHFDQUFJO2FBSVI7WUFDSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDcEIsQ0FBQzthQU5ELFVBQVMsR0FBRztZQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ25CLENBQUM7OztP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QWUsRUFBRSxFQUFFO1lBQ25CLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLDZCQUE2QixFQUFFLHdCQUF3QixDQUFDO1lBQ3ZGLE9BQU8sRUFBRSxFQUFFO1NBQ2QsQ0FBQztPQUVXLGdCQUFnQixDQUM1QjtJQUFELHVCQUFDO0NBQUEsQUFERCxJQUNDO1NBRFksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBOZ01vZHVsZSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneERyYWdEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2RyYWctZHJvcC9kcmFnLWRyb3AuZGlyZWN0aXZlJztcbmltcG9ydCB7IEtFWVMgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJZ3hSb3dEaXJlY3RpdmUsIElneEdyaWRCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9ncmlkJztcbmltcG9ydCB7IElSb3dEcmFnU3RhcnRFdmVudEFyZ3MsIElSb3dEcmFnRW5kRXZlbnRBcmdzIH0gZnJvbSAnLi9jb21tb24vZXZlbnRzJztcbmltcG9ydCB7IEdyaWRUeXBlIH0gZnJvbSAnLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4SGllcmFyY2hpY2FsUm93Q29tcG9uZW50IH0gZnJvbSAnLi9oaWVyYXJjaGljYWwtZ3JpZC9oaWVyYXJjaGljYWwtcm93LmNvbXBvbmVudCc7XG5cblxuY29uc3QgZ2hvc3RCYWNrZ3JvdW5kQ2xhc3MgPSAnaWd4LWdyaWRfX3RyLS1naG9zdCc7XG5jb25zdCBncmlkQ2VsbENsYXNzID0gJ2lneC1ncmlkX190ZCc7XG5jb25zdCByb3dTZWxlY3RlZENsYXNzID0gJ2lneC1ncmlkX190ci0tc2VsZWN0ZWQnO1xuY29uc3QgY2VsbFNlbGVjdGVkQ2xhc3MgPSAnaWd4LWdyaWRfX3RkLS1zZWxlY3RlZCc7XG5jb25zdCBjZWxsQWN0aXZlQ2xhc3MgPSAnaWd4LWdyaWRfX3RkLS1hY3RpdmUnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4Um93RHJhZ10nXG59KVxuZXhwb3J0IGNsYXNzIElneFJvd0RyYWdEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hEcmFnRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJvdzogSWd4Um93RGlyZWN0aXZlPElneEdyaWRCYXNlRGlyZWN0aXZlICYgR3JpZFR5cGU+O1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX3Jvd0RyYWdTdGFydGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoJ2lneFJvd0RyYWcnKVxuICAgIHNldCBkYXRhKHZhbCkge1xuICAgICAgICB0aGlzLnJvdyA9IHZhbDtcbiAgICB9XG5cbiAgICBnZXQgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93O1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBvaW50ZXJEb3duKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX3Jvd0RyYWdTdGFydGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3JlbW92ZU9uRGVzdHJveSA9IGZhbHNlO1xuICAgICAgICBzdXBlci5vblBvaW50ZXJEb3duKGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Qb2ludGVyTW92ZShldmVudCkge1xuICAgICAgICBzdXBlci5vblBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuX2RyYWdTdGFydGVkICYmICF0aGlzLl9yb3dEcmFnU3RhcnRlZCkge1xuICAgICAgICAgICAgdGhpcy5fcm93RHJhZ1N0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgYXJnczogSVJvd0RyYWdTdGFydEV2ZW50QXJncyA9IHtcbiAgICAgICAgICAgICAgICBkcmFnRGlyZWN0aXZlOiB0aGlzLFxuICAgICAgICAgICAgICAgIGRyYWdEYXRhOiB0aGlzLnJvdyxcbiAgICAgICAgICAgICAgICBjYW5jZWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG93bmVyOiB0aGlzLnJvdy5ncmlkXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnJvdy5ncmlkLm9uUm93RHJhZ1N0YXJ0LmVtaXQoYXJncyk7XG4gICAgICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdob3N0RWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZ2hvc3RFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLmdob3N0RWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5fZHJhZ1N0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jbGlja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5yb3cuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5yb3cuZ3JpZC5yb3dEcmFnZ2luZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJvdy5ncmlkLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiQgPSBmcm9tRXZlbnQodGhpcy5yb3cuZ3JpZC5kb2N1bWVudC5kZWZhdWx0VmlldywgJ2tleWRvd24nKS5zdWJzY3JpYmUoKGV2OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2LmtleSA9PT0gS0VZUy5FU0NBUEUgfHwgZXYua2V5ID09PSBLRVlTLkVTQ0FQRV9JRSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYXN0RHJvcEFyZWEgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblBvaW50ZXJVcChldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25Qb2ludGVyVXAoZXZlbnQpIHtcblxuICAgICAgICBpZiAoIXRoaXMuX2NsaWNrZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFyZ3M6IElSb3dEcmFnRW5kRXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgZHJhZ0RpcmVjdGl2ZTogdGhpcyxcbiAgICAgICAgICAgIGRyYWdEYXRhOiB0aGlzLnJvdyxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBvd25lcjogdGhpcy5yb3cuZ3JpZFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm93LmdyaWQub25Sb3dEcmFnRW5kLmVtaXQoYXJncyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGRyb3BBcmVhID0gdGhpcy5fbGFzdERyb3BBcmVhO1xuICAgICAgICBzdXBlci5vblBvaW50ZXJVcChldmVudCk7XG4gICAgICAgIGlmICghZHJvcEFyZWEgJiYgdGhpcy5naG9zdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2hvc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCB0aGlzLnRyYW5zaXRpb25FbmRFdmVudCwgZmFsc2UpO1xuICAgICAgICB9ICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVuZERyYWdnaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlR2hvc3QocGFnZVgsIHBhZ2VZKSB7XG4gICAgICAgIHRoaXMucm93LmdyaWQuZW5kRWRpdCh0cnVlKTtcbiAgICAgICAgdGhpcy5yb3cuZ3JpZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5naG9zdENvbnRleHQgPSB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRoaXMucm93LnJvd0RhdGEsXG4gICAgICAgICAgICBkYXRhOiB0aGlzLnJvdy5yb3dEYXRhLFxuICAgICAgICAgICAgZ3JpZDogdGhpcy5yb3cuZ3JpZFxuICAgICAgICB9O1xuICAgICAgICBzdXBlci5jcmVhdGVHaG9zdChwYWdlWCwgcGFnZVksIHRoaXMucm93Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGV4cGFuZGVyIGljb24gYW5kIGNyZWF0ZSB0aGUgZ2hvc3QgYXQgdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpb25cbiAgICAgICAgaWYgKHRoaXMuaXNIaWVyYXJjaGljYWxHcmlkKSB7XG4gICAgICAgICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyBhcyBJZ3hIaWVyYXJjaGljYWxSb3dDb21wb25lbnQ7XG4gICAgICAgICAgICBpZiAocm93LmV4cGFuZGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwYW5kZXJXaWR0aCA9IHJvdy5leHBhbmRlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICAgICAgICAgIHRoaXMuX2dob3N0SG9zdFggKz0gZXhwYW5kZXJXaWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdob3N0ID0gdGhpcy5naG9zdEVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgZ3JpZFJlY3QgPSB0aGlzLnJvdy5ncmlkLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHJvd1JlY3QgPSB0aGlzLnJvdy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBnaG9zdC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICBnaG9zdC5zdHlsZS53aWR0aCA9IGdyaWRSZWN0LndpZHRoICsgJ3B4JztcbiAgICAgICAgZ2hvc3Quc3R5bGUuaGVpZ2h0ID0gcm93UmVjdC5oZWlnaHQgKyAncHgnO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZ2hvc3QsIGdob3N0QmFja2dyb3VuZENsYXNzKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhnaG9zdCwgcm93U2VsZWN0ZWRDbGFzcyk7XG5cbiAgICAgICAgY29uc3QgZ2hvc3RDZWxscyA9IGdob3N0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZ3JpZENlbGxDbGFzcyk7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBnaG9zdENlbGxzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhnaG9zdENlbGxzW2luZGV4XSwgY2VsbFNlbGVjdGVkQ2xhc3MpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhnaG9zdENlbGxzW2luZGV4XSwgY2VsbEFjdGl2ZUNsYXNzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlKCkge1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24kICYmICF0aGlzLnN1YnNjcmlwdGlvbiQuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZW5kRHJhZ2dpbmcoKSB7XG4gICAgICAgIHRoaXMub25UcmFuc2l0aW9uRW5kKG51bGwpO1xuICAgICAgICB0aGlzLnJvdy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJvdy5ncmlkLnJvd0RyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucm93LmdyaWQubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFuc2l0aW9uRW5kRXZlbnQgPSAoZXZ0PykgPT4ge1xuICAgICAgICBpZiAodGhpcy5naG9zdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2hvc3RFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCB0aGlzLnRyYW5zaXRpb25FbmRFdmVudCwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW5kRHJhZ2dpbmcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc0hpZXJhcmNoaWNhbEdyaWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdy5ncmlkLm5hdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaWd4LWhpZXJhcmNoaWNhbC1ncmlkJztcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hEcmFnSW5kaWNhdG9ySWNvbl0nXG59KVxuXG5leHBvcnQgY2xhc3MgSWd4RHJhZ0luZGljYXRvckljb25EaXJlY3RpdmUge1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4Um93RHJhZ0dob3N0XSdcbn0pXG5cbmV4cG9ydCBjbGFzcyBJZ3hSb3dEcmFnR2hvc3REaXJlY3RpdmUgIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHsgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0lneFJvd0RyYWdEaXJlY3RpdmUsIElneERyYWdJbmRpY2F0b3JJY29uRGlyZWN0aXZlLCBJZ3hSb3dEcmFnR2hvc3REaXJlY3RpdmVdLFxuICAgIGVudHJ5Q29tcG9uZW50czogW10sXG4gICAgZXhwb3J0czogW0lneFJvd0RyYWdEaXJlY3RpdmUsIElneERyYWdJbmRpY2F0b3JJY29uRGlyZWN0aXZlLCBJZ3hSb3dEcmFnR2hvc3REaXJlY3RpdmVdLFxuICAgIGltcG9ydHM6IFtdXG59KVxuXG5leHBvcnQgY2xhc3MgSWd4Um93RHJhZ01vZHVsZSB7XG59XG4iXX0=