UNPKG

@catull/igniteui-angular

Version:

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

178 lines 23.2 kB
import { __decorate, __extends, __metadata } from "tslib"; import { Directive, Input, OnDestroy, ElementRef, Renderer2, NgZone } from '@angular/core'; import { IgxColumnComponent } from '../columns/column.component'; import { DropPosition, IgxColumnMovingService } from './moving.service'; import { Subject, interval } from 'rxjs'; import { IgxColumnMovingDragDirective } from './moving.drag.directive'; import { takeUntil } from 'rxjs/operators'; import { IgxDropDirective } from '../../directives/drag-drop/drag-drop.directive'; import { IgxGridForOfDirective } from '../../directives/for-of/for_of.directive'; var IgxColumnMovingDropDirective = /** @class */ (function (_super) { __extends(IgxColumnMovingDropDirective, _super); function IgxColumnMovingDropDirective(elementRef, renderer, zone, cms) { var _this = _super.call(this, elementRef, renderer, zone) || this; _this.elementRef = elementRef; _this.renderer = renderer; _this.zone = zone; _this.cms = cms; _this._dropIndicator = null; _this._lastDropIndicator = null; _this._dragLeave = new Subject(); _this._dropIndicatorClass = 'igx-grid__th-drop-indicator--active'; return _this; } Object.defineProperty(IgxColumnMovingDropDirective.prototype, "data", { set: function (val) { if (val instanceof IgxColumnComponent) { this._column = val; } if (val instanceof IgxGridForOfDirective) { this._hVirtDir = val; } }, enumerable: true, configurable: true }); Object.defineProperty(IgxColumnMovingDropDirective.prototype, "column", { get: function () { return this._column; }, enumerable: true, configurable: true }); Object.defineProperty(IgxColumnMovingDropDirective.prototype, "isDropTarget", { get: function () { return this._column && this._column.grid.hasMovableColumns && this.cms.column.movable && ((!this._column.pinned && this.cms.column.disablePinning) || !this.cms.column.disablePinning); }, enumerable: true, configurable: true }); Object.defineProperty(IgxColumnMovingDropDirective.prototype, "horizontalScroll", { get: function () { if (this._hVirtDir) { return this._hVirtDir; } }, enumerable: true, configurable: true }); IgxColumnMovingDropDirective.prototype.ngOnDestroy = function () { this._dragLeave.next(true); this._dragLeave.complete(); }; IgxColumnMovingDropDirective.prototype.onDragOver = function (event) { var drag = event.detail.owner; if (!(drag instanceof IgxColumnMovingDragDirective)) { return; } if (this.isDropTarget && this.cms.column !== this.column && this.cms.column.level === this.column.level && this.cms.column.parent === this.column.parent) { if (this._lastDropIndicator) { this.renderer.removeClass(this._dropIndicator, this._dropIndicatorClass); } var clientRect = this.elementRef.nativeElement.getBoundingClientRect(); var pos = clientRect.left + clientRect.width / 2; var parent_1 = this.elementRef.nativeElement.parentElement; if (event.detail.pageX < pos) { this._dropPos = DropPosition.BeforeDropTarget; this._lastDropIndicator = this._dropIndicator = parent_1.firstElementChild; } else { this._dropPos = DropPosition.AfterDropTarget; this._lastDropIndicator = this._dropIndicator = parent_1.lastElementChild; } if (this.cms.icon.innerText !== 'block') { this.renderer.addClass(this._dropIndicator, this._dropIndicatorClass); } } }; IgxColumnMovingDropDirective.prototype.onDragEnter = function (event) { var _this = this; var drag = event.detail.owner; if (!(drag instanceof IgxColumnMovingDragDirective)) { return; } if (this.column && this.cms.column.grid.id !== this.column.grid.id) { this.cms.icon.innerText = 'block'; return; } if (this.isDropTarget && this.cms.column !== this.column && this.cms.column.level === this.column.level && this.cms.column.parent === this.column.parent) { if (!this.column.pinned || (this.column.pinned && this.cms.column.pinned)) { this.cms.icon.innerText = 'swap_horiz'; } this.cms.icon.innerText = 'lock'; } else { this.cms.icon.innerText = 'block'; } if (this.horizontalScroll) { this.cms.icon.innerText = event.target.id === 'right' ? 'arrow_forward' : 'arrow_back'; interval(100).pipe(takeUntil(this._dragLeave)).subscribe(function () { _this.cms.column.grid.wheelHandler(); event.target.id === 'right' ? _this.horizontalScroll.scrollPosition += 15 : _this.horizontalScroll.scrollPosition -= 15; }); } }; IgxColumnMovingDropDirective.prototype.onDragLeave = function (event) { var drag = event.detail.owner; if (!(drag instanceof IgxColumnMovingDragDirective)) { return; } this.cms.icon.innerText = 'block'; if (this._dropIndicator) { this.renderer.removeClass(this._dropIndicator, this._dropIndicatorClass); } if (this.horizontalScroll) { this._dragLeave.next(true); } }; IgxColumnMovingDropDirective.prototype.onDragDrop = function (event) { event.preventDefault(); var drag = event.detail.owner; if (!(drag instanceof IgxColumnMovingDragDirective)) { return; } if (this.column && (this.cms.column.grid.id !== this.column.grid.id)) { return; } if (this.horizontalScroll) { this._dragLeave.next(true); } if (this.isDropTarget) { var args = { source: this.cms.column, target: this.column }; this.column.grid.moveColumn(this.cms.column, this.column, this._dropPos); this.column.grid.draggedColumn = null; this.column.grid.cdr.detectChanges(); } }; IgxColumnMovingDropDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: Renderer2 }, { type: NgZone }, { type: IgxColumnMovingService } ]; }; __decorate([ Input('igxColumnMovingDrop'), __metadata("design:type", Object), __metadata("design:paramtypes", [Object]) ], IgxColumnMovingDropDirective.prototype, "data", null); IgxColumnMovingDropDirective = __decorate([ Directive({ selector: '[igxColumnMovingDrop]' }), __metadata("design:paramtypes", [ElementRef, Renderer2, NgZone, IgxColumnMovingService]) ], IgxColumnMovingDropDirective); return IgxColumnMovingDropDirective; }(IgxDropDirective)); export { IgxColumnMovingDropDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92aW5nLmRyb3AuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9ncmlkcy9tb3ZpbmcvbW92aW5nLmRyb3AuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQU1qRjtJQUFrRCxnREFBZ0I7SUFvQzlELHNDQUFvQixVQUFzQixFQUFVLFFBQW1CLEVBQVUsSUFBWSxFQUFVLEdBQTJCO1FBQWxJLFlBQ0ksa0JBQU0sVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FDcEM7UUFGbUIsZ0JBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxjQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsVUFBSSxHQUFKLElBQUksQ0FBUTtRQUFVLFNBQUcsR0FBSCxHQUFHLENBQXdCO1FBUDFILG9CQUFjLEdBQVEsSUFBSSxDQUFDO1FBQzNCLHdCQUFrQixHQUFRLElBQUksQ0FBQztRQUcvQixnQkFBVSxHQUFHLElBQUksT0FBTyxFQUFXLENB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LGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQzs7Z0JBekgrQixVQUFVO2dCQUFvQixTQUFTO2dCQUFnQixNQUFNO2dCQUFlLHNCQUFzQjs7SUFqQ2xJO1FBREMsS0FBSyxDQUFDLHFCQUFxQixDQUFDOzs7NERBUzVCO0lBWFEsNEJBQTRCO1FBSHhDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSx1QkFBdUI7U0FDcEMsQ0FBQzt5Q0FxQ2tDLFVBQVUsRUFBb0IsU0FBUyxFQUFnQixNQUFNLEVBQWUsc0JBQXNCO09BcEN6SCw0QkFBNEIsQ0E4SnhDO0lBQUQsbUNBQUM7Q0FBQSxBQTlKRCxDQUFrRCxnQkFBZ0IsR0E4SmpFO1NBOUpZLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbnMvY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEcm9wUG9zaXRpb24sIElneENvbHVtbk1vdmluZ1NlcnZpY2UgfSBmcm9tICcuL21vdmluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QsIGludGVydmFsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Nb3ZpbmdEcmFnRGlyZWN0aXZlIH0gZnJvbSAnLi9tb3ZpbmcuZHJhZy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSWd4RHJvcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wL2RyYWctZHJvcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4R3JpZEZvck9mRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3Itb2YvZm9yX29mLmRpcmVjdGl2ZSc7XG5cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4Q29sdW1uTW92aW5nRHJvcF0nXG59KVxuZXhwb3J0IGNsYXNzIElneENvbHVtbk1vdmluZ0Ryb3BEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hEcm9wRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgnaWd4Q29sdW1uTW92aW5nRHJvcCcpXG4gICAgc2V0IGRhdGEodmFsOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIElneENvbHVtbkNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5fY29sdW1uID0gdmFsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIElneEdyaWRGb3JPZkRpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5faFZpcnREaXIgPSB2YWw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgY29sdW1uKCk6IElneENvbHVtbkNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW47XG4gICAgfVxuXG4gICAgZ2V0IGlzRHJvcFRhcmdldCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbiAmJiB0aGlzLl9jb2x1bW4uZ3JpZC5oYXNNb3ZhYmxlQ29sdW1ucyAmJiB0aGlzLmNtcy5jb2x1bW4ubW92YWJsZSAmJlxuICAgICAgICAgICAgKCghdGhpcy5fY29sdW1uLnBpbm5lZCAmJiB0aGlzLmNtcy5jb2x1bW4uZGlzYWJsZVBpbm5pbmcpIHx8ICF0aGlzLmNtcy5jb2x1bW4uZGlzYWJsZVBpbm5pbmcpO1xuICAgIH1cblxuICAgIGdldCBob3Jpem9udGFsU2Nyb2xsKCk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLl9oVmlydERpcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2hWaXJ0RGlyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZHJvcFBvczogRHJvcFBvc2l0aW9uO1xuICAgIHByaXZhdGUgX2Ryb3BJbmRpY2F0b3I6IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBfbGFzdERyb3BJbmRpY2F0b3I6IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBfY29sdW1uOiBJZ3hDb2x1bW5Db21wb25lbnQ7XG4gICAgcHJpdmF0ZSBfaFZpcnREaXI6IElneEdyaWRGb3JPZkRpcmVjdGl2ZTxhbnk+O1xuICAgIHByaXZhdGUgX2RyYWdMZWF2ZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBfZHJvcEluZGljYXRvckNsYXNzID0gJ2lneC1ncmlkX190aC1kcm9wLWluZGljYXRvci0tYWN0aXZlJztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSBjbXM6IElneENvbHVtbk1vdmluZ1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgcmVuZGVyZXIsIHpvbmUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fZHJhZ0xlYXZlLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuX2RyYWdMZWF2ZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyYWdPdmVyKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGRyYWcgPSBldmVudC5kZXRhaWwub3duZXI7XG4gICAgICAgIGlmICghKGRyYWcgaW5zdGFuY2VvZiBJZ3hDb2x1bW5Nb3ZpbmdEcmFnRGlyZWN0aXZlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wVGFyZ2V0ICYmXG4gICAgICAgICAgICB0aGlzLmNtcy5jb2x1bW4gIT09IHRoaXMuY29sdW1uICYmXG4gICAgICAgICAgICB0aGlzLmNtcy5jb2x1bW4ubGV2ZWwgPT09IHRoaXMuY29sdW1uLmxldmVsICYmXG4gICAgICAgICAgICB0aGlzLmNtcy5jb2x1bW4ucGFyZW50ID09PSB0aGlzLmNvbHVtbi5wYXJlbnQpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2xhc3REcm9wSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9kcm9wSW5kaWNhdG9yLCB0aGlzLl9kcm9wSW5kaWNhdG9yQ2xhc3MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjbGllbnRSZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBwb3MgPSBjbGllbnRSZWN0LmxlZnQgKyBjbGllbnRSZWN0LndpZHRoIC8gMjtcblxuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIGlmIChldmVudC5kZXRhaWwucGFnZVggPCBwb3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcm9wUG9zID0gRHJvcFBvc2l0aW9uLkJlZm9yZURyb3BUYXJnZXQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdERyb3BJbmRpY2F0b3IgPSB0aGlzLl9kcm9wSW5kaWNhdG9yID0gcGFyZW50LmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcm9wUG9zID0gRHJvcFBvc2l0aW9uLkFmdGVyRHJvcFRhcmdldDtcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXN0RHJvcEluZGljYXRvciA9IHRoaXMuX2Ryb3BJbmRpY2F0b3IgPSBwYXJlbnQubGFzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuY21zLmljb24uaW5uZXJUZXh0ICE9PSAnYmxvY2snKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9kcm9wSW5kaWNhdG9yLCB0aGlzLl9kcm9wSW5kaWNhdG9yQ2xhc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHJhZ0VudGVyKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGRyYWcgPSBldmVudC5kZXRhaWwub3duZXI7XG4gICAgICAgIGlmICghKGRyYWcgaW5zdGFuY2VvZiBJZ3hDb2x1bW5Nb3ZpbmdEcmFnRGlyZWN0aXZlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29sdW1uICYmIHRoaXMuY21zLmNvbHVtbi5ncmlkLmlkICE9PSB0aGlzLmNvbHVtbi5ncmlkLmlkKSB7XG4gICAgICAgICAgICB0aGlzLmNtcy5pY29uLmlubmVyVGV4dCA9ICdibG9jayc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0Ryb3BUYXJnZXQgJiZcbiAgICAgICAgICAgIHRoaXMuY21zLmNvbHVtbiAhPT0gdGhpcy5jb2x1bW4gJiZcbiAgICAgICAgICAgIHRoaXMuY21zLmNvbHVtbi5sZXZlbCA9PT0gdGhpcy5jb2x1bW4ubGV2ZWwgJiZcbiAgICAgICAgICAgIHRoaXMuY21zLmNvbHVtbi5wYXJlbnQgPT09IHRoaXMuY29sdW1uLnBhcmVudCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbHVtbi5waW5uZWQgfHwgKHRoaXMuY29sdW1uLnBpbm5lZCAmJiB0aGlzLmNtcy5jb2x1bW4ucGlubmVkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNtcy5pY29uLmlubmVyVGV4dCA9ICdzd2FwX2hvcml6JztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNtcy5pY29uLmlubmVyVGV4dCA9ICdsb2NrJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbXMuaWNvbi5pbm5lclRleHQgPSAnYmxvY2snO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5ob3Jpem9udGFsU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbXMuaWNvbi5pbm5lclRleHQgPSBldmVudC50YXJnZXQuaWQgPT09ICdyaWdodCcgPyAnYXJyb3dfZm9yd2FyZCcgOiAnYXJyb3dfYmFjayc7XG5cbiAgICAgICAgICAgICAgICBpbnRlcnZhbCgxMDApLnBpcGUodGFrZVVudGlsKHRoaXMuX2RyYWdMZWF2ZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY21zLmNvbHVtbi5ncmlkLndoZWVsSGFuZGxlcigpO1xuICAgICAgICAgICAgICAgICAgICBldmVudC50YXJnZXQuaWQgPT09ICdyaWdodCcgPyB0aGlzLmhvcml6b250YWxTY3JvbGwuc2Nyb2xsUG9zaXRpb24gKz0gMTUgOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3Jpem9udGFsU2Nyb2xsLnNjcm9sbFBvc2l0aW9uIC09IDE1O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyYWdMZWF2ZShldmVudCkge1xuICAgICAgICBjb25zdCBkcmFnID0gZXZlbnQuZGV0YWlsLm93bmVyO1xuICAgICAgICBpZiAoIShkcmFnIGluc3RhbmNlb2YgSWd4Q29sdW1uTW92aW5nRHJhZ0RpcmVjdGl2ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY21zLmljb24uaW5uZXJUZXh0ID0gJ2Jsb2NrJztcblxuICAgICAgICBpZiAodGhpcy5fZHJvcEluZGljYXRvcikge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9kcm9wSW5kaWNhdG9yLCB0aGlzLl9kcm9wSW5kaWNhdG9yQ2xhc3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaG9yaXpvbnRhbFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy5fZHJhZ0xlYXZlLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25EcmFnRHJvcChldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBkcmFnID0gZXZlbnQuZGV0YWlsLm93bmVyO1xuICAgICAgICBpZiAoIShkcmFnIGluc3RhbmNlb2YgSWd4Q29sdW1uTW92aW5nRHJhZ0RpcmVjdGl2ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbiAmJiAodGhpcy5jbXMuY29sdW1uLmdyaWQuaWQgIT09IHRoaXMuY29sdW1uLmdyaWQuaWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5ob3Jpem9udGFsU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLl9kcmFnTGVhdmUubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRHJvcFRhcmdldCkge1xuICAgICAgICAgICAgY29uc3QgYXJncyA9IHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMuY21zLmNvbHVtbixcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRoaXMuY29sdW1uXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLm1vdmVDb2x1bW4odGhpcy5jbXMuY29sdW1uLCB0aGlzLmNvbHVtbiwgdGhpcy5fZHJvcFBvcyk7XG5cbiAgICAgICAgICAgIHRoaXMuY29sdW1uLmdyaWQuZHJhZ2dlZENvbHVtbiA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=