UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

134 lines 14.9 kB
import { Directive, Input, ViewChild } from '@angular/core'; import { Subject } from 'rxjs'; import { DialogComponent } from './dialog.component'; import { DialogChangeEvent, DialogService } from './dialog.service'; import * as i0 from "@angular/core"; import * as i1 from "./dialog.service"; const _c0 = ["dialog"]; /** * The base dialog component for extending. */ // eslint-disable-next-line @angular-eslint/directive-class-suffix export class BaseDialogComponent { /** * Initializes a new instance of the BaseDialogComponent class. */ constructor(dialogService) { this.dialogService = dialogService; /** * Keeps the dialog open when another dialog pops up * by default the dialog will be closed if another dialog opens while this dialog is visible */ this.keepOpen = false; this.internalLevel = 1; } set level(value) { if (this.dialog) { this.dialog.dialogLevel = value; } this.internalLevel = value; } /** * The method to run when the component initialized. */ // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method ngOnInit() { /* empty */ } /** * The method to run after the component view initialized */ ngAfterViewInit() { if (!this.dialog) { throw new Error('BaseDialogComponent.ngOnInit: Dialog is not defined'); } if (!this.id) { throw new Error('BaseDialogComponent.ngOnInit: ID is not defined'); } this.level = this.internalLevel; this.dialogService.register(this.id, this); this.closeSubscription = this.dialog.closeRequested.subscribe(reason => { this.closeRequested(reason); }); } /** * The method to run when the component is destroyed. */ ngOnDestroy() { this.dialogService.unregister(this.id); // the close subscription is created in ngAfterViewInit, if the component is destroyed before that // then the subscription will not exist and causing an error. this.closeSubscription?.unsubscribe(); } /** * handler for when a close is requested * by default this closes the dialog with no result. * override this function to prevent this behavior * @param reason - reason for the close following DialogCloseReason */ closeRequested(reason) { this.hide(); } /** * Shows the dialog. * * @param options The options for the dialog. * @return The dialog result subject. */ show(options) { this.dialog.show(); this.dialogResult = new Subject(); this.dialogService.emitDialogChangeEvent(this.id, DialogChangeEvent.Show); return this.dialogResult; } /** * Sets the level of the dialogso it overlays on top of anything else * This is set by the dialog service when a dialog opens another dialog * @param level The level of the dialog so it shows up on top of other items. this should be a number greater than 0 */ setLevel(level) { this.level = level; } /** * refocuses the keyboard on the dialog */ autoFocus() { this.dialog.autoFocus(); } /** * Hides the dialog. * * @param result The result of the dialog action. */ hide(result) { this.dialog.hide(); this.dialogResult.next(result); this.dialogResult.complete(); this.dialogService.resumeFocus(this.id); this.dialogService.emitDialogChangeEvent(this.id, DialogChangeEvent.Hide); } /** * Handles clicking on background */ onBackgroundClicked() { if (this.dialog.clickBackdrop) { this.dialog.onBackgroundClicked(); } } } /** @nocollapse */ BaseDialogComponent.ɵfac = function BaseDialogComponent_Factory(t) { return new (t || BaseDialogComponent)(i0.ɵɵdirectiveInject(i1.DialogService)); }; /** @nocollapse */ BaseDialogComponent.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: BaseDialogComponent, viewQuery: function BaseDialogComponent_Query(rf, ctx) { if (rf & 1) { i0.ɵɵviewQuery(_c0, 5); } if (rf & 2) { let _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dialog = _t.first); } }, inputs: { id: "id" } }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseDialogComponent, [{ type: Directive }], function () { return [{ type: i1.DialogService }]; }, { id: [{ type: Input }], dialog: [{ type: ViewChild, args: ['dialog'] }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvZGlhbG9nL2Jhc2UtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQXFCLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQWdCcEU7O0dBRUc7QUFFSCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLG1CQUFtQjtJQTBCNUI7O09BRUc7SUFDSCxZQUFzQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXBCbEQ7OztXQUdHO1FBQ0ksYUFBUSxHQUFHLEtBQUssQ0FBQztRQVdoQixrQkFBYSxHQUFHLENBQUMsQ0FBQztJQU0xQixDQUFDO0lBYkQsSUFBWSxLQUFLLENBQUMsS0FBYTtRQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBVUQ7O09BRUc7SUFDSCxxRUFBcUU7SUFDOUQsUUFBUTtRQUNYLFdBQVc7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1NBQzFFO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7U0FDdEU7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25FLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLGtHQUFrRztRQUNsRyw2REFBNkQ7UUFDN0QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGNBQWMsQ0FBQyxNQUF5QjtRQUMzQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksSUFBSSxDQUFDLE9BQWlCO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxNQUFnQjtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBbUI7UUFDdEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDckM7SUFDTCxDQUFDOzt5R0FqSVEsbUJBQW1CO3FHQUFuQixtQkFBbUI7Ozs7Ozt1RkFBbkIsbUJBQW1CO2NBRi9CLFNBQVM7Z0VBSUMsRUFBRTtrQkFEUixLQUFLO1lBSUMsTUFBTTtrQkFEWixTQUFTO21CQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEaWFsb2dDbG9zZVJlYXNvbiwgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nQ2hhbmdlRXZlbnQsIERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2RpYWxvZy5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgZGVmYXVsdCBkaWFsb2cgb3B0aW9ucy5cclxuICovXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nT3B0aW9ucyB7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgZGVmYXVsdCBkaWFsb2cgcmVzdWx0LlxyXG4gKi9cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2VcclxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dSZXN1bHQge1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIGJhc2UgZGlhbG9nIGNvbXBvbmVudCBmb3IgZXh0ZW5kaW5nLlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxyXG5leHBvcnQgY2xhc3MgQmFzZURpYWxvZ0NvbXBvbmVudDxUT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMsIFRSZXN1bHQgZXh0ZW5kcyBEaWFsb2dSZXN1bHQ+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpZDogc3RyaW5nO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZycpXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBEaWFsb2dDb21wb25lbnQ7XHJcblxyXG4gICAgcHVibGljIGRpYWxvZ1Jlc3VsdDogU3ViamVjdDxUUmVzdWx0PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEtlZXBzIHRoZSBkaWFsb2cgb3BlbiB3aGVuIGFub3RoZXIgZGlhbG9nIHBvcHMgdXBcclxuICAgICAqIGJ5IGRlZmF1bHQgdGhlIGRpYWxvZyB3aWxsIGJlIGNsb3NlZCBpZiBhbm90aGVyIGRpYWxvZyBvcGVucyB3aGlsZSB0aGlzIGRpYWxvZyBpcyB2aXNpYmxlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBrZWVwT3BlbiA9IGZhbHNlO1xyXG5cclxuICAgIHByaXZhdGUgY2xvc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBwcml2YXRlIHNldCBsZXZlbCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nLmRpYWxvZ0xldmVsID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxMZXZlbCA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW50ZXJuYWxMZXZlbCA9IDE7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgQmFzZURpYWxvZ0NvbXBvbmVudCBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtZXRob2QgdG8gcnVuIHdoZW4gdGhlIGNvbXBvbmVudCBpbml0aWFsaXplZC5cclxuICAgICAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1lbXB0eS1saWZlY3ljbGUtbWV0aG9kXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgLyogZW1wdHkgKi9cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtZXRob2QgdG8gcnVuIGFmdGVyIHRoZSBjb21wb25lbnQgdmlldyBpbml0aWFsaXplZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5kaWFsb2cpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdCYXNlRGlhbG9nQ29tcG9uZW50Lm5nT25Jbml0OiBEaWFsb2cgaXMgbm90IGRlZmluZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jhc2VEaWFsb2dDb21wb25lbnQubmdPbkluaXQ6IElEIGlzIG5vdCBkZWZpbmVkJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxldmVsID0gdGhpcy5pbnRlcm5hbExldmVsO1xyXG5cclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVnaXN0ZXIodGhpcy5pZCwgdGhpcyk7XHJcbiAgICAgICAgdGhpcy5jbG9zZVN1YnNjcmlwdGlvbiA9IHRoaXMuZGlhbG9nLmNsb3NlUmVxdWVzdGVkLnN1YnNjcmliZShyZWFzb24gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlUmVxdWVzdGVkKHJlYXNvbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWV0aG9kIHRvIHJ1biB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnVucmVnaXN0ZXIodGhpcy5pZCk7XHJcbiAgICAgICAgLy8gdGhlIGNsb3NlIHN1YnNjcmlwdGlvbiBpcyBjcmVhdGVkIGluIG5nQWZ0ZXJWaWV3SW5pdCwgaWYgdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQgYmVmb3JlIHRoYXRcclxuICAgICAgICAvLyB0aGVuIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBub3QgZXhpc3QgYW5kIGNhdXNpbmcgYW4gZXJyb3IuXHJcbiAgICAgICAgdGhpcy5jbG9zZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGhhbmRsZXIgZm9yIHdoZW4gYSBjbG9zZSBpcyByZXF1ZXN0ZWRcclxuICAgICAqIGJ5IGRlZmF1bHQgdGhpcyBjbG9zZXMgdGhlIGRpYWxvZyB3aXRoIG5vIHJlc3VsdC5cclxuICAgICAqIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gcHJldmVudCB0aGlzIGJlaGF2aW9yXHJcbiAgICAgKiBAcGFyYW0gcmVhc29uIC0gcmVhc29uIGZvciB0aGUgY2xvc2UgZm9sbG93aW5nIERpYWxvZ0Nsb3NlUmVhc29uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbG9zZVJlcXVlc3RlZChyZWFzb246IERpYWxvZ0Nsb3NlUmVhc29uKSB7XHJcbiAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyB0aGUgZGlhbG9nLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgZGlhbG9nLlxyXG4gICAgICogQHJldHVybiBUaGUgZGlhbG9nIHJlc3VsdCBzdWJqZWN0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2hvdyhvcHRpb25zOiBUT3B0aW9ucyk6IFN1YmplY3Q8VFJlc3VsdD4ge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nLnNob3coKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1Jlc3VsdCA9IG5ldyBTdWJqZWN0PFRSZXN1bHQ+KCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVtaXREaWFsb2dDaGFuZ2VFdmVudCh0aGlzLmlkLCBEaWFsb2dDaGFuZ2VFdmVudC5TaG93KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dSZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBsZXZlbCBvZiB0aGUgZGlhbG9nc28gaXQgb3ZlcmxheXMgb24gdG9wIG9mIGFueXRoaW5nIGVsc2VcclxuICAgICAqIFRoaXMgaXMgc2V0IGJ5IHRoZSBkaWFsb2cgc2VydmljZSB3aGVuIGEgZGlhbG9nIG9wZW5zIGFub3RoZXIgZGlhbG9nXHJcbiAgICAgKiBAcGFyYW0gbGV2ZWwgVGhlIGxldmVsIG9mIHRoZSBkaWFsb2cgc28gaXQgc2hvd3MgdXAgb24gdG9wIG9mIG90aGVyIGl0ZW1zLiB0aGlzIHNob3VsZCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0TGV2ZWwobGV2ZWw6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMubGV2ZWwgPSBsZXZlbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHJlZm9jdXNlcyB0aGUga2V5Ym9hcmQgb24gdGhlIGRpYWxvZ1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXV0b0ZvY3VzKCkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nLmF1dG9Gb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGlkZXMgdGhlIGRpYWxvZy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVzdWx0IFRoZSByZXN1bHQgb2YgdGhlIGRpYWxvZyBhY3Rpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoaWRlKHJlc3VsdD86IFRSZXN1bHQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpYWxvZy5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZXN1bHQubmV4dChyZXN1bHQpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVzdWx0LmNvbXBsZXRlKCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlc3VtZUZvY3VzKHRoaXMuaWQpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lbWl0RGlhbG9nQ2hhbmdlRXZlbnQodGhpcy5pZCwgRGlhbG9nQ2hhbmdlRXZlbnQuSGlkZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGNsaWNraW5nIG9uIGJhY2tncm91bmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQmFja2dyb3VuZENsaWNrZWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nLmNsaWNrQmFja2Ryb3ApIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2cub25CYWNrZ3JvdW5kQ2xpY2tlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=