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
242 lines • 21.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, NgZone, Output, Renderer2, ViewChild } from '@angular/core';
import { removeListeners } from '../helpers';
import { BoxContentDirective, BoxFooterDirective, BoxHeaderDirective, BoxToolsDirective } from './box.directive';
/*
*
*/
export class BoxComponent {
/**
* \@method constructor
* @param {?} changeDetectorRef [description]
* @param {?} ngZone [description]
* @param {?} renderer2 [description]
*/
constructor(changeDetectorRef, ngZone, renderer2) {
this.changeDetectorRef = changeDetectorRef;
this.ngZone = ngZone;
this.renderer2 = renderer2;
this.remove = false;
this.listeners = [];
this.boxColor = 'default';
this.buttonsStyleClass = 'btn btn-box-tool';
this.contentStyleClass = 'box-content-wrapper';
this.footerStyleClass = 'box-footer';
this.headerBorder = true;
this.headerStyleClass = 'box-header';
this.isCollapsable = true;
this.isCollapsed = false;
this.isRemovable = true;
this.isSolid = false;
this.loadingStyleClass = 'fa fa-refresh fa-spin';
this.styleClass = 'box';
this.onCollapseDone = new EventEmitter();
this.onCollapseStart = new EventEmitter();
}
/**
* \@method ngAfterViewInit
* @return {?}
*/
ngAfterViewInit() {
this.ngZone.runOutsideAngular((/**
* @return {?}
*/
() => {
if (this.toggleButtonElement) {
this.listeners.push(this.renderer2.listen(this.toggleButtonElement.nativeElement, 'click', (/**
* @return {?}
*/
() => {
this.isCollapsed = !this.isCollapsed;
this.changeDetectorRef.detectChanges();
})));
}
if (this.removeButtonElement) {
this.listeners.push(this.renderer2.listen(this.removeButtonElement.nativeElement, 'click', (/**
* @return {?}
*/
() => {
this.remove = true;
this.changeDetectorRef.detectChanges();
})));
}
}));
}
/**
* \@method ngOnDestroy
* @return {?}
*/
ngOnDestroy() {
removeListeners(this.listeners);
}
/**
* [removedDone description]
* \@method removedDone
* @param {?} event [description]
* @return {?}
*/
removedDone(event) {
if (event.toState === '1') {
this.removed = true;
}
}
/**
* [collapseStart description]
* \@method collapseStart
* @param {?} event [description]
* @return {?}
*/
collapseStart(event) {
if (event.fromState !== 'void') {
this.isCollaping = true;
this.onCollapseStart.emit(event);
}
}
/**
* [collapseDone description]
* \@method collapseDone
* @param {?} event [description]
* @return {?}
*/
collapseDone(event) {
if (event.fromState !== 'void') {
this.isCollaping = false;
this.onCollapseDone.emit(event);
}
}
}
BoxComponent.decorators = [
{ type: Component, args: [{
selector: 'mk-box',
template: "<div *ngIf=\"!removed\" [mkColor]=\"boxColor\" mkColorProperty=\"border-color\" mkColorPrefix=\"box\" [ngClass]=\"styleClass\"\r\n [class.collapsed-box]=\"isCollapsed && !isCollaping\" [class.box-solid]=\"isSolid\" [mkCollapseAnimation]=\"remove\"\r\n (mkCollapseAnimation.done)=\"removedDone($event)\">\r\n <div *ngIf=\"header || boxHeaderDirective\" [ngClass]=\"headerStyleClass\" [mkColor]=\"boxColor\"\r\n [mkColorCondition]=\"isSolid\" mkColorProperty=\"background-color\" [class.with-border]=\"headerBorder\">\r\n <h3 class=\"box-title\" [mkFontColor]=\"headerColor\">\r\n {{header}}\r\n <ng-content select=\"mk-box-header\"></ng-content>\r\n </h3>\r\n <div class=\"box-tools pull-right\">\r\n <ng-content select=\"mk-box-tools\"></ng-content>\r\n <button *ngIf=\"isCollapsable\" type=\"button\" [ngClass]=\"buttonsStyleClass\" #toggleButtonElement>\r\n <i class=\"fa\" [ngClass]=\"{'fa-plus': isCollapsed, 'fa-minus': !isCollapsed}\"></i>\r\n </button>\r\n <button *ngIf=\"isRemovable\" type=\"button\" [ngClass]=\"buttonsStyleClass\" #removeButtonElement>\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"contentStyleClass\" [mkFontColor]=\"contentColor\" [mkCollapseAnimation]=\"isCollapsed\"\r\n (mkCollapseAnimation.start)=\"collapseStart($event)\" (mkCollapseAnimation.done)=\"collapseDone($event)\">\r\n <div class=\"box-body\">\r\n <ng-container\r\n *ngIf=\"boxHeaderDirective || boxContentDirective || boxFooterDirective || boxToolsDirective; else noDirective\">\r\n <ng-content select=\"mk-box-content\"></ng-content>\r\n </ng-container>\r\n <ng-template #noDirective>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"footer || boxFooterDirective\" [ngClass]=\"footerStyleClass\" [mkFontColor]=\"footerColor\">\r\n {{footer}}\r\n <ng-content select=\"mk-box-footer\"></ng-content>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isLoading\" class=\"overlay\">\r\n <i [ngClass]=\"loadingStyleClass\" [mkFontColor]=\"loadingColor\"></i>\r\n </div>\r\n</div>",
changeDetection: ChangeDetectionStrategy.OnPush,
styles: [".box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:inherit}.box-solid{border:1px solid}.box-body{background-color:#fff}.box.box-solid.bg-color>.box-header{color:#fff}"]
}] }
];
/** @nocollapse */
BoxComponent.ctorParameters = () => [
{ type: ChangeDetectorRef },
{ type: NgZone },
{ type: Renderer2 }
];
BoxComponent.propDecorators = {
boxColor: [{ type: Input }],
buttonsStyleClass: [{ type: Input }],
contentStyleClass: [{ type: Input }],
contentColor: [{ type: Input }],
footer: [{ type: Input }],
footerColor: [{ type: Input }],
footerStyleClass: [{ type: Input }],
header: [{ type: Input }],
headerBorder: [{ type: Input }],
headerColor: [{ type: Input }],
headerStyleClass: [{ type: Input }],
isCollapsable: [{ type: Input }],
isCollapsed: [{ type: Input }],
isLoading: [{ type: Input }],
isRemovable: [{ type: Input }],
isSolid: [{ type: Input }],
loadingColor: [{ type: Input }],
loadingStyleClass: [{ type: Input }],
styleClass: [{ type: Input }],
onCollapseDone: [{ type: Output }],
onCollapseStart: [{ type: Output }],
boxHeaderDirective: [{ type: ContentChild, args: [BoxHeaderDirective, { static: true },] }],
boxFooterDirective: [{ type: ContentChild, args: [BoxFooterDirective, { static: true },] }],
boxContentDirective: [{ type: ContentChild, args: [BoxContentDirective, { static: true },] }],
boxToolsDirective: [{ type: ContentChild, args: [BoxToolsDirective, { static: true },] }],
toggleButtonElement: [{ type: ViewChild, args: ['toggleButtonElement', { static: true },] }],
removeButtonElement: [{ type: ViewChild, args: ['removeButtonElement', { static: true },] }]
};
if (false) {
/** @type {?} */
BoxComponent.prototype.isCollaping;
/** @type {?} */
BoxComponent.prototype.remove;
/** @type {?} */
BoxComponent.prototype.removed;
/**
* @type {?}
* @private
*/
BoxComponent.prototype.listeners;
/** @type {?} */
BoxComponent.prototype.boxColor;
/** @type {?} */
BoxComponent.prototype.buttonsStyleClass;
/** @type {?} */
BoxComponent.prototype.contentStyleClass;
/** @type {?} */
BoxComponent.prototype.contentColor;
/** @type {?} */
BoxComponent.prototype.footer;
/** @type {?} */
BoxComponent.prototype.footerColor;
/** @type {?} */
BoxComponent.prototype.footerStyleClass;
/** @type {?} */
BoxComponent.prototype.header;
/** @type {?} */
BoxComponent.prototype.headerBorder;
/** @type {?} */
BoxComponent.prototype.headerColor;
/** @type {?} */
BoxComponent.prototype.headerStyleClass;
/** @type {?} */
BoxComponent.prototype.isCollapsable;
/** @type {?} */
BoxComponent.prototype.isCollapsed;
/** @type {?} */
BoxComponent.prototype.isLoading;
/** @type {?} */
BoxComponent.prototype.isRemovable;
/** @type {?} */
BoxComponent.prototype.isSolid;
/** @type {?} */
BoxComponent.prototype.loadingColor;
/** @type {?} */
BoxComponent.prototype.loadingStyleClass;
/** @type {?} */
BoxComponent.prototype.styleClass;
/** @type {?} */
BoxComponent.prototype.onCollapseDone;
/** @type {?} */
BoxComponent.prototype.onCollapseStart;
/** @type {?} */
BoxComponent.prototype.boxHeaderDirective;
/** @type {?} */
BoxComponent.prototype.boxFooterDirective;
/** @type {?} */
BoxComponent.prototype.boxContentDirective;
/** @type {?} */
BoxComponent.prototype.boxToolsDirective;
/**
* @type {?}
* @private
*/
BoxComponent.prototype.toggleButtonElement;
/**
* @type {?}
* @private
*/
BoxComponent.prototype.removeButtonElement;
/**
* @type {?}
* @private
*/
BoxComponent.prototype.changeDetectorRef;
/**
* @type {?}
* @private
*/
BoxComponent.prototype.ngZone;
/**
* @type {?}
* @private
*/
BoxComponent.prototype.renderer2;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FkLWN1c3RvbS1saWIvIiwic291cmNlcyI6WyJsaWIvYm94L2JveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDWSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUNsRixZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFDdkUsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQ0gsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQ2pGLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFXekIsTUFBTSxPQUFPLFlBQVk7Ozs7Ozs7SUEyQ3JCLFlBQ1ksaUJBQW9DLEVBQ3BDLE1BQWMsRUFDZCxTQUFvQjtRQUZwQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBNUN6QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWQsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVQLGFBQVEsR0FBRyxTQUFTLENBQUM7UUFDckIsc0JBQWlCLEdBQUcsa0JBQWtCLENBQUM7UUFDdkMsc0JBQWlCLEdBQUcscUJBQXFCLENBQUM7UUFJMUMscUJBQWdCLEdBQUcsWUFBWSxDQUFDO1FBRWhDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXBCLHFCQUFnQixHQUFHLFlBQVksQ0FBQztRQUNoQyxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLHNCQUFpQixHQUFHLHVC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LE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0NBQ2xELFlBQVksU0FBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7a0NBRWhELFNBQVMsU0FBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7a0NBQ2pELFNBQVMsU0FBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Ozs7SUFsQ2xELG1DQUE0Qjs7SUFDNUIsOEJBQXNCOztJQUN0QiwrQkFBd0I7Ozs7O0lBQ3hCLGlDQUF1Qjs7SUFFdkIsZ0NBQXFDOztJQUNyQyx5Q0FBdUQ7O0lBQ3ZELHlDQUEwRDs7SUFDMUQsb0NBQXFDOztJQUNyQyw4QkFBK0I7O0lBQy9CLG1DQUFvQzs7SUFDcEMsd0NBQWdEOztJQUNoRCw4QkFBK0I7O0lBQy9CLG9DQUFvQzs7SUFDcEMsbUNBQW9DOztJQUNwQyx3Q0FBZ0Q7O0lBQ2hELHFDQUFxQzs7SUFDckMsbUNBQW9DOztJQUNwQyxpQ0FBbUM7O0lBQ25DLG1DQUFtQzs7SUFDbkMsK0JBQWdDOztJQUNoQyxvQ0FBcUM7O0lBQ3JDLHlDQUE0RDs7SUFDNUQsa0NBQW1DOztJQUVuQyxzQ0FBcUQ7O0lBQ3JELHVDQUFzRDs7SUFFdEQsMENBQWtHOztJQUNsRywwQ0FBa0c7O0lBQ2xHLDJDQUFxRzs7SUFDckcseUNBQStGOzs7OztJQUUvRiwyQ0FBZ0Y7Ozs7O0lBQ2hGLDJDQUFnRjs7Ozs7SUFTNUUseUNBQTRDOzs7OztJQUM1Qyw4QkFBc0I7Ozs7O0lBQ3RCLGlDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkLFxyXG4gICAgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnLi4vYW5pbWF0aW9ucy9hbmltYXRpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IHJlbW92ZUxpc3RlbmVycyB9IGZyb20gJy4uL2hlbHBlcnMnO1xyXG5pbXBvcnQge1xyXG4gICAgQm94Q29udGVudERpcmVjdGl2ZSwgQm94Rm9vdGVyRGlyZWN0aXZlLCBCb3hIZWFkZXJEaXJlY3RpdmUsIEJveFRvb2xzRGlyZWN0aXZlXHJcbn0gZnJvbSAnLi9ib3guZGlyZWN0aXZlJztcclxuXHJcbi8qXHJcbiAqXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbWstYm94JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9ib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYm94LmNvbXBvbmVudC5jc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHVibGljIGlzQ29sbGFwaW5nOiBib29sZWFuO1xyXG4gICAgcHVibGljIHJlbW92ZSA9IGZhbHNlO1xyXG4gICAgcHVibGljIHJlbW92ZWQ6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIGxpc3RlbmVycyA9IFtdO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBib3hDb2xvciA9ICdkZWZhdWx0JztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBidXR0b25zU3R5bGVDbGFzcyA9ICdidG4gYnRuLWJveC10b29sJztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBjb250ZW50U3R5bGVDbGFzcyA9ICdib3gtY29udGVudC13cmFwcGVyJztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBjb250ZW50Q29sb3I6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBmb290ZXI6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBmb290ZXJDb2xvcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHVibGljIGZvb3RlclN0eWxlQ2xhc3MgPSAnYm94LWZvb3Rlcic7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVhZGVyOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVhZGVyQm9yZGVyID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBoZWFkZXJDb2xvcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHVibGljIGhlYWRlclN0eWxlQ2xhc3MgPSAnYm94LWhlYWRlcic7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNDb2xsYXBzYWJsZSA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNDb2xsYXBzZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBpc0xvYWRpbmc6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNSZW1vdmFibGUgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcHVibGljIGlzU29saWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBsb2FkaW5nQ29sb3I6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBsb2FkaW5nU3R5bGVDbGFzcyA9ICdmYSBmYS1yZWZyZXNoIGZhLXNwaW4nO1xyXG4gICAgQElucHV0KCkgcHVibGljIHN0eWxlQ2xhc3MgPSAnYm94JztcclxuXHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uQ29sbGFwc2VEb25lID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkNvbGxhcHNlU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZChCb3hIZWFkZXJEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBib3hIZWFkZXJEaXJlY3RpdmU6IEJveEhlYWRlckRpcmVjdGl2ZTtcclxuICAgIEBDb250ZW50Q2hpbGQoQm94Rm9vdGVyRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgYm94Rm9vdGVyRGlyZWN0aXZlOiBCb3hGb290ZXJEaXJlY3RpdmU7XHJcbiAgICBAQ29udGVudENoaWxkKEJveENvbnRlbnREaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBib3hDb250ZW50RGlyZWN0aXZlOiBCb3hDb250ZW50RGlyZWN0aXZlO1xyXG4gICAgQENvbnRlbnRDaGlsZChCb3hUb29sc0RpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGJveFRvb2xzRGlyZWN0aXZlOiBCb3hUb29sc0RpcmVjdGl2ZTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCd0b2dnbGVCdXR0b25FbGVtZW50JywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSB0b2dnbGVCdXR0b25FbGVtZW50O1xyXG4gICAgQFZpZXdDaGlsZCgncmVtb3ZlQnV0dG9uRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgcmVtb3ZlQnV0dG9uRWxlbWVudDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBtZXRob2QgY29uc3RydWN0b3JcclxuICAgICAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAcGFyYW0gbmdab25lICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICogQHBhcmFtIHJlbmRlcmVyMiAgICAgICAgIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyMjogUmVuZGVyZXIyXHJcbiAgICApIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQG1ldGhvZCBuZ0FmdGVyVmlld0luaXRcclxuICAgICAqL1xyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudG9nZ2xlQnV0dG9uRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyMi5saXN0ZW4odGhpcy50b2dnbGVCdXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gIXRoaXMuaXNDb2xsYXBzZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMucmVtb3ZlQnV0dG9uRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyMi5saXN0ZW4odGhpcy5yZW1vdmVCdXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBtZXRob2QgbmdPbkRlc3Ryb3lcclxuICAgICAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgcmVtb3ZlTGlzdGVuZXJzKHRoaXMubGlzdGVuZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtyZW1vdmVkRG9uZSBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgcmVtb3ZlZERvbmVcclxuICAgICAqIEBwYXJhbSBldmVudCBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZW1vdmVkRG9uZShldmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChldmVudC50b1N0YXRlID09PSAnMScpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbY29sbGFwc2VTdGFydCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgY29sbGFwc2VTdGFydFxyXG4gICAgICogQHBhcmFtIGV2ZW50IFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbGxhcHNlU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmZyb21TdGF0ZSAhPT0gJ3ZvaWQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNDb2xsYXBpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm9uQ29sbGFwc2VTdGFydC5lbWl0KGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbY29sbGFwc2VEb25lIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBjb2xsYXBzZURvbmVcclxuICAgICAqIEBwYXJhbSBldmVudCBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb2xsYXBzZURvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmZyb21TdGF0ZSAhPT0gJ3ZvaWQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNDb2xsYXBpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5vbkNvbGxhcHNlRG9uZS5lbWl0KGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19