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
JavaScript
/**
* @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=