@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
324 lines • 24.4 kB
JavaScript
/**
* @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2gtZHJhZ2dhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL2RyYWdkcm9wLyIsInNvdXJjZXMiOlsiZGlyZWN0aXZlcy9iYXRjaC1kcmFnZ2FibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLElBQUksRUFBb0MsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFM0Q7SUFjRSxpQ0FBNEIsU0FBNkIsRUFBVyxlQUFnQztRQUF4RSxjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUFXLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQVIzRixtQkFBYyxHQUFHLFNBQVMsQ0FBQztRQUMzQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4Qix3Q0FBbUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFcEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDYixtQkFBYyxHQUEwQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUdsRSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQzs7OztJQUVELDBDQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Ozs7SUFFRCw2Q0FBVzs7O0lBQVg7UUFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDMUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2lCQUM3QjthQUNGO1NBQ0Y7SUFFSCxDQUFDOzs7OztJQUVELDZDQUFXOzs7O0lBQVgsVUFBWSxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFHO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRTt3QkFDbEQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3FCQUN2QjtpQkFDRDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztpQkFDN0I7YUFDSDtTQUNGO0lBQ0gsQ0FBQzs7OztJQUNELGlEQUFlOzs7SUFBZjtRQUNFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztTQUM1QjtJQUNILENBQUM7Ozs7SUFDRCx3REFBc0I7OztJQUF0Qjs7WUFDUSxRQUFRLEdBQUcsSUFBSSxDQUFDLCtCQUErQixFQUFFO1FBQ3ZELElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLHFEQUFxRCxFQUFFLENBQUM7aUJBQzlEO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Y7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzs7O0lBRUQsdUZBQXFEOzs7SUFBckQ7UUFDRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCO1lBQzFFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRTtZQUNwRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUMzQjtJQUNILENBQUM7Ozs7SUFDRCxrRUFBZ0M7OztJQUFoQzs7WUFDUSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVM7UUFDaEMsSUFBSSxTQUFTLENBQUMsaUJBQWlCLElBQUksU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7WUFDM0UsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNsRDtRQUNELFNBQVMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3BELENBQUM7Ozs7SUFHRCxzREFBb0I7OztJQUFwQjtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUM7U0FDcEU7SUFDSCxDQUFDOzs7OztJQUNELGlEQUFlOzs7O0lBQWYsVUFBZ0IsUUFBUztRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ2pHLElBQUksUUFBUSxFQUFFO1lBQ1osUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDMUI7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSTtnQkFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxJQUFJLFNBQVM7Z0JBQ2xELFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTthQUNsQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNuSDtJQUNILENBQUM7Ozs7O0lBQ0Qsc0RBQW9COzs7O0lBQXBCLFVBQXFCLFFBQVM7UUFDNUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDMUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQzs7Ozs7OztJQUVPLHNEQUFvQjs7Ozs7O0lBQTVCLFVBQTZCLEtBQVksRUFBRSxNQUFXO1FBQ3BELEtBQUssR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3BCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNoQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BCO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7Ozs7O0lBR08sd0RBQXNCOzs7Ozs7SUFBOUIsVUFBK0IsS0FBWSxFQUFFLE1BQVc7UUFDdEQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUFFLE9BQU87U0FBRTtRQUN2QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOztnQkFDZCxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDbkMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDeEI7U0FDRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7Ozs7SUFFTyxpRUFBK0I7Ozs7SUFBdkM7UUFBQSxpQkFRQztRQVBDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQztTQUNiO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFO1lBQzlDLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLE1BQU07Ozs7WUFBQyxVQUFBLFFBQVEsSUFBSSxPQUFBLFFBQVEsQ0FBQyxRQUFRLEtBQUssS0FBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQWpELENBQWlELEVBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUN2SDtJQUNILENBQUM7Ozs7SUFFRCx3Q0FBTTs7O0lBQU47UUFDRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7Ozs7SUFFTSxnREFBYzs7O0lBQXJCO1FBQ0UsVUFBVTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUMsT0FBTztTQUFFO1FBQzlCLGFBQWE7UUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxJQUFJLFNBQVM7WUFDbEQsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0JBN0pGLFNBQVMsU0FBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUUsaUJBQWlCO2lCQUM5Qjs7OztnQkFMUSxrQkFBa0IsdUJBZ0JaLElBQUk7Z0JBakJWLGVBQWU7OztpQ0FTckIsS0FBSztrQ0FDTCxLQUFLO3NEQUNMLEtBQUs7dUNBQ0wsTUFBTTtpQ0FHTixLQUFLOztJQWtKUiw4QkFBQztDQUFBLEFBOUpELElBOEpDO1NBekpZLHVCQUF1Qjs7O0lBQ2xDLGlEQUFvQzs7SUFDcEMsa0RBQWlDOztJQUNqQyxzRUFBMkQ7O0lBQzNELHVEQUFvRDs7SUFDcEQsMkNBQVM7O0lBQ1QsZ0RBQXNCOztJQUN0QixpREFBb0U7Ozs7O0lBRXhELDRDQUE2Qzs7Ozs7SUFBRyxrREFBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFNlbGYsIE9uRGVzdHJveSwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEcmFnRHJvcFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kcmFnLWRyb3Auc2VydmljZSc7XHJcbmltcG9ydCB7IERyYWdnYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vZHJhZ2dhYmxlLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCB0eXBlIEJhdGNoRHJhZ1N0eWxlID0gJ2JhZGdlJyB8ICdzdGFjaycgfCBzdHJpbmc7XHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbZERyYWdnYWJsZV1bYmF0Y2hEcmFnXScsXHJcbiAgICBleHBvcnRBczogJ2RCYXRjaERyYWdnYWJsZSdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXRjaERyYWdnYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGJhdGNoRHJhZ0dyb3VwID0gJ2RlZmF1bHQnO1xyXG4gIEBJbnB1dCgpIGJhdGNoRHJhZ0FjdGl2ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGJhdGNoRHJhZ0xhc3RPbmVBdXRvQWN0aXZlRXZlbnRLZXlzID0gWydjdHJsS2V5J107XHJcbiAgQE91dHB1dCgpIGJhdGNoRHJhZ0FjdGl2ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGRyYWdEYXRhO1xyXG4gIG5lZWRUb1Jlc3RvcmUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBiYXRjaERyYWdTdHlsZTogQXJyYXk8QmF0Y2hEcmFnU3R5bGU+ID0gWydiYWRnZScsICdzdGFjayddO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAU2VsZigpIHByaXZhdGUgZHJhZ2dhYmxlOiBEcmFnZ2FibGVEaXJlY3RpdmUsICBwcml2YXRlIGRyYWdEcm9wU2VydmljZTogRHJhZ0Ryb3BTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmRyYWdnYWJsZS5iYXRjaERyYWdnYWJsZSA9IHRoaXM7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdERyYWdEYXRhQnlJZGVudGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRyYWdnYWJsZS5iYXRjaERyYWdnYWJsZSA9IHVuZGVmaW5lZDtcclxuICAgIGlmICh0aGlzLmRyYWdEYXRhKSB7XHJcbiAgICAgIGlmICh0aGlzLmRyYWdEYXRhLmRyYWdnYWJsZSA9PT0gdGhpcy5kcmFnZ2FibGUpIHtcclxuICAgICAgICB0aGlzLmRyYWdEYXRhLmRyYWdnYWJsZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoIXRoaXMuZHJhZ0RhdGEuaWRlbnRpdHkpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbUJhdGNoR3JvdXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snYmF0Y2hEcmFnQWN0aXZlJ10pICB7XHJcbiAgICAgIGlmICghdGhpcy5pbml0RHJhZ0RhdGFCeUlkZW50aXR5KCkpIHtcclxuICAgICAgICBpZiAodGhpcy5iYXRjaERyYWdBY3RpdmUpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5kcmFnRGF0YSAmJiB0aGlzLmFsbG93QWRkVG9CYXRjaEdyb3VwKCkpIHtcclxuICAgICAgICAgICB0aGlzLmFkZFRvQmF0Y2hHcm91cCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbUJhdGNoR3JvdXAoKTtcclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm5lZWRUb1Jlc3RvcmUpIHtcclxuICAgICAgdGhpcy5yZXN0b3JlRHJhZ0RhdGFWaWV3QWZ0ZXJWaWV3SW5pdCgpO1xyXG4gICAgICB0aGlzLm5lZWRUb1Jlc3RvcmUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgaW5pdERyYWdEYXRhQnlJZGVudGl0eSgpIHtcclxuICAgIGNvbnN0IGRyYWdEYXRhID0gdGhpcy5maW5kSW5CYXRjaERyYWdEYXRhQnlJZGVudGl0aWVzKCk7XHJcbiAgICBpZiAoZHJhZ0RhdGEpIHtcclxuICAgICAgaWYgKHRoaXMuYmF0Y2hEcmFnQWN0aXZlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRyYWdEYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmFkZFRvQmF0Y2hHcm91cChkcmFnRGF0YSk7XHJcbiAgICAgICAgICB0aGlzLnJlZ2lzdGVyUmVzdG9yZURyYWdEYXRhVmlld0FmdGVyVmlld0luaXRXaGl0ZURyYWdnaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlRnJvbUJhdGNoR3JvdXAoZHJhZ0RhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZHJhZ0RhdGE7XHJcbiAgfVxyXG5cclxuICByZWdpc3RlclJlc3RvcmVEcmFnRGF0YVZpZXdBZnRlclZpZXdJbml0V2hpdGVEcmFnZ2luZygpIHtcclxuICAgIGlmICh0aGlzLmRyYWdEcm9wU2VydmljZS5kcmFnZ2VkRWwgJiYgdGhpcy5kcmFnRHJvcFNlcnZpY2UuZHJhZ2dlZEVsSWRlbnRpdHkgJiZcclxuICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuZHJhZ2dlZEVsICE9PSB0aGlzLmRyYWdnYWJsZS5lbC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMubmVlZFRvUmVzdG9yZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlc3RvcmVEcmFnRGF0YVZpZXdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgY29uc3QgZHJhZ2dhYmxlID0gdGhpcy5kcmFnZ2FibGU7XHJcbiAgICBpZiAoZHJhZ2dhYmxlLm9yaWdpblBsYWNlaG9sZGVyICYmIGRyYWdnYWJsZS5vcmlnaW5QbGFjZWhvbGRlci5zaG93ICE9PSBmYWxzZSkge1xyXG4gICAgICAgIGRyYWdnYWJsZS5pbnNlcnRPcmlnaW5QbGFjZWhvbGRlcih0cnVlLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBkcmFnZ2FibGUuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gIH1cclxuXHJcblxyXG4gIGFsbG93QWRkVG9CYXRjaEdyb3VwKCkge1xyXG4gICAgaWYgKCF0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdHcm91cCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmJhdGNoRHJhZ0dyb3VwID09PSB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdHcm91cDtcclxuICAgIH1cclxuICB9XHJcbiAgYWRkVG9CYXRjaEdyb3VwKGRyYWdEYXRhPykge1xyXG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnR3JvdXAgPSB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdHcm91cCB8fCB0aGlzLmJhdGNoRHJhZ0dyb3VwO1xyXG4gICAgaWYgKGRyYWdEYXRhKSB7XHJcbiAgICAgIGRyYWdEYXRhLmRyYWdnYWJsZSA9IHRoaXMuZHJhZ2dhYmxlO1xyXG4gICAgICBkcmFnRGF0YS5kcmFnRGF0YSA9IHRoaXMuZHJhZ2dhYmxlLmRyYWdEYXRhO1xyXG4gICAgICB0aGlzLmRyYWdEYXRhID0gZHJhZ0RhdGE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRyYWdEYXRhID0gdGhpcy5kcmFnRGF0YSB8fOOAgHtcclxuICAgICAgICBpZGVudGl0eTogdGhpcy5kcmFnZ2FibGUuZHJhZ0lkZW50aXR5IHx8IHVuZGVmaW5lZCxcclxuICAgICAgICBkcmFnZ2FibGU6IHRoaXMuZHJhZ2dhYmxlLFxyXG4gICAgICAgIGRyYWdEYXRhOiB0aGlzLmRyYWdnYWJsZS5kcmFnRGF0YVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdEYXRhID0gdGhpcy5hZGRUb0FycmF5SWZOb3RFeGlzdCh0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdEYXRhLCB0aGlzLmRyYWdEYXRhKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVtb3ZlRnJvbUJhdGNoR3JvdXAoZHJhZ0RhdGE/KSB7XHJcbiAgICB0aGlzLmRlbGV0ZUZyb21BcnJheUlmRXhpc3QodGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnRGF0YSwgZHJhZ0RhdGEgfHwgdGhpcy5kcmFnRGF0YSk7XHJcbiAgICB0aGlzLmRyYWdEYXRhID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKCEodGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnRGF0YSAmJiB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdEYXRhLmxlbmd0aCkpIHtcclxuICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuYmF0Y2hEcmFnR3JvdXAgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFRvQXJyYXlJZk5vdEV4aXN0KGFycmF5OiBhbnlbXSwgdGFyZ2V0OiBhbnkpIHtcclxuICAgIGFycmF5ID0gYXJyYXkgfHwgW107XHJcbiAgICBpZiAoYXJyYXkuaW5kZXhPZih0YXJnZXQpID09PSAtMSkge1xyXG4gICAgICBhcnJheS5wdXNoKHRhcmdldCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBkZWxldGVGcm9tQXJyYXlJZkV4aXN0KGFycmF5OiBhbnlbXSwgdGFyZ2V0OiBhbnkpIHtcclxuICAgIGlmICghYXJyYXkpIHsgcmV0dXJuOyB9XHJcbiAgICBpZiAoYXJyYXkubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGFycmF5LmluZGV4T2YodGFyZ2V0KTtcclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRJbkJhdGNoRHJhZ0RhdGFCeUlkZW50aXRpZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZHJhZ2dhYmxlLmRyYWdJZGVudGl0eSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmJhdGNoRHJhZ0RhdGEpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRyYWdEcm9wU2VydmljZS5iYXRjaERyYWdEYXRhLmZpbHRlcihkcmFnRGF0YSA9PiBkcmFnRGF0YS5pZGVudGl0eSA9PT0gdGhpcy5kcmFnZ2FibGUuZHJhZ0lkZW50aXR5KS5wb3AoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGl2ZSgpIHtcclxuICAgIHRoaXMuYmF0Y2hEcmFnQWN0aXZlRXZlbnQuZW1pdCh7ZWw6IHRoaXMuZHJhZ2dhYmxlLmVsLm5hdGl2ZUVsZW1lbnQsIGRhdGE6IHRoaXMuZHJhZ2dhYmxlLmRyYWdEYXRhfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlRHJhZ0RhdGEoKSB7XHJcbiAgICAvLyDpgInkuK3nirbmgIHmiY3mm7TmlrBcclxuICAgIGlmICghdGhpcy5kcmFnRGF0YSkge3JldHVybjsgfVxyXG4gICAgLy8g6ZyA6KaB57u05oyB5YaF5a2Y5Zyw5Z2A5LiN5Y+YXHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuZHJhZ0RhdGEsIHtcclxuICAgICAgaWRlbnRpdHk6IHRoaXMuZHJhZ2dhYmxlLmRyYWdJZGVudGl0eSB8fCB1bmRlZmluZWQsXHJcbiAgICAgIGRyYWdnYWJsZTogdGhpcy5kcmFnZ2FibGUsXHJcbiAgICAgIGRyYWdEYXRhOiB0aGlzLmRyYWdnYWJsZS5kcmFnRGF0YVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==