theme-lib
Version:
This is a simple example Angular Library published to npm.
201 lines • 14.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { ComponentFactoryResolver, Directive, ElementRef, Input, Renderer2, ViewContainerRef, HostBinding, } from '@angular/core';
import { NbSpinnerComponent } from './spinner.component';
/*
* Styled spinner directive
*
* @stacked-example(Spinner Showcase, spinner/spinner-card.component)
*
*
* ```ts
* <nb-card [nbSpinner]="loading" nbSpinnerStatus="danger">
* <nb-card-body>Card Content</nb-card-body>
* </nb-card>
* ```
*
* ### Installation
*
* Import `NbSpinnerModule` to your feature module.
* ```ts
* @NgModule({
* imports: [
* // ...
* NbSpinnerModule,
* ],
* })
* export class PageModule { }
* ```
* ### Usage
*
* Could be colored using `status` property
*
* @stacked-example(Spinner Colors, spinner/spinner-colors.component)
*
* Available in different sizes with `size` property:
*
* @stacked-example(Spinner Sizes, spinner/spinner-sizes.component)
*
* It is also possible to place it into the button:
* @stacked-example(Buttons with spinner, spinner/spinner-button.component)
*
* Or tabs:
* @stacked-example(Spinner in tabs, spinner/spinner-tabs.component)
*/
var NbSpinnerDirective = /** @class */ (function () {
function NbSpinnerDirective(directiveView, componentFactoryResolver, renderer, directiveElement) {
this.directiveView = directiveView;
this.componentFactoryResolver = componentFactoryResolver;
this.renderer = renderer;
this.directiveElement = directiveElement;
this.isSpinnerExist = false;
this.shouldShow = false;
}
Object.defineProperty(NbSpinnerDirective.prototype, "nbSpinner", {
/*
* Directive value - show or hide spinner
* @param {boolean} val
*/
set: /*
* Directive value - show or hide spinner
* @param {boolean} val
*/
/**
* @param {?} val
* @return {?}
*/
function (val) {
if (this.componentFactory) {
if (val) {
this.show();
}
else {
this.hide();
}
}
else {
this.shouldShow = val;
}
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
NbSpinnerDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.componentFactory = this.componentFactoryResolver.resolveComponentFactory(NbSpinnerComponent);
if (this.shouldShow) {
this.show();
}
};
/**
* @return {?}
*/
NbSpinnerDirective.prototype.hide = /**
* @return {?}
*/
function () {
if (this.isSpinnerExist) {
this.directiveView.remove();
this.isSpinnerExist = false;
}
};
/**
* @return {?}
*/
NbSpinnerDirective.prototype.show = /**
* @return {?}
*/
function () {
if (!this.isSpinnerExist) {
this.spinner = this.directiveView.createComponent(this.componentFactory);
this.setInstanceInputs(this.spinner.instance);
this.spinner.changeDetectorRef.detectChanges();
this.renderer.appendChild(this.directiveElement.nativeElement, this.spinner.location.nativeElement);
this.isSpinnerExist = true;
}
};
/**
* @param {?} instance
* @return {?}
*/
NbSpinnerDirective.prototype.setInstanceInputs = /**
* @param {?} instance
* @return {?}
*/
function (instance) {
typeof this.spinnerMessage !== 'undefined' && (instance.message = this.spinnerMessage);
typeof this.spinnerStatus !== 'undefined' && (instance.status = this.spinnerStatus);
typeof this.spinnerSize !== 'undefined' && (instance.size = this.spinnerSize);
};
NbSpinnerDirective.decorators = [
{ type: Directive, args: [{ selector: '[nbSpinner]' },] }
];
/** @nocollapse */
NbSpinnerDirective.ctorParameters = function () { return [
{ type: ViewContainerRef },
{ type: ComponentFactoryResolver },
{ type: Renderer2 },
{ type: ElementRef }
]; };
NbSpinnerDirective.propDecorators = {
isSpinnerExist: [{ type: HostBinding, args: ['class.nb-spinner-container',] }],
spinnerMessage: [{ type: Input, args: ['nbSpinnerMessage',] }],
spinnerStatus: [{ type: Input, args: ['nbSpinnerStatus',] }],
spinnerSize: [{ type: Input, args: ['nbSpinnerSize',] }],
nbSpinner: [{ type: Input, args: ['nbSpinner',] }]
};
return NbSpinnerDirective;
}());
export { NbSpinnerDirective };
if (false) {
/** @type {?} */
NbSpinnerDirective.prototype.spinner;
/** @type {?} */
NbSpinnerDirective.prototype.componentFactory;
/** @type {?} */
NbSpinnerDirective.prototype.isSpinnerExist;
/** @type {?} */
NbSpinnerDirective.prototype.spinnerMessage;
/** @type {?} */
NbSpinnerDirective.prototype.spinnerStatus;
/** @type {?} */
NbSpinnerDirective.prototype.spinnerSize;
/**
* @type {?}
* @private
*/
NbSpinnerDirective.prototype.shouldShow;
/**
* @type {?}
* @private
*/
NbSpinnerDirective.prototype.directiveView;
/**
* @type {?}
* @private
*/
NbSpinnerDirective.prototype.componentFactoryResolver;
/**
* @type {?}
* @private
*/
NbSpinnerDirective.prototype.renderer;
/**
* @type {?}
* @private
*/
NbSpinnerDirective.prototype.directiveElement;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly90aGVtZS1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU1BLE9BQU8sRUFDTCx3QkFBd0IsRUFHeEIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULGdCQUFnQixFQUFFLFdBQVcsR0FDOUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEN6RDtJQTZDRSw0QkFBb0IsYUFBK0IsRUFDL0Isd0JBQWtELEVBQ2xELFFBQW1CLEVBQ25CLGdCQUE0QjtRQUg1QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBWTtRQTFDTCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQXFDMUQsZUFBVSxHQUFHLEtBQUssQ0FBQztJQU0zQixDQUFDO0lBbkJELHNCQUNJLHlDQUFTO1FBTGI7OztXQUdHOzs7Ozs7Ozs7UUFDSCxVQUNjLEdBQVk7WUFDeEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3pCLElBQUksR0FBRyxFQUFFO29CQUNQLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDYjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ2I7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQzthQUN2QjtRQUNILENBQUM7OztPQUFBOzs7O0lBVUQscUNBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2xHLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7Ozs7SUFFRCxpQ0FBSTs7O0lBQUo7UUFDRSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUM3QjtJQUNILENBQUM7Ozs7SUFFRCxpQ0FBSTs7O0lBQUo7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM3RixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDNUI7SUFDSCxDQUFDOzs7OztJQUVELDhDQUFpQjs7OztJQUFqQixVQUFrQixRQUE0QjtRQUM1QyxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssV0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkYsT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxXQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRixDQUFDOztnQkEvRUYsU0FBUyxTQUFDLEVBQUMsUUFBUSxFQUFFLGFBQWEsRUFBQzs7OztnQkE1Q2xDLGdCQUFnQjtnQkFSaEIsd0JBQXdCO2dCQU94QixTQUFTO2dCQUhULFVBQVU7OztpQ0FzRFQsV0FBVyxTQUFDLDRCQUE0QjtpQ0FNeEMsS0FBSyxTQUFDLGtCQUFrQjtnQ0FNeEIsS0FBSyxTQUFDLGlCQUFpQjs4QkFNdkIsS0FBSyxTQUFDLGVBQWU7NEJBTXJCLEtBQUssU0FBQyxXQUFXOztJQWtEcEIseUJBQUM7Q0FBQSxBQWhGRCxJQWdGQztTQS9FWSxrQkFBa0I7OztJQUU3QixxQ0FBMEM7O0lBQzFDLDhDQUF1RDs7SUFFdkQsNENBQWtFOztJQU1sRSw0Q0FBa0Q7O0lBTWxELDJDQUFnRDs7SUFNaEQseUNBQTRDOzs7OztJQW1CNUMsd0NBQTJCOzs7OztJQUVmLDJDQUF1Qzs7Ozs7SUFDdkMsc0RBQTBEOzs7OztJQUMxRCxzQ0FBMkI7Ozs7O0lBQzNCLDhDQUFvQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuICovXHJcblxyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBDb21wb25lbnRGYWN0b3J5LFxyXG4gIENvbXBvbmVudFJlZixcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFZpZXdDb250YWluZXJSZWYsIEhvc3RCaW5kaW5nLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYlNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuL3NwaW5uZXIuY29tcG9uZW50JztcclxuXHJcbi8qXHJcbiAqIFN0eWxlZCBzcGlubmVyIGRpcmVjdGl2ZVxyXG4gKlxyXG4gKiBAc3RhY2tlZC1leGFtcGxlKFNwaW5uZXIgU2hvd2Nhc2UsIHNwaW5uZXIvc3Bpbm5lci1jYXJkLmNvbXBvbmVudClcclxuICpcclxuICpcclxuICogYGBgdHNcclxuICogPG5iLWNhcmQgW25iU3Bpbm5lcl09XCJsb2FkaW5nXCIgbmJTcGlubmVyU3RhdHVzPVwiZGFuZ2VyXCI+XHJcbiAqICAgPG5iLWNhcmQtYm9keT5DYXJkIENvbnRlbnQ8L25iLWNhcmQtYm9keT5cclxuICogPC9uYi1jYXJkPlxyXG4gKiBgYGBcclxuICpcclxuICogIyMjIEluc3RhbGxhdGlvblxyXG4gKlxyXG4gKiBJbXBvcnQgYE5iU3Bpbm5lck1vZHVsZWAgdG8geW91ciBmZWF0dXJlIG1vZHVsZS5cclxuICogYGBgdHNcclxuICogQE5nTW9kdWxlKHtcclxuICogICBpbXBvcnRzOiBbXHJcbiAqICAgXHQvLyAuLi5cclxuICogICAgIE5iU3Bpbm5lck1vZHVsZSxcclxuICogICBdLFxyXG4gKiB9KVxyXG4gKiBleHBvcnQgY2xhc3MgUGFnZU1vZHVsZSB7IH1cclxuICogYGBgXHJcbiAqICMjIyBVc2FnZVxyXG4gKlxyXG4gKiBDb3VsZCBiZSBjb2xvcmVkIHVzaW5nIGBzdGF0dXNgIHByb3BlcnR5XHJcbiAqXHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoU3Bpbm5lciBDb2xvcnMsIHNwaW5uZXIvc3Bpbm5lci1jb2xvcnMuY29tcG9uZW50KVxyXG4gKlxyXG4gKiBBdmFpbGFibGUgaW4gZGlmZmVyZW50IHNpemVzIHdpdGggYHNpemVgIHByb3BlcnR5OlxyXG4gKlxyXG4gKiBAc3RhY2tlZC1leGFtcGxlKFNwaW5uZXIgU2l6ZXMsIHNwaW5uZXIvc3Bpbm5lci1zaXplcy5jb21wb25lbnQpXHJcbiAqXHJcbiAqIEl0IGlzIGFsc28gcG9zc2libGUgdG8gcGxhY2UgaXQgaW50byB0aGUgYnV0dG9uOlxyXG4gKiBAc3RhY2tlZC1leGFtcGxlKEJ1dHRvbnMgd2l0aCBzcGlubmVyLCBzcGlubmVyL3NwaW5uZXItYnV0dG9uLmNvbXBvbmVudClcclxuICpcclxuICogT3IgdGFiczpcclxuICogQHN0YWNrZWQtZXhhbXBsZShTcGlubmVyIGluIHRhYnMsIHNwaW5uZXIvc3Bpbm5lci10YWJzLmNvbXBvbmVudClcclxuICovXHJcbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW25iU3Bpbm5lcl0nfSlcclxuZXhwb3J0IGNsYXNzIE5iU3Bpbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHNwaW5uZXI6IENvbXBvbmVudFJlZjxOYlNwaW5uZXJDb21wb25lbnQ+O1xyXG4gIGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8TmJTcGlubmVyQ29tcG9uZW50PjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5uYi1zcGlubmVyLWNvbnRhaW5lcicpIGlzU3Bpbm5lckV4aXN0ID0gZmFsc2U7XHJcblxyXG4gIC8qXHJcbiAgICogU3Bpbm5lciBtZXNzYWdlIHNob3duIG5leHQgdG8gdGhlIGljb25cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqL1xyXG4gIEBJbnB1dCgnbmJTcGlubmVyTWVzc2FnZScpIHNwaW5uZXJNZXNzYWdlOiBzdHJpbmc7XHJcblxyXG4gIC8qXHJcbiAgICogU3Bpbm5lciBzdGF0dXMgY29sb3IgYWN0aXZlLCBkaXNhYmxlZCwgcHJpbWFyeSwgaW5mbywgc3VjY2Vzcywgd2FybmluZywgZGFuZ2VyXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKi9cclxuICBASW5wdXQoJ25iU3Bpbm5lclN0YXR1cycpIHNwaW5uZXJTdGF0dXM6IHN0cmluZztcclxuXHJcbiAgLypcclxuICAgKiBTcGlubmVyIHNpemUsIGF2YWlsYWJsZSBzaXplczogeHhzbWFsbCwgeHNtYWxsLCBzbWFsbCwgbWVkaXVtLCBsYXJnZSwgeGxhcmdlLCB4eGxhcmdlXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKi9cclxuICBASW5wdXQoJ25iU3Bpbm5lclNpemUnKSBzcGlubmVyU2l6ZTogc3RyaW5nO1xyXG5cclxuICAvKlxyXG4gICAqIERpcmVjdGl2ZSB2YWx1ZSAtIHNob3cgb3IgaGlkZSBzcGlubmVyXHJcbiAgICogQHBhcmFtIHtib29sZWFufSB2YWxcclxuICAgKi9cclxuICBASW5wdXQoJ25iU3Bpbm5lcicpXHJcbiAgc2V0IG5iU3Bpbm5lcih2YWw6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLmNvbXBvbmVudEZhY3RvcnkpIHtcclxuICAgICAgaWYgKHZhbCkge1xyXG4gICAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3VsZFNob3cgPSB2YWw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3VsZFNob3cgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaXJlY3RpdmVWaWV3OiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZGlyZWN0aXZlRWxlbWVudDogRWxlbWVudFJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShOYlNwaW5uZXJDb21wb25lbnQpO1xyXG4gICAgaWYgKHRoaXMuc2hvdWxkU2hvdykge1xyXG4gICAgICB0aGlzLnNob3coKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhpZGUoKSB7XHJcbiAgICBpZiAodGhpcy5pc1NwaW5uZXJFeGlzdCkge1xyXG4gICAgICB0aGlzLmRpcmVjdGl2ZVZpZXcucmVtb3ZlKCk7XHJcbiAgICAgIHRoaXMuaXNTcGlubmVyRXhpc3QgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3coKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNTcGlubmVyRXhpc3QpIHtcclxuICAgICAgdGhpcy5zcGlubmVyID0gdGhpcy5kaXJlY3RpdmVWaWV3LmNyZWF0ZUNvbXBvbmVudDxOYlNwaW5uZXJDb21wb25lbnQ+KHRoaXMuY29tcG9uZW50RmFjdG9yeSk7XHJcbiAgICAgIHRoaXMuc2V0SW5zdGFuY2VJbnB1dHModGhpcy5zcGlubmVyLmluc3RhbmNlKTtcclxuICAgICAgdGhpcy5zcGlubmVyLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRpcmVjdGl2ZUVsZW1lbnQubmF0aXZlRWxlbWVudCwgdGhpcy5zcGlubmVyLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB0aGlzLmlzU3Bpbm5lckV4aXN0ID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEluc3RhbmNlSW5wdXRzKGluc3RhbmNlOiBOYlNwaW5uZXJDb21wb25lbnQpIHtcclxuICAgIHR5cGVvZiB0aGlzLnNwaW5uZXJNZXNzYWdlICE9PSAndW5kZWZpbmVkJyAmJiAoaW5zdGFuY2UubWVzc2FnZSA9IHRoaXMuc3Bpbm5lck1lc3NhZ2UpO1xyXG4gICAgdHlwZW9mIHRoaXMuc3Bpbm5lclN0YXR1cyAhPT0gJ3VuZGVmaW5lZCcgJiYgKGluc3RhbmNlLnN0YXR1cyA9IHRoaXMuc3Bpbm5lclN0YXR1cyk7XHJcbiAgICB0eXBlb2YgdGhpcy5zcGlubmVyU2l6ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgKGluc3RhbmNlLnNpemUgPSB0aGlzLnNwaW5uZXJTaXplKTtcclxuICB9XHJcbn1cclxuIl19