@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
233 lines • 23 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: popover.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { animate, state, style, transition, trigger } from '@angular/animations';
import { Component, ElementRef, HostBinding, HostListener, Input, Renderer2 } from '@angular/core';
import { PositionService } from '@duoduo-oba/ng-devui/position';
import { fromEvent, Subscription } from 'rxjs';
import { debounceTime } from 'rxjs/operators';
var PopoverComponent = /** @class */ (function () {
function PopoverComponent(renderer, positionService, elementRef) {
this.renderer = renderer;
this.positionService = positionService;
this.elementRef = elementRef;
this.showAnimate = false;
this.zIndex = 1060;
this.animateState = this.showAnimate ? 'void' : '';
this.display = 'block';
this.subs = new Subscription();
this.SCROLL_REFRESH_INTERVAL = 100;
}
Object.defineProperty(PopoverComponent.prototype, "class", {
get: /**
* @return {?}
*/
function () {
return 'devui-popover ' + this.position + ' devui-popover-' + this.popType;
},
enumerable: true,
configurable: true
});
Object.defineProperty(PopoverComponent.prototype, "state", {
get: /**
* @return {?}
*/
function () {
return this.animateState;
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
PopoverComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.elementRef.nativeElement.style.zIndex = this.zIndex;
};
/**
* @return {?}
*/
PopoverComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
var _this = this;
this.updatePosition();
if (this.appendToBody) {
if (!this.scrollElement) {
this.scrollElement = this.positionService.getScrollParent(this.triggerElementRef.nativeElement);
}
this.subs.add(fromEvent(this.scrollElement || window, 'scroll')
.pipe(debounceTime(this.SCROLL_REFRESH_INTERVAL))
.subscribe((/**
* @return {?}
*/
function () {
_this.updatePosition();
})));
this.subs.add(fromEvent(window, 'resize')
.pipe(debounceTime(this.SCROLL_REFRESH_INTERVAL))
.subscribe((/**
* @return {?}
*/
function () {
_this.updatePosition();
})));
}
};
/**
* @return {?}
*/
PopoverComponent.prototype.ngAfterContentChecked = /**
* @return {?}
*/
function () {
this.updatePosition();
};
/**
* @return {?}
*/
PopoverComponent.prototype.show = /**
* @return {?}
*/
function () {
this.animateState = 'visible';
};
/**
* @return {?}
*/
PopoverComponent.prototype.hide = /**
* @return {?}
*/
function () {
this.animateState = 'void';
};
// will be overwrite by directive
// will be overwrite by directive
/**
* @return {?}
*/
PopoverComponent.prototype.onHidden =
// will be overwrite by directive
/**
* @return {?}
*/
function () { };
/**
* @param {?} event
* @return {?}
*/
PopoverComponent.prototype.onAnimationEnd = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (event.toState === 'void') {
this.onHidden();
}
};
/**
* @return {?}
*/
PopoverComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.subs) {
this.subs.unsubscribe();
}
};
/**
* @return {?}
*/
PopoverComponent.prototype.updatePosition = /**
* @return {?}
*/
function () {
/** @type {?} */
var rect = this.positionService.positionElements(this.triggerElementRef.nativeElement, this.elementRef.nativeElement, this.position, this.appendToBody);
this.renderer.setStyle(this.elementRef.nativeElement, 'left', rect.left + "px");
this.renderer.setStyle(this.elementRef.nativeElement, 'top', rect.top + "px");
};
PopoverComponent.decorators = [
{ type: Component, args: [{
selector: 'd-popover',
template: "<div class=\"arrow\"></div>\r\n<div class=\"devui-popover-content\">\r\n <span class=\"devui-popover-icon\" *ngIf=\"popType && popType !== 'default'\">\r\n <svg\r\n *ngIf=\"popType === 'success'\"\r\n class=\"devui-icon devui-icon-success\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <circle cx=\"8\" cy=\"8\" r=\"7\"></circle>\r\n <path d=\"M8,0 C3.6,0 0,3.6 0,8 C0,12.4 3.6,16 8,16 C12.4,16 16,12.4 16,8 C16,3.6 12.4,0 8,0 Z\" fill-rule=\"nonzero\"></path>\r\n <polygon\r\n stroke-width=\"0.4\"\r\n fill-rule=\"nonzero\"\r\n points=\"8.16 10.48 7.32 11.32 6.48 10.48 6.48 10.48 3.6 7.68 4.44 6.84 7.28 9.68 11.52 5.44 12.36 6.28\"\r\n ></polygon>\r\n </g>\r\n </svg>\r\n <svg\r\n *ngIf=\"popType === 'warning'\"\r\n class=\"devui-icon devui-icon-warning\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon\r\n points=\"7.5 1.74501946 1.39184847 13.5954649 7.08947368 14.2207621 13.9973698 13.5954649 10.9383683 5.61273879 8.40084114 1.27624313\"\r\n ></polygon>\r\n <path\r\n d=\"M8.51325441,0.127397589 C8.70423071,0.228333932 8.8605922,0.383286648 8.96244623,0.57254229 L15.8714442,13.4101975 C16.1549662,13.9370117 15.9538562,14.5918482 15.4222523,14.8728158 C15.2642579,14.9563203 15.0879506,15 14.9088903,15 L1.09089441,15 C0.488410063,15 0,14.5159904 0,13.9189343 C0,13.7414873 0.0440768395,13.5667684 0.128340519,13.4101975 L7.03733844,0.57254229 C7.32086049,0.0457280838 7.98165058,-0.153569987 8.51325441,0.127397589 Z M8.87894737,11.2105263 L7.08947368,11.2105263 L7.08947368,13 L8.87894737,13 L8.87894737,11.2105263 Z M8.96842105,4.5 L7,4.5 L7.08947368,9.86842105 L8.87894737,9.86842105 L8.96842105,4.5 Z\"\r\n ></path>\r\n </g>\r\n </svg>\r\n <svg\r\n *ngIf=\"popType === 'info'\"\r\n class=\"devui-icon devui-icon-info\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <circle cx=\"8\" cy=\"8\" r=\"7\"></circle>\r\n <g stroke-width=\"1\">\r\n <path\r\n d=\"M8,0 C3.6,0 0,3.6 0,8 C0,12.4 3.6,16 8,16 C12.4,16 16,12.4 16,8 C16,3.6 12.4,0 8,0 Z M9,5 L7,5 L7,3 L9,3 L9,5 Z M9,12.6 L7,12.6 L7,6.6 L9,6.6 L9,12.6 Z\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n <svg\r\n *ngIf=\"popType === 'error'\"\r\n class=\"devui-icon devui-icon-error\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <circle cx=\"8\" cy=\"8\" r=\"7\"></circle>\r\n <path\r\n d=\"M8,0 C3.6,0 0,3.6 0,8 C0,12.4 3.6,16 8,16 C12.4,16 16,12.4 16,8 C16,3.6 12.4,0 8,0 Z M9,12.6 L7,12.6 L7,10.6 L9,10.6 L9,12.6 Z M9,9.1 L7,9.1 L6.9,3.1 L9.1,3.1 L9,9.1 Z\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n </span>\r\n <div class=\"devui-popover-main-content\" [ngClass]=\"{ 'with-icon': popType && popType !== 'default' }\" [innerHTML]=\"content\"></div>\r\n</div>\r\n",
animations: [
trigger('state', [
state('void', style({ opacity: 0 })),
state('visible', style({ opacity: 1 })),
transition('* => visible', animate('150ms cubic-bezier(0.0, 0.0, 0.2, 1)')),
transition('visible => *', animate('150ms cubic-bezier(0.4, 0.0, 1, 1)'))
])
],
styles: [":host.devui-popover{font-size:12px;position:absolute;top:0;left:0;line-height:20px;border:none;border-radius:2px;z-index:1060;background-color:#464d6e;color:#dfe1e6;overflow-wrap:break-word}:host.devui-popover>.arrow{border-width:8px}:host.devui-popover>.arrow,:host.devui-popover>.arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}:host.devui-popover>.arrow::after{content:''}:host.devui-popover.top>.arrow{left:50%;margin-left:-7px;border-bottom-width:0;border-top-color:#464d6e;bottom:-8px}:host.devui-popover.right>.arrow{top:50%;left:-8px;margin-top:-8px;border-left-width:0;border-right-color:#464d6e}:host.devui-popover.bottom>.arrow{left:50%;margin-left:-7px;border-top-width:0;border-bottom-color:#464d6e;top:-8px}:host.devui-popover.left>.arrow{top:50%;right:-8px;margin-top:-8px;border-right-width:0;border-left-color:#464d6e}:host.devui-popover.top{margin-top:-10px;box-shadow:-5px 5px 20px 0 rgba(41,48,64,.2)}:host.devui-popover.bottom{margin-top:10px;box-shadow:5px -5px 20px 0 rgba(41,48,64,.2)}:host.devui-popover.left{margin-left:-10px;box-shadow:5px -5px 20px 0 rgba(41,48,64,.2)}:host.devui-popover.right{margin-left:10px;box-shadow:-5px 5px 20px 0 rgba(41,48,64,.2)}.devui-popover-icon{display:block;position:absolute;left:12px;top:8px}.devui-popover-icon svg.devui-icon{width:16px;height:16px}.devui-popover-main-content.with-icon{text-indent:20px}.devui-icon.devui-icon-success>g>path{fill:#50d4ab}.devui-icon.devui-icon-success>g>circle,.devui-icon.devui-icon-success>g>polygon,.devui-icon.devui-icon-warning>g>polygon{fill:#fff}.devui-icon.devui-icon-warning>g>path{fill:#fac20a}.devui-icon.devui-icon-info>g>g{fill:#5e7ce0}.devui-icon.devui-icon-info>g>circle{fill:#fff}.devui-icon.devui-icon-error>g>path{fill:#f66f6a}.devui-icon.devui-icon-error>g>circle{fill:#fff}.devui-popover-content{padding:5px 14px}"]
}] }
];
/** @nocollapse */
PopoverComponent.ctorParameters = function () { return [
{ type: Renderer2 },
{ type: PositionService },
{ type: ElementRef }
]; };
PopoverComponent.propDecorators = {
triggerElementRef: [{ type: Input }],
position: [{ type: Input }],
content: [{ type: Input }],
showAnimate: [{ type: Input }],
scrollElement: [{ type: Input }],
appendToBody: [{ type: Input }],
zIndex: [{ type: Input }],
popType: [{ type: Input }],
display: [{ type: HostBinding, args: ['style.display',] }],
class: [{ type: HostBinding, args: ['class',] }],
state: [{ type: HostBinding, args: ['',] }],
onAnimationEnd: [{ type: HostListener, args: ['.done', ['$event'],] }]
};
return PopoverComponent;
}());
export { PopoverComponent };
if (false) {
/** @type {?} */
PopoverComponent.prototype.triggerElementRef;
/** @type {?} */
PopoverComponent.prototype.position;
/** @type {?} */
PopoverComponent.prototype.content;
/** @type {?} */
PopoverComponent.prototype.showAnimate;
/** @type {?} */
PopoverComponent.prototype.scrollElement;
/** @type {?} */
PopoverComponent.prototype.appendToBody;
/** @type {?} */
PopoverComponent.prototype.zIndex;
/** @type {?} */
PopoverComponent.prototype.popType;
/** @type {?} */
PopoverComponent.prototype.animateState;
/** @type {?} */
PopoverComponent.prototype.display;
/** @type {?} */
PopoverComponent.prototype.subs;
/** @type {?} */
PopoverComponent.prototype.SCROLL_REFRESH_INTERVAL;
/**
* @type {?}
* @private
*/
PopoverComponent.prototype.renderer;
/**
* @type {?}
* @private
*/
PopoverComponent.prototype.positionService;
/** @type {?} */
PopoverComponent.prototype.elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1kZXZ1aS9wb3BvdmVyLyIsInNvdXJjZXMiOlsicG9wb3Zlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBc0MsU0FBUyxFQUFFLFVBQVUsRUFDaEUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDO0lBdUNFLDBCQUNVLFFBQW1CLEVBQ25CLGVBQWdDLEVBQ2pDLFVBQXNCO1FBRnJCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFyQnRCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBR3BCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFFdkIsaUJBQVksR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUV4QixZQUFPLEdBQUcsT0FBTyxDQUFDO1FBUWhELFNBQUksR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN4Qyw0QkFBdUIsR0FBRyxHQUFHLENBQUM7SUFNM0IsQ0FBQztJQWRKLHNCQUEwQixtQ0FBSzs7OztRQUEvQjtZQUNFLE9BQU8sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsR0FBRyxJ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QXVDO29CQUV2QyxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxDQUFDLE9BQU8sRUFBRTs0QkFDZixLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNwQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUN2QyxVQUFVLENBQ1IsY0FBYyxFQUNkLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUNoRDs0QkFDRCxVQUFVLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO3lCQUMxRSxDQUFDO3FCQUNIOztpQkFDRjs7OztnQkF0QnNELFNBQVM7Z0JBQ3ZELGVBQWU7Z0JBRmdDLFVBQVU7OztvQ0EwQi9ELEtBQUs7MkJBQ0wsS0FBSzswQkFDTCxLQUFLOzhCQUNMLEtBQUs7Z0NBQ0wsS0FBSzsrQkFDTCxLQUFLO3lCQUNMLEtBQUs7MEJBQ0wsS0FBSzswQkFHTCxXQUFXLFNBQUMsZUFBZTt3QkFDM0IsV0FBVyxTQUFDLE9BQU87d0JBR25CLFdBQVcsU0FBQyxRQUFRO2lDQTBEcEIsWUFBWSxTQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7SUErQnpDLHVCQUFDO0NBQUEsQUF6SEQsSUF5SEM7U0F6R1ksZ0JBQWdCOzs7SUFFM0IsNkNBQXVDOztJQUN2QyxvQ0FBZ0M7O0lBQ2hDLG1DQUF5Qjs7SUFDekIsdUNBQTZCOztJQUM3Qix5Q0FBZ0M7O0lBQ2hDLHdDQUErQjs7SUFDL0Isa0NBQXVCOztJQUN2QixtQ0FBOEI7O0lBQzlCLHdDQUFzRDs7SUFFdEQsbUNBQWdEOztJQVFoRCxnQ0FBd0M7O0lBQ3hDLG1EQUE4Qjs7Ozs7SUFHNUIsb0NBQTJCOzs7OztJQUMzQiwyQ0FBd0M7O0lBQ3hDLHNDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnbmctZGV2dWkvcG9zaXRpb24nO1xyXG5pbXBvcnQgeyBQb3NpdGlvblR5cGUgfSBmcm9tICduZy1kZXZ1aS90b29sdGlwJztcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBQb3BvdmVyVHlwZSB9IGZyb20gJy4vcG9wb3Zlci50eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2QtcG9wb3ZlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW2AuL3BvcG92ZXIuY29tcG9uZW50LnNjc3NgXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdzdGF0ZScsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxyXG4gICAgICBzdGF0ZSgndmlzaWJsZScsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oXHJcbiAgICAgICAgJyogPT4gdmlzaWJsZScsXHJcbiAgICAgICAgYW5pbWF0ZSgnMTUwbXMgY3ViaWMtYmV6aWVyKDAuMCwgMC4wLCAwLjIsIDEpJylcclxuICAgICAgKSxcclxuICAgICAgdHJhbnNpdGlvbigndmlzaWJsZSA9PiAqJywgYW5pbWF0ZSgnMTUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAxLCAxKScpKVxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb3BvdmVyQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgdHJpZ2dlckVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XHJcbiAgQElucHV0KCkgcG9zaXRpb246IFBvc2l0aW9uVHlwZTtcclxuICBASW5wdXQoKSBjb250ZW50OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0FuaW1hdGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzY3JvbGxFbGVtZW50OiBFbGVtZW50O1xyXG4gIEBJbnB1dCgpIGFwcGVuZFRvQm9keTogYm9vbGVhbjtcclxuICBASW5wdXQoKSB6SW5kZXggPSAxMDYwO1xyXG4gIEBJbnB1dCgpIHBvcFR5cGU6IFBvcG92ZXJUeXBlO1xyXG4gIGFuaW1hdGVTdGF0ZTogc3RyaW5nID0gdGhpcy5zaG93QW5pbWF0ZSA/ICd2b2lkJyA6ICcnO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmRpc3BsYXknKSBkaXNwbGF5ID0gJ2Jsb2NrJztcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNsYXNzKCkge1xyXG4gICAgcmV0dXJuICdkZXZ1aS1wb3BvdmVyICcgKyB0aGlzLnBvc2l0aW9uICsgJyBkZXZ1aS1wb3BvdmVyLScgKyB0aGlzLnBvcFR5cGU7XHJcbiAgfVxyXG4gIEBIb3N0QmluZGluZygnQHN0YXRlJykgZ2V0IHN0YXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYW5pbWF0ZVN0YXRlO1xyXG4gIH1cclxuXHJcbiAgc3ViczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIFNDUk9MTF9SRUZSRVNIX0lOVEVSVkFMID0gMTAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgcG9zaXRpb25TZXJ2aWNlOiBQb3NpdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS56SW5kZXggPSB0aGlzLnpJbmRleDtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5hcHBlbmRUb0JvZHkpIHtcclxuICAgICAgaWYgKCF0aGlzLnNjcm9sbEVsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLnNjcm9sbEVsZW1lbnQgPSB0aGlzLnBvc2l0aW9uU2VydmljZS5nZXRTY3JvbGxQYXJlbnQoXHJcbiAgICAgICAgICB0aGlzLnRyaWdnZXJFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Vicy5hZGQoXHJcbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuc2Nyb2xsRWxlbWVudCB8fCB3aW5kb3csICdzY3JvbGwnKVxyXG4gICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuU0NST0xMX1JFRlJFU0hfSU5URVJWQUwpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc3Vicy5hZGQoXHJcbiAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXHJcbiAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5TQ1JPTExfUkVGUkVTSF9JTlRFUlZBTCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbigpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcclxuICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcclxuICB9XHJcblxyXG4gIHNob3coKSB7XHJcbiAgICB0aGlzLmFuaW1hdGVTdGF0ZSA9ICd2aXNpYmxlJztcclxuICB9XHJcblxyXG4gIGhpZGUoKSB7XHJcbiAgICB0aGlzLmFuaW1hdGVTdGF0ZSA9ICd2b2lkJztcclxuICB9XHJcblxyXG4gIC8vIHdpbGwgYmUgb3ZlcndyaXRlIGJ5IGRpcmVjdGl2ZVxyXG4gIG9uSGlkZGVuKCkge31cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignQHN0YXRlLmRvbmUnLCBbJyRldmVudCddKVxyXG4gIG9uQW5pbWF0aW9uRW5kKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ3ZvaWQnKSB7XHJcbiAgICAgIHRoaXMub25IaWRkZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuc3Vicykge1xyXG4gICAgICB0aGlzLnN1YnMudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVBvc2l0aW9uKCkge1xyXG4gICAgY29uc3QgcmVjdCA9IHRoaXMucG9zaXRpb25TZXJ2aWNlLnBvc2l0aW9uRWxlbWVudHMoXHJcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIHRoaXMucG9zaXRpb24sXHJcbiAgICAgIHRoaXMuYXBwZW5kVG9Cb2R5XHJcbiAgICApO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICdsZWZ0JyxcclxuICAgICAgYCR7cmVjdC5sZWZ0fXB4YFxyXG4gICAgKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXHJcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAndG9wJyxcclxuICAgICAgYCR7cmVjdC50b3B9cHhgXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=