com.phloxui
Version:
PhloxUI Ng2+ Framework
280 lines (279 loc) • 24.6 kB
JavaScript
/**
* @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=