@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
300 lines • 25.4 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Component, NgModule, EventEmitter, Output, Input, ViewChild, ElementRef, ContentChild, HostBinding } from '@angular/core';
import { IgxExpansionPanelModule } from '../expansion-panel/expansion-panel.module';
import { IgxExpansionPanelComponent } from '../expansion-panel';
import { IgxIconModule, IgxIconComponent } from '../icon/index';
import { IgxButtonModule } from '../directives/button/button.directive';
import { IgxRippleModule } from '../directives/ripple/ripple.directive';
import { IgxBannerActionsDirective } from './banner.directives';
import { CommonModule } from '@angular/common';
/**
* **Ignite UI for Angular Banner** -
* [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/banner.html)
*
* The Ignite UI Banner provides a highly templateable and easy to use banner that can be shown in your application.
*
* Usage:
*
* ```html
* <igx-banner #banner>
* Our privacy settings have changed.
* <igx-banner-actions>
* <button igxButton="raised">Read More</button>
* <button igxButton="raised">Accept and Continue</button>
* </igx-banner-actions>
* </igx-banner>
* ```
*/
var IgxBannerComponent = /** @class */ (function () {
function IgxBannerComponent(elementRef) {
this.elementRef = elementRef;
/**
* Fires after the banner shows up
* ```typescript
* public handleOpened(event) {
* ...
* }
* ```
* ```html
* <igx-banner (onOpened)="handleOpened($event)"></igx-banner>
* ```
*/
this.onOpened = new EventEmitter();
/**
* Fires before the banner shows up
* ```typescript
* public handleOpening(event) {
* ...
* }
* ```
* ```html
* <igx-banner (onOpening)="handleOpening($event)"></igx-banner>
* ```
*/
this.onOpening = new EventEmitter();
/**
* Fires after the banner hides
* ```typescript
* public handleClosed(event) {
* ...
* }
* ```
* ```html
* <igx-banner (onClosed)="handleClosed($event)"></igx-banner>
* ```
*/
this.onClosed = new EventEmitter();
/**
* Fires before the banner hides
* ```typescript
* public handleClosing(event) {
* ...
* }
* ```
* ```html
* <igx-banner (onClosing)="handleClosing($event)"></igx-banner>
* ```
*/
this.onClosing = new EventEmitter();
}
Object.defineProperty(IgxBannerComponent.prototype, "useDefaultTemplate", {
/** @hidden */
get: function () {
return !this._bannerActionTemplate;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxBannerComponent.prototype, "animationSettings", {
/**
* Get the animation settings used by the banner open/close methods
* ```typescript
* let currentAnimations: AnimationSettings = banner.animationSettings
* ```
*/
get: function () {
return this._animationSettings ? this._animationSettings : this._expansionPanel.animationSettings;
},
/**
* Set the animation settings used by the banner open/close methods
* ```typescript
* import { slideInLeft, slideOutRight } from 'igniteui-angular';
* ...
* banner.animationSettings: AnimationSettings = { openAnimation: slideInLeft, closeAnimation: slideOutRight };
* ```
*/
set: function (settings) {
this._animationSettings = settings;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxBannerComponent.prototype, "collapsed", {
/**
* Gets whether banner is collapsed
*
* ```typescript
* const isCollapsed: boolean = banner.collapsed;
* ```
*/
get: function () {
return this._expansionPanel.collapsed;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxBannerComponent.prototype, "element", {
/**
* Returns the native element of the banner component
* ```typescript
* const myBannerElement: HTMLElement = banner.element;
* ```
*/
get: function () {
return this.elementRef.nativeElement;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxBannerComponent.prototype, "displayStyle", {
/**
* @hidden
*/
get: function () {
return this.collapsed ? '' : 'block';
},
enumerable: true,
configurable: true
});
/**
* Opens the banner
*
* ```typescript
* myBanner.open();
* ```
*
* ```html
* <igx-banner #banner>
* ...
* </igx-banner>
* <button (click)="banner.open()">Open Banner</button>
* ```
*/
IgxBannerComponent.prototype.open = function (event) {
this._bannerEvent = { banner: this, event: event };
var openingArgs = {
banner: this,
event: event,
cancel: false
};
this.onOpening.emit(openingArgs);
if (openingArgs.cancel) {
return;
}
this._expansionPanel.open(event);
};
/**
* Closes the banner
*
* ```typescript
* myBanner.close();
* ```
*
* ```html
* <igx-banner #banner>
* ...
* </igx-banner>
* <button (click)="banner.close()">Close Banner</button>
* ```
*/
IgxBannerComponent.prototype.close = function (event) {
this._bannerEvent = { banner: this, event: event };
var closingArgs = {
banner: this,
event: event,
cancel: false
};
this.onClosing.emit(closingArgs);
if (closingArgs.cancel) {
return;
}
this._expansionPanel.close(event);
};
/**
* Toggles the banner
*
* ```typescript
* myBanner.toggle();
* ```
*
* ```html
* <igx-banner #banner>
* ...
* </igx-banner>
* <button (click)="banner.toggle()">Toggle Banner</button>
* ```
*/
IgxBannerComponent.prototype.toggle = function (event) {
if (this.collapsed) {
this.open(event);
}
else {
this.close(event);
}
};
/** @hidden */
IgxBannerComponent.prototype.onExpansionPanelOpen = function () {
this.onOpened.emit(this._bannerEvent);
};
/** @hidden */
IgxBannerComponent.prototype.onExpansionPanelClose = function () {
this.onClosed.emit(this._bannerEvent);
};
IgxBannerComponent.ctorParameters = function () { return [
{ type: ElementRef }
]; };
__decorate([
ViewChild('expansionPanel', { static: true }),
__metadata("design:type", IgxExpansionPanelComponent)
], IgxBannerComponent.prototype, "_expansionPanel", void 0);
__decorate([
ContentChild(IgxBannerActionsDirective),
__metadata("design:type", IgxBannerActionsDirective)
], IgxBannerComponent.prototype, "_bannerActionTemplate", void 0);
__decorate([
ContentChild(IgxIconComponent),
__metadata("design:type", IgxIconComponent)
], IgxBannerComponent.prototype, "bannerIcon", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxBannerComponent.prototype, "onOpened", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxBannerComponent.prototype, "onOpening", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxBannerComponent.prototype, "onClosed", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxBannerComponent.prototype, "onClosing", void 0);
__decorate([
Input(),
__metadata("design:type", Object),
__metadata("design:paramtypes", [Object])
], IgxBannerComponent.prototype, "animationSettings", null);
__decorate([
HostBinding('style.display'),
__metadata("design:type", String),
__metadata("design:paramtypes", [])
], IgxBannerComponent.prototype, "displayStyle", null);
IgxBannerComponent = __decorate([
Component({
selector: 'igx-banner',
template: "<igx-expansion-panel #expansionPanel [animationSettings]=\"animationSettings\" (onCollapsed)=\"onExpansionPanelClose()\" (onExpanded)=\"onExpansionPanelOpen()\"\n [collapsed]=\"collapsed\" aria-live=\"polite\" [attr.aria-hidden]=\"collapsed\">\n <igx-expansion-panel-body>\n <div class=\"igx-banner\">\n <div class=\"igx-banner__message\">\n <div *ngIf=\"bannerIcon\" class=\"igx-banner__illustration\">\n <ng-content select=\"igx-icon\"></ng-content>\n </div>\n <span class=\"igx-banner__text\">\n <ng-content></ng-content>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container *ngIf=\"useDefaultTemplate\">\n <button igxButton=\"flat\" igxRipple (click)=\"close()\">\n Dismiss\n </button>\n </ng-container>\n <ng-container *ngIf=\"!useDefaultTemplate\">\n <ng-content select=\"igx-banner-actions\"></ng-content>\n </ng-container>\n </div>\n </div>\n </div>\n </igx-expansion-panel-body>\n</igx-expansion-panel>"
}),
__metadata("design:paramtypes", [ElementRef])
], IgxBannerComponent);
return IgxBannerComponent;
}());
export { IgxBannerComponent };
/**
* @hidden
*/
var IgxBannerModule = /** @class */ (function () {
function IgxBannerModule() {
}
IgxBannerModule = __decorate([
NgModule({
declarations: [IgxBannerComponent, IgxBannerActionsDirective],
exports: [IgxBannerComponent, IgxBannerActionsDirective],
imports: [CommonModule, IgxExpansionPanelModule, IgxIconModule, IgxButtonModule, IgxRippleModule]
})
], IgxBannerModule);
return IgxBannerModule;
}());
export { IgxBannerModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvYmFubmVyL2Jhbm5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQzVFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFcEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVUvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFLSDtJQWdJSSw0QkFBbUIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWhIekM7Ozs7Ozs7Ozs7V0FVRztRQUVJLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUV0RDs7Ozs7Ozs7OztXQVVHO1FBRUksY0FBUyxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBRTdEOzs7Ozs7Ozs7O1dBVUc7UUFFSSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFFdEQ7Ozs7Ozs7Ozs7V0FVRztRQUVJLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztJQTBEaEIsQ0FB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QUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7a0NBQ3JCLDBCQUEwQjsrREFBQztJQUdwRDtRQURDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQztrQ0FDVCx5QkFBeUI7cUVBQUM7SUFNekQ7UUFEQyxZQUFZLENBQUMsZ0JBQWdCLENBQUM7a0NBQ1osZ0JBQWdCOzBEQUFDO0lBY3BDO1FBREMsTUFBTSxFQUFFOzt3REFDNkM7SUFjdEQ7UUFEQyxNQUFNLEVBQUU7O3lEQUNvRDtJQWM3RDtRQURDLE1BQU0sRUFBRTs7d0RBQzZDO0lBY3REO1FBREMsTUFBTSxFQUFFOzt5REFDb0Q7SUFjN0Q7UUFEQyxLQUFLLEVBQUU7OzsrREFHUDtJQXNDRDtRQURDLFdBQVcsQ0FBQyxlQUFlLENBQUM7OzswREFHNUI7SUE5SFEsa0JBQWtCO1FBSjlCLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLGcwQ0FBb0M7U0FDdkMsQ0FBQzt5Q0FpSWlDLFVBQVU7T0FoSWhDLGtCQUFrQixDQXlOOUI7SUFBRCx5QkFBQztDQUFBLEFBek5ELElBeU5DO1NBek5ZLGtCQUFrQjtBQTJOL0I7O0dBRUc7QUFNSDtJQUFBO0lBQStCLENBQUM7SUFBbkIsZUFBZTtRQUwzQixRQUFRLENBQUM7WUFDTixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSx5QkFBeUIsQ0FBQztZQUM3RCxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSx5QkFBeUIsQ0FBQztZQUN4RCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUM7U0FDcEcsQ0FBQztPQUNXLGVBQWUsQ0FBSTtJQUFELHNCQUFDO0NBQUEsQUFBaEMsSUFBZ0M7U0FBbkIsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgTmdNb2R1bGUsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLFxuICAgIENvbnRlbnRDaGlsZCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsTW9kdWxlIH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC5tb2R1bGUnO1xuaW1wb3J0IHsgQW5pbWF0aW9uU2V0dGluZ3MgfSBmcm9tICcuLi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hFeHBhbnNpb25QYW5lbENvbXBvbmVudCB9IGZyb20gJy4uL2V4cGFuc2lvbi1wYW5lbCc7XG5pbXBvcnQgeyBJZ3hJY29uTW9kdWxlLCBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pbmRleCc7XG5pbXBvcnQgeyBJVG9nZ2xlVmlldyB9IGZyb20gJy4uL2NvcmUvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBJZ3hCdXR0b25Nb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFJpcHBsZU1vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvcmlwcGxlL3JpcHBsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4QmFubmVyQWN0aW9uc0RpcmVjdGl2ZSB9IGZyb20gJy4vYmFubmVyLmRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFubmVyRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIGJhbm5lcjogSWd4QmFubmVyQ29tcG9uZW50O1xuICAgIGV2ZW50PzogRXZlbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFubmVyQ2FuY2VsRXZlbnRBcmdzIGV4dGVuZHMgQmFubmVyRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbn1cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgQmFubmVyKiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL2Jhbm5lci5odG1sKVxuICpcbiAqIFRoZSBJZ25pdGUgVUkgQmFubmVyIHByb3ZpZGVzIGEgaGlnaGx5IHRlbXBsYXRlYWJsZSBhbmQgZWFzeSB0byB1c2UgYmFubmVyIHRoYXQgY2FuIGJlIHNob3duIGluIHlvdXIgYXBwbGljYXRpb24uXG4gKlxuICogVXNhZ2U6XG4gKlxuICogYGBgaHRtbFxuICogPGlneC1iYW5uZXIgI2Jhbm5lcj5cbiAqICAgT3VyIHByaXZhY3kgc2V0dGluZ3MgaGF2ZSBjaGFuZ2VkLlxuICogIDxpZ3gtYmFubmVyLWFjdGlvbnM+XG4gKiAgICAgIDxidXR0b24gaWd4QnV0dG9uPVwicmFpc2VkXCI+UmVhZCBNb3JlPC9idXR0b24+XG4gKiAgICAgIDxidXR0b24gaWd4QnV0dG9uPVwicmFpc2VkXCI+QWNjZXB0IGFuZCBDb250aW51ZTwvYnV0dG9uPlxuICogIDwvaWd4LWJhbm5lci1hY3Rpb25zPlxuICogPC9pZ3gtYmFubmVyPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LWJhbm5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICdiYW5uZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIElneEJhbm5lckNvbXBvbmVudCBpbXBsZW1lbnRzIElUb2dnbGVWaWV3IHtcbiAgICBwcml2YXRlIF9iYW5uZXJFdmVudDogQmFubmVyRXZlbnRBcmdzO1xuICAgIHByaXZhdGUgX2FuaW1hdGlvblNldHRpbmdzOiBBbmltYXRpb25TZXR0aW5ncztcblxuICAgIEBWaWV3Q2hpbGQoJ2V4cGFuc2lvblBhbmVsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIF9leHBhbnNpb25QYW5lbDogSWd4RXhwYW5zaW9uUGFuZWxDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKElneEJhbm5lckFjdGlvbnNEaXJlY3RpdmUpXG4gICAgcHJpdmF0ZSBfYmFubmVyQWN0aW9uVGVtcGxhdGU6IElneEJhbm5lckFjdGlvbnNEaXJlY3RpdmU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hJY29uQ29tcG9uZW50KVxuICAgIHB1YmxpYyBiYW5uZXJJY29uOiBJZ3hJY29uQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogRmlyZXMgYWZ0ZXIgdGhlIGJhbm5lciBzaG93cyB1cFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBwdWJsaWMgaGFuZGxlT3BlbmVkKGV2ZW50KSB7XG4gICAgICogIC4uLlxuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1iYW5uZXIgKG9uT3BlbmVkKT1cImhhbmRsZU9wZW5lZCgkZXZlbnQpXCI+PC9pZ3gtYmFubmVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbk9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8QmFubmVyRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRmlyZXMgYmVmb3JlIHRoZSBiYW5uZXIgc2hvd3MgdXBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogcHVibGljIGhhbmRsZU9wZW5pbmcoZXZlbnQpIHtcbiAgICAgKiAgLi4uXG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWJhbm5lciAob25PcGVuaW5nKT1cImhhbmRsZU9wZW5pbmcoJGV2ZW50KVwiPjwvaWd4LWJhbm5lcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25PcGVuaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxCYW5uZXJDYW5jZWxFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBGaXJlcyBhZnRlciB0aGUgYmFubmVyIGhpZGVzXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHB1YmxpYyBoYW5kbGVDbG9zZWQoZXZlbnQpIHtcbiAgICAgKiAgLi4uXG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWJhbm5lciAob25DbG9zZWQpPVwiaGFuZGxlQ2xvc2VkKCRldmVudClcIj48L2lneC1iYW5uZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxCYW5uZXJFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBGaXJlcyBiZWZvcmUgdGhlIGJhbm5lciBoaWRlc1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBwdWJsaWMgaGFuZGxlQ2xvc2luZyhldmVudCkge1xuICAgICAqICAuLi5cbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtYmFubmVyIChvbkNsb3NpbmcpPVwiaGFuZGxlQ2xvc2luZygkZXZlbnQpXCI+PC9pZ3gtYmFubmVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkNsb3NpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPEJhbm5lckNhbmNlbEV2ZW50QXJncz4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIGdldCB1c2VEZWZhdWx0VGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5fYmFubmVyQWN0aW9uVGVtcGxhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBhbmltYXRpb24gc2V0dGluZ3MgdXNlZCBieSB0aGUgYmFubmVyIG9wZW4vY2xvc2UgbWV0aG9kc1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgY3VycmVudEFuaW1hdGlvbnM6IEFuaW1hdGlvblNldHRpbmdzID0gYmFubmVyLmFuaW1hdGlvblNldHRpbmdzXG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGFuaW1hdGlvblNldHRpbmdzKCk6IEFuaW1hdGlvblNldHRpbmdzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FuaW1hdGlvblNldHRpbmdzID8gdGhpcy5fYW5pbWF0aW9uU2V0dGluZ3MgOiB0aGlzLl9leHBhbnNpb25QYW5lbC5hbmltYXRpb25TZXR0aW5ncztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGFuaW1hdGlvbiBzZXR0aW5ncyB1c2VkIGJ5IHRoZSBiYW5uZXIgb3Blbi9jbG9zZSBtZXRob2RzXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGltcG9ydCB7IHNsaWRlSW5MZWZ0LCBzbGlkZU91dFJpZ2h0IH0gZnJvbSAnaWduaXRldWktYW5ndWxhcic7XG4gICAgICogLi4uXG4gICAgICogYmFubmVyLmFuaW1hdGlvblNldHRpbmdzOiBBbmltYXRpb25TZXR0aW5ncyA9IHsgb3BlbkFuaW1hdGlvbjogc2xpZGVJbkxlZnQsIGNsb3NlQW5pbWF0aW9uOiBzbGlkZU91dFJpZ2h0IH07XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBhbmltYXRpb25TZXR0aW5ncyhzZXR0aW5nczogQW5pbWF0aW9uU2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy5fYW5pbWF0aW9uU2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyB3aGV0aGVyIGJhbm5lciBpcyBjb2xsYXBzZWRcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBpc0NvbGxhcHNlZDogYm9vbGVhbiA9IGJhbm5lci5jb2xsYXBzZWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb2xsYXBzZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leHBhbnNpb25QYW5lbC5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbmF0aXZlIGVsZW1lbnQgb2YgdGhlIGJhbm5lciBjb21wb25lbnRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IG15QmFubmVyRWxlbWVudDogSFRNTEVsZW1lbnQgPSBiYW5uZXIuZWxlbWVudDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5kaXNwbGF5JylcbiAgICBwdWJsaWMgZ2V0IGRpc3BsYXlTdHlsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsYXBzZWQgPyAnJyA6ICdibG9jayc7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIGJhbm5lclxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBteUJhbm5lci5vcGVuKCk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1iYW5uZXIgI2Jhbm5lcj5cbiAgICAgKiAuLi5cbiAgICAgKiA8L2lneC1iYW5uZXI+XG4gICAgICogPGJ1dHRvbiAoY2xpY2spPVwiYmFubmVyLm9wZW4oKVwiPk9wZW4gQmFubmVyPC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIG9wZW4oZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICB0aGlzLl9iYW5uZXJFdmVudCA9IHsgYmFubmVyOiB0aGlzLCBldmVudH07XG4gICAgICAgIGNvbnN0IG9wZW5pbmdBcmdzID0ge1xuICAgICAgICAgICAgYmFubmVyOiB0aGlzLFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICBjYW5jZWw6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub25PcGVuaW5nLmVtaXQob3BlbmluZ0FyZ3MpO1xuICAgICAgICBpZiAob3BlbmluZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZXhwYW5zaW9uUGFuZWwub3BlbihldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBiYW5uZXJcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgbXlCYW5uZXIuY2xvc2UoKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWJhbm5lciAjYmFubmVyPlxuICAgICAqIC4uLlxuICAgICAqIDwvaWd4LWJhbm5lcj5cbiAgICAgKiA8YnV0dG9uIChjbGljayk9XCJiYW5uZXIuY2xvc2UoKVwiPkNsb3NlIEJhbm5lcjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZShldmVudD86IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuX2Jhbm5lckV2ZW50ID0geyBiYW5uZXI6IHRoaXMsIGV2ZW50fTtcbiAgICAgICAgY29uc3QgY2xvc2luZ0FyZ3MgPSB7XG4gICAgICAgICAgICBiYW5uZXI6IHRoaXMsXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIGNhbmNlbDogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vbkNsb3NpbmcuZW1pdChjbG9zaW5nQXJncyk7XG4gICAgICAgIGlmIChjbG9zaW5nQXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9leHBhbnNpb25QYW5lbC5jbG9zZShldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgYmFubmVyXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIG15QmFubmVyLnRvZ2dsZSgpO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtYmFubmVyICNiYW5uZXI+XG4gICAgICogLi4uXG4gICAgICogPC9pZ3gtYmFubmVyPlxuICAgICAqIDxidXR0b24gKGNsaWNrKT1cImJhbm5lci50b2dnbGUoKVwiPlRvZ2dsZSBCYW5uZXI8L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICB0b2dnbGUoZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbihldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG9uRXhwYW5zaW9uUGFuZWxPcGVuKCkge1xuICAgICAgICB0aGlzLm9uT3BlbmVkLmVtaXQodGhpcy5fYmFubmVyRXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG9uRXhwYW5zaW9uUGFuZWxDbG9zZSgpIHtcbiAgICAgICAgdGhpcy5vbkNsb3NlZC5lbWl0KHRoaXMuX2Jhbm5lckV2ZW50KTtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0lneEJhbm5lckNvbXBvbmVudCwgSWd4QmFubmVyQWN0aW9uc0RpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0lneEJhbm5lckNvbXBvbmVudCwgSWd4QmFubmVyQWN0aW9uc0RpcmVjdGl2ZV0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSWd4RXhwYW5zaW9uUGFuZWxNb2R1bGUsIElneEljb25Nb2R1bGUsIElneEJ1dHRvbk1vZHVsZSwgSWd4UmlwcGxlTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hCYW5uZXJNb2R1bGUgeyB9XG4iXX0=