@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
178 lines • 23.2 kB
JavaScript
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=