UNPKG

@catull/igniteui-angular

Version:

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

170 lines 21.5 kB
import { __decorate, __extends, __metadata } from "tslib"; import { Directive, OnDestroy, Input, ElementRef, ViewContainerRef, NgZone, Renderer2, ChangeDetectorRef } from '@angular/core'; import { IgxDragDirective } from '../../directives/drag-drop/drag-drop.directive'; import { fromEvent } from 'rxjs'; import { IgxColumnMovingService } from './moving.service'; /** * @hidden * @internal */ var IgxColumnMovingDragDirective = /** @class */ (function (_super) { __extends(IgxColumnMovingDragDirective, _super); function IgxColumnMovingDragDirective(element, viewContainer, zone, renderer, cdr, cms) { var _this = _super.call(this, cdr, element, viewContainer, zone, renderer) || this; _this.element = element; _this.viewContainer = viewContainer; _this.zone = zone; _this.renderer = renderer; _this.cdr = cdr; _this.cms = cms; _this._ghostClass = 'igx-grid__drag-ghost-image'; _this.ghostImgIconClass = 'igx-grid__drag-ghost-image-icon'; _this.ghostImgIconGroupClass = 'igx-grid__drag-ghost-image-icon-group'; return _this; } Object.defineProperty(IgxColumnMovingDragDirective.prototype, "data", { set: function (val) { this._column = val; }, enumerable: true, configurable: true }); Object.defineProperty(IgxColumnMovingDragDirective.prototype, "column", { get: function () { return this._column; }, enumerable: true, configurable: true }); Object.defineProperty(IgxColumnMovingDragDirective.prototype, "draggable", { get: function () { return this.column && (this.column.movable || (this.column.groupable && !this.column.columnGroup)); }, enumerable: true, configurable: true }); Object.defineProperty(IgxColumnMovingDragDirective.prototype, "icon", { get: function () { return this.cms.icon; }, enumerable: true, configurable: true }); IgxColumnMovingDragDirective.prototype.ngOnDestroy = function () { this._unsubscribe(); }; IgxColumnMovingDragDirective.prototype.onEscape = function (event) { this.cms.cancelDrop = true; this.onPointerUp(event); }; IgxColumnMovingDragDirective.prototype.onPointerDown = function (event) { var _this = this; if (!this.draggable || event.target.getAttribute('draggable') === 'false') { return; } event.preventDefault(); event.stopPropagation(); this._removeOnDestroy = false; this.cms.column = this.column; this.ghostClass = this._ghostClass; _super.prototype.onPointerDown.call(this, event); this.cms.isColumnMoving = true; this.column.grid.cdr.detectChanges(); var args = { source: this.column }; this.column.grid.onColumnMovingStart.emit(args); this.subscription$ = fromEvent(this.column.grid.document.defaultView, 'keydown').subscribe(function (ev) { if (ev.key === "Escape" /* ESCAPE */ || ev.key === "Esc" /* ESCAPE_IE */) { _this.onEscape(ev); } }); }; IgxColumnMovingDragDirective.prototype.onPointerMove = function (event) { event.preventDefault(); _super.prototype.onPointerMove.call(this, event); if (this._dragStarted && this.ghostElement && !this.column.grid.draggedColumn) { this.column.grid.draggedColumn = this.column; this.column.grid.cdr.detectChanges(); } if (this.cms.isColumnMoving) { var args = { source: this.column, cancel: false }; this.column.grid.onColumnMoving.emit(args); if (args.cancel) { this.onEscape(event); } } }; IgxColumnMovingDragDirective.prototype.onPointerUp = function (event) { var _this = this; // Run it explicitly inside the zone because sometimes onPointerUp executes after the code below. this.zone.run(function () { _super.prototype.onPointerUp.call(_this, event); _this.cms.isColumnMoving = false; _this.column.grid.draggedColumn = null; _this.column.grid.cdr.detectChanges(); }); this._unsubscribe(); }; IgxColumnMovingDragDirective.prototype.createGhost = function (pageX, pageY) { _super.prototype.createGhost.call(this, pageX, pageY); this.ghostElement.style.height = null; this.ghostElement.style.minWidth = null; this.ghostElement.style.flexBasis = null; this.ghostElement.style.position = null; var icon = document.createElement('i'); var text = document.createTextNode('block'); icon.appendChild(text); icon.classList.add('material-icons'); this.cms.icon = icon; if (!this.column.columnGroup) { this.renderer.addClass(icon, this.ghostImgIconClass); this.ghostElement.insertBefore(icon, this.ghostElement.firstElementChild); this.ghostLeft = this._ghostStartX = pageX - ((this.ghostElement.getBoundingClientRect().width / 3) * 2); this.ghostTop = this._ghostStartY = pageY - ((this.ghostElement.getBoundingClientRect().height / 3) * 2); } else { this.ghostElement.insertBefore(icon, this.ghostElement.childNodes[0]); this.renderer.addClass(icon, this.ghostImgIconGroupClass); this.ghostElement.children[0].style.paddingLeft = '0px'; this.ghostLeft = this._ghostStartX = pageX - ((this.ghostElement.getBoundingClientRect().width / 3) * 2); this.ghostTop = this._ghostStartY = pageY - ((this.ghostElement.getBoundingClientRect().height / 3) * 2); } }; IgxColumnMovingDragDirective.prototype._unsubscribe = function () { if (this.subscription$) { this.subscription$.unsubscribe(); this.subscription$ = null; } }; IgxColumnMovingDragDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: ViewContainerRef }, { type: NgZone }, { type: Renderer2 }, { type: ChangeDetectorRef }, { type: IgxColumnMovingService } ]; }; __decorate([ Input('igxColumnMovingDrag'), __metadata("design:type", Object), __metadata("design:paramtypes", [Object]) ], IgxColumnMovingDragDirective.prototype, "data", null); IgxColumnMovingDragDirective = __decorate([ Directive({ selector: '[igxColumnMovingDrag]', }), __metadata("design:paramtypes", [ElementRef, ViewContainerRef, NgZone, Renderer2, ChangeDetectorRef, IgxColumnMovingService]) ], IgxColumnMovingDragDirective); return IgxColumnMovingDragDirective; }(IgxDragDirective)); export { IgxColumnMovingDragDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92aW5nLmRyYWcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9ncmlkcy9tb3ZpbmcvbW92aW5nLmRyYWcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbEYsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHMUQ7OztHQUdHO0FBS0g7SUFBa0QsZ0RBQWdCO0lBeUI5RCxzQ0FDVyxPQUFnQyxFQUNoQyxhQUErQixFQUMvQixJQUFZLEVBQ1osUUFBbUIsRUFDbkIsR0FBc0IsRUFDckIsR0FBMkI7UUFOdkMsWUFRSSxrQkFBTSxHQUFHLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLFNBQ3JEO1FBUlUsYUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDaEMsbUJBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLFVBQUksR0FBSixJQUFJLENBQVE7UUFDWixjQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFNBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3JCLFNBQUcsR0FBSCxHQUFHLENBQXdCO1FBVi9CLGlCQUFXLEdBQUcsNEJBQTRCLENBQUM7UUFDM0MsdUJBQWlCLEdBQUcsaUNBQWlDLENBQUM7UUFDdEQsNEJBQXNCLEdBQUcsdUNBQXVDLENBQUM7O0lBV3pFLENBQUM7SUEvQkQsc0JBQUksOENBQUk7YUFBUixVQUFTLEdBQUc7WUFDUixJQUFJLENBQUMs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Q29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uRGVzdHJveSwgSW5wdXQsIEVsZW1lbnRSZWYsIFZpZXdDb250YWluZXJSZWYsIE5nWm9uZSwgUmVuZGVyZXIyLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4RHJhZ0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wL2RyYWctZHJvcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElneENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbnMvY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLRVlTIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Nb3ZpbmdTZXJ2aWNlIH0gZnJvbSAnLi9tb3Zpbmcuc2VydmljZSc7XG5cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4Q29sdW1uTW92aW5nRHJhZ10nLFxuXG59KVxuZXhwb3J0IGNsYXNzIElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hEcmFnRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgnaWd4Q29sdW1uTW92aW5nRHJhZycpXG4gICAgc2V0IGRhdGEodmFsKSB7XG4gICAgICAgIHRoaXMuX2NvbHVtbiA9IHZhbDtcbiAgICB9XG5cbiAgICBnZXQgY29sdW1uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uO1xuICAgIH1cblxuICAgIGdldCBkcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbiAmJiAodGhpcy5jb2x1bW4ubW92YWJsZSB8fCAodGhpcy5jb2x1bW4uZ3JvdXBhYmxlICYmICF0aGlzLmNvbHVtbi5jb2x1bW5Hcm91cCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaWNvbigpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNtcy5pY29uO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX2NvbHVtbjogSWd4Q29sdW1uQ29tcG9uZW50O1xuICAgIHByaXZhdGUgX2dob3N0Q2xhc3MgPSAnaWd4LWdyaWRfX2RyYWctZ2hvc3QtaW1hZ2UnO1xuICAgIHByaXZhdGUgZ2hvc3RJbWdJY29uQ2xhc3MgPSAnaWd4LWdyaWRfX2RyYWctZ2hvc3QtaW1hZ2UtaWNvbic7XG4gICAgcHJpdmF0ZSBnaG9zdEltZ0ljb25Hcm91cENsYXNzID0gJ2lneC1ncmlkX19kcmFnLWdob3N0LWltYWdlLWljb24tZ3JvdXAnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHVibGljIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHB1YmxpYyB6b25lOiBOZ1pvbmUsXG4gICAgICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBjbXM6IElneENvbHVtbk1vdmluZ1NlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNkciwgZWxlbWVudCwgdmlld0NvbnRhaW5lciwgem9uZSwgcmVuZGVyZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Fc2NhcGUoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5jbXMuY2FuY2VsRHJvcCA9IHRydWU7XG4gICAgICAgIHRoaXMub25Qb2ludGVyVXAoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBvaW50ZXJEb3duKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kcmFnZ2FibGUgfHwgZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnZHJhZ2dhYmxlJykgPT09ICdmYWxzZScpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuX3JlbW92ZU9uRGVzdHJveSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNtcy5jb2x1bW4gPSB0aGlzLmNvbHVtbjtcbiAgICAgICAgdGhpcy5naG9zdENsYXNzID0gdGhpcy5fZ2hvc3RDbGFzcztcblxuICAgICAgICBzdXBlci5vblBvaW50ZXJEb3duKGV2ZW50KTtcblxuICAgICAgICB0aGlzLmNtcy5pc0NvbHVtbk1vdmluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuY29sdW1uLmdyaWQuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBjb25zdCBhcmdzID0ge1xuICAgICAgICAgICAgc291cmNlOiB0aGlzLmNvbHVtblxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLm9uQ29sdW1uTW92aW5nU3RhcnQuZW1pdChhcmdzKTtcblxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiQgPSBmcm9tRXZlbnQodGhpcy5jb2x1bW4uZ3JpZC5kb2N1bWVudC5kZWZhdWx0VmlldywgJ2tleWRvd24nKS5zdWJzY3JpYmUoKGV2OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXYua2V5ID09PSBLRVlTLkVTQ0FQRSB8fCBldi5rZXkgPT09IEtFWVMuRVNDQVBFX0lFKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVzY2FwZShldik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBvaW50ZXJNb3ZlKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHN1cGVyLm9uUG9pbnRlck1vdmUoZXZlbnQpO1xuXG4gICAgICAgIGlmICh0aGlzLl9kcmFnU3RhcnRlZCAmJiB0aGlzLmdob3N0RWxlbWVudCAmJiAhdGhpcy5jb2x1bW4uZ3JpZC5kcmFnZ2VkQ29sdW1uKSB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLmRyYWdnZWRDb2x1bW4gPSB0aGlzLmNvbHVtbjtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uLmdyaWQuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNtcy5pc0NvbHVtbk1vdmluZykge1xuICAgICAgICAgICAgY29uc3QgYXJncyA9IHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgIGNhbmNlbDogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLm9uQ29sdW1uTW92aW5nLmVtaXQoYXJncyk7XG5cbiAgICAgICAgICAgIGlmIChhcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Fc2NhcGUoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uUG9pbnRlclVwKGV2ZW50KSB7XG4gICAgICAgIC8vIFJ1biBpdCBleHBsaWNpdGx5IGluc2lkZSB0aGUgem9uZSBiZWNhdXNlIHNvbWV0aW1lcyBvblBvaW50ZXJVcCBleGVjdXRlcyBhZnRlciB0aGUgY29kZSBiZWxvdy5cbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBzdXBlci5vblBvaW50ZXJVcChldmVudCk7XG5cbiAgICAgICAgICAgIHRoaXMuY21zLmlzQ29sdW1uTW92aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLmRyYWdnZWRDb2x1bW4gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5jb2x1bW4uZ3JpZC5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVHaG9zdChwYWdlWCwgcGFnZVkpIHtcbiAgICAgICAgc3VwZXIuY3JlYXRlR2hvc3QocGFnZVgsIHBhZ2VZKTtcblxuICAgICAgICB0aGlzLmdob3N0RWxlbWVudC5zdHlsZS5oZWlnaHQgPSBudWxsO1xuICAgICAgICB0aGlzLmdob3N0RWxlbWVudC5zdHlsZS5taW5XaWR0aCA9IG51bGw7XG4gICAgICAgIHRoaXMuZ2hvc3RFbGVtZW50LnN0eWxlLmZsZXhCYXNpcyA9IG51bGw7XG4gICAgICAgIHRoaXMuZ2hvc3RFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gbnVsbDtcblxuICAgICAgICBjb25zdCBpY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpO1xuICAgICAgICBjb25zdCB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2Jsb2NrJyk7XG4gICAgICAgIGljb24uYXBwZW5kQ2hpbGQodGV4dCk7XG5cbiAgICAgICAgaWNvbi5jbGFzc0xpc3QuYWRkKCdtYXRlcmlhbC1pY29ucycpO1xuICAgICAgICB0aGlzLmNtcy5pY29uID0gaWNvbjtcblxuICAgICAgICBpZiAoIXRoaXMuY29sdW1uLmNvbHVtbkdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGljb24sIHRoaXMuZ2hvc3RJbWdJY29uQ2xhc3MpO1xuXG4gICAgICAgICAgICB0aGlzLmdob3N0RWxlbWVudC5pbnNlcnRCZWZvcmUoaWNvbiwgdGhpcy5naG9zdEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQpO1xuXG4gICAgICAgICAgICB0aGlzLmdob3N0TGVmdCA9IHRoaXMuX2dob3N0U3RhcnRYID0gcGFnZVggLSAoKHRoaXMuZ2hvc3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC8gMykgKiAyKTtcbiAgICAgICAgICAgIHRoaXMuZ2hvc3RUb3AgPSB0aGlzLl9naG9zdFN0YXJ0WSA9IHBhZ2VZIC0gKCh0aGlzLmdob3N0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgLyAzKSAqIDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5naG9zdEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGljb24sIHRoaXMuZ2hvc3RFbGVtZW50LmNoaWxkTm9kZXNbMF0pO1xuXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGljb24sIHRoaXMuZ2hvc3RJbWdJY29uR3JvdXBDbGFzcyk7XG4gICAgICAgICAgICB0aGlzLmdob3N0RWxlbWVudC5jaGlsZHJlblswXS5zdHlsZS5wYWRkaW5nTGVmdCA9ICcwcHgnO1xuXG4gICAgICAgICAgICB0aGlzLmdob3N0TGVmdCA9IHRoaXMuX2dob3N0U3RhcnRYID0gcGFnZVggLSAoKHRoaXMuZ2hvc3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC8gMykgKiAyKTtcbiAgICAgICAgICAgIHRoaXMuZ2hvc3RUb3AgPSB0aGlzLl9naG9zdFN0YXJ0WSA9IHBhZ2VZIC0gKCh0aGlzLmdob3N0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgLyAzKSAqIDIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmUoKSB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbiQpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uJC51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24kID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==