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
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';
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==