UNPKG

ad-custom-lib

Version:

This is an UI custom library based on Adminlte library with purpose for personal use, if you need a full template of Primeng please visit https://github.com/mledour/angular-admin-lte

306 lines 24.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, ViewChild } from '@angular/core'; import { Title } from '@angular/platform-browser'; import { NavigationEnd, NavigationStart, Router } from '@angular/router'; import { removeSubscriptions } from '../../helpers'; import { RoutingService } from '../../services/routing.service'; import { FooterService } from '../footer/footer.service'; import { HeaderService } from '../header/header.service'; import { LayoutStore } from '../layout.store'; import { SidebarRightService } from '../sidebar-right/sidebar-right.service'; 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((/** * @param {?} value * @return {?} */ 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((/** * @param {?} routeEvent * @return {?} */ 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((/** * @param {?} value * @return {?} */ function (value) { _this.sidebarLeftHeight = value; _this.setContentMinHeight(); }))); this.subscriptions.push(this.layoutStore.layout.subscribe((/** * @param {?} value * @return {?} */ function (value) { _this.layout = value; _this.setContentMinHeight(); }))); this.subscriptions.push(this.layoutStore.windowInnerHeight.subscribe((/** * @param {?} value * @return {?} */ 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", { /** * [scrollHeight description] * @method scrollHeight * @return [description] */ 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] */ /** * [getTitle description] * \@method getTitle * @private * @param {?} title [description] * @return {?} [description] */ ContentComponent.prototype.getTitle = /** * [getTitle description] * \@method getTitle * @private * @param {?} title [description] * @return {?} [description] */ function (title) { return title ? title + " - " + this.titleTag : this.titleTag; }; /** * [setMinHeight description] * @method setMinHeight */ /** * [setMinHeight description] * \@method setMinHeight * @private * @return {?} */ ContentComponent.prototype.setContentMinHeight = /** * [setMinHeight description] * \@method setMinHeight * @private * @return {?} */ function () { if (this.navigationEnd) { /** @type {?} */ var heightStyle = void 0; /** @type {?} */ var headerFooterOffsetHeight = this.headerService.offsetHeight + this.footerService.offsetHeight; if (this.layout === 'fixed') { heightStyle = this.windowInnerHeight - this.footerService.offsetHeight; } else { /** @type {?} */ var 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\">\r\n <div #contentInnerElement class=\"content-inner\">\r\n <ng-content select=\"[mk-layout-content-before-header]\"></ng-content>\r\n <!-- <section class=\"content-header\">\r\n <h1 *ngIf=\"header || description\">\r\n {{header}}\r\n <small *ngIf=\"description\">{{description}}</small>\r\n </h1>\r\n <mk-breadcrumbs></mk-breadcrumbs>\r\n </section> -->\r\n <ng-content select=\"[mk-layout-content-after-header]\"></ng-content>\r\n <section class=\"content\">\r\n <ng-content></ng-content>\r\n </section>\r\n </div>\r\n</div>", changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.content-wrapper{position:relative}"] }] } ]; /** @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', { static: true },] }] }; return ContentComponent; }()); export { ContentComponent }; if (false) { /** @type {?} */ ContentComponent.prototype.description; /** @type {?} */ ContentComponent.prototype.header; /** @type {?} */ ContentComponent.prototype.heightStyle; /** @type {?} */ ContentComponent.prototype.sidebarLeftHeight; /** @type {?} */ ContentComponent.prototype.windowInnerHeight; /** * @type {?} * @private */ ContentComponent.prototype.layout; /** * @type {?} * @private */ ContentComponent.prototype.titleTag; /** * @type {?} * @private */ ContentComponent.prototype.navigationEnd; /** * @type {?} * @private */ ContentComponent.prototype.subscriptions; /** * @type {?} * @private */ ContentComponent.prototype.contentInnerElement; /** * @type {?} * @private */ ContentComponent.prototype.layoutStore; /** * @type {?} * @private */ ContentComponent.prototype.routingService; /** * @type {?} * @private */ ContentComponent.prototype.titleService; /** * @type {?} * @private */ ContentComponent.prototype.elementRef; /** * @type {?} * @private */ ContentComponent.prototype.changeDetectorRef; /** * @type {?} * @private */ ContentComponent.prototype.sidebarRightService; /** * @type {?} * @private */ ContentComponent.prototype.headerService; /** * @type {?} * @private */ ContentComponent.prototype.footerService; /** * @type {?} * @private */ ContentComponent.prototype.router; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hZC1jdXN0b20tbGliLyIsInNvdXJjZXMiOlsibGliL2xheW91dC9jb250ZW50L2NvbnRlbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUNsRyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUF3QixhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFN0U7SUFvQkk7Ozs7Ozs7Ozs7O09BV0c7SUFDSCwwQkFDWSxXQUF3QixFQUN4QixjQUE4QixFQUM5QixZQUFtQixFQUNuQixVQUFzQixFQUN0QixpQkFBb0MsRUFDcEMsbUJBQXdDLEVBQ3hDLGFBQTRCLEVBQzVCLGFBQTRCLEVBQzVCLE1BQWM7UUFSZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQU87UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHdC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Q0FBQyxXQUFXLEVBQUU7Z0JBQ2pELElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLEVBQUU7b0JBQ2pDLFdBQVcsR0FBRyxJQUFJLENBQUM7aUJBQ3RCO2dCQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO2dCQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDMUM7U0FDSjtJQUNMLENBQUM7O2dCQWhKSixTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IseXRCQUF1QztvQkFFdkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2lCQUNsRDs7OztnQkFSUSxXQUFXO2dCQUhYLGNBQWM7Z0JBSmQsS0FBSztnQkFGNkMsVUFBVTtnQkFBeEMsaUJBQWlCO2dCQVVyQyxtQkFBbUI7Z0JBRm5CLGFBQWE7Z0JBRGIsYUFBYTtnQkFKeUMsTUFBTTs7O3NDQTJCaEUsU0FBUyxTQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7SUErSHRELHVCQUFDO0NBQUEsQUFqSkQsSUFpSkM7U0EzSVksZ0JBQWdCOzs7SUFDekIsdUNBQTJCOztJQUMzQixrQ0FBc0I7O0lBQ3RCLHVDQUEyQjs7SUFDM0IsNkNBQWlDOztJQUNqQyw2Q0FBaUM7Ozs7O0lBRWpDLGtDQUF1Qjs7Ozs7SUFDdkIsb0NBQXlCOzs7OztJQUN6Qix5Q0FBK0I7Ozs7O0lBQy9CLHlDQUEyQjs7Ozs7SUFFM0IsK0NBQTRGOzs7OztJQWV4Rix1Q0FBZ0M7Ozs7O0lBQ2hDLDBDQUFzQzs7Ozs7SUFDdEMsd0NBQTJCOzs7OztJQUMzQixzQ0FBOEI7Ozs7O0lBQzlCLDZDQUE0Qzs7Ozs7SUFDNUMsK0NBQWdEOzs7OztJQUNoRCx5Q0FBb0M7Ozs7O0lBQ3BDLHlDQUFvQzs7Ozs7SUFDcEMsa0NBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEV2ZW50IGFzIFJvdXRlckV2ZW50LCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyByZW1vdmVTdWJzY3JpcHRpb25zIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XHJcbmltcG9ydCB7IFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9vdGVyU2VydmljZSB9IGZyb20gJy4uL2Zvb3Rlci9mb290ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTdG9yZSB9IGZyb20gJy4uL2xheW91dC5zdG9yZSc7XHJcbmltcG9ydCB7IFNpZGViYXJSaWdodFNlcnZpY2UgfSBmcm9tICcuLi9zaWRlYmFyLXJpZ2h0L3NpZGViYXItcmlnaHQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbWstbGF5b3V0LWNvbnRlbnQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29udGVudC5jb21wb25lbnQuY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgcHVibGljIGhlYWRlcjogc3RyaW5nO1xyXG4gICAgcHVibGljIGhlaWdodFN0eWxlOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgc2lkZWJhckxlZnRIZWlnaHQ6IG51bWJlcjtcclxuICAgIHB1YmxpYyB3aW5kb3dJbm5lckhlaWdodDogbnVtYmVyO1xyXG5cclxuICAgIHByaXZhdGUgbGF5b3V0OiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIHRpdGxlVGFnOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIG5hdmlnYXRpb25FbmQ6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBbXTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdjb250ZW50SW5uZXJFbGVtZW50JywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBjb250ZW50SW5uZXJFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQG1ldGhvZCBjb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGxheW91dFN0b3JlXHJcbiAgICAgKiBAcGFyYW0gcm91dGluZ1NlcnZpY2VcclxuICAgICAqIEBwYXJhbSB0aXRsZVNlcnZpY2VcclxuICAgICAqIEBwYXJhbSBlbGVtZW50UmVmXHJcbiAgICAgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWZcclxuICAgICAqIEBwYXJhbSBzaWRlYmFyUmlnaHRTZXJ2aWNlXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVyU2VydmljZVxyXG4gICAgICogQHBhcmFtIGZvb3RlclNlcnZpY2VcclxuICAgICAqIEBwYXJhbSByb3V0ZXJcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBsYXlvdXRTdG9yZTogTGF5b3V0U3RvcmUsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxyXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIHNpZGViYXJSaWdodFNlcnZpY2U6IFNpZGViYXJSaWdodFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBoZWFkZXJTZXJ2aWNlOiBIZWFkZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZm9vdGVyU2VydmljZTogRm9vdGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgICApIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQG1ldGhvZCBuZ09uSW5pdFxyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnRpdGxlVGFnID0gdGhpcy50aXRsZVNlcnZpY2UuZ2V0VGl0bGUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5yb3V0aW5nU2VydmljZS5vbkNoYW5nZS5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0aGlzLmdldFRpdGxlKHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdLmRhdGFbJ3RpdGxlJ10pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyID0gdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0uZGF0YVsndGl0bGUnXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXS5kYXRhWydkZXNjcmlwdGlvbiddO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChyb3V0ZUV2ZW50OiBSb3V0ZXJFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocm91dGVFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRW5kID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJvdXRlRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25FbmQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50TWluSGVpZ2h0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGF5b3V0U3RvcmUuc2lkZWJhckxlZnRFbGVtZW50SGVpZ2h0LnN1YnNjcmliZSgodmFsdWU6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNpZGViYXJMZWZ0SGVpZ2h0ID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudE1pbkhlaWdodCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5sYXlvdXRTdG9yZS5sYXlvdXQuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGF5b3V0ID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudE1pbkhlaWdodCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5sYXlvdXRTdG9yZS53aW5kb3dJbm5lckhlaWdodC5zdWJzY3JpYmUoKHZhbHVlOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy53aW5kb3dJbm5lckhlaWdodCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnNldENvbnRlbnRNaW5IZWlnaHQoKTtcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5oZWlnaHRTdHlsZSA9IHRoaXMud2luZG93SW5uZXJIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIG5nT25EZXN0cm95XHJcbiAgICAgKi9cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IHJlbW92ZVN1YnNjcmlwdGlvbnModGhpcy5zdWJzY3JpcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzY3JvbGxIZWlnaHQgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNjcm9sbEhlaWdodFxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgc2Nyb2xsSGVpZ2h0KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudElubmVyRWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtnZXRUaXRsZSBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgZ2V0VGl0bGVcclxuICAgICAqIEBwYXJhbSB0aXRsZSBbZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRUaXRsZSh0aXRsZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGl0bGUgPyBgJHt0aXRsZX0gLSAke3RoaXMudGl0bGVUYWd9YCA6IHRoaXMudGl0bGVUYWc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2V0TWluSGVpZ2h0IGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzZXRNaW5IZWlnaHRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRDb250ZW50TWluSGVpZ2h0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgICAgbGV0IGhlaWdodFN0eWxlO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaGVhZGVyRm9vdGVyT2Zmc2V0SGVpZ2h0ID0gdGhpcy5oZWFkZXJTZXJ2aWNlLm9mZnNldEhlaWdodCArIHRoaXMuZm9vdGVyU2VydmljZS5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5sYXlvdXQgPT09ICdmaXhlZCcpIHtcclxuICAgICAgICAgICAgICAgIGhlaWdodFN0eWxlID0gdGhpcy53aW5kb3dJbm5lckhlaWdodCAtIHRoaXMuZm9vdGVyU2VydmljZS5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzaWRlYmFyUmlnaHQgPVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2lkZWJhclJpZ2h0U2VydmljZS5zY3JvbGxIZWlnaHQgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpZGViYXJSaWdodFNlcnZpY2Uuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5oZWFkZXJTZXJ2aWNlLm9mZnNldEhlaWdodCA6IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0U3R5bGUgPSBNYXRoLm1heChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndpbmRvd0lubmVySGVpZ2h0IC0gaGVhZGVyRm9vdGVyT2Zmc2V0SGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2lkZWJhckxlZnRIZWlnaHQgLSB0aGlzLmhlYWRlclNlcnZpY2Uub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgIHNpZGViYXJSaWdodFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGhlaWdodFN0eWxlICYmIGhlaWdodFN0eWxlICE9PSB0aGlzLmhlaWdodFN0eWxlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zY3JvbGxIZWlnaHQgPiBoZWlnaHRTdHlsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodFN0eWxlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0U3R5bGUgPSBoZWlnaHRTdHlsZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==