UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

280 lines (279 loc) 24.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Component, Input, ElementRef, ViewChild } from '@angular/core'; import { ConnectionManager } from '../service/ConnectionManager.service'; import { PhloxAppInfoService } from '../service/PhloxAppInfoService.service'; import { ComponentPopover } from './ComponentPopover.component'; import { ComponentPopoverModel } from './model/ComponentPopoverModel'; import { ConnectionStatusPane } from './ConnectionStatusPane.component'; var /** @type {?} */ TYPE_NAME = "phx-connection-status"; var /** @type {?} */ TOP = 'top'; var /** @type {?} */ BOTTOM = 'bottom'; var /** @type {?} */ LEFT = 'left'; var /** @type {?} */ RIGHT = 'right'; var ConnectionStatus = /** @class */ (function () { function ConnectionStatus(connectionMgr, phloxAppService, elementRef) { var _this = this; this.connectionMgr = connectionMgr; this.elementRef = elementRef; phloxAppService.getAppInfo().then(function (result) { _this.connectionMgr.setPhloxAppInfo(result); }); this.arrowPosition = LEFT; // set as default this.popoverModel = new ComponentPopoverModel(ConnectionStatusPane, this.connectionPaneModel, 0, 0, '220pt', null, null, ['connectionStatus']); } /** * @return {?} */ ConnectionStatus.prototype.ngOnInit = /** * @return {?} */ function () { var /** @type {?} */ percent = this.connectionMgr.getConnectionQuality(); this.setArrowPosition(this.popoverPosition); this.updatePosition(); }; /** * @param {?} changes * @return {?} */ ConnectionStatus.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { if (changes['popoverPosition'] !== null && typeof changes['popoverPosition'] !== 'undefined') { var /** @type {?} */ oldVal = changes['popoverPosition'].previousValue; var /** @type {?} */ newVal = changes['popoverPosition'].currentValue; if (oldVal !== newVal) { this.setArrowPosition(this.popoverPosition); this.updatePosition(); } } }; /** * @param {?} popoverPosition * @return {?} */ ConnectionStatus.prototype.setArrowPosition = /** * @param {?} popoverPosition * @return {?} */ function (popoverPosition) { if (popoverPosition !== null && typeof popoverPosition !== 'undefined') { if (popoverPosition === TOP) { // arrow as bottom this.arrowPosition = BOTTOM; } else if (popoverPosition === BOTTOM) { // arrow as top this.arrowPosition = TOP; } else if (popoverPosition === LEFT) { // arrow as right this.arrowPosition = RIGHT; } else { // default as right so arrow as left this.arrowPosition = LEFT; } } else { // default as right so arrow as left this.arrowPosition = LEFT; } }; /** * @return {?} */ ConnectionStatus.prototype.updatePosition = /** * @return {?} */ function () { var /** @type {?} */ left = 0; var /** @type {?} */ top = 0; var /** @type {?} */ width = 0; var /** @type {?} */ height = 0; this.popoverModel.popoverWidth = this.popoverWidth; this.popoverModel.popoverHeight = this.popoverHeight; this.popoverModel.showArrow = this.showArrow; if (this.elementRef !== null && typeof this.elementRef !== 'undefined') { if (typeof $(this.elementRef.nativeElement) !== 'undefined') { if (typeof $(this.elementRef.nativeElement).offset() !== 'undefined') { left = $(this.elementRef.nativeElement).offset().left; top = $(this.elementRef.nativeElement).offset().top; width = $(this.elementRef.nativeElement).outerWidth(); height = $(this.elementRef.nativeElement).outerHeight(); } } } if (this.arrowPosition === LEFT || this.arrowPosition === RIGHT) { this.popoverModel.top = top; this.popoverModel.left = (left + width) + 10; // 10 as a padding } else { this.popoverModel.top = (top + height) + 10; this.popoverModel.left = left + width; } }; /** * @param {?} $event * @return {?} */ ConnectionStatus.prototype.onBtnClicked = /** * @param {?} $event * @return {?} */ function ($event) { $event.stopPropagation(); if (this.popover !== null && typeof this.popover !== 'undefined') { if (this.popover.isShow()) { this.popover.hide(); } else { this.updatePosition(); this.popover.show(); } } }; /** * @param {?} event * @return {?} */ ConnectionStatus.prototype.onFocus = /** * @param {?} event * @return {?} */ function (event) { }; /** * @param {?} event * @return {?} */ ConnectionStatus.prototype.onLostFocus = /** * @param {?} event * @return {?} */ function (event) { // do close popover if (this.popover !== null && typeof this.popover !== 'undefined') { this.popover.hide(); } }; /** * @return {?} */ ConnectionStatus.prototype.getStatusPercent = /** * @return {?} */ function () { if (this.connectionMgr !== null && typeof this.connectionMgr !== 'undefined') { return this.connectionMgr.getConnectionQuality(); } return 0; }; /** * @return {?} */ ConnectionStatus.prototype.isShowSignal = /** * @return {?} */ function () { var /** @type {?} */ percent = this.getStatusPercent(); if (percent !== null && typeof percent === 'number') { if (percent > 0) { return true; } } return false; }; /** * @return {?} */ ConnectionStatus.prototype.getPopoverModel = /** * @return {?} */ function () { return this.popoverModel; }; /** * @return {?} */ ConnectionStatus.prototype.getArrowPosition = /** * @return {?} */ function () { return this.arrowPosition; }; ConnectionStatus.TYPE_NAME = TYPE_NAME; ConnectionStatus.LEFT = LEFT; ConnectionStatus.RIGHT = RIGHT; ConnectionStatus.TOP = TOP; ConnectionStatus.BOTTOM = BOTTOM; ConnectionStatus.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: "<div class=\"phx-connection-status\">\n\t<div class=\"wrapper\" (click)=\"onBtnClicked($event)\">\n\t\t<phx-signals-indicator [percent]=\"getStatusPercent()\"></phx-signals-indicator>\n\t\t<div class=\"status status-one-bar\" *ngIf=\"getStatusPercent() <= 25 && getStatusPercent() >= 1\"></div>\n\t\t<div class=\"status status-zero-bar\" *ngIf=\"getStatusPercent() === 0\"></div>\n\t</div>\n\t<phx-component-popover #popover [model]=\"getPopoverModel()\" [position]=\"getArrowPosition()\" [anchor]=\"'.phx-signals-indicator'\"></phx-component-popover>\n</div>\n" },] }, ]; /** @nocollapse */ ConnectionStatus.ctorParameters = function () { return [ { type: ConnectionManager, }, { type: PhloxAppInfoService, }, { type: ElementRef, }, ]; }; ConnectionStatus.propDecorators = { "popoverPosition": [{ type: Input },], "popoverWidth": [{ type: Input },], "popoverHeight": [{ type: Input },], "showArrow": [{ type: Input },], "popover": [{ type: ViewChild, args: ['popover',] },], }; return ConnectionStatus; }()); export { ConnectionStatus }; function ConnectionStatus_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ ConnectionStatus.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ ConnectionStatus.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ ConnectionStatus.propDecorators; /** @type {?} */ ConnectionStatus.TYPE_NAME; /** @type {?} */ ConnectionStatus.LEFT; /** @type {?} */ ConnectionStatus.RIGHT; /** @type {?} */ ConnectionStatus.TOP; /** @type {?} */ ConnectionStatus.BOTTOM; /** @type {?} */ ConnectionStatus.prototype.popoverPosition; /** @type {?} */ ConnectionStatus.prototype.popoverWidth; /** @type {?} */ ConnectionStatus.prototype.popoverHeight; /** @type {?} */ ConnectionStatus.prototype.showArrow; /** @type {?} */ ConnectionStatus.prototype.popover; /** @type {?} */ ConnectionStatus.prototype.connectionMgr; /** @type {?} */ ConnectionStatus.prototype.popoverModel; /** @type {?} */ ConnectionStatus.prototype.connectionPaneModel; /** @type {?} */ ConnectionStatus.prototype.elementRef; /** @type {?} */ ConnectionStatus.prototype.arrowPosition; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29ubmVjdGlvblN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvQ29ubmVjdGlvblN0YXR1cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF3QixVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBS3hFLHFCQUFNLFNBQVMsR0FBVyx1QkFBdUIsQ0FBQztBQUVsRCxxQkFBTSxHQUFHLEdBQVcsS0FBSyxDQUFDO0FBQzFCLHFCQUFNLE1BQU0sR0FBVyxRQUFRLENBQUM7QUFDaEMscUJBQU0sSUFBSSxHQUFXLE1BQU0sQ0FBQztBQUM1QixxQkFBTSxLQUFLLEdBQVcsT0FBTyxDQUFDOztJQXlDNUIsMEJBQVksYUFBZ0MsRUFBRSxlQUFvQyxFQUFFLFVBQXNCO1FBQTFHLGlCQVNDO1FBUkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFDLE1BQVc7WUFDNUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJ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O1NBQ0Y7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDOzs7OztJQUdSLDBDQUFlOzs7O1FBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDOzs7OztJQUdwQiwyQ0FBZ0I7Ozs7UUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7O2lDQTNKZSxTQUFTOzRCQUVkLElBQUk7NkJBQ0gsS0FBSzsyQkFDUCxHQUFHOzhCQUNBLE1BQU07O2dCQXBCL0MsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDbkIsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFFBQVEsRUFBRSxtakJBUVg7aUJBQ0E7Ozs7Z0JBN0JRLGlCQUFpQjtnQkFDakIsbUJBQW1CO2dCQUhxQixVQUFVOzs7b0NBeUN4RCxLQUFLO2lDQUVMLEtBQUs7a0NBRUwsS0FBSzs4QkFFTCxLQUFLOzRCQUdMLFNBQVMsU0FBQyxTQUFTOzsyQkFsRHRCOztTQWdDYSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbm5lY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi4vc2VydmljZS9Db25uZWN0aW9uTWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBobG94QXBwSW5mb1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL1BobG94QXBwSW5mb1NlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3BvdmVyIH0gZnJvbSAnLi9Db21wb25lbnRQb3BvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJTmVlZEZvY3VzIH0gZnJvbSAnLi9JTmVlZEZvY3VzJztcbmltcG9ydCB7IENvbXBvbmVudFBvcG92ZXJNb2RlbCB9IGZyb20gJy4vbW9kZWwvQ29tcG9uZW50UG9wb3Zlck1vZGVsJztcbmltcG9ydCB7IENvbm5lY3Rpb25TdGF0dXNQYW5lIH0gZnJvbSAnLi9Db25uZWN0aW9uU3RhdHVzUGFuZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuXG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJwaHgtY29ubmVjdGlvbi1zdGF0dXNcIjtcblxuY29uc3QgVE9QOiBzdHJpbmcgPSAndG9wJztcbmNvbnN0IEJPVFRPTTogc3RyaW5nID0gJ2JvdHRvbSc7XG5jb25zdCBMRUZUOiBzdHJpbmcgPSAnbGVmdCc7XG5jb25zdCBSSUdIVDogc3RyaW5nID0gJ3JpZ2h0JztcblxuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiBUWVBFX05BTUUsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBoeC1jb25uZWN0aW9uLXN0YXR1c1wiPlxuXHQ8ZGl2IGNsYXNzPVwid3JhcHBlclwiIChjbGljayk9XCJvbkJ0bkNsaWNrZWQoJGV2ZW50KVwiPlxuXHRcdDxwaHgtc2lnbmFscy1pbmRpY2F0b3IgW3BlcmNlbnRdPVwiZ2V0U3RhdHVzUGVyY2VudCgpXCI+PC9waHgtc2lnbmFscy1pbmRpY2F0b3I+XG5cdFx0PGRpdiBjbGFzcz1cInN0YXR1cyBzdGF0dXMtb25lLWJhclwiICpuZ0lmPVwiZ2V0U3RhdHVzUGVyY2VudCgpIDw9IDI1ICYmIGdldFN0YXR1c1BlcmNlbnQoKSA+PSAxXCI+PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInN0YXR1cyBzdGF0dXMtemVyby1iYXJcIiAqbmdJZj1cImdldFN0YXR1c1BlcmNlbnQoKSA9PT0gMFwiPjwvZGl2PlxuXHQ8L2Rpdj5cblx0PHBoeC1jb21wb25lbnQtcG9wb3ZlciAjcG9wb3ZlciBbbW9kZWxdPVwiZ2V0UG9wb3Zlck1vZGVsKClcIiBbcG9zaXRpb25dPVwiZ2V0QXJyb3dQb3NpdGlvbigpXCIgW2FuY2hvcl09XCInLnBoeC1zaWduYWxzLWluZGljYXRvcidcIj48L3BoeC1jb21wb25lbnQtcG9wb3Zlcj5cbjwvZGl2PlxuYFxufSlcbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uU3RhdHVzIGltcGxlbWVudHMgSU5lZWRGb2N1cyB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUWVBFX05BTUU6IHN0cmluZyA9IFRZUEVfTkFNRTtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExFRlQ6IHN0cmluZyA9IExFRlQ7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUklHSFQ6IHN0cmluZyA9IFJJR0hUO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRPUDogc3RyaW5nID0gVE9QO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJPVFRPTTogc3RyaW5nID0gQk9UVE9NO1xuXG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgcG9wb3ZlclBvc2l0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb3BvdmVyV2lkdGg6IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIHBvcG92ZXJIZWlnaHQ6IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIHNob3dBcnJvdzogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdwb3BvdmVyJylcbiAgcHJpdmF0ZSBwb3BvdmVyOiBDb21wb25lbnRQb3BvdmVyO1xuICBwcml2YXRlIGNvbm5lY3Rpb25NZ3I6IENvbm5lY3Rpb25NYW5hZ2VyO1xuICBwcml2YXRlIHBvcG92ZXJNb2RlbDogQ29tcG9uZW50UG9wb3Zlck1vZGVsO1xuICBwcml2YXRlIGNvbm5lY3Rpb25QYW5lTW9kZWw6IGFueTtcbiAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuICBwcml2YXRlIGFycm93UG9zaXRpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihjb25uZWN0aW9uTWdyOiBDb25uZWN0aW9uTWFuYWdlciwgcGhsb3hBcHBTZXJ2aWNlOiBQaGxveEFwcEluZm9TZXJ2aWNlLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uTWdyID0gY29ubmVjdGlvbk1ncjtcbiAgICB0aGlzLmVsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICAgIHBobG94QXBwU2VydmljZS5nZXRBcHBJbmZvKCkudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdGlvbk1nci5zZXRQaGxveEFwcEluZm8ocmVzdWx0KTtcbiAgICB9KTtcbiAgICB0aGlzLmFycm93UG9zaXRpb24gPSBMRUZUOyAvLyBzZXQgYXMgZGVmYXVsdFxuXG4gICAgdGhpcy5wb3BvdmVyTW9kZWwgPSBuZXcgQ29tcG9uZW50UG9wb3Zlck1vZGVsKENvbm5lY3Rpb25TdGF0dXNQYW5lLCB0aGlzLmNvbm5lY3Rpb25QYW5lTW9kZWwsIDAsIDAsICcyMjBwdCcsIG51bGwsIG51bGwsIFsnY29ubmVjdGlvblN0YXR1cyddKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcblxuICAgIGxldCBwZXJjZW50ID0gdGhpcy5jb25uZWN0aW9uTWdyLmdldENvbm5lY3Rpb25RdWFsaXR5KCk7XG5cbiAgICB0aGlzLnNldEFycm93UG9zaXRpb24odGhpcy5wb3BvdmVyUG9zaXRpb24pO1xuICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpIHtcblxuICAgIGlmIChjaGFuZ2VzWydwb3BvdmVyUG9zaXRpb24nXSAhPT0gbnVsbCAmJiB0eXBlb2YgY2hhbmdlc1sncG9wb3ZlclBvc2l0aW9uJ10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZXQgb2xkVmFsID0gY2hhbmdlc1sncG9wb3ZlclBvc2l0aW9uJ10ucHJldmlvdXNWYWx1ZTtcbiAgICAgIGxldCBuZXdWYWwgPSBjaGFuZ2VzWydwb3BvdmVyUG9zaXRpb24nXS5jdXJyZW50VmFsdWU7XG5cbiAgICAgIGlmIChvbGRWYWwgIT09IG5ld1ZhbCkge1xuICAgICAgICB0aGlzLnNldEFycm93UG9zaXRpb24odGhpcy5wb3BvdmVyUG9zaXRpb24pO1xuICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRBcnJvd1Bvc2l0aW9uKHBvcG92ZXJQb3NpdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHBvcG92ZXJQb3NpdGlvbiAhPT0gbnVsbCAmJiB0eXBlb2YgcG9wb3ZlclBvc2l0aW9uICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKHBvcG92ZXJQb3NpdGlvbiA9PT0gVE9QKSB7XG4gICAgICAgIC8vIGFycm93IGFzIGJvdHRvbVxuICAgICAgICB0aGlzLmFycm93UG9zaXRpb24gPSBCT1RUT007XG4gICAgICB9IGVsc2UgaWYgKHBvcG92ZXJQb3NpdGlvbiA9PT0gQk9UVE9NKSB7XG4gICAgICAgIC8vIGFycm93IGFzIHRvcFxuICAgICAgICB0aGlzLmFycm93UG9zaXRpb24gPSBUT1A7XG4gICAgICB9IGVsc2UgaWYgKHBvcG92ZXJQb3NpdGlvbiA9PT0gTEVGVCkge1xuICAgICAgICAvLyBhcnJvdyBhcyByaWdodFxuICAgICAgICB0aGlzLmFycm93UG9zaXRpb24gPSBSSUdIVDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRlZmF1bHQgYXMgcmlnaHQgc28gYXJyb3cgYXMgbGVmdFxuICAgICAgICB0aGlzLmFycm93UG9zaXRpb24gPSBMRUZUO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkZWZhdWx0IGFzIHJpZ2h0IHNvIGFycm93IGFzIGxlZnRcbiAgICAgIHRoaXMuYXJyb3dQb3NpdGlvbiA9IExFRlQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgbGVmdDogbnVtYmVyID0gMDtcbiAgICBsZXQgdG9wOiBudW1iZXIgPSAwO1xuICAgIGxldCB3aWR0aDogbnVtYmVyID0gMDtcbiAgICBsZXQgaGVpZ2h0OiBudW1iZXIgPSAwO1xuXG4gICAgdGhpcy5wb3BvdmVyTW9kZWwucG9wb3ZlcldpZHRoID0gdGhpcy5wb3BvdmVyV2lkdGg7XG4gICAgdGhpcy5wb3BvdmVyTW9kZWwucG9wb3ZlckhlaWdodCA9IHRoaXMucG9wb3ZlckhlaWdodDtcbiAgICB0aGlzLnBvcG92ZXJNb2RlbC5zaG93QXJyb3cgPSB0aGlzLnNob3dBcnJvdztcblxuICAgIGlmICh0aGlzLmVsZW1lbnRSZWYgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZWxlbWVudFJlZiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0eXBlb2YgJCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkgIT09ICd1bmRlZmluZWQnKSB7XG5cbiAgICAgICAgaWYgKHR5cGVvZiAkKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5vZmZzZXQoKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBsZWZ0ID0gJCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkub2Zmc2V0KCkubGVmdDtcbiAgICAgICAgICB0b3AgPSAkKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5vZmZzZXQoKS50b3A7XG5cbiAgICAgICAgICB3aWR0aCA9ICQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLm91dGVyV2lkdGgoKTtcbiAgICAgICAgICBoZWlnaHQgPSAkKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5vdXRlckhlaWdodCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJyb3dQb3NpdGlvbiA9PT0gTEVGVCB8fCB0aGlzLmFycm93UG9zaXRpb24gPT09IFJJR0hUKSB7XG4gICAgICB0aGlzLnBvcG92ZXJNb2RlbC50b3AgPSB0b3A7XG4gICAgICB0aGlzLnBvcG92ZXJNb2RlbC5sZWZ0ID0gKGxlZnQgKyB3aWR0aCkgKyAxMDsgLy8gMTAgYXMgYSBwYWRkaW5nXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9wb3Zlck1vZGVsLnRvcCA9ICh0b3AgKyBoZWlnaHQpICsgMTA7XG4gICAgICB0aGlzLnBvcG92ZXJNb2RlbC5sZWZ0ID0gbGVmdCArIHdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkJ0bkNsaWNrZWQoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLnBvcG92ZXIgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMucG9wb3ZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0aGlzLnBvcG92ZXIuaXNTaG93KCkpIHtcbiAgICAgICAgdGhpcy5wb3BvdmVyLmhpZGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyLnNob3coKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Gb2N1cyhldmVudDogYW55KTogdm9pZCB7XG4gIH1cblxuICBwdWJsaWMgb25Mb3N0Rm9jdXMoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIC8vIGRvIGNsb3NlIHBvcG92ZXJcbiAgICBpZiAodGhpcy5wb3BvdmVyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLnBvcG92ZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLnBvcG92ZXIuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRTdGF0dXNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuY29ubmVjdGlvbk1nciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5jb25uZWN0aW9uTWdyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbk1nci5nZXRDb25uZWN0aW9uUXVhbGl0eSgpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHB1YmxpYyBpc1Nob3dTaWduYWwoKTogYm9vbGVhbiB7XG4gICAgbGV0IHBlcmNlbnQgPSB0aGlzLmdldFN0YXR1c1BlcmNlbnQoKTtcblxuICAgIGlmIChwZXJjZW50ICE9PSBudWxsICYmIHR5cGVvZiBwZXJjZW50ID09PSAnbnVtYmVyJykge1xuICAgICAgaWYgKHBlcmNlbnQgPiAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0UG9wb3Zlck1vZGVsKCk6IENvbXBvbmVudFBvcG92ZXJNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMucG9wb3Zlck1vZGVsO1xuICB9XG5cbiAgcHVibGljIGdldEFycm93UG9zaXRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hcnJvd1Bvc2l0aW9uO1xuICB9XG59XG4iXX0=