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

242 lines 21.3 kB
/** * @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