@nova-ui/bits
Version:
SolarWinds Nova Framework
94 lines • 17.7 kB
JavaScript
// © 2022 SolarWinds Worldwide, LLC. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import { Component, ContentChild, ElementRef, Input, ViewEncapsulation, } from "@angular/core";
import { TabNavigationService } from "../../services/tab-navigation.service";
import { ProgressComponent } from "../progress/progress.component";
import { SpinnerComponent } from "../spinner/spinner.component";
import * as i0 from "@angular/core";
import * as i1 from "../../services/tab-navigation.service";
import * as i2 from "@angular/common";
import * as i3 from "../spinner/spinner.component";
/**
* <example-url>./../examples/index.html#/busy</example-url>
*/
/* eslint-enable @angular-eslint/component-selector */
export class BusyComponent {
constructor(tabNavigationService, elRef) {
this.tabNavigationService = tabNavigationService;
this.elRef = elRef;
this.isDefaultTemplate = false;
this.isSpinnerTemplate = false;
this.isProgressTemplate = false;
/**
* When busy is true, by default we disable keyboard tab navigation for all underlying elements
*/
this.disableTabNavigation = true;
}
ngAfterContentInit() {
this.setBusyStateForContentComponents();
this.isSpinnerTemplate = Boolean(this.spinnerComponent);
this.isProgressTemplate = Boolean(this.progressComponent);
if (this.spinnerComponent && this.progressComponent) {
this.isSpinnerTemplate = false;
this.isProgressTemplate = false;
this.isDefaultTemplate = true;
}
if (!this.spinnerComponent && !this.progressComponent) {
this.isDefaultTemplate = true;
}
}
ngOnChanges(changes) {
if (this.disableTabNavigation &&
changes.busy?.currentValue !== undefined) {
if (this.busy) {
this.tabNavigationService.disableTabNavigation(this.elRef);
}
else {
this.tabNavigationService.restoreTabNavigation();
}
}
this.setBusyStateForContentComponents();
}
setBusyStateForContentComponents() {
if (this.spinnerComponent) {
this.spinnerComponent.showSpinner = this.busy;
}
if (this.progressComponent) {
this.progressComponent.show = this.busy;
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BusyComponent, deps: [{ token: i1.TabNavigationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BusyComponent, selector: "[nui-busy]", inputs: { busy: "busy", disableTabNavigation: "disableTabNavigation" }, host: { properties: { "attr.aria-busy": "busy" } }, providers: [TabNavigationService], queries: [{ propertyName: "spinnerComponent", first: true, predicate: SpinnerComponent, descendants: true }, { propertyName: "progressComponent", first: true, predicate: ProgressComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"nui-nova-busy\">\n <div\n class=\"nui-nova-busy__overlay--align\"\n [class.nui-nova-busy__overlay--hidden]=\"!busy\"\n [class.nui-nova-busy__overlay]=\"busy\"\n >\n <div class=\"nui-nova-busy__container\">\n <ng-content\n *ngIf=\"isProgressTemplate\"\n select=\"nui-progress\"\n ></ng-content>\n <ng-content\n *ngIf=\"isSpinnerTemplate\"\n select=\"nui-spinner\"\n ></ng-content>\n <nui-spinner *ngIf=\"isDefaultTemplate\" [show]=\"busy\"></nui-spinner>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [".nui .nui-nova-busy{position:relative;height:100%;min-height:inherit}.nui .nui-nova-busy__overlay{position:absolute;inset:0;background-color:var(--nui-color-overlay-busy,rgba(255, 255, 255, .9));text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;z-index:1030}.nui .nui-nova-busy__overlay .nui-nova-busy__container{position:absolute;top:50%;transform:translateY(-50%);width:100%;opacity:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.nui .nui-nova-busy__overlay--align{text-align:center}.nui .nui-nova-busy__overlay--hidden{visibility:hidden}.nui .nui-nova-busy__container{transition:.5s ease-in all;position:absolute;top:40%;transform:translateY(-50%);width:100%;opacity:0}.nui .nui-modal .nui-nova-busy__overlay{z-index:1060}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SpinnerComponent, selector: "nui-spinner", inputs: ["percent", "show", "delay", "allowCancel", "message", "helpText", "ariaLabel", "size"], outputs: ["cancel"] }], encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BusyComponent, decorators: [{
type: Component,
args: [{ selector: "[nui-busy]", providers: [TabNavigationService], encapsulation: ViewEncapsulation.None, host: { "[attr.aria-busy]": "busy" }, template: "<div class=\"nui-nova-busy\">\n <div\n class=\"nui-nova-busy__overlay--align\"\n [class.nui-nova-busy__overlay--hidden]=\"!busy\"\n [class.nui-nova-busy__overlay]=\"busy\"\n >\n <div class=\"nui-nova-busy__container\">\n <ng-content\n *ngIf=\"isProgressTemplate\"\n select=\"nui-progress\"\n ></ng-content>\n <ng-content\n *ngIf=\"isSpinnerTemplate\"\n select=\"nui-spinner\"\n ></ng-content>\n <nui-spinner *ngIf=\"isDefaultTemplate\" [show]=\"busy\"></nui-spinner>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [".nui .nui-nova-busy{position:relative;height:100%;min-height:inherit}.nui .nui-nova-busy__overlay{position:absolute;inset:0;background-color:var(--nui-color-overlay-busy,rgba(255, 255, 255, .9));text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;z-index:1030}.nui .nui-nova-busy__overlay .nui-nova-busy__container{position:absolute;top:50%;transform:translateY(-50%);width:100%;opacity:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.nui .nui-nova-busy__overlay--align{text-align:center}.nui .nui-nova-busy__overlay--hidden{visibility:hidden}.nui .nui-nova-busy__container{transition:.5s ease-in all;position:absolute;top:40%;transform:translateY(-50%);width:100%;opacity:0}.nui .nui-modal .nui-nova-busy__overlay{z-index:1060}\n"] }]
}], ctorParameters: () => [{ type: i1.TabNavigationService }, { type: i0.ElementRef }], propDecorators: { busy: [{
type: Input
}], disableTabNavigation: [{
type: Input
}], spinnerComponent: [{
type: ContentChild,
args: [SpinnerComponent]
}], progressComponent: [{
type: ContentChild,
args: [ProgressComponent]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2J1c3kvYnVzeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL2J1c3kvYnVzeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsNERBQTREO0FBQzVELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsNEVBQTRFO0FBQzVFLCtFQUErRTtBQUMvRSwwRUFBMEU7QUFDMUUsaUZBQWlGO0FBQ2pGLDZFQUE2RTtBQUM3RSxpQkFBaUI7QUFFakIsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFHTCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7O0FBRWhFOztHQUVHO0FBU0gsc0RBQXNEO0FBQ3RELE1BQU0sT0FBTyxhQUFhO0lBZXRCLFlBQ1ksb0JBQTBDLEVBQzFDLEtBQWlCO1FBRGpCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQWhCdEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFJbEM7O1dBRUc7UUFDTSx5QkFBb0IsR0FBWSxJQUFJLENBQUM7SUFRM0MsQ0FBQztJQUVHLGtCQUFrQjtRQUNyQixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUV4QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ2pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDL0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztZQUNoQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUNuRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUNyQyxJQUNJLElBQUksQ0FBQyxvQkFBb0I7WUFDekIsT0FBTyxDQUFDLElBQUksRUFBRSxZQUFZLEtBQUssU0FBUyxFQUMxQztZQUNFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDWCxJQUFJLENBQUMsb0JBQW9CLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzlEO2lCQUFNO2dCQUNILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQ3BEO1NBQ0o7UUFFRCxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU8sZ0NBQWdDO1FBQ3BDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNqRDtRQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUMzQztJQUNMLENBQUM7K0dBekRRLGFBQWE7bUdBQWIsYUFBYSxpS0FMWCxDQUFDLG9CQUFvQixDQUFDLHdFQWlCbkIsZ0JBQWdCLG9GQUNoQixpQkFBaUIscUVDNURuQyw4cUJBb0JBOzs0RkQyQmEsYUFBYTtrQkFUekIsU0FBUzsrQkFDSSxZQUFZLGFBR1gsQ0FBQyxvQkFBb0IsQ0FBQyxpQkFDbEIsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRTtrSEFRM0IsSUFBSTtzQkFBWixLQUFLO2dCQUtHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFMEIsZ0JBQWdCO3NCQUEvQyxZQUFZO3VCQUFDLGdCQUFnQjtnQkFDRyxpQkFBaUI7c0JBQWpELFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gwqkgMjAyMiBTb2xhcldpbmRzIFdvcmxkd2lkZSwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuLy8gIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vICBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFRhYk5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RhYi1uYXZpZ2F0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFByb2dyZXNzQ29tcG9uZW50IH0gZnJvbSBcIi4uL3Byb2dyZXNzL3Byb2dyZXNzLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gXCIuLi9zcGlubmVyL3NwaW5uZXIuY29tcG9uZW50XCI7XG5cbi8qKlxuICogPGV4YW1wbGUtdXJsPi4vLi4vZXhhbXBsZXMvaW5kZXguaHRtbCMvYnVzeTwvZXhhbXBsZS11cmw+XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIltudWktYnVzeV1cIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2J1c3kuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vYnVzeS5jb21wb25lbnQubGVzc1wiXSxcbiAgICBwcm92aWRlcnM6IFtUYWJOYXZpZ2F0aW9uU2VydmljZV0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7IFwiW2F0dHIuYXJpYS1idXN5XVwiOiBcImJ1c3lcIiB9LFxufSlcbi8qIGVzbGludC1lbmFibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuZXhwb3J0IGNsYXNzIEJ1c3lDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMge1xuICAgIHB1YmxpYyBpc0RlZmF1bHRUZW1wbGF0ZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc1NwaW5uZXJUZW1wbGF0ZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc1Byb2dyZXNzVGVtcGxhdGUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGJ1c3k6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIGJ1c3kgaXMgdHJ1ZSwgYnkgZGVmYXVsdCB3ZSBkaXNhYmxlIGtleWJvYXJkIHRhYiBuYXZpZ2F0aW9uIGZvciBhbGwgdW5kZXJseWluZyBlbGVtZW50c1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGRpc2FibGVUYWJOYXZpZ2F0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBDb250ZW50Q2hpbGQoU3Bpbm5lckNvbXBvbmVudCkgc3Bpbm5lckNvbXBvbmVudDogU3Bpbm5lckNvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKFByb2dyZXNzQ29tcG9uZW50KSBwcm9ncmVzc0NvbXBvbmVudDogUHJvZ3Jlc3NDb21wb25lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0YWJOYXZpZ2F0aW9uU2VydmljZTogVGFiTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWZcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldEJ1c3lTdGF0ZUZvckNvbnRlbnRDb21wb25lbnRzKCk7XG5cbiAgICAgICAgdGhpcy5pc1NwaW5uZXJUZW1wbGF0ZSA9IEJvb2xlYW4odGhpcy5zcGlubmVyQ29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5pc1Byb2dyZXNzVGVtcGxhdGUgPSBCb29sZWFuKHRoaXMucHJvZ3Jlc3NDb21wb25lbnQpO1xuICAgICAgICBpZiAodGhpcy5zcGlubmVyQ29tcG9uZW50ICYmIHRoaXMucHJvZ3Jlc3NDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTcGlubmVyVGVtcGxhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaXNQcm9ncmVzc1RlbXBsYXRlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzRGVmYXVsdFRlbXBsYXRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lckNvbXBvbmVudCAmJiAhdGhpcy5wcm9ncmVzc0NvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5pc0RlZmF1bHRUZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVUYWJOYXZpZ2F0aW9uICYmXG4gICAgICAgICAgICBjaGFuZ2VzLmJ1c3k/LmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYnVzeSkge1xuICAgICAgICAgICAgICAgIHRoaXMudGFiTmF2aWdhdGlvblNlcnZpY2UuZGlzYWJsZVRhYk5hdmlnYXRpb24odGhpcy5lbFJlZik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudGFiTmF2aWdhdGlvblNlcnZpY2UucmVzdG9yZVRhYk5hdmlnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0QnVzeVN0YXRlRm9yQ29udGVudENvbXBvbmVudHMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEJ1c3lTdGF0ZUZvckNvbnRlbnRDb21wb25lbnRzKCkge1xuICAgICAgICBpZiAodGhpcy5zcGlubmVyQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNwaW5uZXJDb21wb25lbnQuc2hvd1NwaW5uZXIgPSB0aGlzLmJ1c3k7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvZ3Jlc3NDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NDb21wb25lbnQuc2hvdyA9IHRoaXMuYnVzeTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJudWktbm92YS1idXN5XCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm51aS1ub3ZhLWJ1c3lfX292ZXJsYXktLWFsaWduXCJcbiAgICAgICAgW2NsYXNzLm51aS1ub3ZhLWJ1c3lfX292ZXJsYXktLWhpZGRlbl09XCIhYnVzeVwiXG4gICAgICAgIFtjbGFzcy5udWktbm92YS1idXN5X19vdmVybGF5XT1cImJ1c3lcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm51aS1ub3ZhLWJ1c3lfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzUHJvZ3Jlc3NUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgc2VsZWN0PVwibnVpLXByb2dyZXNzXCJcbiAgICAgICAgICAgID48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNTcGlubmVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIHNlbGVjdD1cIm51aS1zcGlubmVyXCJcbiAgICAgICAgICAgID48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bnVpLXNwaW5uZXIgKm5nSWY9XCJpc0RlZmF1bHRUZW1wbGF0ZVwiIFtzaG93XT1cImJ1c3lcIj48L251aS1zcGlubmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==