UNPKG

@catull/igniteui-angular

Version:

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

149 lines 19.9 kB
import { __decorate, __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 */ let IgxColumnMovingDragDirective = class IgxColumnMovingDragDirective extends IgxDragDirective { constructor(element, viewContainer, zone, renderer, cdr, cms) { super(cdr, element, viewContainer, zone, renderer); 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'; } set data(val) { this._column = val; } get column() { return this._column; } get draggable() { return this.column && (this.column.movable || (this.column.groupable && !this.column.columnGroup)); } get icon() { return this.cms.icon; } ngOnDestroy() { this._unsubscribe(); } onEscape(event) { this.cms.cancelDrop = true; this.onPointerUp(event); } onPointerDown(event) { 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.onPointerDown(event); this.cms.isColumnMoving = true; this.column.grid.cdr.detectChanges(); const args = { source: this.column }; this.column.grid.onColumnMovingStart.emit(args); this.subscription$ = fromEvent(this.column.grid.document.defaultView, 'keydown').subscribe((ev) => { if (ev.key === "Escape" /* ESCAPE */ || ev.key === "Esc" /* ESCAPE_IE */) { this.onEscape(ev); } }); } onPointerMove(event) { event.preventDefault(); super.onPointerMove(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) { const args = { source: this.column, cancel: false }; this.column.grid.onColumnMoving.emit(args); if (args.cancel) { this.onEscape(event); } } } onPointerUp(event) { // Run it explicitly inside the zone because sometimes onPointerUp executes after the code below. this.zone.run(() => { super.onPointerUp(event); this.cms.isColumnMoving = false; this.column.grid.draggedColumn = null; this.column.grid.cdr.detectChanges(); }); this._unsubscribe(); } createGhost(pageX, pageY) { super.createGhost(pageX, pageY); this.ghostElement.style.height = null; this.ghostElement.style.minWidth = null; this.ghostElement.style.flexBasis = null; this.ghostElement.style.position = null; const icon = document.createElement('i'); const 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); } } _unsubscribe() { if (this.subscription$) { this.subscription$.unsubscribe(); this.subscription$ = null; } } }; IgxColumnMovingDragDirective.ctorParameters = () => [ { 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); export { IgxColumnMovingDragDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92aW5nLmRyYWcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9ncmlkcy9tb3ZpbmcvbW92aW5nLmRyYWcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbEYsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHMUQ7OztHQUdHO0FBS0gsSUFBYSw0QkFBNEIsR0FBekMsTUFBYSw0QkFBNkIsU0FBUSxnQkFBZ0I7SUF5QjlELFlBQ1csT0FBZ0MsRUFDaEMsYUFBK0IsRUFDL0IsSUFBWSxFQUNaLFFBQW1CLEVBQ25CLEdBQXNCLEVBQ3JCLEdBQTJCO1FBRW5DLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFQNUMsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3JCLFFBQUcsR0FBSCxHQUFHLENBQXdCO1FBVi9CLGdCQUFXLEdBQUcsNEJBQTRCLENBQUM7UUFDM0Msc0JBQWlCLEdBQUcsaUNBQWlDLENBQUM7UUFDdEQsMkJBQXNCLEdBQUcsdUNBQXVDLENBQUM7SUFXekUsQ0FBQztJQS9CRCxJQUFJLElBQUksQ0FBQyxHQUFHO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztJQUN6QixDQUFDO0lBbUJNLFdBQVc7UUFDZCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFLO1FBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBSztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxPQUFPLEVBQUU7WUFDdkUsT0FBTztTQUNWO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRW5DLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQyxNQUFNLElBQUksR0FBRztZQUNULE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUN0QixDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBaUIsRUFBRSxFQUFFO1lBQzdHLElBQUksRUFBRSxDQUFDLEdBQUcsMEJBQWdCLElBQUksRUFBRSxDQUFDLEdBQUcsMEJBQW1CLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDckI7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBSztRQUN0QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMzRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDeEM7UUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUFHO2dCQUNULE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsTUFBTSxFQUFFLEtBQUs7YUFDaEIsQ0FBQztZQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFM0MsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDeEI7U0FDSjtJQUNMLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBSztRQUNwQixpR0FBaUc7UUFDakcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2YsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV6QixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVTLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSztRQUM5QixLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVoQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXhDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRXJCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFFckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUUxRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUc7YUFBTTtZQUNILElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXRFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUV4RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUc7SUFDTCxDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUM3QjtJQUNMLENBQUM7Q0FDSixDQUFBOztZQTFIdUIsVUFBVTtZQUNKLGdCQUFnQjtZQUN6QixNQUFNO1lBQ0YsU0FBUztZQUNkLGlCQUFpQjtZQUNoQixzQkFBc0I7O0FBNUJ2QztJQURDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzs7O3dEQUc1QjtBQUxRLDRCQUE0QjtJQUp4QyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsdUJBQXVCO0tBRXBDLENBQUM7cUNBMkJzQixVQUFVO1FBQ0osZ0JBQWdCO1FBQ3pCLE1BQU07UUFDRixTQUFTO1FBQ2QsaUJBQWlCO1FBQ2hCLHNCQUFzQjtHQS9COUIsNEJBQTRCLENBb0p4QztTQXBKWSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uRGVzdHJveSwgSW5wdXQsIEVsZW1lbnRSZWYsIFZpZXdDb250YWluZXJSZWYsIE5nWm9uZSwgUmVuZGVyZXIyLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4RHJhZ0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wL2RyYWctZHJvcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElneENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbnMvY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLRVlTIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Nb3ZpbmdTZXJ2aWNlIH0gZnJvbSAnLi9tb3Zpbmcuc2VydmljZSc7XG5cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4Q29sdW1uTW92aW5nRHJhZ10nLFxuXG59KVxuZXhwb3J0IGNsYXNzIElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hEcmFnRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgnaWd4Q29sdW1uTW92aW5nRHJhZycpXG4gICAgc2V0IGRhdGEodmFsKSB7XG4gICAgICAgIHRoaXMuX2NvbHVtbiA9IHZhbDtcbiAgICB9XG5cbiAgICBnZXQgY29sdW1uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uO1xuICAgIH1cblxuICAgIGdldCBkcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbiAmJiAodGhpcy5jb2x1bW4ubW92YWJsZSB8fCAodGhpcy5jb2x1bW4uZ3JvdXBhYmxlICYmICF0aGlzLmNvbHVtbi5jb2x1bW5Hcm91cCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaWNvbigpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNtcy5pY29uO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX2NvbHVtbjogSWd4Q29sdW1uQ29tcG9uZW50O1xuICAgIHByaXZhdGUgX2dob3N0Q2xhc3MgPSAnaWd4LWdyaWRfX2RyYWctZ2hvc3QtaW1hZ2UnO1xuICAgIHByaXZhdGUgZ2hvc3RJbWdJY29uQ2xhc3MgPSAnaWd4LWdyaWRfX2RyYWctZ2hvc3QtaW1hZ2UtaWNvbic7XG4gICAgcHJpdmF0ZSBnaG9zdEltZ0ljb25Hcm91cENsYXNzID0gJ2lneC1ncmlkX19kcmFnLWdob3N0LWltYWdlLWljb24tZ3JvdXAnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHVibGljIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHB1YmxpYyB6b25lOiBOZ1pvbmUsXG4gICAgICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBjbXM6IElneENvbHVtbk1vdmluZ1NlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNkciwgZWxlbWVudCwgdmlld0NvbnRhaW5lciwgem9uZSwgcmVuZGVyZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Fc2NhcGUoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5jbXMuY2FuY2VsRHJvcCA9IHRydWU7XG4gICAgICAgIHRoaXMub25Qb2ludGVyVXAoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBvaW50ZXJEb3duKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kcmFnZ2FibGUgfHwgZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnZHJhZ2dhYmxlJykgPT09ICdmYWxzZScpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuX3JlbW92ZU9uRGVzdHJveSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNtcy5jb2x1bW4gPSB0aGlzLmNvbHVtbjtcbiAgICAgICAgdGhpcy5naG9zdENsYXNzID0gdGhpcy5fZ2hvc3RDbGFzcztcblxuICAgICAgICBzdXBlci5vblBvaW50ZXJEb3duKGV2ZW50KTtcblxuICAgICAgICB0aGlzLmNtcy5pc0NvbHVtbk1vdmluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuY29sdW1uLmdyaWQuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBjb25zdCBhcmdzID0ge1xuICAgICAgICAgICAgc291cmNlOiB0aGlzLmNvbHVtblxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLm9uQ29sdW1uTW92aW5nU3RhcnQuZW1pdChhcmdzKTtcblxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiQgPSBmcm9tRXZlbnQodGhpcy5jb2x1bW4uZ3JpZC5kb2N1bWVudC5kZWZhdWx0VmlldywgJ2tleWRvd24nKS5zdWJzY3JpYmUoKGV2OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXYua2V5ID09PSBLRVlTLkVTQ0FQRSB8fCBldi5rZXkgPT09IEtFWVMuRVNDQVBFX0lFKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVzY2FwZShldik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBvaW50ZXJNb3ZlKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHN1cGVyLm9uUG9pbnRlck1vdmUoZXZlbnQpO1xuXG4gICAgICAgIGlmICh0aGlzLl9kcmFnU3RhcnRlZCAmJiB0aGlzLmdob3N0RWxlbWVudCAmJiAhdGhpcy5jb2x1bW4uZ3JpZC5kcmFnZ2VkQ29sdW1uKSB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLmRyYWdnZWRDb2x1bW4gPSB0aGlzLmNvbHVtbjtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uLmdyaWQuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNtcy5pc0NvbHVtbk1vdmluZykge1xuICAgICAgICAgICAgY29uc3QgYXJncyA9IHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgIGNhbmNlbDogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLm9uQ29sdW1uTW92aW5nLmVtaXQoYXJncyk7XG5cbiAgICAgICAgICAgIGlmIChhcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Fc2NhcGUoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uUG9pbnRlclVwKGV2ZW50KSB7XG4gICAgICAgIC8vIFJ1biBpdCBleHBsaWNpdGx5IGluc2lkZSB0aGUgem9uZSBiZWNhdXNlIHNvbWV0aW1lcyBvblBvaW50ZXJVcCBleGVjdXRlcyBhZnRlciB0aGUgY29kZSBiZWxvdy5cbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBzdXBlci5vblBvaW50ZXJVcChldmVudCk7XG5cbiAgICAgICAgICAgIHRoaXMuY21zLmlzQ29sdW1uTW92aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLmRyYWdnZWRDb2x1bW4gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5jb2x1bW4uZ3JpZC5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVHaG9zdChwYWdlWCwgcGFnZVkpIHtcbiAgICAgICAgc3VwZXIuY3JlYXRlR2hvc3QocGFnZVgsIHBhZ2VZKTtcblxuICAgICAgICB0aGlzLmdob3N0RWxlbWVudC5zdHlsZS5oZWlnaHQgPSBudWxsO1xuICAgICAgICB0aGlzLmdob3N0RWxlbWVudC5zdHlsZS5taW5XaWR0aCA9IG51bGw7XG4gICAgICAgIHRoaXMuZ2hvc3RFbGVtZW50LnN0eWxlLmZsZXhCYXNpcyA9IG51bGw7XG4gICAgICAgIHRoaXMuZ2hvc3RFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gbnVsbDtcblxuICAgICAgICBjb25zdCBpY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpO1xuICAgICAgICBjb25zdCB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2Jsb2NrJyk7XG4gICAgICAgIGljb24uYXBwZW5kQ2hpbGQodGV4dCk7XG5cbiAgICAgICAgaWNvbi5jbGFzc0xpc3QuYWRkKCdtYXRlcmlhbC1pY29ucycpO1xuICAgICAgICB0aGlzLmNtcy5pY29uID0gaWNvbjtcblxuICAgICAgICBpZiAoIXRoaXMuY29sdW1uLmNvbHVtbkdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGljb24sIHRoaXMuZ2hvc3RJbWdJY29uQ2xhc3MpO1xuXG4gICAgICAgICAgICB0aGlzLmdob3N0RWxlbWVudC5pbnNlcnRCZWZvcmUoaWNvbiwgdGhpcy5naG9zdEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQpO1xuXG4gICAgICAgICAgICB0aGlzLmdob3N0TGVmdCA9IHRoaXMuX2dob3N0U3RhcnRYID0gcGFnZVggLSAoKHRoaXMuZ2hvc3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC8gMykgKiAyKTtcbiAgICAgICAgICAgIHRoaXMuZ2hvc3RUb3AgPSB0aGlzLl9naG9zdFN0YXJ0WSA9IHBhZ2VZIC0gKCh0aGlzLmdob3N0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgLyAzKSAqIDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5naG9zdEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGljb24sIHRoaXMuZ2hvc3RFbGVtZW50LmNoaWxkTm9kZXNbMF0pO1xuXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGljb24sIHRoaXMuZ2hvc3RJbWdJY29uR3JvdXBDbGFzcyk7XG4gICAgICAgICAgICB0aGlzLmdob3N0RWxlbWVudC5jaGlsZHJlblswXS5zdHlsZS5wYWRkaW5nTGVmdCA9ICcwcHgnO1xuXG4gICAgICAgICAgICB0aGlzLmdob3N0TGVmdCA9IHRoaXMuX2dob3N0U3RhcnRYID0gcGFnZVggLSAoKHRoaXMuZ2hvc3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC8gMykgKiAyKTtcbiAgICAgICAgICAgIHRoaXMuZ2hvc3RUb3AgPSB0aGlzLl9naG9zdFN0YXJ0WSA9IHBhZ2VZIC0gKCh0aGlzLmdob3N0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgLyAzKSAqIDIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmUoKSB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbiQpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uJC51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24kID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==