UNPKG

angular-admin-lte-teliqo

Version:
232 lines (231 loc) 22.1 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'; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWFkbWluLWx0ZS10ZWxpcW8vIiwic291cmNlcyI6WyJsaWIvbGF5b3V0L2NvbnRlbnQvY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQXdCLE1BQU0saUJBQWlCLENBQUM7QUFDL0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWxELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7O0lBc0NsRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILDBCQUNVLGFBQ0EsZ0JBQ0EsY0FDQSxZQUNBLG1CQUNBLHFCQUNBLGVBQ0EsZUFDQTtRQVJBLGdCQUFXLEdBQVgsV0FBVztRQUNYLG1CQUFjLEdBQWQsY0FBYztRQUNkLGlCQUFZLEdBQVosWUFBWTtRQUNaLGVBQVUsR0FBVixVQUFVO1FBQ1Ysc0JBQWlCLEdBQWpCLGlCQUFpQjtRQUNqQix3QkFBbUIsR0FBbkIsbUJBQW1CO1FBQ25CLGtCQUFhLEdBQWIsYUFBYTtRQUNiLGtCQUFhLEdBQWIsYUFBYTtRQUNiLFdBQU0sR0FBTixNQUFNOzZCQXpCUSxFQUFFO0tBMEJ0QjtJQUVKOztPQUVHOzs7OztJQUNILG1DQUFROzs7O0lBQVI7UUFBQSxpQkFxQ0M7UUFwQ0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTdDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFDLEtBQVU7WUFDeEUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckMsS0FBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqRixLQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDcEQsS0FBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDaEU7WUFDRCxLQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdkMsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBQyxVQUF1QjtZQUMzRSxFQUFFLENBQUMsQ0FBQyxVQUFVLFlBQVksZUFBZSxDQUFDLENBQUMsQ0FBQztnQkFDMUMsS0FBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7YUFDNUI7WUFDRCxFQUFFLENBQUMsQ0FBQyxVQUFVLFlBQVksYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDeEMsS0FBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQzFCLEtBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQzVCO1NBQ0YsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxVQUFDLEtBQWE7WUFDeEYsS0FBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixLQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QixDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFDLEtBQWE7WUFDdEUsS0FBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsS0FBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUIsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxVQUFDLEtBQWE7WUFDakYsS0FBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixLQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QixDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0tBQzNDO0lBRUQ7O09BRUc7Ozs7O0lBQ0gsc0NBQVc7Ozs7SUFBWDtRQUNFLElBQUksQ0FBQyxhQUFhLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQzlEOzBCQU9VLDBDQUFZOzs7Ozs7O1lBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7SUFTckQsbUNBQVE7Ozs7OztjQUFDLEtBQWE7UUFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUksS0FBSyxXQUFNLElBQUksQ0FBQyxRQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Ozs7Ozs7SUFPdkQsOENBQW1COzs7Ozs7UUFDekIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDdkIscUJBQUksV0FBVyxTQUFBLENBQUM7WUFFaEIscUJBQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7WUFFbkcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO2FBQ3hFO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04scUJBQU0sWUFBWSxHQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFaEYsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyx3QkFBd0IsRUFDakQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUN4RCxZQUFZLENBQ2IsQ0FBQzthQUNIO1lBRUQsRUFBRSxDQUFDLENBQUMsV0FBVyxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDcEQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUNwQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2lCQUNwQjtnQkFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3hDO1NBQ0Y7OztnQkEvSkosU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxzbUJBZ0JYO29CQUNDLE1BQU0sRUFBRSxDQUFDLHlEQUF5RCxDQUFDO29CQUNuRSxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7Ozs7Z0JBOUJRLFdBQVc7Z0JBRVgsY0FBYztnQkFKZCxLQUFLO2dCQUZxRSxVQUFVO2dCQUF4QyxpQkFBaUI7Z0JBTzdELG1CQUFtQjtnQkFDbkIsYUFBYTtnQkFDYixhQUFhO2dCQVJiLE1BQU07Ozt3Q0E4Q1osU0FBUyxTQUFDLHFCQUFxQjs7MkJBL0NsQzs7U0FtQ2EsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvblN0YXJ0LCBOYXZpZ2F0aW9uRW5kLCBFdmVudCBhcyBSb3V0ZXJFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBMYXlvdXRTdG9yZSB9IGZyb20gJy4uL2xheW91dC5zdG9yZSc7XG5cbmltcG9ydCB7IFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNpZGViYXJSaWdodFNlcnZpY2UgfSBmcm9tICcuLi9zaWRlYmFyLXJpZ2h0L3NpZGViYXItcmlnaHQuc2VydmljZSc7XG5pbXBvcnQgeyBIZWFkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvb3RlclNlcnZpY2UgfSBmcm9tICcuLi9mb290ZXIvZm9vdGVyLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyByZW1vdmVTdWJzY3JpcHRpb25zIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21rLWxheW91dC1jb250ZW50JyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwiY29udGVudC13cmFwcGVyXCIgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVpZ2h0U3R5bGVcIj5cbiAgPGRpdiAjY29udGVudElubmVyRWxlbWVudCBjbGFzcz1cImNvbnRlbnQtaW5uZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWstbGF5b3V0LWNvbnRlbnQtYmVmb3JlLWhlYWRlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPHNlY3Rpb24gKm5nSWY9XCJoZWFkZXIgfHwgZGVzY3JpcHRpb25cIiBjbGFzcz1cImNvbnRlbnQtaGVhZGVyXCI+XG4gICAgICA8aDE+XG4gICAgICAgIHt7aGVhZGVyfX1cbiAgICAgICAgPHNtYWxsICpuZ0lmPVwiZGVzY3JpcHRpb25cIj57e2Rlc2NyaXB0aW9ufX08L3NtYWxsPlxuICAgICAgPC9oMT5cbiAgICAgIDxtay1icmVhZGNydW1icz48L21rLWJyZWFkY3J1bWJzPlxuICAgIDwvc2VjdGlvbj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWstbGF5b3V0LWNvbnRlbnQtYWZ0ZXItaGVhZGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuPC9kaXY+XG5gLFxuICBzdHlsZXM6IFtgOmhvc3R7ZGlzcGxheTpibG9ja30uY29udGVudC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlfWBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcHVibGljIGhlYWRlcjogc3RyaW5nO1xuICBwdWJsaWMgaGVpZ2h0U3R5bGU6IG51bWJlcjtcbiAgcHVibGljIHNpZGViYXJMZWZ0SGVpZ2h0OiBudW1iZXI7XG4gIHB1YmxpYyB3aW5kb3dJbm5lckhlaWdodDogbnVtYmVyO1xuXG4gIHByaXZhdGUgbGF5b3V0OiBzdHJpbmc7XG4gIHByaXZhdGUgdGl0bGVUYWc6IHN0cmluZztcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kOiBib29sZWFuO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBbXTtcblxuICBAVmlld0NoaWxkKCdjb250ZW50SW5uZXJFbGVtZW50JykgcHJpdmF0ZSBjb250ZW50SW5uZXJFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBAbWV0aG9kIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBsYXlvdXRTdG9yZVxuICAgKiBAcGFyYW0gcm91dGluZ1NlcnZpY2VcbiAgICogQHBhcmFtIHRpdGxlU2VydmljZVxuICAgKiBAcGFyYW0gZWxlbWVudFJlZlxuICAgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWZcbiAgICogQHBhcmFtIHNpZGViYXJSaWdodFNlcnZpY2VcbiAgICogQHBhcmFtIGhlYWRlclNlcnZpY2VcbiAgICogQHBhcmFtIGZvb3RlclNlcnZpY2VcbiAgICogQHBhcmFtIHJvdXRlclxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsYXlvdXRTdG9yZTogTGF5b3V0U3RvcmUsXG4gICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNpZGViYXJSaWdodFNlcnZpY2U6IFNpZGViYXJSaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBoZWFkZXJTZXJ2aWNlOiBIZWFkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9vdGVyU2VydmljZTogRm9vdGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICAvKipcbiAgICogQG1ldGhvZCBuZ09uSW5pdFxuICAgKi9cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50aXRsZVRhZyA9IHRoaXMudGl0bGVTZXJ2aWNlLmdldFRpdGxlKCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnJvdXRpbmdTZXJ2aWNlLm9uQ2hhbmdlLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRoaXMuZ2V0VGl0bGUodmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0uZGF0YVsndGl0bGUnXSkpO1xuICAgICAgICB0aGlzLmhlYWRlciA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdLmRhdGFbJ3RpdGxlJ107XG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXS5kYXRhWydkZXNjcmlwdGlvbiddO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChyb3V0ZUV2ZW50OiBSb3V0ZXJFdmVudCkgPT4ge1xuICAgICAgaWYgKHJvdXRlRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRW5kID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAocm91dGVFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRW5kID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXRDb250ZW50TWluSGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5sYXlvdXRTdG9yZS5zaWRlYmFyTGVmdEVsZW1lbnRIZWlnaHQuc3Vic2NyaWJlKCh2YWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICB0aGlzLnNpZGViYXJMZWZ0SGVpZ2h0ID0gdmFsdWU7XG4gICAgICB0aGlzLnNldENvbnRlbnRNaW5IZWlnaHQoKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxheW91dFN0b3JlLmxheW91dC5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMubGF5b3V0ID0gdmFsdWU7XG4gICAgICB0aGlzLnNldENvbnRlbnRNaW5IZWlnaHQoKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxheW91dFN0b3JlLndpbmRvd0lubmVySGVpZ2h0LnN1YnNjcmliZSgodmFsdWU6IG51bWJlcikgPT4ge1xuICAgICAgdGhpcy53aW5kb3dJbm5lckhlaWdodCA9IHZhbHVlO1xuICAgICAgdGhpcy5zZXRDb250ZW50TWluSGVpZ2h0KCk7XG4gICAgfSkpO1xuICAgIHRoaXMuaGVpZ2h0U3R5bGUgPSB0aGlzLndpbmRvd0lubmVySGVpZ2h0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgbmdPbkRlc3Ryb3lcbiAgICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IHJlbW92ZVN1YnNjcmlwdGlvbnModGhpcy5zdWJzY3JpcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbc2Nyb2xsSGVpZ2h0IGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHNjcm9sbEhlaWdodFxuICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHB1YmxpYyBnZXQgc2Nyb2xsSGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudElubmVyRWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZ2V0VGl0bGUgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2QgZ2V0VGl0bGVcbiAgICogQHBhcmFtIHRpdGxlIFtkZXNjcmlwdGlvbl1cbiAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBwcml2YXRlIGdldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aXRsZSA/IGAke3RpdGxlfSAtICR7dGhpcy50aXRsZVRhZ31gIDogdGhpcy50aXRsZVRhZztcbiAgfVxuXG4gIC8qKlxuICAgKiBbc2V0TWluSGVpZ2h0IGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHNldE1pbkhlaWdodFxuICAgKi9cbiAgcHJpdmF0ZSBzZXRDb250ZW50TWluSGVpZ2h0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25FbmQpIHtcbiAgICAgIGxldCBoZWlnaHRTdHlsZTtcblxuICAgICAgY29uc3QgaGVhZGVyRm9vdGVyT2Zmc2V0SGVpZ2h0ID0gdGhpcy5oZWFkZXJTZXJ2aWNlLm9mZnNldEhlaWdodCArIHRoaXMuZm9vdGVyU2VydmljZS5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgIGlmICh0aGlzLmxheW91dCA9PT0gJ2ZpeGVkJykge1xuICAgICAgICBoZWlnaHRTdHlsZSA9IHRoaXMud2luZG93SW5uZXJIZWlnaHQgLSB0aGlzLmZvb3RlclNlcnZpY2Uub2Zmc2V0SGVpZ2h0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2lkZWJhclJpZ2h0ID1cbiAgICAgICAgICB0aGlzLnNpZGViYXJSaWdodFNlcnZpY2Uuc2Nyb2xsSGVpZ2h0ID9cbiAgICAgICAgICAgIHRoaXMuc2lkZWJhclJpZ2h0U2VydmljZS5zY3JvbGxIZWlnaHQgLSB0aGlzLmhlYWRlclNlcnZpY2Uub2Zmc2V0SGVpZ2h0IDogMDtcblxuICAgICAgICBoZWlnaHRTdHlsZSA9IE1hdGgubWF4KFxuICAgICAgICAgIHRoaXMud2luZG93SW5uZXJIZWlnaHQgLSBoZWFkZXJGb290ZXJPZmZzZXRIZWlnaHQsXG4gICAgICAgICAgdGhpcy5zaWRlYmFyTGVmdEhlaWdodCAtIHRoaXMuaGVhZGVyU2VydmljZS5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgc2lkZWJhclJpZ2h0XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChoZWlnaHRTdHlsZSAmJiBoZWlnaHRTdHlsZSAhPT0gdGhpcy5oZWlnaHRTdHlsZSkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIZWlnaHQgPiBoZWlnaHRTdHlsZSkge1xuICAgICAgICAgIGhlaWdodFN0eWxlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhlaWdodFN0eWxlID0gaGVpZ2h0U3R5bGU7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19