angular-admin-lte-teliqo
Version:
npm# angular-admin-lte
232 lines (231 loc) • 22.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Component, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, ElementRef } from '@angular/core';
import { Router, NavigationStart, NavigationEnd } from '@angular/router';
import { Title } from '@angular/platform-browser';
import { LayoutStore } from '../layout.store';
import { RoutingService } from '../../services/routing.service';
import { SidebarRightService } from '../sidebar-right/sidebar-right.service';
import { HeaderService } from '../header/header.service';
import { FooterService } from '../footer/footer.service';
import { removeSubscriptions } from '../../helpers';
var ContentComponent = /** @class */ (function () {
/**
* @method constructor
* @param layoutStore
* @param routingService
* @param titleService
* @param elementRef
* @param changeDetectorRef
* @param sidebarRightService
* @param headerService
* @param footerService
* @param router
*/
function ContentComponent(layoutStore, routingService, titleService, elementRef, changeDetectorRef, sidebarRightService, headerService, footerService, router) {
this.layoutStore = layoutStore;
this.routingService = routingService;
this.titleService = titleService;
this.elementRef = elementRef;
this.changeDetectorRef = changeDetectorRef;
this.sidebarRightService = sidebarRightService;
this.headerService = headerService;
this.footerService = footerService;
this.router = router;
this.subscriptions = [];
}
/**
* @method ngOnInit
*/
/**
* \@method ngOnInit
* @return {?}
*/
ContentComponent.prototype.ngOnInit = /**
* \@method ngOnInit
* @return {?}
*/
function () {
var _this = this;
this.titleTag = this.titleService.getTitle();
this.subscriptions.push(this.routingService.onChange.subscribe(function (value) {
if (value && value[value.length - 1]) {
_this.titleService.setTitle(_this.getTitle(value[value.length - 1].data['title']));
_this.header = value[value.length - 1].data['title'];
_this.description = value[value.length - 1].data['description'];
}
_this.changeDetectorRef.markForCheck();
}));
this.subscriptions.push(this.router.events.subscribe(function (routeEvent) {
if (routeEvent instanceof NavigationStart) {
_this.navigationEnd = false;
}
if (routeEvent instanceof NavigationEnd) {
_this.navigationEnd = true;
_this.setContentMinHeight();
}
}));
this.subscriptions.push(this.layoutStore.sidebarLeftElementHeight.subscribe(function (value) {
_this.sidebarLeftHeight = value;
_this.setContentMinHeight();
}));
this.subscriptions.push(this.layoutStore.layout.subscribe(function (value) {
_this.layout = value;
_this.setContentMinHeight();
}));
this.subscriptions.push(this.layoutStore.windowInnerHeight.subscribe(function (value) {
_this.windowInnerHeight = value;
_this.setContentMinHeight();
}));
this.heightStyle = this.windowInnerHeight;
};
/**
* @method ngOnDestroy
*/
/**
* \@method ngOnDestroy
* @return {?}
*/
ContentComponent.prototype.ngOnDestroy = /**
* \@method ngOnDestroy
* @return {?}
*/
function () {
this.subscriptions = removeSubscriptions(this.subscriptions);
};
Object.defineProperty(ContentComponent.prototype, "scrollHeight", {
get: /**
* [scrollHeight description]
* \@method scrollHeight
* @return {?} [description]
*/
function () {
return this.contentInnerElement.nativeElement.scrollHeight;
},
enumerable: true,
configurable: true
});
/**
* [getTitle description]
* \@method getTitle
* @param {?} title [description]
* @return {?} [description]
*/
ContentComponent.prototype.getTitle = /**
* [getTitle description]
* \@method getTitle
* @param {?} title [description]
* @return {?} [description]
*/
function (title) {
return title ? title + " - " + this.titleTag : this.titleTag;
};
/**
* [setMinHeight description]
* \@method setMinHeight
* @return {?}
*/
ContentComponent.prototype.setContentMinHeight = /**
* [setMinHeight description]
* \@method setMinHeight
* @return {?}
*/
function () {
if (this.navigationEnd) {
var /** @type {?} */ heightStyle = void 0;
var /** @type {?} */ headerFooterOffsetHeight = this.headerService.offsetHeight + this.footerService.offsetHeight;
if (this.layout === 'fixed') {
heightStyle = this.windowInnerHeight - this.footerService.offsetHeight;
}
else {
var /** @type {?} */ sidebarRight = this.sidebarRightService.scrollHeight ?
this.sidebarRightService.scrollHeight - this.headerService.offsetHeight : 0;
heightStyle = Math.max(this.windowInnerHeight - headerFooterOffsetHeight, this.sidebarLeftHeight - this.headerService.offsetHeight, sidebarRight);
}
if (heightStyle && heightStyle !== this.heightStyle) {
if (this.scrollHeight > heightStyle) {
heightStyle = null;
}
this.heightStyle = heightStyle;
this.changeDetectorRef.detectChanges();
}
}
};
ContentComponent.decorators = [
{ type: Component, args: [{
selector: 'mk-layout-content',
template: "<div class=\"content-wrapper\" [style.min-height.px]=\"heightStyle\">\n <div #contentInnerElement class=\"content-inner\">\n <ng-content select=\"[mk-layout-content-before-header]\"></ng-content>\n <section *ngIf=\"header || description\" class=\"content-header\">\n <h1>\n {{header}}\n <small *ngIf=\"description\">{{description}}</small>\n </h1>\n <mk-breadcrumbs></mk-breadcrumbs>\n </section>\n <ng-content select=\"[mk-layout-content-after-header]\"></ng-content>\n <section class=\"content\">\n <ng-content></ng-content>\n </section>\n </div>\n</div>\n",
styles: [":host{display:block}.content-wrapper{position:relative}"],
changeDetection: ChangeDetectionStrategy.OnPush
},] },
];
/** @nocollapse */
ContentComponent.ctorParameters = function () { return [
{ type: LayoutStore, },
{ type: RoutingService, },
{ type: Title, },
{ type: ElementRef, },
{ type: ChangeDetectorRef, },
{ type: SidebarRightService, },
{ type: HeaderService, },
{ type: FooterService, },
{ type: Router, },
]; };
ContentComponent.propDecorators = {
"contentInnerElement": [{ type: ViewChild, args: ['contentInnerElement',] },],
};
return ContentComponent;
}());
export { ContentComponent };
function ContentComponent_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ContentComponent.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ContentComponent.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
ContentComponent.propDecorators;
/** @type {?} */
ContentComponent.prototype.description;
/** @type {?} */
ContentComponent.prototype.header;
/** @type {?} */
ContentComponent.prototype.heightStyle;
/** @type {?} */
ContentComponent.prototype.sidebarLeftHeight;
/** @type {?} */
ContentComponent.prototype.windowInnerHeight;
/** @type {?} */
ContentComponent.prototype.layout;
/** @type {?} */
ContentComponent.prototype.titleTag;
/** @type {?} */
ContentComponent.prototype.navigationEnd;
/** @type {?} */
ContentComponent.prototype.subscriptions;
/** @type {?} */
ContentComponent.prototype.contentInnerElement;
/** @type {?} */
ContentComponent.prototype.layoutStore;
/** @type {?} */
ContentComponent.prototype.routingService;
/** @type {?} */
ContentComponent.prototype.titleService;
/** @type {?} */
ContentComponent.prototype.elementRef;
/** @type {?} */
ContentComponent.prototype.changeDetectorRef;
/** @type {?} */
ContentComponent.prototype.sidebarRightService;
/** @type {?} */
ContentComponent.prototype.headerService;
/** @type {?} */
ContentComponent.prototype.footerService;
/** @type {?} */
ContentComponent.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWFkbWluLWx0ZS10ZWxpcW8vIiwic291cmNlcyI6WyJsaWIvbGF5b3V0L2NvbnRlbnQvY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQXdCLE1BQU0saUJBQWlCLENBQUM7QUFDL0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWxELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7O0lBc0NsRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILDBCQUNVLGFBQ0EsZ0JBQ0EsY0FDQSxZQUNBLG1CQUNBLHFCQUNBLGVBQ0EsZUFDQTtRQVJBLGdCQUFXLEdBQVgsV0FBVztRQUNYLG1CQUFjLEdBQWQsY0FBYztRQUNkLGlCQUFZLEdBQVosWUFBWTtRQUNaLGVBQVUsR0FBVixVQUFVO1FBQ1Ysc0JBQWlCLEdBQWpCLGlCQUFpQjtRQUNqQix3QkFBbUIsR0FBbkIsbUJBQW1CO1FBQ25CLGtCQUFhLEdBQWIsYUFBYTtRQUNiLGtCQUFhLEdBQWIsYUFBYTtRQUNiLFdBQU0sR0FBTixNQUFNOzZCQXpC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QUcsSUFBSSxDQUFDO2lCQUNwQjtnQkFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3hDO1NBQ0Y7OztnQkEvSkosU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxzbUJBZ0JYO29CQUNDLE1BQU0sRUFBRSxDQUFDLHlEQUF5RCxDQUFDO29CQUNuRSxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7Ozs7Z0JBOUJRLFdBQVc7Z0JBRVgsY0FBYztnQkFKZCxLQUFLO2dCQUZxRSxVQUFVO2dCQUF4QyxpQkFBaUI7Z0JBTzdELG1CQUFtQjtnQkFDbkIsYUFBYTtnQkFDYixhQUFhO2dCQVJiLE1BQU07Ozt3Q0E4Q1osU0FBUyxTQUFDLHFCQUFxQjs7MkJBL0NsQzs7U0FtQ2EsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvblN0YXJ0LCBOYXZpZ2F0aW9uRW5kLCBFdmVudCBhcyBSb3V0ZXJFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBMYXlvdXRTdG9yZSB9IGZyb20gJy4uL2xheW91dC5zdG9yZSc7XG5cbmltcG9ydCB7IFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNpZGViYXJSaWdodFNlcnZpY2UgfSBmcm9tICcuLi9zaWRlYmFyLXJpZ2h0L3NpZGViYXItcmlnaHQuc2VydmljZSc7XG5pbXBvcnQgeyBIZWFkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvb3RlclNlcnZpY2UgfSBmcm9tICcuLi9mb290ZXIvZm9vdGVyLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyByZW1vdmVTdWJzY3JpcHRpb25zIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21rLWxheW91dC1jb250ZW50JyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwiY29udGVudC13cmFwcGVyXCIgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVpZ2h0U3R5bGVcIj5cbiAgPGRpdiAjY29udGVudElubmVyRWxlbWVudCBjbGFzcz1cImNvbnRlbnQtaW5uZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWstbGF5b3V0LWNvbnRlbnQtYmVmb3JlLWhlYWRlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPHNlY3Rpb24gKm5nSWY9XCJoZWFkZXIgfHwgZGVzY3JpcHRpb25cIiBjbGFzcz1cImNvbnRlbnQtaGVhZGVyXCI+XG4gICAgICA8aDE+XG4gICAgICAgIHt7aGVhZGVyfX1cbiAgICAgICAgPHNtYWxsICpuZ0lmPVwiZGVzY3JpcHRpb25cIj57e2Rlc2NyaXB0aW9ufX08L3NtYWxsPlxuICAgICAgPC9oMT5cbiAgICAgIDxtay1icmVhZGNydW1icz48L21rLWJyZWFkY3J1bWJzPlxuICAgIDwvc2VjdGlvbj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWstbGF5b3V0LWNvbnRlbnQtYWZ0ZXItaGVhZGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuPC9kaXY+XG5gLFxuICBzdHlsZXM6IFtgOmhvc3R7ZGlzcGxheTpibG9ja30uY29udGVudC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlfWBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcHVibGljIGhlYWRlcjogc3RyaW5nO1xuICBwdWJsaWMgaGVpZ2h0U3R5bGU6IG51bWJlcjtcbiAgcHVibGljIHNpZGViYXJMZWZ0SGVpZ2h0OiBudW1iZXI7XG4gIHB1YmxpYyB3aW5kb3dJbm5lckhlaWdodDogbnVtYmVyO1xuXG4gIHByaXZhdGUgbGF5b3V0OiBzdHJpbmc7XG4gIHByaXZhdGUgdGl0bGVUYWc6IHN0cmluZztcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kOiBib29sZWFuO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBbXTtcblxuICBAVmlld0NoaWxkKCdjb250ZW50SW5uZXJFbGVtZW50JykgcHJpdmF0ZSBjb250ZW50SW5uZXJFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBAbWV0aG9kIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBsYXlvdXRTdG9yZVxuICAgKiBAcGFyYW0gcm91dGluZ1NlcnZpY2VcbiAgICogQHBhcmFtIHRpdGxlU2VydmljZVxuICAgKiBAcGFyYW0gZWxlbWVudFJlZlxuICAgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWZcbiAgICogQHBhcmFtIHNpZGViYXJSaWdodFNlcnZpY2VcbiAgICogQHBhcmFtIGhlYWRlclNlcnZpY2VcbiAgICogQHBhcmFtIGZvb3RlclNlcnZpY2VcbiAgICogQHBhcmFtIHJvdXRlclxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsYXlvdXRTdG9yZTogTGF5b3V0U3RvcmUsXG4gICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNpZGViYXJSaWdodFNlcnZpY2U6IFNpZGViYXJSaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBoZWFkZXJTZXJ2aWNlOiBIZWFkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9vdGVyU2VydmljZTogRm9vdGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICAvKipcbiAgICogQG1ldGhvZCBuZ09uSW5pdFxuICAgKi9cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50aXRsZVRhZyA9IHRoaXMudGl0bGVTZXJ2aWNlLmdldFRpdGxlKCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnJvdXRpbmdTZXJ2aWNlLm9uQ2hhbmdlLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRoaXMuZ2V0VGl0bGUodmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0uZGF0YVsndGl0bGUnXSkpO1xuICAgICAgICB0aGlzLmhlYWRlciA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdLmRhdGFbJ3RpdGxlJ107XG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXS5kYXRhWydkZXNjcmlwdGlvbiddO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChyb3V0ZUV2ZW50OiBSb3V0ZXJFdmVudCkgPT4ge1xuICAgICAgaWYgKHJvdXRlRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRW5kID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAocm91dGVFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRW5kID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXRDb250ZW50TWluSGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5sYXlvdXRTdG9yZS5zaWRlYmFyTGVmdEVsZW1lbnRIZWlnaHQuc3Vic2NyaWJlKCh2YWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICB0aGlzLnNpZGViYXJMZWZ0SGVpZ2h0ID0gdmFsdWU7XG4gICAgICB0aGlzLnNldENvbnRlbnRNaW5IZWlnaHQoKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxheW91dFN0b3JlLmxheW91dC5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMubGF5b3V0ID0gdmFsdWU7XG4gICAgICB0aGlzLnNldENvbnRlbnRNaW5IZWlnaHQoKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxheW91dFN0b3JlLndpbmRvd0lubmVySGVpZ2h0LnN1YnNjcmliZSgodmFsdWU6IG51bWJlcikgPT4ge1xuICAgICAgdGhpcy53aW5kb3dJbm5lckhlaWdodCA9IHZhbHVlO1xuICAgICAgdGhpcy5zZXRDb250ZW50TWluSGVpZ2h0KCk7XG4gICAgfSkpO1xuICAgIHRoaXMuaGVpZ2h0U3R5bGUgPSB0aGlzLndpbmRvd0lubmVySGVpZ2h0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgbmdPbkRlc3Ryb3lcbiAgICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IHJlbW92ZVN1YnNjcmlwdGlvbnModGhpcy5zdWJzY3JpcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbc2Nyb2xsSGVpZ2h0IGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHNjcm9sbEhlaWdodFxuICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHB1YmxpYyBnZXQgc2Nyb2xsSGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudElubmVyRWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZ2V0VGl0bGUgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2QgZ2V0VGl0bGVcbiAgICogQHBhcmFtIHRpdGxlIFtkZXNjcmlwdGlvbl1cbiAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBwcml2YXRlIGdldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aXRsZSA/IGAke3RpdGxlfSAtICR7dGhpcy50aXRsZVRhZ31gIDogdGhpcy50aXRsZVRhZztcbiAgfVxuXG4gIC8qKlxuICAgKiBbc2V0TWluSGVpZ2h0IGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHNldE1pbkhlaWdodFxuICAgKi9cbiAgcHJpdmF0ZSBzZXRDb250ZW50TWluSGVpZ2h0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25FbmQpIHtcbiAgICAgIGxldCBoZWlnaHRTdHlsZTtcblxuICAgICAgY29uc3QgaGVhZGVyRm9vdGVyT2Zmc2V0SGVpZ2h0ID0gdGhpcy5oZWFkZXJTZXJ2aWNlLm9mZnNldEhlaWdodCArIHRoaXMuZm9vdGVyU2VydmljZS5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgIGlmICh0aGlzLmxheW91dCA9PT0gJ2ZpeGVkJykge1xuICAgICAgICBoZWlnaHRTdHlsZSA9IHRoaXMud2luZG93SW5uZXJIZWlnaHQgLSB0aGlzLmZvb3RlclNlcnZpY2Uub2Zmc2V0SGVpZ2h0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2lkZWJhclJpZ2h0ID1cbiAgICAgICAgICB0aGlzLnNpZGViYXJSaWdodFNlcnZpY2Uuc2Nyb2xsSGVpZ2h0ID9cbiAgICAgICAgICAgIHRoaXMuc2lkZWJhclJpZ2h0U2VydmljZS5zY3JvbGxIZWlnaHQgLSB0aGlzLmhlYWRlclNlcnZpY2Uub2Zmc2V0SGVpZ2h0IDogMDtcblxuICAgICAgICBoZWlnaHRTdHlsZSA9IE1hdGgubWF4KFxuICAgICAgICAgIHRoaXMud2luZG93SW5uZXJIZWlnaHQgLSBoZWFkZXJGb290ZXJPZmZzZXRIZWlnaHQsXG4gICAgICAgICAgdGhpcy5zaWRlYmFyTGVmdEhlaWdodCAtIHRoaXMuaGVhZGVyU2VydmljZS5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgc2lkZWJhclJpZ2h0XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChoZWlnaHRTdHlsZSAmJiBoZWlnaHRTdHlsZSAhPT0gdGhpcy5oZWlnaHRTdHlsZSkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIZWlnaHQgPiBoZWlnaHRTdHlsZSkge1xuICAgICAgICAgIGhlaWdodFN0eWxlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhlaWdodFN0eWxlID0gaGVpZ2h0U3R5bGU7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19