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

257 lines 22.6 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'; 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((/** * @param {?} value * @return {?} */ (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 {?} */ (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 {?} */ (value) => { this.sidebarLeftHeight = value; this.setContentMinHeight(); }))); this.subscriptions.push(this.layoutStore.layout.subscribe((/** * @param {?} value * @return {?} */ (value) => { this.layout = value; this.setContentMinHeight(); }))); this.subscriptions.push(this.layoutStore.windowInnerHeight.subscribe((/** * @param {?} value * @return {?} */ (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 * @private * @param {?} title [description] * @return {?} [description] */ getTitle(title) { return title ? `${title} - ${this.titleTag}` : this.titleTag; } /** * [setMinHeight description] * \@method setMinHeight * @private * @return {?} */ setContentMinHeight() { if (this.navigationEnd) { /** @type {?} */ let heightStyle; /** @type {?} */ const headerFooterOffsetHeight = this.headerService.offsetHeight + this.footerService.offsetHeight; if (this.layout === 'fixed') { heightStyle = this.windowInnerHeight - this.footerService.offsetHeight; } else { /** @type {?} */ const 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 = () => [ { 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 },] }] }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hZC1jdXN0b20tbGliLyIsInNvdXJjZXMiOlsibGliL2xheW91dC9jb250ZW50L2NvbnRlbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUNsRyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUF3QixhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFRN0UsTUFBTSxPQUFPLGdCQUFnQjs7Ozs7Ozs7Ozs7OztJQTBCekIsWUFDWSxXQUF3QixFQUN4QixjQUE4QixFQUM5QixZQUFtQixFQUNuQixVQUFzQixFQUN0QixpQkFBb0MsRUFDcEMsbUJBQXdDLEVBQ3hDLGFBQTRCLEVBQzVCLGFBQTRCLEVBQzVCLE1BQWM7UUFSZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQU87UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1C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QVcsR0FBRyxJQUFJLENBQUM7aUJBQ3RCO2dCQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO2dCQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDMUM7U0FDSjtJQUNMLENBQUM7OztZQWhKSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IseXRCQUF1QztnQkFFdkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2xEOzs7O1lBUlEsV0FBVztZQUhYLGNBQWM7WUFKZCxLQUFLO1lBRjZDLFVBQVU7WUFBeEMsaUJBQWlCO1lBVXJDLG1CQUFtQjtZQUZuQixhQUFhO1lBRGIsYUFBYTtZQUp5QyxNQUFNOzs7a0NBMkJoRSxTQUFTLFNBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzs7O0lBWGxELHVDQUEyQjs7SUFDM0Isa0NBQXNCOztJQUN0Qix1Q0FBMkI7O0lBQzNCLDZDQUFpQzs7SUFDakMsNkNBQWlDOzs7OztJQUVqQyxrQ0FBdUI7Ozs7O0lBQ3ZCLG9DQUF5Qjs7Ozs7SUFDekIseUNBQStCOzs7OztJQUMvQix5Q0FBMkI7Ozs7O0lBRTNCLCtDQUE0Rjs7Ozs7SUFleEYsdUNBQWdDOzs7OztJQUNoQywwQ0FBc0M7Ozs7O0lBQ3RDLHdDQUEyQjs7Ozs7SUFDM0Isc0NBQThCOzs7OztJQUM5Qiw2Q0FBNEM7Ozs7O0lBQzVDLCtDQUFnRDs7Ozs7SUFDaEQseUNBQW9DOzs7OztJQUNwQyx5Q0FBb0M7Ozs7O0lBQ3BDLGtDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBFdmVudCBhcyBSb3V0ZXJFdmVudCwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgcmVtb3ZlU3Vic2NyaXB0aW9ucyB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JvdXRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvb3RlclNlcnZpY2UgfSBmcm9tICcuLi9mb290ZXIvZm9vdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIZWFkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U3RvcmUgfSBmcm9tICcuLi9sYXlvdXQuc3RvcmUnO1xyXG5pbXBvcnQgeyBTaWRlYmFyUmlnaHRTZXJ2aWNlIH0gZnJvbSAnLi4vc2lkZWJhci1yaWdodC9zaWRlYmFyLXJpZ2h0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ21rLWxheW91dC1jb250ZW50JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NvbnRlbnQuY29tcG9uZW50LmNzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIHB1YmxpYyBoZWFkZXI6IHN0cmluZztcclxuICAgIHB1YmxpYyBoZWlnaHRTdHlsZTogbnVtYmVyO1xyXG4gICAgcHVibGljIHNpZGViYXJMZWZ0SGVpZ2h0OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgd2luZG93SW5uZXJIZWlnaHQ6IG51bWJlcjtcclxuXHJcbiAgICBwcml2YXRlIGxheW91dDogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSB0aXRsZVRhZzogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0gW107XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnY29udGVudElubmVyRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgY29udGVudElubmVyRWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBtZXRob2QgY29uc3RydWN0b3JcclxuICAgICAqIEBwYXJhbSBsYXlvdXRTdG9yZVxyXG4gICAgICogQHBhcmFtIHJvdXRpbmdTZXJ2aWNlXHJcbiAgICAgKiBAcGFyYW0gdGl0bGVTZXJ2aWNlXHJcbiAgICAgKiBAcGFyYW0gZWxlbWVudFJlZlxyXG4gICAgICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmXHJcbiAgICAgKiBAcGFyYW0gc2lkZWJhclJpZ2h0U2VydmljZVxyXG4gICAgICogQHBhcmFtIGhlYWRlclNlcnZpY2VcclxuICAgICAqIEBwYXJhbSBmb290ZXJTZXJ2aWNlXHJcbiAgICAgKiBAcGFyYW0gcm91dGVyXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgbGF5b3V0U3RvcmU6IExheW91dFN0b3JlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBUaXRsZSxcclxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBzaWRlYmFyUmlnaHRTZXJ2aWNlOiBTaWRlYmFyUmlnaHRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgaGVhZGVyU2VydmljZTogSGVhZGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGZvb3RlclNlcnZpY2U6IEZvb3RlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICAgKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBtZXRob2QgbmdPbkluaXRcclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy50aXRsZVRhZyA9IHRoaXMudGl0bGVTZXJ2aWNlLmdldFRpdGxlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucm91dGluZ1NlcnZpY2Uub25DaGFuZ2Uuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5nZXRUaXRsZSh2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXS5kYXRhWyd0aXRsZSddKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWRlciA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdLmRhdGFbJ3RpdGxlJ107XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0uZGF0YVsnZGVzY3JpcHRpb24nXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgocm91dGVFdmVudDogUm91dGVyRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJvdXRlRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkVuZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyb3V0ZUV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudE1pbkhlaWdodCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxheW91dFN0b3JlLnNpZGViYXJMZWZ0RWxlbWVudEhlaWdodC5zdWJzY3JpYmUoKHZhbHVlOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaWRlYmFyTGVmdEhlaWdodCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnNldENvbnRlbnRNaW5IZWlnaHQoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGF5b3V0U3RvcmUubGF5b3V0LnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnNldENvbnRlbnRNaW5IZWlnaHQoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGF5b3V0U3RvcmUud2luZG93SW5uZXJIZWlnaHQuc3Vic2NyaWJlKCh2YWx1ZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93SW5uZXJIZWlnaHQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50TWluSGVpZ2h0KCk7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0U3R5bGUgPSB0aGlzLndpbmRvd0lubmVySGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQG1ldGhvZCBuZ09uRGVzdHJveVxyXG4gICAgICovXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSByZW1vdmVTdWJzY3JpcHRpb25zKHRoaXMuc3Vic2NyaXB0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2Nyb2xsSGVpZ2h0IGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzY3JvbGxIZWlnaHRcclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHNjcm9sbEhlaWdodCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRJbm5lckVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZ2V0VGl0bGUgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIGdldFRpdGxlXHJcbiAgICAgKiBAcGFyYW0gdGl0bGUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0VGl0bGUodGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRpdGxlID8gYCR7dGl0bGV9IC0gJHt0aGlzLnRpdGxlVGFnfWAgOiB0aGlzLnRpdGxlVGFnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NldE1pbkhlaWdodCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgc2V0TWluSGVpZ2h0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0Q29udGVudE1pbkhlaWdodCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgIGxldCBoZWlnaHRTdHlsZTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlckZvb3Rlck9mZnNldEhlaWdodCA9IHRoaXMuaGVhZGVyU2VydmljZS5vZmZzZXRIZWlnaHQgKyB0aGlzLmZvb3RlclNlcnZpY2Uub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0ID09PSAnZml4ZWQnKSB7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHRTdHlsZSA9IHRoaXMud2luZG93SW5uZXJIZWlnaHQgLSB0aGlzLmZvb3RlclNlcnZpY2Uub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2lkZWJhclJpZ2h0ID1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpZGViYXJSaWdodFNlcnZpY2Uuc2Nyb2xsSGVpZ2h0ID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaWRlYmFyUmlnaHRTZXJ2aWNlLnNjcm9sbEhlaWdodCAtIHRoaXMuaGVhZGVyU2VydmljZS5vZmZzZXRIZWlnaHQgOiAwO1xyXG5cclxuICAgICAgICAgICAgICAgIGhlaWdodFN0eWxlID0gTWF0aC5tYXgoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aW5kb3dJbm5lckhlaWdodCAtIGhlYWRlckZvb3Rlck9mZnNldEhlaWdodCxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpZGViYXJMZWZ0SGVpZ2h0IC0gdGhpcy5oZWFkZXJTZXJ2aWNlLm9mZnNldEhlaWdodCxcclxuICAgICAgICAgICAgICAgICAgICBzaWRlYmFyUmlnaHRcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChoZWlnaHRTdHlsZSAmJiBoZWlnaHRTdHlsZSAhPT0gdGhpcy5oZWlnaHRTdHlsZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGVpZ2h0ID4gaGVpZ2h0U3R5bGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHRTdHlsZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlaWdodFN0eWxlID0gaGVpZ2h0U3R5bGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=