UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

324 lines 24.4 kB
/** * @fileoverview added by tsickle * Generated from: directives/batch-draggable.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, Input, Self, Output, EventEmitter } from '@angular/core'; import { DragDropService } from '../services/drag-drop.service'; import { DraggableDirective } from './draggable.directive'; var BatchDraggableDirective = /** @class */ (function () { function BatchDraggableDirective(draggable, dragDropService) { this.draggable = draggable; this.dragDropService = dragDropService; this.batchDragGroup = 'default'; this.batchDragActive = false; this.batchDragLastOneAutoActiveEventKeys = ['ctrlKey']; this.batchDragActiveEvent = new EventEmitter(); this.needToRestore = false; this.batchDragStyle = ['badge', 'stack']; this.draggable.batchDraggable = this; } /** * @return {?} */ BatchDraggableDirective.prototype.ngOnInit = /** * @return {?} */ function () { this.initDragDataByIdentity(); }; /** * @return {?} */ BatchDraggableDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { this.draggable.batchDraggable = undefined; if (this.dragData) { if (this.dragData.draggable === this.draggable) { this.dragData.draggable = undefined; if (!this.dragData.identity) { this.removeFromBatchGroup(); } } } }; /** * @param {?} changes * @return {?} */ BatchDraggableDirective.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { if (changes['batchDragActive']) { if (!this.initDragDataByIdentity()) { if (this.batchDragActive) { if (!this.dragData && this.allowAddToBatchGroup()) { this.addToBatchGroup(); } } else { this.removeFromBatchGroup(); } } } }; /** * @return {?} */ BatchDraggableDirective.prototype.ngAfterViewInit = /** * @return {?} */ function () { if (this.needToRestore) { this.restoreDragDataViewAfterViewInit(); this.needToRestore = false; } }; /** * @return {?} */ BatchDraggableDirective.prototype.initDragDataByIdentity = /** * @return {?} */ function () { /** @type {?} */ var dragData = this.findInBatchDragDataByIdentities(); if (dragData) { if (this.batchDragActive) { if (!this.dragData) { this.addToBatchGroup(dragData); this.registerRestoreDragDataViewAfterViewInitWhiteDragging(); } } else { this.removeFromBatchGroup(dragData); } } return dragData; }; /** * @return {?} */ BatchDraggableDirective.prototype.registerRestoreDragDataViewAfterViewInitWhiteDragging = /** * @return {?} */ function () { if (this.dragDropService.draggedEl && this.dragDropService.draggedElIdentity && this.dragDropService.draggedEl !== this.draggable.el.nativeElement) { this.needToRestore = true; } }; /** * @return {?} */ BatchDraggableDirective.prototype.restoreDragDataViewAfterViewInit = /** * @return {?} */ function () { /** @type {?} */ var draggable = this.draggable; if (draggable.originPlaceholder && draggable.originPlaceholder.show !== false) { draggable.insertOriginPlaceholder(true, false); } draggable.el.nativeElement.style.display = 'none'; }; /** * @return {?} */ BatchDraggableDirective.prototype.allowAddToBatchGroup = /** * @return {?} */ function () { if (!this.dragDropService.batchDragGroup) { return true; } else { return this.batchDragGroup === this.dragDropService.batchDragGroup; } }; /** * @param {?=} dragData * @return {?} */ BatchDraggableDirective.prototype.addToBatchGroup = /** * @param {?=} dragData * @return {?} */ function (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); } }; /** * @param {?=} dragData * @return {?} */ BatchDraggableDirective.prototype.removeFromBatchGroup = /** * @param {?=} dragData * @return {?} */ function (dragData) { this.deleteFromArrayIfExist(this.dragDropService.batchDragData, dragData || this.dragData); this.dragData = undefined; if (!(this.dragDropService.batchDragData && this.dragDropService.batchDragData.length)) { this.dragDropService.batchDragGroup = undefined; } }; /** * @private * @param {?} array * @param {?} target * @return {?} */ BatchDraggableDirective.prototype.addToArrayIfNotExist = /** * @private * @param {?} array * @param {?} target * @return {?} */ function (array, target) { array = array || []; if (array.indexOf(target) === -1) { array.push(target); } return array; }; /** * @private * @param {?} array * @param {?} target * @return {?} */ BatchDraggableDirective.prototype.deleteFromArrayIfExist = /** * @private * @param {?} array * @param {?} target * @return {?} */ function (array, target) { if (!array) { return; } if (array.length > 0) { /** @type {?} */ var index = array.indexOf(target); if (index > -1) { array.splice(index, 1); } } return array; }; /** * @private * @return {?} */ BatchDraggableDirective.prototype.findInBatchDragDataByIdentities = /** * @private * @return {?} */ function () { var _this = this; if (!this.draggable.dragIdentity) { return null; } else if (!this.dragDropService.batchDragData) { return undefined; } else { return this.dragDropService.batchDragData.filter((/** * @param {?} dragData * @return {?} */ function (dragData) { return dragData.identity === _this.draggable.dragIdentity; })).pop(); } }; /** * @return {?} */ BatchDraggableDirective.prototype.active = /** * @return {?} */ function () { this.batchDragActiveEvent.emit({ el: this.draggable.el.nativeElement, data: this.draggable.dragData }); }; /** * @return {?} */ BatchDraggableDirective.prototype.updateDragData = /** * @return {?} */ function () { // 选中状态才更新 if (!this.dragData) { return; } // 需要维持内存地址不变 Object.assign(this.dragData, { identity: this.draggable.dragIdentity || undefined, draggable: this.draggable, dragData: this.draggable.dragData }); }; BatchDraggableDirective.decorators = [ { type: Directive, args: [{ selector: '[dDraggable][batchDrag]', exportAs: 'dBatchDraggable' },] } ]; /** @nocollapse */ BatchDraggableDirective.ctorParameters = function () { return [ { type: DraggableDirective, decorators: [{ type: Self }] }, { type: DragDropService } ]; }; BatchDraggableDirective.propDecorators = { batchDragGroup: [{ type: Input }], batchDragActive: [{ type: Input }], batchDragLastOneAutoActiveEventKeys: [{ type: Input }], batchDragActiveEvent: [{ type: Output }], batchDragStyle: [{ type: Input }] }; return BatchDraggableDirective; }()); export { BatchDraggableDirective }; if (false) { /** @type {?} */ BatchDraggableDirective.prototype.batchDragGroup; /** @type {?} */ BatchDraggableDirective.prototype.batchDragActive; /** @type {?} */ BatchDraggableDirective.prototype.batchDragLastOneAutoActiveEventKeys; /** @type {?} */ BatchDraggableDirective.prototype.batchDragActiveEvent; /** @type {?} */ BatchDraggableDirective.prototype.dragData; /** @type {?} */ BatchDraggableDirective.prototype.needToRestore; /** @type {?} */ BatchDraggableDirective.prototype.batchDragStyle; /** * @type {?} * @private */ BatchDraggableDirective.prototype.draggable; /** * @type {?} * @private */ BatchDraggableDirective.prototype.dragDropService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2gtZHJhZ2dhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL2RyYWdkcm9wLyIsInNvdXJjZXMiOlsiZGlyZWN0aXZlcy9iYXRjaC1kcmFnZ2FibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLElBQUksRUFBb0MsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFM0Q7SUFjRSxpQ0FBNEIsU0FBNkIsRUFBVyxlQUFnQztRQUF4RSxjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUFXLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQVIzRixtQkFBYyxHQUFHLFNBQVMsQ0FBQztRQUMzQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4Qix3Q0FBbUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFcEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDYixtQkFBYyxHQUEwQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUdsRSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQzs7OztJQUVELDBDQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Ozs7SUFFRCw2Q0FBVzs7O0lBQVg7UUFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDMUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssSUFBSSxD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TSxnREFBYzs7O0lBQXJCO1FBQ0UsVUFBVTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUMsT0FBTztTQUFFO1FBQzlCLGFBQWE7UUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxJQUFJLFNBQVM7WUFDbEQsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0JBN0pGLFNBQVMsU0FBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUUsaUJBQWlCO2lCQUM5Qjs7OztnQkFMUSxrQkFBa0IsdUJBZ0JaLElBQUk7Z0JBakJWLGVBQWU7OztpQ0FTckIsS0FBSztrQ0FDTCxLQUFLO3NEQUNMLEtBQUs7dUNBQ0wsTUFBTTtpQ0FHTixLQUFLOztJQWtKUiw4QkFBQztDQUFBLEFBOUpELElBOEpDO1NBekpZLHVCQUF1Qjs7O0lBQ2xDLGlEQUFvQzs7SUFDcEMsa0RBQWlDOztJQUNqQyxzRUFBMkQ7O0lBQzNELHVEQUFvRDs7SUFDcEQsMkNBQVM7O0lBQ1QsZ0RBQXNCOztJQUN0QixpREFBb0U7Ozs7O0lBRXhELDRDQUE2Qzs7Ozs7SUFBRyxrREFBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFNlbGYsIE9uRGVzdHJveSwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEcmFnRHJvcFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kcmFnLWRyb3Auc2VydmljZSc7XHJcbmltcG9ydCB7IERyYWdnYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vZHJhZ2dhYmxlLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCB0eXBlIEJhdGNoRHJhZ1N0eWxlID0gJ2JhZGdlJyB8ICdzdGFjaycgfCBzdHJpbmc7XHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbZERyYWdnYWJsZV1bYmF0Y2hEcmFnXScsXHJcbiAgICBleHBvcnRBczogJ2RCYXRjaERyYWdnYWJsZSdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXRjaERyYWdnYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGJhdGNoRHJhZ0dyb3VwID0gJ2RlZmF1bHQnO1xyXG4gIEBJbnB1dCgpIGJhdGNoRHJhZ0FjdGl2ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGJhdGNoRHJhZ0xhc3RPbmVBdXRvQWN0aXZlRXZlbnRLZXlzID0gWydjdHJsS2V5J107XHJcbiAgQE91dHB1dCgpIGJhdGNoRHJhZ0FjdGl2ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGRyYWdEYXRhO1xyXG4gIG5lZWRUb1Jlc3RvcmUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBiYXRjaERyYWdTdHlsZTogQXJyYXk8QmF0Y2hEcmFnU3R5bGU+ID0gWydiYWRnZScsICdzdGFjayddO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAU2VsZigpIHByaXZhdGUgZHJhZ2dhYmxlOiBEcmFnZ2FibGVEaXJlY3RpdmUsICBwcml2YXRlIGRyYWdEcm9wU2VydmljZTogRHJhZ0Ryb3BTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmRyYWdnYWJsZS5iYXRjaERyYWdnYWJsZSA9IHRoaXM7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdERyYWdEYXRhQnlJZGVudGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRyYWdnYWJsZS5iYXRjaERyYWdnYWJsZSA9IHVuZGVmaW5lZDtcclxuICAgIGlmICh0aGlzLmRyYWdEYXRhKSB7XHJcbiAgICAgIGlmICh0aGlzLmRyYWdEYXRhLmRyYWdnYWJsZSA9PT0gdGhpcy5kcmFnZ2FibGUpIHtcclxuICAgICAgICB0aGlzLmRyYWdEYXRhLmRyYWdnYWJsZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoIXRoaXMuZHJhZ0RhdGEuaWRlbnRpdHkpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbUJhdGNoR3JvdXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snYmF0Y2hEcmFnQWN0aXZlJ10pICB7XHJcbiAgICAgIGlmICghdGhpcy5pbml0RHJhZ0RhdGFCeUlkZW50aXR5KCkpIHtcclxuICAgICAgICBpZiAodGhpcy5iYXRjaERyYWdBY3RpdmUpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5kcmFnRGF0YSAmJiB0aGlzLmFsbG93QWRkVG9CYXRjaEdyb3VwKCkpIHtcclxuICAgICAgICAgICB0aGlzLmFkZFRvQmF0Y2hHcm91cCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbUJhdGNoR3JvdXAoKTtcclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm5lZWRUb1Jlc3RvcmUpIHtcclxuICAgICAgdGhpcy5yZXN0b3JlRHJhZ0RhdGFWaWV3QWZ0ZXJWaWV3SW5pdCgpO1xyXG4gICAgICB0aGlzLm5lZWRUb1Jlc3RvcmUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgaW5pdERyYWdEYXRhQnlJZGVudGl0eSgpIHtcclxuICAgIGNvbnN0IGRyYWdEYXRhID0gdGhpcy5maW5kSW5CYXRjaERyYWdEYXRhQnlJZGVudGl0aWVzKCk7XHJcbiAgICBpZiAoZHJhZ0RhdGEpIHtcclxuICAgICAgaWYgKHRoaXMuYmF0Y2hEcmFnQWN0aXZlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRyYWdEYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmFkZFRvQmF0Y2hHcm91cChkcmFnRGF0YSk7XHJcbiAgICAgICAgICB0aGlzLnJlZ2lzdGVyUmVzdG9yZURyYWdEYXRhVmlld0FmdGVyVmlld0luaXRXaGl0ZURyYWdnaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlRnJvbUJhdGNoR3JvdXAoZHJhZ0RhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZHJhZ0RhdGE7XHJcbiAgfVxyXG5cclxuICByZWdpc3RlclJlc3RvcmVEcmFnRGF0YVZpZXdBZnRlclZpZXdJbml0V2hpdGVEcmFnZ2luZygpIHtcclxuICAgIGlmICh0aGlzLmRyYWdEcm9wU2VydmljZS5kcmFnZ2VkRWwgJiYgdGhpcy5kcmFnRHJvcFNlcnZpY2UuZHJhZ2dlZEVsSWRlbnRpdHkgJiZcclxuICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuZHJhZ2dlZEVsICE9PSB0aGlzLmRyYWdnYWJsZS5lbC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMubmVlZFRvUmVzdG9yZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlc3RvcmVEcmFnRGF0YVZpZXdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgY29uc3QgZHJhZ2dhYmxlID0gdGhpcy5kcmFnZ2FibGU7XHJcbiAgICBpZiAoZHJhZ2dhYmxlLm9yaWdpblBsYWNlaG9sZGVyICYmIGRyYWdnYWJsZS5vcmlnaW5QbGFjZWhvbGRlci5zaG93ICE9PSBmYWxzZSkge1xyXG4gICAgICAgIGRyYWdnYWJsZS5pbnNlcnRPcmlnaW5QbGFjZWhvbGRlcih0cnVlLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBkcmFnZ2FibGUuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gIH1cclxuXHJcblxyXG4gIGFsbG93QWRkVG9CYXRjaEdyb3VwKCkge1xyXG4gICAgaWYgKCF0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdHcm91cCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmJhdGNoRHJhZ0dyb3VwID09PSB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdHcm91cDtcclxuICAgIH1cclxuICB9XHJcbiAgYWRkVG9CYXRjaEdyb3VwKGRyYWdEYXRhPykge1xyXG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnR3JvdXAgPSB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdHcm91cCB8fCB0aGlzLmJhdGNoRHJhZ0dyb3VwO1xyXG4gICAgaWYgKGRyYWdEYXRhKSB7XHJcbiAgICAgIGRyYWdEYXRhLmRyYWdnYWJsZSA9IHRoaXMuZHJhZ2dhYmxlO1xyXG4gICAgICBkcmFnRGF0YS5kcmFnRGF0YSA9IHRoaXMuZHJhZ2dhYmxlLmRyYWdEYXRhO1xyXG4gICAgICB0aGlzLmRyYWdEYXRhID0gZHJhZ0RhdGE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRyYWdEYXRhID0gdGhpcy5kcmFnRGF0YSB8fOOAgHtcclxuICAgICAgICBpZGVudGl0eTogdGhpcy5kcmFnZ2FibGUuZHJhZ0lkZW50aXR5IHx8IHVuZGVmaW5lZCxcclxuICAgICAgICBkcmFnZ2FibGU6IHRoaXMuZHJhZ2dhYmxlLFxyXG4gICAgICAgIGRyYWdEYXRhOiB0aGlzLmRyYWdnYWJsZS5kcmFnRGF0YVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdEYXRhID0gdGhpcy5hZGRUb0FycmF5SWZOb3RFeGlzdCh0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdEYXRhLCB0aGlzLmRyYWdEYXRhKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVtb3ZlRnJvbUJhdGNoR3JvdXAoZHJhZ0RhdGE/KSB7XHJcbiAgICB0aGlzLmRlbGV0ZUZyb21BcnJheUlmRXhpc3QodGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnRGF0YSwgZHJhZ0RhdGEgfHwgdGhpcy5kcmFnRGF0YSk7XHJcbiAgICB0aGlzLmRyYWdEYXRhID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKCEodGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnRGF0YSAmJiB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdEYXRhLmxlbmd0aCkpIHtcclxuICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnR3JvdXAgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFRvQXJyYXlJZk5vdEV4aXN0KGFycmF5OiBhbnlbXSwgdGFyZ2V0OiBhbnkpIHtcclxuICAgIGFycmF5ID0gYXJyYXkgfHwgW107XHJcbiAgICBpZiAoYXJyYXkuaW5kZXhPZih0YXJnZXQpID09PSAtMSkge1xyXG4gICAgICBhcnJheS5wdXNoKHRhcmdldCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBkZWxldGVGcm9tQXJyYXlJZkV4aXN0KGFycmF5OiBhbnlbXSwgdGFyZ2V0OiBhbnkpIHtcclxuICAgIGlmICghYXJyYXkpIHsgcmV0dXJuOyB9XHJcbiAgICBpZiAoYXJyYXkubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGFycmF5LmluZGV4T2YodGFyZ2V0KTtcclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRJbkJhdGNoRHJhZ0RhdGFCeUlkZW50aXRpZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZHJhZ2dhYmxlLmRyYWdJZGVudGl0eSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmJhdGNoRHJhZ0RhdGEpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdEYXRhLmZpbHRlcihkcmFnRGF0YSA9PiBkcmFnRGF0YS5pZGVudGl0eSA9PT0gdGhpcy5kcmFnZ2FibGUuZHJhZ0lkZW50aXR5KS5wb3AoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGl2ZSgpIHtcclxuICAgIHRoaXMuYmF0Y2hEcmFnQWN0aXZlRXZlbnQuZW1pdCh7ZWw6IHRoaXMuZHJhZ2dhYmxlLmVsLm5hdGl2ZUVsZW1lbnQsIGRhdGE6IHRoaXMuZHJhZ2dhYmxlLmRyYWdEYXRhfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlRHJhZ0RhdGEoKSB7XHJcbiAgICAvLyDpgInkuK3nirbmgIHmiY3mm7TmlrBcclxuICAgIGlmICghdGhpcy5kcmFnRGF0YSkge3JldHVybjsgfVxyXG4gICAgLy8g6ZyA6KaB57u05oyB5YaF5a2Y5Zyw5Z2A5LiN5Y+YXHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuZHJhZ0RhdGEsIHtcclxuICAgICAgaWRlbnRpdHk6IHRoaXMuZHJhZ2dhYmxlLmRyYWdJZGVudGl0eSB8fCB1bmRlZmluZWQsXHJcbiAgICAgIGRyYWdnYWJsZTogdGhpcy5kcmFnZ2FibGUsXHJcbiAgICAgIGRyYWdEYXRhOiB0aGlzLmRyYWdnYWJsZS5kcmFnRGF0YVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==