UNPKG

angular-admin-lte-teliqo

Version:
216 lines (215 loc) 21 kB
/** * @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWFkbWluLWx0ZS10ZWxpcW8vIiwic291cmNlcyI6WyJsaWIvbGF5b3V0L2NvbnRlbnQvY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQXdCLE1BQU0saUJBQWlCLENBQUM7QUFDL0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWxELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF3QnBELE1BQU07Ozs7Ozs7Ozs7Ozs7SUEwQkosWUFDVSxhQUNBLGdCQUNBLGNBQ0EsWUFDQSxtQkFDQSxxQkFDQSxlQUNBLGVBQ0E7UUFSQSxnQkFBVyxHQUFYLFdBQVc7UUFDWCxtQkFBYyxHQUFkLGNBQWM7UUFDZCxpQkFBWSxHQUFaLFlBQVk7UUFDWixlQUFVLEdBQVYsVUFBVTtRQUNWLHNCQUFpQixHQUFqQixpQkFBaUI7UUFDakIsd0JBQW1CLEdBQW5CLG1CQUFtQjtRQUNuQixrQkFBYSxHQUFiLGFBQWE7UUFDYixrQkFBYSxHQUFiLGFBQWE7UUFDYixXQUFNLEdBQU4sTUFBTTs2QkF6QlEsRUFBRTtLQTBCdEI7Ozs7O0lBS0osUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU3QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUM1RSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pGLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNoRTtZQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN2QyxDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQXVCLEVBQUUsRUFBRTtZQUMvRSxFQUFFLENBQUMsQ0FBQyxVQUFVLFlBQVksZUFBZSxDQUFDLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7YUFDNUI7WUFDRCxFQUFFLENBQUMsQ0FBQyxVQUFVLFlBQVksYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQzVCO1NBQ0YsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzVGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDL0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUIsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUMxRSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QixDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDckYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QixDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0tBQzNDOzs7OztJQUtELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUM5RDs7Ozs7O1FBT1UsWUFBWTtRQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7Ozs7Ozs7O0lBU3JELFFBQVEsQ0FBQyxLQUFhO1FBQzVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzs7Ozs7OztJQU92RCxtQkFBbUI7UUFDekIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDdkIscUJBQUksV0FBVyxDQUFDO1lBRWhCLHVCQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBRW5HLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQzthQUN4RTtZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLHVCQUFNLFlBQVksR0FDaEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRWhGLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsd0JBQXdCLEVBQ2pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFDeEQsWUFBWSxDQUNiLENBQUM7YUFDSDtZQUVELEVBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxXQUFXLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDcEMsV0FBVyxHQUFHLElBQUksQ0FBQztpQkFDcEI7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN4QztTQUNGOzs7O1lBL0pKLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQlg7Z0JBQ0MsTUFBTSxFQUFFLENBQUMseURBQXlELENBQUM7Z0JBQ25FLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzs7O1lBOUJRLFdBQVc7WUFFWCxjQUFjO1lBSmQsS0FBSztZQUZxRSxVQUFVO1lBQXhDLGlCQUFpQjtZQU83RCxtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLGFBQWE7WUFSYixNQUFNOzs7b0NBOENaLFNBQVMsU0FBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uU3RhcnQsIE5hdmlnYXRpb25FbmQsIEV2ZW50IGFzIFJvdXRlckV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IExheW91dFN0b3JlIH0gZnJvbSAnLi4vbGF5b3V0LnN0b3JlJztcblxuaW1wb3J0IHsgUm91dGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yb3V0aW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lkZWJhclJpZ2h0U2VydmljZSB9IGZyb20gJy4uL3NpZGViYXItcmlnaHQvc2lkZWJhci1yaWdodC5zZXJ2aWNlJztcbmltcG9ydCB7IEhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9vdGVyU2VydmljZSB9IGZyb20gJy4uL2Zvb3Rlci9mb290ZXIuc2VydmljZSc7XG5cbmltcG9ydCB7IHJlbW92ZVN1YnNjcmlwdGlvbnMgfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWstbGF5b3V0LWNvbnRlbnQnLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJjb250ZW50LXdyYXBwZXJcIiBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWlnaHRTdHlsZVwiPlxuICA8ZGl2ICNjb250ZW50SW5uZXJFbGVtZW50IGNsYXNzPVwiY29udGVudC1pbm5lclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttay1sYXlvdXQtY29udGVudC1iZWZvcmUtaGVhZGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8c2VjdGlvbiAqbmdJZj1cImhlYWRlciB8fCBkZXNjcmlwdGlvblwiIGNsYXNzPVwiY29udGVudC1oZWFkZXJcIj5cbiAgICAgIDxoMT5cbiAgICAgICAge3toZWFkZXJ9fVxuICAgICAgICA8c21hbGwgKm5nSWY9XCJkZXNjcmlwdGlvblwiPnt7ZGVzY3JpcHRpb259fTwvc21hbGw+XG4gICAgICA8L2gxPlxuICAgICAgPG1rLWJyZWFkY3J1bWJzPjwvbWstYnJlYWRjcnVtYnM+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttay1sYXlvdXQtY29udGVudC1hZnRlci1oZWFkZXJdXCI+PC9uZy1jb250ZW50PlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbmAsXG4gIHN0eWxlczogW2A6aG9zdHtkaXNwbGF5OmJsb2NrfS5jb250ZW50LXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9YF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBwdWJsaWMgaGVhZGVyOiBzdHJpbmc7XG4gIHB1YmxpYyBoZWlnaHRTdHlsZTogbnVtYmVyO1xuICBwdWJsaWMgc2lkZWJhckxlZnRIZWlnaHQ6IG51bWJlcjtcbiAgcHVibGljIHdpbmRvd0lubmVySGVpZ2h0OiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBsYXlvdXQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0aXRsZVRhZzogc3RyaW5nO1xuICBwcml2YXRlIG5hdmlnYXRpb25FbmQ6IGJvb2xlYW47XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IFtdO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnRJbm5lckVsZW1lbnQnKSBwcml2YXRlIGNvbnRlbnRJbm5lckVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgY29uc3RydWN0b3JcbiAgICogQHBhcmFtIGxheW91dFN0b3JlXG4gICAqIEBwYXJhbSByb3V0aW5nU2VydmljZVxuICAgKiBAcGFyYW0gdGl0bGVTZXJ2aWNlXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmXG4gICAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZlxuICAgKiBAcGFyYW0gc2lkZWJhclJpZ2h0U2VydmljZVxuICAgKiBAcGFyYW0gaGVhZGVyU2VydmljZVxuICAgKiBAcGFyYW0gZm9vdGVyU2VydmljZVxuICAgKiBAcGFyYW0gcm91dGVyXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxheW91dFN0b3JlOiBMYXlvdXRTdG9yZSxcbiAgICBwcml2YXRlIHJvdXRpbmdTZXJ2aWNlOiBSb3V0aW5nU2VydmljZSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogVGl0bGUsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgc2lkZWJhclJpZ2h0U2VydmljZTogU2lkZWJhclJpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIGhlYWRlclNlcnZpY2U6IEhlYWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb290ZXJTZXJ2aWNlOiBGb290ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBAbWV0aG9kIG5nT25Jbml0XG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRpdGxlVGFnID0gdGhpcy50aXRsZVNlcnZpY2UuZ2V0VGl0bGUoKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucm91dGluZ1NlcnZpY2Uub25DaGFuZ2Uuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5nZXRUaXRsZSh2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXS5kYXRhWyd0aXRsZSddKSk7XG4gICAgICAgIHRoaXMuaGVhZGVyID0gdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0uZGF0YVsndGl0bGUnXTtcbiAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdLmRhdGFbJ2Rlc2NyaXB0aW9uJ107XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKHJvdXRlRXZlbnQ6IFJvdXRlckV2ZW50KSA9PiB7XG4gICAgICBpZiAocm91dGVFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25FbmQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChyb3V0ZUV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25FbmQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldENvbnRlbnRNaW5IZWlnaHQoKTtcbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxheW91dFN0b3JlLnNpZGViYXJMZWZ0RWxlbWVudEhlaWdodC5zdWJzY3JpYmUoKHZhbHVlOiBudW1iZXIpID0+IHtcbiAgICAgIHRoaXMuc2lkZWJhckxlZnRIZWlnaHQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2V0Q29udGVudE1pbkhlaWdodCgpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGF5b3V0U3RvcmUubGF5b3V0LnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5sYXlvdXQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2V0Q29udGVudE1pbkhlaWdodCgpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGF5b3V0U3RvcmUud2luZG93SW5uZXJIZWlnaHQuc3Vic2NyaWJlKCh2YWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICB0aGlzLndpbmRvd0lubmVySGVpZ2h0ID0gdmFsdWU7XG4gICAgICB0aGlzLnNldENvbnRlbnRNaW5IZWlnaHQoKTtcbiAgICB9KSk7XG4gICAgdGhpcy5oZWlnaHRTdHlsZSA9IHRoaXMud2luZG93SW5uZXJIZWlnaHQ7XG4gIH1cblxuICAvKipcbiAgICogQG1ldGhvZCBuZ09uRGVzdHJveVxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gcmVtb3ZlU3Vic2NyaXB0aW9ucyh0aGlzLnN1YnNjcmlwdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFtzY3JvbGxIZWlnaHQgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc2Nyb2xsSGVpZ2h0XG4gICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcHVibGljIGdldCBzY3JvbGxIZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50SW5uZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICB9XG5cbiAgLyoqXG4gICAqIFtnZXRUaXRsZSBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBnZXRUaXRsZVxuICAgKiBAcGFyYW0gdGl0bGUgW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHByaXZhdGUgZ2V0VGl0bGUodGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRpdGxlID8gYCR7dGl0bGV9IC0gJHt0aGlzLnRpdGxlVGFnfWAgOiB0aGlzLnRpdGxlVGFnO1xuICB9XG5cbiAgLyoqXG4gICAqIFtzZXRNaW5IZWlnaHQgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc2V0TWluSGVpZ2h0XG4gICAqL1xuICBwcml2YXRlIHNldENvbnRlbnRNaW5IZWlnaHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkVuZCkge1xuICAgICAgbGV0IGhlaWdodFN0eWxlO1xuXG4gICAgICBjb25zdCBoZWFkZXJGb290ZXJPZmZzZXRIZWlnaHQgPSB0aGlzLmhlYWRlclNlcnZpY2Uub2Zmc2V0SGVpZ2h0ICsgdGhpcy5mb290ZXJTZXJ2aWNlLm9mZnNldEhlaWdodDtcblxuICAgICAgaWYgKHRoaXMubGF5b3V0ID09PSAnZml4ZWQnKSB7XG4gICAgICAgIGhlaWdodFN0eWxlID0gdGhpcy53aW5kb3dJbm5lckhlaWdodCAtIHRoaXMuZm9vdGVyU2VydmljZS5vZmZzZXRIZWlnaHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzaWRlYmFyUmlnaHQgPVxuICAgICAgICAgIHRoaXMuc2lkZWJhclJpZ2h0U2VydmljZS5zY3JvbGxIZWlnaHQgP1xuICAgICAgICAgICAgdGhpcy5zaWRlYmFyUmlnaHRTZXJ2aWNlLnNjcm9sbEhlaWdodCAtIHRoaXMuaGVhZGVyU2VydmljZS5vZmZzZXRIZWlnaHQgOiAwO1xuXG4gICAgICAgIGhlaWdodFN0eWxlID0gTWF0aC5tYXgoXG4gICAgICAgICAgdGhpcy53aW5kb3dJbm5lckhlaWdodCAtIGhlYWRlckZvb3Rlck9mZnNldEhlaWdodCxcbiAgICAgICAgICB0aGlzLnNpZGViYXJMZWZ0SGVpZ2h0IC0gdGhpcy5oZWFkZXJTZXJ2aWNlLm9mZnNldEhlaWdodCxcbiAgICAgICAgICBzaWRlYmFyUmlnaHRcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhlaWdodFN0eWxlICYmIGhlaWdodFN0eWxlICE9PSB0aGlzLmhlaWdodFN0eWxlKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbEhlaWdodCA+IGhlaWdodFN0eWxlKSB7XG4gICAgICAgICAgaGVpZ2h0U3R5bGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGVpZ2h0U3R5bGUgPSBoZWlnaHRTdHlsZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=