UNPKG

ng-devui

Version:

DevUI components based on Angular

180 lines 21.6 kB
import { Directive, EventEmitter, Input, Output, Self } from '@angular/core'; import { DragDropService } from '../services/drag-drop.service'; import { DraggableDirective } from './draggable.directive'; import * as i0 from "@angular/core"; import * as i1 from "./draggable.directive"; import * as i2 from "../services/drag-drop.service"; export class BatchDraggableDirective { constructor(draggable, dragDropService) { this.draggable = draggable; this.dragDropService = dragDropService; this.batchDragGroup = 'default'; this.batchDragActive = false; this.batchDragLastOneAutoActiveEventKeys = ['ctrlKey']; this.batchDragStyle = ['badge', 'stack']; this.batchDragActiveEvent = new EventEmitter(); this.needToRestore = false; this.draggable.batchDraggable = this; } ngOnInit() { this.initDragDataByIdentity(); } ngOnDestroy() { this.draggable.batchDraggable = undefined; if (this.dragData) { if (this.dragData.draggable === this.draggable) { this.dragData.draggable = undefined; if (!this.dragData.identity) { this.removeFromBatchGroup(); } } } } ngOnChanges(changes) { if (changes.batchDragActive) { if (!this.initDragDataByIdentity()) { if (this.batchDragActive) { if (!this.dragData && this.allowAddToBatchGroup()) { this.addToBatchGroup(); } } else { this.removeFromBatchGroup(); } } } } ngAfterViewInit() { if (this.needToRestore) { this.restoreDragDataViewAfterViewInit(); this.needToRestore = false; } } initDragDataByIdentity() { const dragData = this.findInBatchDragDataByIdentities(); if (dragData) { if (this.batchDragActive) { if (!this.dragData) { this.addToBatchGroup(dragData); this.registerRestoreDragDataViewAfterViewInitWhiteDragging(); } } else { this.removeFromBatchGroup(dragData); } } return dragData; } registerRestoreDragDataViewAfterViewInitWhiteDragging() { if (this.dragDropService.draggedEl && this.dragDropService.draggedElIdentity && this.dragDropService.draggedEl !== this.draggable.el.nativeElement) { this.needToRestore = true; } } restoreDragDataViewAfterViewInit() { const draggable = this.draggable; if (draggable.originPlaceholder && draggable.originPlaceholder.show !== false) { draggable.insertOriginPlaceholder(true, false); } draggable.el.nativeElement.style.display = 'none'; } allowAddToBatchGroup() { if (!this.dragDropService.batchDragGroup) { return true; } else { return this.batchDragGroup === this.dragDropService.batchDragGroup; } } addToBatchGroup(dragData) { this.dragDropService.batchDragGroup = this.dragDropService.batchDragGroup || this.batchDragGroup; if (dragData) { dragData.draggable = this.draggable; dragData.dragData = this.draggable.dragData; this.dragData = dragData; } else { this.dragData = this.dragData || { identity: this.draggable.dragIdentity || undefined, draggable: this.draggable, dragData: this.draggable.dragData, }; this.dragDropService.batchDragData = this.addToArrayIfNotExist(this.dragDropService.batchDragData, this.dragData); } } removeFromBatchGroup(dragData) { this.deleteFromArrayIfExist(this.dragDropService.batchDragData, dragData || this.dragData); this.dragData = undefined; if (!(this.dragDropService.batchDragData && this.dragDropService.batchDragData.length)) { this.dragDropService.batchDragGroup = undefined; } } addToArrayIfNotExist(array, target) { array = array || []; if (array.indexOf(target) === -1) { array.push(target); } return array; } deleteFromArrayIfExist(array, target) { if (!array) { return; } if (array.length > 0) { const index = array.indexOf(target); if (index > -1) { array.splice(index, 1); } } return array; } findInBatchDragDataByIdentities() { if (!this.draggable.dragIdentity) { return null; } else if (!this.dragDropService.batchDragData) { return undefined; } else { return this.dragDropService.batchDragData.filter((dragData) => dragData.identity === this.draggable.dragIdentity).pop(); } } active() { this.batchDragActiveEvent.emit({ el: this.draggable.el.nativeElement, data: this.draggable.dragData }); } updateDragData() { // 选中状态才更新 if (!this.dragData) { return; } // 需要维持内存地址不变 Object.assign(this.dragData, { identity: this.draggable.dragIdentity || undefined, draggable: this.draggable, dragData: this.draggable.dragData, }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BatchDraggableDirective, deps: [{ token: i1.DraggableDirective, self: true }, { token: i2.DragDropService }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: BatchDraggableDirective, selector: "[dDraggable][batchDrag]", inputs: { batchDragGroup: "batchDragGroup", batchDragActive: "batchDragActive", batchDragLastOneAutoActiveEventKeys: "batchDragLastOneAutoActiveEventKeys", batchDragStyle: "batchDragStyle" }, outputs: { batchDragActiveEvent: "batchDragActiveEvent" }, exportAs: ["dBatchDraggable"], usesOnChanges: true, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BatchDraggableDirective, decorators: [{ type: Directive, args: [{ selector: '[dDraggable][batchDrag]', exportAs: 'dBatchDraggable', }] }], ctorParameters: () => [{ type: i1.DraggableDirective, decorators: [{ type: Self }] }, { type: i2.DragDropService }], propDecorators: { batchDragGroup: [{ type: Input }], batchDragActive: [{ type: Input }], batchDragLastOneAutoActiveEventKeys: [{ type: Input }], batchDragStyle: [{ type: Input }], batchDragActiveEvent: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2gtZHJhZ2dhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RldnVpL2RyYWdkcm9wL2RpcmVjdGl2ZXMvYmF0Y2gtZHJhZ2dhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFPM0QsTUFBTSxPQUFPLHVCQUF1QjtJQVNsQyxZQUE0QixTQUE2QixFQUFVLGVBQWdDO1FBQXZFLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBUjFGLG1CQUFjLEdBQUcsU0FBUyxDQUFDO1FBQzNCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLHdDQUFtQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsbUJBQWMsR0FBMEIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUQseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV6RCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUdwQixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUMxQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLElB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RUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFTSxjQUFjO1FBQ25CLFVBQVU7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE9BQU87UUFDVCxDQUFDO1FBQ0QsYUFBYTtRQUNiLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLElBQUksU0FBUztZQUNsRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTVKVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1Qjs7MEJBVWMsSUFBSTt1RUFSUixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csbUNBQW1DO3NCQUEzQyxLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNlbGYsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHJhZ0Ryb3BTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZHJhZy1kcm9wLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEcmFnZ2FibGVEaXJlY3RpdmUgfSBmcm9tICcuL2RyYWdnYWJsZS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgdHlwZSBCYXRjaERyYWdTdHlsZSA9ICdiYWRnZScgfCAnc3RhY2snIHwgc3RyaW5nO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZERyYWdnYWJsZV1bYmF0Y2hEcmFnXScsXHJcbiAgZXhwb3J0QXM6ICdkQmF0Y2hEcmFnZ2FibGUnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmF0Y2hEcmFnZ2FibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBiYXRjaERyYWdHcm91cCA9ICdkZWZhdWx0JztcclxuICBASW5wdXQoKSBiYXRjaERyYWdBY3RpdmUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBiYXRjaERyYWdMYXN0T25lQXV0b0FjdGl2ZUV2ZW50S2V5cyA9IFsnY3RybEtleSddO1xyXG4gIEBJbnB1dCgpIGJhdGNoRHJhZ1N0eWxlOiBBcnJheTxCYXRjaERyYWdTdHlsZT4gPSBbJ2JhZGdlJywgJ3N0YWNrJ107XHJcbiAgQE91dHB1dCgpIGJhdGNoRHJhZ0FjdGl2ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgZHJhZ0RhdGE7XHJcbiAgbmVlZFRvUmVzdG9yZSA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAU2VsZigpIHByaXZhdGUgZHJhZ2dhYmxlOiBEcmFnZ2FibGVEaXJlY3RpdmUsIHByaXZhdGUgZHJhZ0Ryb3BTZXJ2aWNlOiBEcmFnRHJvcFNlcnZpY2UpIHtcclxuICAgIHRoaXMuZHJhZ2dhYmxlLmJhdGNoRHJhZ2dhYmxlID0gdGhpcztcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbml0RHJhZ0RhdGFCeUlkZW50aXR5KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZHJhZ2dhYmxlLmJhdGNoRHJhZ2dhYmxlID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKHRoaXMuZHJhZ0RhdGEpIHtcclxuICAgICAgaWYgKHRoaXMuZHJhZ0RhdGEuZHJhZ2dhYmxlID09PSB0aGlzLmRyYWdnYWJsZSkge1xyXG4gICAgICAgIHRoaXMuZHJhZ0RhdGEuZHJhZ2dhYmxlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICghdGhpcy5kcmFnRGF0YS5pZGVudGl0eSkge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVGcm9tQmF0Y2hHcm91cCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuYmF0Y2hEcmFnQWN0aXZlKSB7XHJcbiAgICAgIGlmICghdGhpcy5pbml0RHJhZ0RhdGFCeUlkZW50aXR5KCkpIHtcclxuICAgICAgICBpZiAodGhpcy5iYXRjaERyYWdBY3RpdmUpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5kcmFnRGF0YSAmJiB0aGlzLmFsbG93QWRkVG9CYXRjaEdyb3VwKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRUb0JhdGNoR3JvdXAoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVGcm9tQmF0Y2hHcm91cCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5uZWVkVG9SZXN0b3JlKSB7XHJcbiAgICAgIHRoaXMucmVzdG9yZURyYWdEYXRhVmlld0FmdGVyVmlld0luaXQoKTtcclxuICAgICAgdGhpcy5uZWVkVG9SZXN0b3JlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGluaXREcmFnRGF0YUJ5SWRlbnRpdHkoKSB7XHJcbiAgICBjb25zdCBkcmFnRGF0YSA9IHRoaXMuZmluZEluQmF0Y2hEcmFnRGF0YUJ5SWRlbnRpdGllcygpO1xyXG4gICAgaWYgKGRyYWdEYXRhKSB7XHJcbiAgICAgIGlmICh0aGlzLmJhdGNoRHJhZ0FjdGl2ZSkge1xyXG4gICAgICAgIGlmICghdGhpcy5kcmFnRGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5hZGRUb0JhdGNoR3JvdXAoZHJhZ0RhdGEpO1xyXG4gICAgICAgICAgdGhpcy5yZWdpc3RlclJlc3RvcmVEcmFnRGF0YVZpZXdBZnRlclZpZXdJbml0V2hpdGVEcmFnZ2luZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUZyb21CYXRjaEdyb3VwKGRyYWdEYXRhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRyYWdEYXRhO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJSZXN0b3JlRHJhZ0RhdGFWaWV3QWZ0ZXJWaWV3SW5pdFdoaXRlRHJhZ2dpbmcoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmRyYWdnZWRFbCAmJlxyXG4gICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5kcmFnZ2VkRWxJZGVudGl0eSAmJlxyXG4gICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5kcmFnZ2VkRWwgIT09IHRoaXMuZHJhZ2dhYmxlLmVsLm5hdGl2ZUVsZW1lbnRcclxuICAgICkge1xyXG4gICAgICB0aGlzLm5lZWRUb1Jlc3RvcmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXN0b3JlRHJhZ0RhdGFWaWV3QWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGNvbnN0IGRyYWdnYWJsZSA9IHRoaXMuZHJhZ2dhYmxlO1xyXG4gICAgaWYgKGRyYWdnYWJsZS5vcmlnaW5QbGFjZWhvbGRlciAmJiBkcmFnZ2FibGUub3JpZ2luUGxhY2Vob2xkZXIuc2hvdyAhPT0gZmFsc2UpIHtcclxuICAgICAgZHJhZ2dhYmxlLmluc2VydE9yaWdpblBsYWNlaG9sZGVyKHRydWUsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIGRyYWdnYWJsZS5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgfVxyXG5cclxuICBhbGxvd0FkZFRvQmF0Y2hHcm91cCgpIHtcclxuICAgIGlmICghdGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnR3JvdXApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5iYXRjaERyYWdHcm91cCA9PT0gdGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnR3JvdXA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFkZFRvQmF0Y2hHcm91cChkcmFnRGF0YT8pIHtcclxuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmJhdGNoRHJhZ0dyb3VwID0gdGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnR3JvdXAgfHwgdGhpcy5iYXRjaERyYWdHcm91cDtcclxuICAgIGlmIChkcmFnRGF0YSkge1xyXG4gICAgICBkcmFnRGF0YS5kcmFnZ2FibGUgPSB0aGlzLmRyYWdnYWJsZTtcclxuICAgICAgZHJhZ0RhdGEuZHJhZ0RhdGEgPSB0aGlzLmRyYWdnYWJsZS5kcmFnRGF0YTtcclxuICAgICAgdGhpcy5kcmFnRGF0YSA9IGRyYWdEYXRhO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kcmFnRGF0YSA9IHRoaXMuZHJhZ0RhdGEgfHwge1xyXG4gICAgICAgIGlkZW50aXR5OiB0aGlzLmRyYWdnYWJsZS5kcmFnSWRlbnRpdHkgfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgIGRyYWdnYWJsZTogdGhpcy5kcmFnZ2FibGUsXHJcbiAgICAgICAgZHJhZ0RhdGE6IHRoaXMuZHJhZ2dhYmxlLmRyYWdEYXRhLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdEYXRhID0gdGhpcy5hZGRUb0FycmF5SWZOb3RFeGlzdCh0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdEYXRhLCB0aGlzLmRyYWdEYXRhKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVtb3ZlRnJvbUJhdGNoR3JvdXAoZHJhZ0RhdGE/KSB7XHJcbiAgICB0aGlzLmRlbGV0ZUZyb21BcnJheUlmRXhpc3QodGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnRGF0YSwgZHJhZ0RhdGEgfHwgdGhpcy5kcmFnRGF0YSk7XHJcbiAgICB0aGlzLmRyYWdEYXRhID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKCEodGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnRGF0YSAmJiB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdEYXRhLmxlbmd0aCkpIHtcclxuICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnR3JvdXAgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFRvQXJyYXlJZk5vdEV4aXN0KGFycmF5OiBhbnlbXSwgdGFyZ2V0OiBhbnkpIHtcclxuICAgIGFycmF5ID0gYXJyYXkgfHwgW107XHJcbiAgICBpZiAoYXJyYXkuaW5kZXhPZih0YXJnZXQpID09PSAtMSkge1xyXG4gICAgICBhcnJheS5wdXNoKHRhcmdldCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlbGV0ZUZyb21BcnJheUlmRXhpc3QoYXJyYXk6IGFueVtdLCB0YXJnZXQ6IGFueSkge1xyXG4gICAgaWYgKCFhcnJheSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoYXJyYXkubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGFycmF5LmluZGV4T2YodGFyZ2V0KTtcclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRJbkJhdGNoRHJhZ0RhdGFCeUlkZW50aXRpZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZHJhZ2dhYmxlLmRyYWdJZGVudGl0eSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmJhdGNoRHJhZ0RhdGEpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdEYXRhLmZpbHRlcigoZHJhZ0RhdGEpID0+IGRyYWdEYXRhLmlkZW50aXR5ID09PSB0aGlzLmRyYWdnYWJsZS5kcmFnSWRlbnRpdHkpLnBvcCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aXZlKCkge1xyXG4gICAgdGhpcy5iYXRjaERyYWdBY3RpdmVFdmVudC5lbWl0KHsgZWw6IHRoaXMuZHJhZ2dhYmxlLmVsLm5hdGl2ZUVsZW1lbnQsIGRhdGE6IHRoaXMuZHJhZ2dhYmxlLmRyYWdEYXRhIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZURyYWdEYXRhKCkge1xyXG4gICAgLy8g6YCJ5Lit54q25oCB5omN5pu05pawXHJcbiAgICBpZiAoIXRoaXMuZHJhZ0RhdGEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8g6ZyA6KaB57u05oyB5YaF5a2Y5Zyw5Z2A5LiN5Y+YXHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuZHJhZ0RhdGEsIHtcclxuICAgICAgaWRlbnRpdHk6IHRoaXMuZHJhZ2dhYmxlLmRyYWdJZGVudGl0eSB8fCB1bmRlZmluZWQsXHJcbiAgICAgIGRyYWdnYWJsZTogdGhpcy5kcmFnZ2FibGUsXHJcbiAgICAgIGRyYWdEYXRhOiB0aGlzLmRyYWdnYWJsZS5kcmFnRGF0YSxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=