UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

240 lines 26.2 kB
import { Component, HostBinding, Injector, Input } from '@angular/core'; import { SpacerBaseDirective } from '../common/spacer-base.component'; import { StatusIconType } from '../icon/layered-icon/status/status-icon.component'; import { HealthAlertSeverity } from './models/page-alert'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "../icon/layered-icon/status/status-icon.component"; import * as i3 from "../tooltip/tooltip.directive"; function PageAlertBarComponent_sme_status_icon_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "sme-status-icon", 3); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵproperty("status", ctx_r0.statusIcon); } } function PageAlertBarComponent_a_4_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "a", 4); i0.ɵɵtext(1); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵclassMap(ctx_r1.alert == null ? null : ctx_r1.alert.externalLink == null ? null : ctx_r1.alert.externalLink.iconClass); i0.ɵɵclassProp("sme-icon", !!(ctx_r1.alert == null ? null : ctx_r1.alert.externalLink == null ? null : ctx_r1.alert.externalLink.iconClass)); i0.ɵɵpropertyInterpolate("href", ctx_r1.alert.externalLink.url, i0.ɵɵsanitizeUrl); i0.ɵɵadvance(1); i0.ɵɵtextInterpolate(ctx_r1.alert.externalLink.title); } } function PageAlertBarComponent_a_5_Template(rf, ctx) { if (rf & 1) { const _r4 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "a", 5); i0.ɵɵlistener("click", function PageAlertBarComponent_a_5_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.alert.detailsCommand($event)); }); i0.ɵɵtext(1); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵproperty("title", !!ctx_r2.alert.detailsCaption ? ctx_r2.alert.detailsCaption : ctx_r2.defaultDetailsLabel); i0.ɵɵadvance(1); i0.ɵɵtextInterpolate1(" ", !!ctx_r2.alert.detailsLabel ? ctx_r2.alert.detailsLabel : ctx_r2.defaultDetailsLabel, " "); } } /** * * @smeDoc {@label Page Alert Bar @id sme-page-alert-bar-component} * * @overview * @file {@filepath ./examples/page-alert-bar-overview.md} * * @example {@label Basic Usage @id basic-usage} * @file {@filename component.html @filepath ./examples/basic-usage.component.html} * @file {@filename component.ts @filepath ./examples/basic-usage.component.ts} * * @example {@label Custom Usage @id custom-usage} * @file {@filename component.html @filepath ./examples/custom-usage.component.html} * @file {@filename component.ts @filepath ./examples/custom-usage.component.ts} */ export class PageAlertBarComponent extends SpacerBaseDirective { constructor(injector) { super(injector); this.defaultDetailsLabel = this.strings.MsftSmeShell.Angular.Common.details; /** * It indicates whether the alert bar is transparent or not. */ this.isBackgroundTransparent = false; } /** * The source name to use for logging */ get logSourceName() { return 'PageAlertBarComponent'; } /** * Critical alerts. */ get isCritical() { return this.alert && this.alert.severity === HealthAlertSeverity.Critical; } /** * Error alerts. */ get isError() { return this.alert && this.alert.severity === HealthAlertSeverity.Error; } /** * Warning alerts. */ get isWarning() { return this.alert && this.alert.severity === HealthAlertSeverity.Warning; } /** * Progress alerts. */ get isPending() { return this.alert && this.alert.severity === HealthAlertSeverity.Progress; } /** * Informational alerts. */ get isInformational() { return this.alert && this.alert.severity === HealthAlertSeverity.Info; } /** * Success alerts. */ get isSuccessful() { return this.alert && this.alert.severity === HealthAlertSeverity.Success; } /** * Upsell alerts. */ get isUpsell() { return this.alert && this.alert.severity === HealthAlertSeverity.Upsell; } /** * Neutral alerts. */ get isNeutral() { return this.alert && this.alert.severity === HealthAlertSeverity.Neutral; } /** * Transparent alerts. */ get isTransparent() { return this.alert && this.isBackgroundTransparent; } /** * When the background is transparent, we can optionally remove the left padding for allignment with other UI elements. * When with the backgound color, we need to keep the left padding for visually bordering the alert. */ get isNoLeftPadding() { return this.alert && this.isBackgroundTransparent && this.noLeftPadding; } get iconClass() { if (!this.alert) { return ''; } if (this.alert.iconClass) { return this.alert.iconClass; } } /** * Gets the status icon type based on the alert severity. */ get statusIcon() { if (!this.alert) { return null; } if (this.alert.iconClass) { return null; } switch (this.alert.severity) { case HealthAlertSeverity.Critical: return StatusIconType.Critical; case HealthAlertSeverity.Error: return StatusIconType.Error; case HealthAlertSeverity.Warning: return StatusIconType.Warning; case HealthAlertSeverity.Info: return StatusIconType.Info; case HealthAlertSeverity.Progress: return StatusIconType.Progress; case HealthAlertSeverity.Success: return StatusIconType.Success; case HealthAlertSeverity.Neutral: return StatusIconType.Unknown; default: return null; } } /** * Gets the initial host classes to be applied to this element */ getInitialHostClasses() { return super.getInitialHostClasses().concat([ 'sme-alert', 'sme-page-alert', 'sme-alert-background' ]); } } /** @nocollapse */ PageAlertBarComponent.ɵfac = function PageAlertBarComponent_Factory(t) { return new (t || PageAlertBarComponent)(i0.ɵɵdirectiveInject(i0.Injector)); }; /** @nocollapse */ PageAlertBarComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: PageAlertBarComponent, selectors: [["sme-page-alert-bar"]], hostVars: 20, hostBindings: function PageAlertBarComponent_HostBindings(rf, ctx) { if (rf & 2) { i0.ɵɵclassProp("sme-alert-critical", ctx.isCritical)("sme-alert-error", ctx.isError)("sme-alert-warning", ctx.isWarning)("sme-alert-pending", ctx.isPending)("sme-alert-informational", ctx.isInformational)("sme-alert-success", ctx.isSuccessful)("sme-alert-upsell", ctx.isUpsell)("sme-alert-neutral", ctx.isNeutral)("sme-alert-transparent", ctx.isTransparent)("sme-override-padding-left-none", ctx.isNoLeftPadding); } }, inputs: { isBackgroundTransparent: "isBackgroundTransparent", alert: "alert" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 6, vars: 9, consts: [["class", "sme-layout-inline-block", "size", "16px", 3, "status", 4, "ngIf"], ["class", "sme-link sme-focus-zone sme-icon-after", "target", "_blank", 3, "class", "sme-icon", "href", 4, "ngIf"], ["class", "sme-margin-left-xs sme-position-flex-none sme-link sme-focus-zone", "tabindex", "0", "role", "link", 3, "title", "click", 4, "ngIf"], ["size", "16px", 1, "sme-layout-inline-block", 3, "status"], ["target", "_blank", 1, "sme-link", "sme-focus-zone", "sme-icon-after", 3, "href"], ["tabindex", "0", "role", "link", 1, "sme-margin-left-xs", "sme-position-flex-none", "sme-link", "sme-focus-zone", 3, "title", "click"]], template: function PageAlertBarComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "span"); i0.ɵɵtemplate(1, PageAlertBarComponent_sme_status_icon_1_Template, 1, 1, "sme-status-icon", 0); i0.ɵɵelementEnd(); i0.ɵɵelementStart(2, "span"); i0.ɵɵtext(3); i0.ɵɵtemplate(4, PageAlertBarComponent_a_4_Template, 2, 6, "a", 1); i0.ɵɵtemplate(5, PageAlertBarComponent_a_5_Template, 2, 2, "a", 2); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵclassMapInterpolate1("sme-margin-right-xs sme-position-flex-none ", ctx.iconClass, ""); i0.ɵɵclassProp("sme-icon", !!ctx.iconClass); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx.statusIcon !== null); i0.ɵɵadvance(2); i0.ɵɵtextInterpolate1(" ", ctx.alert.message, " "); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx.alert.externalLink); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", !!ctx.alert.detailsCommand); } }, dependencies: [i1.NgIf, i2.StatusIconComponent, i3.TooltipDirective], encapsulation: 2 }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PageAlertBarComponent, [{ type: Component, args: [{ selector: 'sme-page-alert-bar', template: "<span class=\"sme-margin-right-xs sme-position-flex-none {{iconClass}}\" [class.sme-icon]=\"!!iconClass\">\r\n <sme-status-icon *ngIf=\"statusIcon !== null\" class=\"sme-layout-inline-block\" [status]=\"statusIcon\" size=\"16px\">\r\n </sme-status-icon>\r\n</span>\r\n\r\n<span>\r\n {{ alert.message }}\r\n <a *ngIf=\"alert.externalLink\" class=\"sme-link sme-focus-zone sme-icon-after\" [class]=\"alert?.externalLink?.iconClass\"\r\n [class.sme-icon]=\"!!alert?.externalLink?.iconClass\" href=\"{{alert.externalLink.url}}\" target=\"_blank\">{{\r\n alert.externalLink.title }}</a>\r\n <a *ngIf=\"!!alert.detailsCommand\" class=\"sme-margin-left-xs sme-position-flex-none sme-link sme-focus-zone\"\r\n tabindex=\"0\" role=\"link\" [title]=\"!!alert.detailsCaption ? alert.detailsCaption : defaultDetailsLabel\"\r\n (click)=\"alert.detailsCommand($event)\">\r\n {{ !!alert.detailsLabel ? alert.detailsLabel : defaultDetailsLabel }}\r\n </a>\r\n</span>\r\n" }] }], function () { return [{ type: i0.Injector }]; }, { isBackgroundTransparent: [{ type: Input }], isCritical: [{ type: HostBinding, args: ['class.sme-alert-critical'] }], isError: [{ type: HostBinding, args: ['class.sme-alert-error'] }], isWarning: [{ type: HostBinding, args: ['class.sme-alert-warning'] }], isPending: [{ type: HostBinding, args: ['class.sme-alert-pending'] }], isInformational: [{ type: HostBinding, args: ['class.sme-alert-informational'] }], isSuccessful: [{ type: HostBinding, args: ['class.sme-alert-success'] }], isUpsell: [{ type: HostBinding, args: ['class.sme-alert-upsell'] }], isNeutral: [{ type: HostBinding, args: ['class.sme-alert-neutral'] }], isTransparent: [{ type: HostBinding, args: ['class.sme-alert-transparent'] }], isNoLeftPadding: [{ type: HostBinding, args: ['class.sme-override-padding-left-none'] }], alert: [{ type: Input }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1hbGVydC1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcGFnZS1hbGVydC1iYXIvcGFnZS1hbGVydC1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcGFnZS1hbGVydC1iYXIvcGFnZS1hbGVydC1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFhLE1BQU0scUJBQXFCLENBQUM7Ozs7OztJQ0ZuRSxxQ0FDa0I7OztJQUQyRCwwQ0FBcUI7OztJQU1sRyw0QkFDd0c7SUFBQSxZQUMzRTtJQUFBLGlCQUFJOzs7SUFGNEMsMkhBQXdDO0lBQ25ILDRJQUFtRDtJQUFDLGlGQUFpQztJQUFpQixlQUMzRTtJQUQyRSxxREFDM0U7Ozs7SUFDN0IsNEJBRXlDO0lBQXZDLGlLQUFTLGVBQUEsbUNBQTRCLENBQUEsSUFBQztJQUN0QyxZQUNGO0lBQUEsaUJBQUk7OztJQUh1QixnSEFBNkU7SUFFdEcsZUFDRjtJQURFLHFIQUNGOztBRFRGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBTUgsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG1CQUFtQjtJQThJMUQsWUFBWSxRQUFrQjtRQUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUF2SWIsd0JBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0s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QXlCO1lBUzNCLGVBQWU7a0JBRHpCLFdBQVc7bUJBQUMsK0JBQStCO1lBU2pDLFlBQVk7a0JBRHRCLFdBQVc7bUJBQUMseUJBQXlCO1lBUzNCLFFBQVE7a0JBRGxCLFdBQVc7bUJBQUMsd0JBQXdCO1lBUzFCLFNBQVM7a0JBRG5CLFdBQVc7bUJBQUMseUJBQXlCO1lBUzNCLGFBQWE7a0JBRHZCLFdBQVc7bUJBQUMsNkJBQTZCO1lBVS9CLGVBQWU7a0JBRHpCLFdBQVc7bUJBQUMsc0NBQXNDO1lBUW5DLEtBQUs7a0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbmplY3RvciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3BhY2VyQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2NvbW1vbi9zcGFjZXItYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdGF0dXNJY29uVHlwZSB9IGZyb20gJy4uL2ljb24vbGF5ZXJlZC1pY29uL3N0YXR1cy9zdGF0dXMtaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIZWFsdGhBbGVydFNldmVyaXR5LCBQYWdlQWxlcnQgfSBmcm9tICcuL21vZGVscy9wYWdlLWFsZXJ0JztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgUGFnZSBBbGVydCBCYXIgQGlkIHNtZS1wYWdlLWFsZXJ0LWJhci1jb21wb25lbnR9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvcGFnZS1hbGVydC1iYXItb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgQmFzaWMgVXNhZ2UgQGlkIGJhc2ljLXVzYWdlfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2Jhc2ljLXVzYWdlLmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9iYXNpYy11c2FnZS5jb21wb25lbnQudHN9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgQ3VzdG9tIFVzYWdlIEBpZCBjdXN0b20tdXNhZ2V9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvY3VzdG9tLXVzYWdlLmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9jdXN0b20tdXNhZ2UuY29tcG9uZW50LnRzfVxyXG4gKi9cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtcGFnZS1hbGVydC1iYXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UtYWxlcnQtYmFyLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnZUFsZXJ0QmFyQ29tcG9uZW50IGV4dGVuZHMgU3BhY2VyQmFzZURpcmVjdGl2ZSB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnUGFnZUFsZXJ0QmFyQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGVmYXVsdERldGFpbHNMYWJlbCA9IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uZGV0YWlscztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBhbGVydCBiYXIgaXMgdHJhbnNwYXJlbnQgb3Igbm90LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlzQmFja2dyb3VuZFRyYW5zcGFyZW50ID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcml0aWNhbCBhbGVydHMuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3Muc21lLWFsZXJ0LWNyaXRpY2FsJylcclxuICAgIHB1YmxpYyBnZXQgaXNDcml0aWNhbCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbGVydCAmJiB0aGlzLmFsZXJ0LnNldmVyaXR5ID09PSBIZWFsdGhBbGVydFNldmVyaXR5LkNyaXRpY2FsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXJyb3IgYWxlcnRzLlxyXG4gICAgICovXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNtZS1hbGVydC1lcnJvcicpXHJcbiAgICBwdWJsaWMgZ2V0IGlzRXJyb3IoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxlcnQgJiYgdGhpcy5hbGVydC5zZXZlcml0eSA9PT0gSGVhbHRoQWxlcnRTZXZlcml0eS5FcnJvcjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdhcm5pbmcgYWxlcnRzLlxyXG4gICAgICovXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNtZS1hbGVydC13YXJuaW5nJylcclxuICAgIHB1YmxpYyBnZXQgaXNXYXJuaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFsZXJ0ICYmIHRoaXMuYWxlcnQuc2V2ZXJpdHkgPT09IEhlYWx0aEFsZXJ0U2V2ZXJpdHkuV2FybmluZztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb2dyZXNzIGFsZXJ0cy5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWUtYWxlcnQtcGVuZGluZycpXHJcbiAgICBwdWJsaWMgZ2V0IGlzUGVuZGluZygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbGVydCAmJiB0aGlzLmFsZXJ0LnNldmVyaXR5ID09PSBIZWFsdGhBbGVydFNldmVyaXR5LlByb2dyZXNzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5mb3JtYXRpb25hbCBhbGVydHMuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3Muc21lLWFsZXJ0LWluZm9ybWF0aW9uYWwnKVxyXG4gICAgcHVibGljIGdldCBpc0luZm9ybWF0aW9uYWwoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxlcnQgJiYgdGhpcy5hbGVydC5zZXZlcml0eSA9PT0gSGVhbHRoQWxlcnRTZXZlcml0eS5JbmZvO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3VjY2VzcyBhbGVydHMuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3Muc21lLWFsZXJ0LXN1Y2Nlc3MnKVxyXG4gICAgcHVibGljIGdldCBpc1N1Y2Nlc3NmdWwoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxlcnQgJiYgdGhpcy5hbGVydC5zZXZlcml0eSA9PT0gSGVhbHRoQWxlcnRTZXZlcml0eS5TdWNjZXNzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBzZWxsIGFsZXJ0cy5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWUtYWxlcnQtdXBzZWxsJylcclxuICAgIHB1YmxpYyBnZXQgaXNVcHNlbGwoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxlcnQgJiYgdGhpcy5hbGVydC5zZXZlcml0eSA9PT0gSGVhbHRoQWxlcnRTZXZlcml0eS5VcHNlbGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOZXV0cmFsIGFsZXJ0cy5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWUtYWxlcnQtbmV1dHJhbCcpXHJcbiAgICBwdWJsaWMgZ2V0IGlzTmV1dHJhbCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbGVydCAmJiB0aGlzLmFsZXJ0LnNldmVyaXR5ID09PSBIZWFsdGhBbGVydFNldmVyaXR5Lk5ldXRyYWw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFuc3BhcmVudCBhbGVydHMuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3Muc21lLWFsZXJ0LXRyYW5zcGFyZW50JylcclxuICAgIHB1YmxpYyBnZXQgaXNUcmFuc3BhcmVudCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbGVydCAmJiB0aGlzLmlzQmFja2dyb3VuZFRyYW5zcGFyZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hlbiB0aGUgYmFja2dyb3VuZCBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIG9wdGlvbmFsbHkgcmVtb3ZlIHRoZSBsZWZ0IHBhZGRpbmcgZm9yIGFsbGlnbm1lbnQgd2l0aCBvdGhlciBVSSBlbGVtZW50cy5cclxuICAgICAqIFdoZW4gd2l0aCB0aGUgYmFja2dvdW5kIGNvbG9yLCB3ZSBuZWVkIHRvIGtlZXAgdGhlIGxlZnQgcGFkZGluZyBmb3IgdmlzdWFsbHkgYm9yZGVyaW5nIHRoZSBhbGVydC5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWUtb3ZlcnJpZGUtcGFkZGluZy1sZWZ0LW5vbmUnKVxyXG4gICAgcHVibGljIGdldCBpc05vTGVmdFBhZGRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxlcnQgJiYgdGhpcy5pc0JhY2tncm91bmRUcmFuc3BhcmVudCAmJiB0aGlzLm5vTGVmdFBhZGRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbiBpbnRlcmZhY2UgdGhhdCBkaWN0YXRlcyBob3cgdG8gZGlzcGxheSB0aGUgYWxlcnQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhbGVydDogUGFnZUFsZXJ0O1xyXG5cclxuICAgIHB1YmxpYyBnZXQgaWNvbkNsYXNzKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFsZXJ0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuYWxlcnQuaWNvbkNsYXNzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFsZXJ0Lmljb25DbGFzcztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBzdGF0dXMgaWNvbiB0eXBlIGJhc2VkIG9uIHRoZSBhbGVydCBzZXZlcml0eS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBzdGF0dXNJY29uKCk6IFN0YXR1c0ljb25UeXBlIHtcclxuICAgICAgICBpZiAoIXRoaXMuYWxlcnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmFsZXJ0Lmljb25DbGFzcykge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5hbGVydC5zZXZlcml0eSkge1xyXG4gICAgICAgICAgICBjYXNlIEhlYWx0aEFsZXJ0U2V2ZXJpdHkuQ3JpdGljYWw6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzSWNvblR5cGUuQ3JpdGljYWw7XHJcbiAgICAgICAgICAgIGNhc2UgSGVhbHRoQWxlcnRTZXZlcml0eS5FcnJvcjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5FcnJvcjtcclxuICAgICAgICAgICAgY2FzZSBIZWFsdGhBbGVydFNldmVyaXR5Lldhcm5pbmc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzSWNvblR5cGUuV2FybmluZztcclxuICAgICAgICAgICAgY2FzZSBIZWFsdGhBbGVydFNldmVyaXR5LkluZm86XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzSWNvblR5cGUuSW5mbztcclxuICAgICAgICAgICAgY2FzZSBIZWFsdGhBbGVydFNldmVyaXR5LlByb2dyZXNzOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1c0ljb25UeXBlLlByb2dyZXNzO1xyXG4gICAgICAgICAgICBjYXNlIEhlYWx0aEFsZXJ0U2V2ZXJpdHkuU3VjY2VzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5TdWNjZXNzO1xyXG4gICAgICAgICAgICBjYXNlIEhlYWx0aEFsZXJ0U2V2ZXJpdHkuTmV1dHJhbDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5Vbmtub3duO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGluaXRpYWwgaG9zdCBjbGFzc2VzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXRJbml0aWFsSG9zdENsYXNzZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldEluaXRpYWxIb3N0Q2xhc3NlcygpLmNvbmNhdChbXHJcbiAgICAgICAgICAgICdzbWUtYWxlcnQnLFxyXG4gICAgICAgICAgICAnc21lLXBhZ2UtYWxlcnQnLFxyXG4gICAgICAgICAgICAnc21lLWFsZXJ0LWJhY2tncm91bmQnXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPHNwYW4gY2xhc3M9XCJzbWUtbWFyZ2luLXJpZ2h0LXhzIHNtZS1wb3NpdGlvbi1mbGV4LW5vbmUge3tpY29uQ2xhc3N9fVwiIFtjbGFzcy5zbWUtaWNvbl09XCIhIWljb25DbGFzc1wiPlxyXG4gIDxzbWUtc3RhdHVzLWljb24gKm5nSWY9XCJzdGF0dXNJY29uICE9PSBudWxsXCIgY2xhc3M9XCJzbWUtbGF5b3V0LWlubGluZS1ibG9ja1wiIFtzdGF0dXNdPVwic3RhdHVzSWNvblwiIHNpemU9XCIxNnB4XCI+XHJcbiAgPC9zbWUtc3RhdHVzLWljb24+XHJcbjwvc3Bhbj5cclxuXHJcbjxzcGFuPlxyXG4gIHt7IGFsZXJ0Lm1lc3NhZ2UgfX1cclxuICA8YSAqbmdJZj1cImFsZXJ0LmV4dGVybmFsTGlua1wiIGNsYXNzPVwic21lLWxpbmsgc21lLWZvY3VzLXpvbmUgc21lLWljb24tYWZ0ZXJcIiBbY2xhc3NdPVwiYWxlcnQ/LmV4dGVybmFsTGluaz8uaWNvbkNsYXNzXCJcclxuICAgIFtjbGFzcy5zbWUtaWNvbl09XCIhIWFsZXJ0Py5leHRlcm5hbExpbms/Lmljb25DbGFzc1wiIGhyZWY9XCJ7e2FsZXJ0LmV4dGVybmFsTGluay51cmx9fVwiIHRhcmdldD1cIl9ibGFua1wiPnt7XHJcbiAgICBhbGVydC5leHRlcm5hbExpbmsudGl0bGUgfX08L2E+XHJcbiAgPGEgKm5nSWY9XCIhIWFsZXJ0LmRldGFpbHNDb21tYW5kXCIgY2xhc3M9XCJzbWUtbWFyZ2luLWxlZnQteHMgc21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtbGluayBzbWUtZm9jdXMtem9uZVwiXHJcbiAgICB0YWJpbmRleD1cIjBcIiByb2xlPVwibGlua1wiIFt0aXRsZV09XCIhIWFsZXJ0LmRldGFpbHNDYXB0aW9uID8gYWxlcnQuZGV0YWlsc0NhcHRpb24gOiBkZWZhdWx0RGV0YWlsc0xhYmVsXCJcclxuICAgIChjbGljayk9XCJhbGVydC5kZXRhaWxzQ29tbWFuZCgkZXZlbnQpXCI+XHJcbiAgICB7eyAhIWFsZXJ0LmRldGFpbHNMYWJlbCA/IGFsZXJ0LmRldGFpbHNMYWJlbCA6IGRlZmF1bHREZXRhaWxzTGFiZWwgfX1cclxuICA8L2E+XHJcbjwvc3Bhbj5cclxuIl19