@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
367 lines • 29.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: popover.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ComponentFactoryResolver, Directive, ElementRef, Injector, Input, ViewContainerRef } from '@angular/core';
import { OverlayContainerRef } from '@duoduo-oba/ng-devui/overlay-container';
import { PopoverComponent } from './popover.component';
import { fromEvent, Subscription, merge } from 'rxjs';
var PopoverDirective = /** @class */ (function () {
function PopoverDirective(triggerElementRef, overlayContainerRef, viewContainerRef, injector, componentFactoryResolver) {
var _this = this;
this.triggerElementRef = triggerElementRef;
this.overlayContainerRef = overlayContainerRef;
this.viewContainerRef = viewContainerRef;
this.injector = injector;
this.componentFactoryResolver = componentFactoryResolver;
this.subscription = new Subscription();
this.blurSub = new Subscription();
this.blurSubscription = new Subscription();
/**
* popover显示位置
*/
this.position = 'top';
/**
* `appendToBody`默认可以不传,仅当popover绑定元素外层宽高不够时,overflow为hidden,不想popover的弹出框被一并隐藏掉。
*/
this.appendToBody = true;
this.zIndex = 1060;
this.popType = 'default';
// 触发 popover 的方式(点击/鼠标悬停等)
this.trigger = 'click';
// 触发 popover 的方式(点击/鼠标悬停等)
this.hoverToContent = false;
this.onDocumentClick = (/**
* @param {?} event
* @return {?}
*/
function (event) {
event.stopPropagation();
if (_this.controlled && !_this.triggerElementRef.nativeElement.contains(event.target) &&
!(_this.popoverComponentRef && _this.popoverComponentRef.instance.elementRef.nativeElement.contains(event.target))) {
_this.hide();
}
});
}
Object.defineProperty(PopoverDirective.prototype, "content", {
/**
* popover内容
*/
set: /**
* popover内容
* @param {?} _popoverContent
* @return {?}
*/
function (_popoverContent) {
var _this = this;
this._content = _popoverContent;
if (this.popoverComponentRef) {
this.popoverComponentRef.instance.content = _popoverContent;
setTimeout((/**
* @return {?}
*/
function () {
if (_this.popoverComponentRef) {
_this.popoverComponentRef.instance.updatePosition();
}
}));
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(PopoverDirective.prototype, "visible", {
set: /**
* @param {?} _isShow
* @return {?}
*/
function (_isShow) {
var _this = this;
if (_isShow) {
// when set value and create component at the same time,should wait after ng2 dirty check done
setTimeout((/**
* @return {?}
*/
function () { return _this.show(); }), 0);
}
else {
this.hide();
}
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
PopoverDirective.prototype.createPopover = /**
* @return {?}
*/
function () {
if (this.appendToBody) {
this.popoverComponentRef = this.overlayContainerRef.createComponent(this.componentFactoryResolver.resolveComponentFactory(PopoverComponent));
}
else {
this.popoverComponentRef = this.viewContainerRef.createComponent(this.componentFactoryResolver.resolveComponentFactory(PopoverComponent), this.viewContainerRef.length, this.injector);
}
Object.assign(this.popoverComponentRef.instance, {
content: this._content,
triggerElementRef: this.triggerElementRef,
position: this.position,
popType: this.popType,
scrollElement: this.scrollElement,
appendToBody: this.appendToBody,
zIndex: this.zIndex
});
};
/**
* @return {?}
*/
PopoverDirective.prototype.show = /**
* @return {?}
*/
function () {
var _this = this;
this.hide();
if (!this._content) {
return;
}
if (!this.popoverComponentRef) {
this.createPopover();
}
if (this.showAnimate) {
this.popoverComponentRef.instance.show();
}
document.addEventListener('click', this.onDocumentClick);
if (this.trigger === 'hover' && this.hoverToContent) {
this.blurSubscription = fromEvent(this.popoverComponentRef.instance.elementRef.nativeElement, 'mouseleave')
.subscribe((/**
* @param {?} event
* @return {?}
*/
function (event) {
if (event.type === 'mouseleave' && _this.controlled) {
_this.hide();
}
}));
this.blurSub.add(this.blurSubscription);
}
};
/**
* @return {?}
*/
PopoverDirective.prototype.destroy = /**
* @return {?}
*/
function () {
if (this.popoverComponentRef) {
this.popoverComponentRef.destroy();
this.popoverComponentRef = null;
}
document.removeEventListener('click', this.onDocumentClick);
};
/**
* @return {?}
*/
PopoverDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var element = this.triggerElementRef.nativeElement;
if (this.trigger === 'click') {
this.subscription.add(fromEvent(element, 'click').subscribe((/**
* @param {?} event
* @return {?}
*/
function (event) {
if (_this.controlled) {
_this.show();
}
})));
}
else if (this.trigger === 'hover') {
this.subscription.add(merge(fromEvent(element, 'mouseenter'), fromEvent(element, 'mouseleave')).subscribe((/**
* @param {?} event
* @return {?}
*/
function (event) {
if (event.type === 'mouseenter' && _this.controlled) {
_this.show();
}
if (event.type === 'mouseleave' && _this.controlled) {
if (_this.hoverToContent) {
/** @type {?} */
var hideTimer_1 = setTimeout((/**
* @return {?}
*/
function () {
/** @type {?} */
var relatedTarget = event.relatedTarget;
if (!_this.triggerElementRef.nativeElement.contains(relatedTarget) &&
!(_this.popoverComponentRef && _this.popoverComponentRef.instance.elementRef.nativeElement.contains(relatedTarget))) {
_this.hide();
}
clearTimeout(hideTimer_1);
}), 100);
}
else {
_this.hide();
}
}
})));
}
};
/**
* @return {?}
*/
PopoverDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.destroy();
this.subscription.unsubscribe();
if (this.blurSub) {
this.blurSub.unsubscribe();
}
};
/**
* @return {?}
*/
PopoverDirective.prototype.hide = /**
* @return {?}
*/
function () {
var _this = this;
if (this.blurSubscription) {
this.blurSubscription.unsubscribe();
this.blurSub.remove(this.blurSubscription);
}
if (this.popoverComponentRef) {
if (!this.showAnimate) {
this.destroy();
return;
}
this.popoverComponentRef.instance.hide();
this.popoverComponentRef.instance.onHidden = (/**
* @return {?}
*/
function () {
_this.destroy();
});
}
};
PopoverDirective.decorators = [
{ type: Directive, args: [{
selector: '[dPopover]',
exportAs: 'dPopover',
},] }
];
/** @nocollapse */
PopoverDirective.ctorParameters = function () { return [
{ type: ElementRef },
{ type: OverlayContainerRef },
{ type: ViewContainerRef },
{ type: Injector },
{ type: ComponentFactoryResolver }
]; };
PopoverDirective.propDecorators = {
content: [{ type: Input }],
controlled: [{ type: Input }],
position: [{ type: Input }],
showAnimate: [{ type: Input }],
scrollElement: [{ type: Input }],
appendToBody: [{ type: Input }],
zIndex: [{ type: Input }],
popType: [{ type: Input }],
trigger: [{ type: Input }],
hoverToContent: [{ type: Input }],
visible: [{ type: Input }]
};
return PopoverDirective;
}());
export { PopoverDirective };
if (false) {
/** @type {?} */
PopoverDirective.prototype.popoverComponentRef;
/** @type {?} */
PopoverDirective.prototype._content;
/**
* @type {?}
* @private
*/
PopoverDirective.prototype.subscription;
/**
* @type {?}
* @private
*/
PopoverDirective.prototype.blurSub;
/**
* @type {?}
* @private
*/
PopoverDirective.prototype.blurSubscription;
/**
* 是否通过visible来控制popover状态
* @type {?}
*/
PopoverDirective.prototype.controlled;
/**
* popover显示位置
* @type {?}
*/
PopoverDirective.prototype.position;
/**
* 是否显示动画
* @type {?}
*/
PopoverDirective.prototype.showAnimate;
/**
* `scrollElement` 默认值是 `window `, 可以不传,只有当页面的滚动不在 window 且`appendToBody`属性为`true`上的时候才需要传递
* @type {?}
*/
PopoverDirective.prototype.scrollElement;
/**
* `appendToBody`默认可以不传,仅当popover绑定元素外层宽高不够时,overflow为hidden,不想popover的弹出框被一并隐藏掉。
* @type {?}
*/
PopoverDirective.prototype.appendToBody;
/** @type {?} */
PopoverDirective.prototype.zIndex;
/** @type {?} */
PopoverDirective.prototype.popType;
/** @type {?} */
PopoverDirective.prototype.trigger;
/** @type {?} */
PopoverDirective.prototype.hoverToContent;
/** @type {?} */
PopoverDirective.prototype.onDocumentClick;
/**
* @type {?}
* @private
*/
PopoverDirective.prototype.triggerElementRef;
/**
* @type {?}
* @private
*/
PopoverDirective.prototype.overlayContainerRef;
/**
* @type {?}
* @private
*/
PopoverDirective.prototype.viewContainerRef;
/**
* @type {?}
* @private
*/
PopoverDirective.prototype.injector;
/**
* @type {?}
* @private
*/
PopoverDirective.prototype.componentFactoryResolver;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1kZXZ1aS9wb3BvdmVyLyIsInNvdXJjZXMiOlsicG9wb3Zlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsd0JBQXdCLEVBRXhCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFHTCxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRyxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdkQ7SUErREUsMEJBQW9CLGlCQUE2QixFQUM3QixtQkFBd0MsRUFDeEMsZ0JBQWtDLEVBQ2xDLFFBQWtCLEVBQ2xCLHdCQUFrRDtRQUp0RSxpQkFLQztRQUxtQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVk7UUFDN0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQTVEOUQsaUJBQVksR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxZQUFPLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0MscUJBQWdCLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7Ozs7UUFzQm5ELGFBQVEsR0FBaUIsS0FBSyxDQUFDOzs7O1FBWS9CLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFFZCxZQUFPLEdBQWdCLFNBQVMsQ0FBQzs7UUFHakMsWUFBTyxHQUFnQixPQUFPLENBQUM7O1FBRy9CLG1CQUFj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QkFJTCxLQUFLO2dDQUlMLEtBQUs7K0JBSUwsS0FBSzt5QkFDTCxLQUFLOzBCQUVMLEtBQUs7MEJBR0wsS0FBSztpQ0FHTCxLQUFLOzBCQUVMLEtBQUs7O0lBOElSLHVCQUFDO0NBQUEsQUFwTUQsSUFvTUM7U0FoTVksZ0JBQWdCOzs7SUFDM0IsK0NBQW9EOztJQUNwRCxvQ0FBK0I7Ozs7O0lBQy9CLHdDQUF3RDs7Ozs7SUFDeEQsbUNBQW1EOzs7OztJQUNuRCw0Q0FBNEQ7Ozs7O0lBa0I1RCxzQ0FBNkI7Ozs7O0lBSTdCLG9DQUF3Qzs7Ozs7SUFJeEMsdUNBQThCOzs7OztJQUk5Qix5Q0FBZ0M7Ozs7O0lBSWhDLHdDQUE2Qjs7SUFDN0Isa0NBQXVCOztJQUV2QixtQ0FBMEM7O0lBRzFDLG1DQUF3Qzs7SUFHeEMsMENBQWdDOztJQW1CaEMsMkNBTUM7Ozs7O0lBZFcsNkNBQXFDOzs7OztJQUNyQywrQ0FBZ0Q7Ozs7O0lBQ2hELDRDQUEwQzs7Ozs7SUFDMUMsb0NBQTBCOzs7OztJQUMxQixvREFBMEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBDb21wb25lbnRSZWYsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlDb250YWluZXJSZWYgfSBmcm9tICduZy1kZXZ1aS9vdmVybGF5LWNvbnRhaW5lcic7XHJcbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24sICBtZXJnZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQb3BvdmVyVHlwZSwgUG9zaXRpb25UeXBlLCBUcmlnZ2VyVHlwZSB9IGZyb20gJy4vcG9wb3Zlci50eXBlcyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkUG9wb3Zlcl0nLFxyXG4gIGV4cG9ydEFzOiAnZFBvcG92ZXInLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUG9wb3ZlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwb3BvdmVyQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8UG9wb3ZlckNvbXBvbmVudD47XHJcbiAgX2NvbnRlbnQ6IHN0cmluZyB8IEhUTUxFbGVtZW50O1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSBibHVyU3ViOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSBibHVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgLyoqXHJcbiAgICogcG9wb3ZlcuWGheWuuVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNldCBjb250ZW50KF9wb3BvdmVyQ29udGVudCkge1xyXG4gICAgdGhpcy5fY29udGVudCA9IF9wb3BvdmVyQ29udGVudDtcclxuICAgIGlmICh0aGlzLnBvcG92ZXJDb21wb25lbnRSZWYpIHtcclxuICAgICAgdGhpcy5wb3BvdmVyQ29tcG9uZW50UmVmLmluc3RhbmNlLmNvbnRlbnQgPSBfcG9wb3ZlckNvbnRlbnQ7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJDb21wb25lbnRSZWYpIHtcclxuICAgICAgICAgIHRoaXMucG9wb3ZlckNvbXBvbmVudFJlZi5pbnN0YW5jZS51cGRhdGVQb3NpdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpumAmui/h3Zpc2libGXmnaXmjqfliLZwb3BvdmVy54q25oCBXHJcbiAgICovXHJcbiAgQElucHV0KCkgY29udHJvbGxlZDogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBwb3BvdmVy5pi+56S65L2N572uXHJcbiAgICovXHJcbiAgQElucHV0KCkgcG9zaXRpb246IFBvc2l0aW9uVHlwZSA9ICd0b3AnO1xyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuaYvuekuuWKqOeUu1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNob3dBbmltYXRlOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIGBzY3JvbGxFbGVtZW50YCDpu5jorqTlgLzmmK8gYHdpbmRvdyBgLCDlj6/ku6XkuI3kvKDvvIzlj6rmnInlvZPpobXpnaLnmoTmu5rliqjkuI3lnKggd2luZG93IOS4lGBhcHBlbmRUb0JvZHlg5bGe5oCn5Li6YHRydWVg5LiK55qE5pe25YCZ5omN6ZyA6KaB5Lyg6YCSXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2Nyb2xsRWxlbWVudDogRWxlbWVudDtcclxuICAvKipcclxuICAgKiBgYXBwZW5kVG9Cb2R5YOm7mOiupOWPr+S7peS4jeS8oO+8jOS7heW9k3BvcG92ZXLnu5HlrprlhYPntKDlpJblsYLlrr3pq5jkuI3lpJ/ml7bvvIxvdmVyZmxvd+S4umhpZGRlbu+8jOS4jeaDs3BvcG92ZXLnmoTlvLnlh7rmoYbooqvkuIDlubbpmpDol4/mjonjgIJcclxuICAgKi9cclxuICBASW5wdXQoKSBhcHBlbmRUb0JvZHkgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHpJbmRleCA9IDEwNjA7XHJcblxyXG4gIEBJbnB1dCgpIHBvcFR5cGU6IFBvcG92ZXJUeXBlID0gJ2RlZmF1bHQnO1xyXG5cclxuICAvLyDop6blj5EgcG9wb3ZlciDnmoTmlrnlvI/vvIjngrnlh7sv6byg5qCH5oKs5YGc562J77yJXHJcbiAgQElucHV0KCkgdHJpZ2dlcjogVHJpZ2dlclR5cGUgPSAnY2xpY2snO1xyXG5cclxuICAvLyDop6blj5EgcG9wb3ZlciDnmoTmlrnlvI/vvIjngrnlh7sv6byg5qCH5oKs5YGc562J77yJXHJcbiAgQElucHV0KCkgaG92ZXJUb0NvbnRlbnQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgc2V0IHZpc2libGUoX2lzU2hvdzogYm9vbGVhbikge1xyXG4gICAgaWYgKF9pc1Nob3cpIHtcclxuICAgICAgLy8gd2hlbiBzZXQgdmFsdWUgYW5kIGNyZWF0ZSBjb21wb25lbnQgYXQgdGhlIHNhbWUgdGltZe+8jHNob3VsZCB3YWl0IGFmdGVyIG5nMiBkaXJ0eSBjaGVjayBkb25lXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zaG93KCksIDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyaWdnZXJFbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgb3ZlcmxheUNvbnRhaW5lclJlZjogT3ZlcmxheUNvbnRhaW5lclJlZixcclxuICAgICAgICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikge1xyXG4gIH1cclxuXHJcblxyXG4gIG9uRG9jdW1lbnRDbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAodGhpcy5jb250cm9sbGVkICYmICF0aGlzLnRyaWdnZXJFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxyXG4gICAgICAhKHRoaXMucG9wb3ZlckNvbXBvbmVudFJlZiAmJiB0aGlzLnBvcG92ZXJDb21wb25lbnRSZWYuaW5zdGFuY2UuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpKSB7XHJcbiAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlUG9wb3ZlcigpIHtcclxuICAgIGlmICh0aGlzLmFwcGVuZFRvQm9keSkge1xyXG4gICAgICB0aGlzLnBvcG92ZXJDb21wb25lbnRSZWYgPSB0aGlzLm92ZXJsYXlDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFBvcG92ZXJDb21wb25lbnQpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBvcG92ZXJDb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFBvcG92ZXJDb21wb25lbnQpLFxyXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5sZW5ndGgsXHJcbiAgICAgICAgdGhpcy5pbmplY3RvclxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5wb3BvdmVyQ29tcG9uZW50UmVmLmluc3RhbmNlLCB7XHJcbiAgICAgIGNvbnRlbnQ6IHRoaXMuX2NvbnRlbnQsXHJcbiAgICAgIHRyaWdnZXJFbGVtZW50UmVmOiB0aGlzLnRyaWdnZXJFbGVtZW50UmVmLFxyXG4gICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbixcclxuICAgICAgcG9wVHlwZTogdGhpcy5wb3BUeXBlLFxyXG4gICAgICBzY3JvbGxFbGVtZW50OiB0aGlzLnNjcm9sbEVsZW1lbnQsXHJcbiAgICAgIGFwcGVuZFRvQm9keTogdGhpcy5hcHBlbmRUb0JvZHksXHJcbiAgICAgIHpJbmRleDogdGhpcy56SW5kZXhcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2hvdygpIHtcclxuICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgaWYgKCF0aGlzLl9jb250ZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5wb3BvdmVyQ29tcG9uZW50UmVmKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlUG9wb3ZlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dBbmltYXRlKSB7XHJcbiAgICAgIHRoaXMucG9wb3ZlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICB9XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25Eb2N1bWVudENsaWNrKTtcclxuICAgIGlmICh0aGlzLnRyaWdnZXIgPT09ICdob3ZlcicgJiYgdGhpcy5ob3ZlclRvQ29udGVudCkge1xyXG4gICAgICB0aGlzLmJsdXJTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQodGhpcy5wb3BvdmVyQ29tcG9uZW50UmVmLmluc3RhbmNlLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ21vdXNlbGVhdmUnKVxyXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2VsZWF2ZScgJiYgdGhpcy5jb250cm9sbGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmJsdXJTdWIuYWRkKHRoaXMuYmx1clN1YnNjcmlwdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMucG9wb3ZlckNvbXBvbmVudFJlZikge1xyXG4gICAgICB0aGlzLnBvcG92ZXJDb21wb25lbnRSZWYuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLnBvcG92ZXJDb21wb25lbnRSZWYgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uRG9jdW1lbnRDbGljayk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRyaWdnZXJFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAodGhpcy50cmlnZ2VyID09PSAnY2xpY2snKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChmcm9tRXZlbnQoZWxlbWVudCwgJ2NsaWNrJykuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sbGVkKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3coKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50cmlnZ2VyID09PSAnaG92ZXInKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgICBtZXJnZShcclxuICAgICAgICAgIGZyb21FdmVudChlbGVtZW50LCAnbW91c2VlbnRlcicpLFxyXG4gICAgICAgICAgZnJvbUV2ZW50KGVsZW1lbnQsICdtb3VzZWxlYXZlJylcclxuICAgICAgICApLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2VlbnRlcicgJiYgdGhpcy5jb250cm9sbGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZWxlYXZlJyAmJiB0aGlzLmNvbnRyb2xsZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaG92ZXJUb0NvbnRlbnQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBoaWRlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0O1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRyaWdnZXJFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMocmVsYXRlZFRhcmdldCkgJiZcclxuICAgICAgICAgICAgICAgICEodGhpcy5wb3BvdmVyQ29tcG9uZW50UmVmICYmIHRoaXMucG9wb3ZlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMocmVsYXRlZFRhcmdldCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGhpZGVUaW1lcik7XHJcbiAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIGlmICh0aGlzLmJsdXJTdWIpIHtcclxuICAgICAgdGhpcy5ibHVyU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWRlKCkge1xyXG4gICAgaWYgKHRoaXMuYmx1clN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmJsdXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgdGhpcy5ibHVyU3ViLnJlbW92ZSh0aGlzLmJsdXJTdWJzY3JpcHRpb24pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucG9wb3ZlckNvbXBvbmVudFJlZikge1xyXG4gICAgICBpZiAoIXRoaXMuc2hvd0FuaW1hdGUpIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucG9wb3ZlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMucG9wb3ZlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5vbkhpZGRlbiA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19