angular-admin-lte-teliqo
Version:
npm# angular-admin-lte
216 lines (215 loc) • 21 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';
export class ContentComponent {
/**
* \@method constructor
* @param {?} layoutStore
* @param {?} routingService
* @param {?} titleService
* @param {?} elementRef
* @param {?} changeDetectorRef
* @param {?} sidebarRightService
* @param {?} headerService
* @param {?} footerService
* @param {?} router
*/
constructor(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
* @return {?}
*/
ngOnInit() {
this.titleTag = this.titleService.getTitle();
this.subscriptions.push(this.routingService.onChange.subscribe((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((routeEvent) => {
if (routeEvent instanceof NavigationStart) {
this.navigationEnd = false;
}
if (routeEvent instanceof NavigationEnd) {
this.navigationEnd = true;
this.setContentMinHeight();
}
}));
this.subscriptions.push(this.layoutStore.sidebarLeftElementHeight.subscribe((value) => {
this.sidebarLeftHeight = value;
this.setContentMinHeight();
}));
this.subscriptions.push(this.layoutStore.layout.subscribe((value) => {
this.layout = value;
this.setContentMinHeight();
}));
this.subscriptions.push(this.layoutStore.windowInnerHeight.subscribe((value) => {
this.windowInnerHeight = value;
this.setContentMinHeight();
}));
this.heightStyle = this.windowInnerHeight;
}
/**
* \@method ngOnDestroy
* @return {?}
*/
ngOnDestroy() {
this.subscriptions = removeSubscriptions(this.subscriptions);
}
/**
* [scrollHeight description]
* \@method scrollHeight
* @return {?} [description]
*/
get scrollHeight() {
return this.contentInnerElement.nativeElement.scrollHeight;
}
/**
* [getTitle description]
* \@method getTitle
* @param {?} title [description]
* @return {?} [description]
*/
getTitle(title) {
return title ? `${title} - ${this.titleTag}` : this.titleTag;
}
/**
* [setMinHeight description]
* \@method setMinHeight
* @return {?}
*/
setContentMinHeight() {
if (this.navigationEnd) {
let /** @type {?} */ heightStyle;
const /** @type {?} */ headerFooterOffsetHeight = this.headerService.offsetHeight + this.footerService.offsetHeight;
if (this.layout === 'fixed') {
heightStyle = this.windowInnerHeight - this.footerService.offsetHeight;
}
else {
const /** @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">
<div #contentInnerElement class="content-inner">
<ng-content select="[mk-layout-content-before-header]"></ng-content>
<section *ngIf="header || description" class="content-header">
<h1>
{{header}}
<small *ngIf="description">{{description}}</small>
</h1>
<mk-breadcrumbs></mk-breadcrumbs>
</section>
<ng-content select="[mk-layout-content-after-header]"></ng-content>
<section class="content">
<ng-content></ng-content>
</section>
</div>
</div>
`,
styles: [`:host{display:block}.content-wrapper{position:relative}`],
changeDetection: ChangeDetectionStrategy.OnPush
},] },
];
/** @nocollapse */
ContentComponent.ctorParameters = () => [
{ 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',] },],
};
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWFkbWluLWx0ZS10ZWxpcW8vIiwic291cmNlcyI6WyJsaWIvbGF5b3V0L2NvbnRlbnQvY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQXdCLE1BQU0saUJBQWlCLENBQUM7QUFDL0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWxELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF3QnBELE1BQU07Ozs7Ozs7Ozs7Ozs7SUEwQkosWUFDVSxhQUNBLGdCQUNBLGNBQ0EsWUFDQSxtQkFDQSxxQkFDQSxlQUNBLGVBQ0E7UUFSQSxnQkFBVyxHQUFYLFdBQVc7UUFDWCxtQkFBYyxHQUFkLGNBQWM7UUFDZCxpQkFBWSxHQUFaLFlBQVk7UUFDWixlQUFVLEdBQVYsVUFBVTtRQUNWLHNCQUFpQixHQUFqQixpQkFBaUI7UUFDakIsd0JBQW1CLEdBQW5CLG1CQUFtQjtRQUNuQixrQkFBYSxHQUFiLGFBQWE7UUFDYixrQkFBYSxHQUFiLGFBQWE7UUFDYixXQUFNLEdBQU4sTUFBTTs2QkF6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QkFDcEI7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN4QztTQUNGOzs7O1lBL0pKLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQlg7Z0JBQ0MsTUFBTSxFQUFFLENBQUMseURBQXlELENBQUM7Z0JBQ25FLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzs7O1lBOUJRLFdBQVc7WUFFWCxjQUFjO1lBSmQsS0FBSztZQUZxRSxVQUFVO1lBQXhDLGlCQUFpQjtZQU83RCxtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLGFBQWE7WUFSYixNQUFNOzs7b0NBOENaLFNBQVMsU0FBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uU3RhcnQsIE5hdmlnYXRpb25FbmQsIEV2ZW50IGFzIFJvdXRlckV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IExheW91dFN0b3JlIH0gZnJvbSAnLi4vbGF5b3V0LnN0b3JlJztcblxuaW1wb3J0IHsgUm91dGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yb3V0aW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lkZWJhclJpZ2h0U2VydmljZSB9IGZyb20gJy4uL3NpZGViYXItcmlnaHQvc2lkZWJhci1yaWdodC5zZXJ2aWNlJztcbmltcG9ydCB7IEhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9vdGVyU2VydmljZSB9IGZyb20gJy4uL2Zvb3Rlci9mb290ZXIuc2VydmljZSc7XG5cbmltcG9ydCB7IHJlbW92ZVN1YnNjcmlwdGlvbnMgfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWstbGF5b3V0LWNvbnRlbnQnLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJjb250ZW50LXdyYXBwZXJcIiBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWlnaHRTdHlsZVwiPlxuICA8ZGl2ICNjb250ZW50SW5uZXJFbGVtZW50IGNsYXNzPVwiY29udGVudC1pbm5lclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttay1sYXlvdXQtY29udGVudC1iZWZvcmUtaGVhZGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8c2VjdGlvbiAqbmdJZj1cImhlYWRlciB8fCBkZXNjcmlwdGlvblwiIGNsYXNzPVwiY29udGVudC1oZWFkZXJcIj5cbiAgICAgIDxoMT5cbiAgICAgICAge3toZWFkZXJ9fVxuICAgICAgICA8c21hbGwgKm5nSWY9XCJkZXNjcmlwdGlvblwiPnt7ZGVzY3JpcHRpb259fTwvc21hbGw+XG4gICAgICA8L2gxPlxuICAgICAgPG1rLWJyZWFkY3J1bWJzPjwvbWstYnJlYWRjcnVtYnM+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttay1sYXlvdXQtY29udGVudC1hZnRlci1oZWFkZXJdXCI+PC9uZy1jb250ZW50PlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbmAsXG4gIHN0eWxlczogW2A6aG9zdHtkaXNwbGF5OmJsb2NrfS5jb250ZW50LXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9YF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBwdWJsaWMgaGVhZGVyOiBzdHJpbmc7XG4gIHB1YmxpYyBoZWlnaHRTdHlsZTogbnVtYmVyO1xuICBwdWJsaWMgc2lkZWJhckxlZnRIZWlnaHQ6IG51bWJlcjtcbiAgcHVibGljIHdpbmRvd0lubmVySGVpZ2h0OiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBsYXlvdXQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0aXRsZVRhZzogc3RyaW5nO1xuICBwcml2YXRlIG5hdmlnYXRpb25FbmQ6IGJvb2xlYW47XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IFtdO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnRJbm5lckVsZW1lbnQnKSBwcml2YXRlIGNvbnRlbnRJbm5lckVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgY29uc3RydWN0b3JcbiAgICogQHBhcmFtIGxheW91dFN0b3JlXG4gICAqIEBwYXJhbSByb3V0aW5nU2VydmljZVxuICAgKiBAcGFyYW0gdGl0bGVTZXJ2aWNlXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmXG4gICAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZlxuICAgKiBAcGFyYW0gc2lkZWJhclJpZ2h0U2VydmljZVxuICAgKiBAcGFyYW0gaGVhZGVyU2VydmljZVxuICAgKiBAcGFyYW0gZm9vdGVyU2VydmljZVxuICAgKiBAcGFyYW0gcm91dGVyXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxheW91dFN0b3JlOiBMYXlvdXRTdG9yZSxcbiAgICBwcml2YXRlIHJvdXRpbmdTZXJ2aWNlOiBSb3V0aW5nU2VydmljZSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogVGl0bGUsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgc2lkZWJhclJpZ2h0U2VydmljZTogU2lkZWJhclJpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIGhlYWRlclNlcnZpY2U6IEhlYWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb290ZXJTZXJ2aWNlOiBGb290ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBAbWV0aG9kIG5nT25Jbml0XG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRpdGxlVGFnID0gdGhpcy50aXRsZVNlcnZpY2UuZ2V0VGl0bGUoKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucm91dGluZ1NlcnZpY2Uub25DaGFuZ2Uuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5nZXRUaXRsZSh2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXS5kYXRhWyd0aXRsZSddKSk7XG4gICAgICAgIHRoaXMuaGVhZGVyID0gdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0uZGF0YVsndGl0bGUnXTtcbiAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdLmRhdGFbJ2Rlc2NyaXB0aW9uJ107XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKHJvdXRlRXZlbnQ6IFJvdXRlckV2ZW50KSA9PiB7XG4gICAgICBpZiAocm91dGVFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25FbmQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChyb3V0ZUV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25FbmQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldENvbnRlbnRNaW5IZWlnaHQoKTtcbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxheW91dFN0b3JlLnNpZGViYXJMZWZ0RWxlbWVudEhlaWdodC5zdWJzY3JpYmUoKHZhbHVlOiBudW1iZXIpID0+IHtcbiAgICAgIHRoaXMuc2lkZWJhckxlZnRIZWlnaHQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2V0Q29udGVudE1pbkhlaWdodCgpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGF5b3V0U3RvcmUubGF5b3V0LnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5sYXlvdXQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2V0Q29udGVudE1pbkhlaWdodCgpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGF5b3V0U3RvcmUud2luZG93SW5uZXJIZWlnaHQuc3Vic2NyaWJlKCh2YWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICB0aGlzLndpbmRvd0lubmVySGVpZ2h0ID0gdmFsdWU7XG4gICAgICB0aGlzLnNldENvbnRlbnRNaW5IZWlnaHQoKTtcbiAgICB9KSk7XG4gICAgdGhpcy5oZWlnaHRTdHlsZSA9IHRoaXMud2luZG93SW5uZXJIZWlnaHQ7XG4gIH1cblxuICAvKipcbiAgICogQG1ldGhvZCBuZ09uRGVzdHJveVxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gcmVtb3ZlU3Vic2NyaXB0aW9ucyh0aGlzLnN1YnNjcmlwdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFtzY3JvbGxIZWlnaHQgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc2Nyb2xsSGVpZ2h0XG4gICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcHVibGljIGdldCBzY3JvbGxIZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50SW5uZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICB9XG5cbiAgLyoqXG4gICAqIFtnZXRUaXRsZSBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBnZXRUaXRsZVxuICAgKiBAcGFyYW0gdGl0bGUgW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHByaXZhdGUgZ2V0VGl0bGUodGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRpdGxlID8gYCR7dGl0bGV9IC0gJHt0aGlzLnRpdGxlVGFnfWAgOiB0aGlzLnRpdGxlVGFnO1xuICB9XG5cbiAgLyoqXG4gICAqIFtzZXRNaW5IZWlnaHQgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc2V0TWluSGVpZ2h0XG4gICAqL1xuICBwcml2YXRlIHNldENvbnRlbnRNaW5IZWlnaHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkVuZCkge1xuICAgICAgbGV0IGhlaWdodFN0eWxlO1xuXG4gICAgICBjb25zdCBoZWFkZXJGb290ZXJPZmZzZXRIZWlnaHQgPSB0aGlzLmhlYWRlclNlcnZpY2Uub2Zmc2V0SGVpZ2h0ICsgdGhpcy5mb290ZXJTZXJ2aWNlLm9mZnNldEhlaWdodDtcblxuICAgICAgaWYgKHRoaXMubGF5b3V0ID09PSAnZml4ZWQnKSB7XG4gICAgICAgIGhlaWdodFN0eWxlID0gdGhpcy53aW5kb3dJbm5lckhlaWdodCAtIHRoaXMuZm9vdGVyU2VydmljZS5vZmZzZXRIZWlnaHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzaWRlYmFyUmlnaHQgPVxuICAgICAgICAgIHRoaXMuc2lkZWJhclJpZ2h0U2VydmljZS5zY3JvbGxIZWlnaHQgP1xuICAgICAgICAgICAgdGhpcy5zaWRlYmFyUmlnaHRTZXJ2aWNlLnNjcm9sbEhlaWdodCAtIHRoaXMuaGVhZGVyU2VydmljZS5vZmZzZXRIZWlnaHQgOiAwO1xuXG4gICAgICAgIGhlaWdodFN0eWxlID0gTWF0aC5tYXgoXG4gICAgICAgICAgdGhpcy53aW5kb3dJbm5lckhlaWdodCAtIGhlYWRlckZvb3Rlck9mZnNldEhlaWdodCxcbiAgICAgICAgICB0aGlzLnNpZGViYXJMZWZ0SGVpZ2h0IC0gdGhpcy5oZWFkZXJTZXJ2aWNlLm9mZnNldEhlaWdodCxcbiAgICAgICAgICBzaWRlYmFyUmlnaHRcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhlaWdodFN0eWxlICYmIGhlaWdodFN0eWxlICE9PSB0aGlzLmhlaWdodFN0eWxlKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbEhlaWdodCA+IGhlaWdodFN0eWxlKSB7XG4gICAgICAgICAgaGVpZ2h0U3R5bGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGVpZ2h0U3R5bGUgPSBoZWlnaHRTdHlsZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=