UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

303 lines 25.5 kB
import { __decorate, __metadata } from "tslib"; import { CommonModule } from '@angular/common'; import { AfterViewInit, Component, ElementRef, HostBinding, Input, NgModule, OnInit, TemplateRef, ViewChild } from '@angular/core'; import { IgxIconModule } from '../icon/index'; let NEXT_ID = 0; export var Size; (function (Size) { Size["SMALL"] = "small"; Size["MEDIUM"] = "medium"; Size["LARGE"] = "large"; })(Size || (Size = {})); export var AvatarType; (function (AvatarType) { AvatarType["DEFAULT"] = "default"; AvatarType["INITIALS"] = "initials"; AvatarType["IMAGE"] = "image"; AvatarType["ICON"] = "icon"; })(AvatarType || (AvatarType = {})); /** * **Ignite UI for Angular Avatar** - * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/avatar.html) * * The Ignite UI Avatar provides an easy way to add an avatar icon to your application. This icon can be an * image, someone's initials or a material icon from the google material icon set. * * Example: * ```html * <igx-avatar initials="MS" roundShape="true" size="large"> * </igx-avatar> * ``` */ let IgxAvatarComponent = class IgxAvatarComponent { constructor(elementRef) { this.elementRef = elementRef; /** * Returns the `aria-label` of the avatar. * * ```typescript * let ariaLabel = this.avatar.ariaLabel; * ``` * */ this.ariaLabel = 'avatar'; /** * Returns the `role` attribute of the avatar. * * ```typescript * let avatarRole = this.avatar.role; * ``` * * @memberof IgxAvatarComponent */ this.role = 'img'; /** * Returns the class of the avatar. * * ```typescript * let avatarCLass = this.avatar.cssClass; * ``` * * @memberof IgxAvatarComponent */ this.cssClass = 'igx-avatar'; /** * @hidden */ this._size = 'small'; /** * Sets the `id` of the avatar. If not set, the first avatar component will have `id` = `"igx-avatar-0"`. * * ```html * <igx-avatar id="my-first-avatar"></igx-avatar> * ``` * * @memberof IgxAvatarComponent */ this.id = `igx-avatar-${NEXT_ID++}`; /** * Sets a round shape to the avatar if `roundShape` is `"true"`. * By default the shape of the avatar is a square. * * ```html * <igx-avatar roundShape = "true" ></igx-avatar> * ``` * * @memberof IgxAvatarComponent */ this.roundShape = false; } /** * Returns the `size` of the avatar. * * ```typescript *let avatarSize = this.avatar.size; * ``` * * @memberof IgxAvatarComponent */ get size() { return this._size; } /** * Sets the `size` of the avatar. * By default the `size` is `"small"`. It can be set to `"medium"` or `"large"`. * * ``` * <igx-avatar size="large"></igx-avatar> * ``` * * @memberof IgxAvatarComponent */ set size(value) { switch (value) { case 'small': case 'medium': case 'large': this._size = value; break; default: this._size = 'small'; } } /** * Returns the type of the avatar. * * ```typescript * let avatarType = this.avatar.type; * ``` * * @memberof IgxAvatarComponent */ get type() { if (this.src) { return AvatarType.IMAGE; } if (this.icon) { return AvatarType.ICON; } if (this.initials) { return AvatarType.INITIALS; } return AvatarType.DEFAULT; } /** * Returns the template of the avatar. * * ```typescript * let template = this.avatar.template; * ``` * * @memberof IgxAvatarComponent */ get template() { switch (this.type) { case AvatarType.IMAGE: return this.imageTemplate; case AvatarType.INITIALS: return this.initialsTemplate; case AvatarType.ICON: return this.iconTemplate; default: return this.defaultTemplate; } } /** * @hidden */ ngOnInit() { this.roleDescription = this.getRole(); } /** *@hidden */ ngAfterViewInit() { this.elementRef.nativeElement.classList .add(`igx-avatar--${this._size}`, `igx-avatar--${this.type}`); } /** * @hidden */ getRole() { switch (this.type) { case AvatarType.IMAGE: return 'image avatar'; case AvatarType.ICON: return 'icon avatar'; case AvatarType.INITIALS: return 'initials avatar'; default: return 'custom avatar'; } } /** * Returns the url of the `image`. * * ```typescript * let imageSourceUrl = this.avatar.getSrcUrl(); * ``` * * @memberof IgxAvatarComponent */ getSrcUrl() { return `url(${this.src})`; } }; IgxAvatarComponent.ctorParameters = () => [ { type: ElementRef } ]; __decorate([ ViewChild('image'), __metadata("design:type", ElementRef) ], IgxAvatarComponent.prototype, "image", void 0); __decorate([ ViewChild('defaultTemplate', { read: TemplateRef, static: true }), __metadata("design:type", TemplateRef) ], IgxAvatarComponent.prototype, "defaultTemplate", void 0); __decorate([ ViewChild('imageTemplate', { read: TemplateRef, static: true }), __metadata("design:type", TemplateRef) ], IgxAvatarComponent.prototype, "imageTemplate", void 0); __decorate([ ViewChild('initialsTemplate', { read: TemplateRef, static: true }), __metadata("design:type", TemplateRef) ], IgxAvatarComponent.prototype, "initialsTemplate", void 0); __decorate([ ViewChild('iconTemplate', { read: TemplateRef, static: true }), __metadata("design:type", TemplateRef) ], IgxAvatarComponent.prototype, "iconTemplate", void 0); __decorate([ HostBinding('attr.aria-label'), __metadata("design:type", Object) ], IgxAvatarComponent.prototype, "ariaLabel", void 0); __decorate([ HostBinding('attr.role'), __metadata("design:type", Object) ], IgxAvatarComponent.prototype, "role", void 0); __decorate([ HostBinding('class.igx-avatar'), __metadata("design:type", Object) ], IgxAvatarComponent.prototype, "cssClass", void 0); __decorate([ HostBinding('attr.aria-roledescription'), __metadata("design:type", String) ], IgxAvatarComponent.prototype, "roleDescription", void 0); __decorate([ HostBinding('attr.id'), Input(), __metadata("design:type", Object) ], IgxAvatarComponent.prototype, "id", void 0); __decorate([ HostBinding('class.igx-avatar--rounded'), Input(), __metadata("design:type", Object) ], IgxAvatarComponent.prototype, "roundShape", void 0); __decorate([ HostBinding('style.color'), Input(), __metadata("design:type", String) ], IgxAvatarComponent.prototype, "color", void 0); __decorate([ HostBinding('style.background'), Input(), __metadata("design:type", String) ], IgxAvatarComponent.prototype, "bgColor", void 0); __decorate([ Input(), __metadata("design:type", String) ], IgxAvatarComponent.prototype, "initials", void 0); __decorate([ Input(), __metadata("design:type", String) ], IgxAvatarComponent.prototype, "icon", void 0); __decorate([ Input(), __metadata("design:type", String) ], IgxAvatarComponent.prototype, "src", void 0); __decorate([ Input(), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], IgxAvatarComponent.prototype, "size", null); IgxAvatarComponent = __decorate([ Component({ selector: 'igx-avatar', template: "<ng-template #defaultTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #imageTemplate>\n <div #image class=\"igx-avatar__image\" [style.backgroundImage]=\"getSrcUrl()\"></div>\n</ng-template>\n\n<ng-template #initialsTemplate>\n <span>{{initials.substring(0, 2)}}</span>\n</ng-template>\n\n<ng-template #iconTemplate>\n <igx-icon>{{icon}}</igx-icon>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"template\"></ng-container>\n" }), __metadata("design:paramtypes", [ElementRef]) ], IgxAvatarComponent); export { IgxAvatarComponent }; /** * @hidden */ let IgxAvatarModule = class IgxAvatarModule { }; IgxAvatarModule = __decorate([ NgModule({ declarations: [IgxAvatarComponent], exports: [IgxAvatarComponent], imports: [CommonModule, IgxIconModule] }) ], IgxAvatarModule); export { IgxAvatarModule }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvYXZhdGFyL2F2YXRhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsYUFBYSxFQUNiLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5QyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFFaEIsTUFBTSxDQUFOLElBQVksSUFJWDtBQUpELFdBQVksSUFBSTtJQUNaLHVCQUFlLENBQUE7SUFDZix5QkFBaUIsQ0FBQTtJQUNqQix1QkFBZSxDQUFBO0FBQ25CLENBQUMsRUFKVyxJQUFJLEtBQUosSUFBSSxRQUlmO0FBRUQsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNsQixpQ0FBbUIsQ0FBQTtJQUNuQixtQ0FBcUIsQ0FBQTtJQUNyQiw2QkFBZSxDQUFBO0lBQ2YsMkJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsVUFBVSxLQUFWLFVBQVUsUUFLckI7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFLSCxJQUFhLGtCQUFrQixHQUEvQixNQUFhLGtCQUFrQjtJQTBRM0IsWUFBbUIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXJPekM7Ozs7Ozs7V0FPRztRQUVJLGNBQVMsR0FBRyxRQUFRLENBQUM7UUFFNUI7Ozs7Ozs7O1dBUUc7UUFFSSxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRXBCOzs7Ozs7OztXQVFHO1FBRUksYUFBUSxHQUFHLFlBQVksQ0FBQztRQWdCL0I7O1dBRUc7UUFDSyxVQUFLLEdBQWtCLE9BQU8sQ0FBQztRQUV2Qzs7Ozs7Ozs7V0FRRztRQUdJLE9BQUUsR0FBRyxjQUFjLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFFdEM7Ozs7Ozs7OztXQVNHO1FBSUksZUFBVSxHQUFHLEtBQUssQ0FBQztJQXFKbUIsQ0FBQztJQW5GOUM7Ozs7Ozs7O09BUUc7SUFFSCxJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILElBQVcsSUFBSSxDQUFDLEtBQW9CO1FBQ2hDLFFBQVEsS0FBSyxFQUFFO1lBQ1gsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssT0FBTztnQkFDUixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDbkIsTUFBTTtZQUNWO2dCQUNJLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBSSxJQUFJO1FBQ0osSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1YsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDO1NBQzNCO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1gsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDO1NBQzFCO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzlCO1FBRUQsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILElBQUksUUFBUTtRQUNSLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNmLEtBQUssVUFBVSxDQUFDLEtBQUs7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUM5QixLQUFLLFVBQVUsQ0FBQyxRQUFRO2dCQUNwQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNqQyxLQUFLLFVBQVUsQ0FBQyxJQUFJO2dCQUNoQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDN0I7Z0JBQ0ksT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUlEOztPQUVHO0lBQ0ksUUFBUTtRQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUzthQUNsQyxHQUFHLENBQUMsZUFBZSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsZUFBZSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7O09BRUc7SUFDSyxPQUFPO1FBQ1gsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2YsS0FBSyxVQUFVLENBQUMsS0FBSztnQkFDakIsT0FBTyxjQUFjLENBQUM7WUFDMUIsS0FBSyxVQUFVLENBQUMsSUFBSTtnQkFDaEIsT0FBTyxhQUFhLENBQUM7WUFDekIsS0FBSyxVQUFVLENBQUMsUUFBUTtnQkFDcEIsT0FBTyxpQkFBaUIsQ0FBQztZQUM3QjtnQkFDSSxPQUFPLGVBQWUsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLFNBQVM7UUFDWixPQUFPLE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQzlCLENBQUM7Q0FDSixDQUFBOztZQTdDa0MsVUFBVTs7QUEvUHpDO0lBREMsU0FBUyxDQUFDLE9BQU8sQ0FBQzs4QkFDTCxVQUFVO2lEQUFDO0FBTXpCO0lBREMsU0FBUyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7OEJBQ3ZDLFdBQVc7MkRBQU07QUFNNUM7SUFEQyxTQUFTLENBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7OEJBQ3ZDLFdBQVc7eURBQU07QUFNMUM7SUFEQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzs4QkFDdkMsV0FBVzs0REFBTTtBQU03QztJQURDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzs4QkFDdkMsV0FBVzt3REFBTTtBQVd6QztJQURDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQzs7cURBQ0g7QUFZNUI7SUFEQyxXQUFXLENBQUMsV0FBVyxDQUFDOztnREFDTDtBQVlwQjtJQURDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQzs7b0RBQ0Q7QUFjL0I7SUFEQyxXQUFXLENBQUMsMkJBQTJCLENBQUM7OzJEQUNWO0FBa0IvQjtJQUZDLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDdEIsS0FBSyxFQUFFOzs4Q0FDOEI7QUFldEM7SUFGQyxXQUFXLENBQUMsMkJBQTJCLENBQUM7SUFDeEMsS0FBSyxFQUFFOztzREFDa0I7QUFjMUI7SUFGQyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQzFCLEtBQUssRUFBRTs7aURBQ2E7QUFjckI7SUFGQyxXQUFXLENBQUMsa0JBQWtCLENBQUM7SUFDL0IsS0FBSyxFQUFFOzttREFDZTtBQVl2QjtJQURDLEtBQUssRUFBRTs7b0RBQ2dCO0FBWXhCO0lBREMsS0FBSyxFQUFFOztnREFDWTtBQVlwQjtJQURDLEtBQUssRUFBRTs7K0NBQ1c7QUFZbkI7SUFEQyxLQUFLLEVBQUU7Ozs4Q0FHUDtBQW5NUSxrQkFBa0I7SUFKOUIsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLFlBQVk7UUFDdEIsNGRBQW9DO0tBQ3ZDLENBQUM7cUNBMlFpQyxVQUFVO0dBMVFoQyxrQkFBa0IsQ0F1VDlCO1NBdlRZLGtCQUFrQjtBQXlUL0I7O0dBRUc7QUFNSCxJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFlO0NBQUksQ0FBQTtBQUFuQixlQUFlO0lBTDNCLFFBQVEsQ0FBQztRQUNOLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUFDO1FBQ2xDLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO1FBQzdCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7S0FDekMsQ0FBQztHQUNXLGVBQWUsQ0FBSTtTQUFuQixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4SWNvbk1vZHVsZSB9IGZyb20gJy4uL2ljb24vaW5kZXgnO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5cbmV4cG9ydCBlbnVtIFNpemUge1xuICAgIFNNQUxMID0gJ3NtYWxsJyxcbiAgICBNRURJVU0gPSAnbWVkaXVtJyxcbiAgICBMQVJHRSA9ICdsYXJnZSdcbn1cblxuZXhwb3J0IGVudW0gQXZhdGFyVHlwZSB7XG4gICAgREVGQVVMVCA9ICdkZWZhdWx0JyxcbiAgICBJTklUSUFMUyA9ICdpbml0aWFscycsXG4gICAgSU1BR0UgPSAnaW1hZ2UnLFxuICAgIElDT04gPSAnaWNvbidcbn1cblxuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBBdmF0YXIqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvYXZhdGFyLmh0bWwpXG4gKlxuICogVGhlIElnbml0ZSBVSSBBdmF0YXIgcHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gYWRkIGFuIGF2YXRhciBpY29uIHRvIHlvdXIgYXBwbGljYXRpb24uICBUaGlzIGljb24gY2FuIGJlIGFuXG4gKiBpbWFnZSwgc29tZW9uZSdzIGluaXRpYWxzIG9yIGEgbWF0ZXJpYWwgaWNvbiBmcm9tIHRoZSBnb29nbGUgbWF0ZXJpYWwgaWNvbiBzZXQuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYGh0bWxcbiAqIDxpZ3gtYXZhdGFyIGluaXRpYWxzPVwiTVNcIiByb3VuZFNoYXBlPVwidHJ1ZVwiIHNpemU9XCJsYXJnZVwiPlxuICogPC9pZ3gtYXZhdGFyPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LWF2YXRhcicsXG4gICAgdGVtcGxhdGVVcmw6ICdhdmF0YXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIElneEF2YXRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBhdmF0YXIgYGltYWdlYCBlbGVtZW50IGluIHRoZSBET00uXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGxldCBpbWFnZSA9ICB0aGlzLmF2YXRhci5pbWFnZTtcbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QXZhdGFyQ29tcG9uZW50XG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2UnKVxuICAgIHB1YmxpYyBpbWFnZTogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RlZmF1bHRUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBkZWZhdWx0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdpbWFnZVRlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIGltYWdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdpbml0aWFsc1RlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIGluaXRpYWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdpY29uVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgaWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYGFyaWEtbGFiZWxgIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGFyaWFMYWJlbCA9IHRoaXMuYXZhdGFyLmFyaWFMYWJlbDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcbiAgICBwdWJsaWMgYXJpYUxhYmVsID0gJ2F2YXRhcic7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBgcm9sZWAgYXR0cmlidXRlIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGF2YXRhclJvbGUgPSB0aGlzLmF2YXRhci5yb2xlO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEF2YXRhckNvbXBvbmVudFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBwdWJsaWMgcm9sZSA9ICdpbWcnO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY2xhc3Mgb2YgdGhlIGF2YXRhci5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgYXZhdGFyQ0xhc3MgPSAgdGhpcy5hdmF0YXIuY3NzQ2xhc3M7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4QXZhdGFyQ29tcG9uZW50XG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYXZhdGFyJylcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSAnaWd4LWF2YXRhcic7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBhdmF0YXIuXG4gICAgICogVGhlIGF2YXRhciBjYW4gYmU6IGBcImluaXRpYWxzIHR5cGUgYXZhdGFyXCJgLCBgXCJpY29uIHR5cGUgYXZhdGFyXCJgIG9yIGBcImltYWdlIHR5cGUgYXZhdGFyXCJgLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBhdmF0YXJEZXNjcmlwdGlvbiA9IHRoaXMuYXZhdGFyLnJvbGVEZXNjcmlwdGlvbjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hBdmF0YXJDb21wb25lbnRcbiAgICAgKi9cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXJvbGVkZXNjcmlwdGlvbicpXG4gICAgcHVibGljIHJvbGVEZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX3NpemU6IHN0cmluZyB8IFNpemUgPSAnc21hbGwnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYGlkYCBvZiB0aGUgYXZhdGFyLiBJZiBub3Qgc2V0LCB0aGUgZmlyc3QgYXZhdGFyIGNvbXBvbmVudCB3aWxsIGhhdmUgYGlkYCA9IGBcImlneC1hdmF0YXItMFwiYC5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciBpZD1cIm15LWZpcnN0LWF2YXRhclwiPjwvaWd4LWF2YXRhcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hBdmF0YXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYGlneC1hdmF0YXItJHtORVhUX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIFNldHMgYSByb3VuZCBzaGFwZSB0byB0aGUgYXZhdGFyIGlmIGByb3VuZFNoYXBlYCBpcyBgXCJ0cnVlXCJgLlxuICAgICAqIEJ5IGRlZmF1bHQgdGhlIHNoYXBlIG9mIHRoZSBhdmF0YXIgaXMgYSBzcXVhcmUuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgcm91bmRTaGFwZSA9IFwidHJ1ZVwiID48L2lneC1hdmF0YXI+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4QXZhdGFyQ29tcG9uZW50XG4gICAgICovXG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1hdmF0YXItLXJvdW5kZWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJvdW5kU2hhcGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGF2YXRhcidzIGBpbml0aWFsc2AvYGljb25gIGNvbG9yLlxuICAgICAqXG4gICAgICpgYGBodG1sXG4gICAgICo8aWd4LWF2YXRhciBjb2xvcj1cImJsdWVcIj48L2lneC1hdmF0YXI+XG4gICAgICpgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hBdmF0YXJDb21wb25lbnRcbiAgICAgKi9cblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuY29sb3InKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbG9yOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgYmdDb2xvcj1cInllbGxvd1wiPjwvaWd4LWF2YXRhcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hBdmF0YXJDb21wb25lbnRcbiAgICAgKi9cblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuYmFja2dyb3VuZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYmdDb2xvcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyBgaW5pdGlhbHNgIHRvIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgaW5pdGlhbHM9XCJNTlwiPjwvaWd4LWF2YXRhcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hBdmF0YXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbml0aWFsczogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyBhbiBgaWNvbmAgdG8gdGhlIGF2YXRhci4gQWxsIGljb25zIGZyb20gdGhlIG1hdGVyaWFsIGljb24gc2V0IGFyZSBzdXBwb3J0ZWQuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgaWNvbj1cInBob25lXCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEF2YXRhckNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGljb246IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGBpbWFnZWAgc291cmNlIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgc3JjPVwiaW1hZ2VzL3BpY3R1cmUuanBnXCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEF2YXRhckNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNyYzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYHNpemVgIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICpsZXQgYXZhdGFyU2l6ZSA9ICB0aGlzLmF2YXRhci5zaXplO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEF2YXRhckNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBzaXplKCk6IHN0cmluZyB8IFNpemUge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgc2l6ZWAgIG9mIHRoZSBhdmF0YXIuXG4gICAgICogQnkgZGVmYXVsdCB0aGUgYHNpemVgIGlzIGBcInNtYWxsXCJgLiBJdCBjYW4gYmUgc2V0IHRvIGBcIm1lZGl1bVwiYCBvciBgXCJsYXJnZVwiYC5cbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIDxpZ3gtYXZhdGFyIHNpemU9XCJsYXJnZVwiPjwvaWd4LWF2YXRhcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hBdmF0YXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IHNpemUodmFsdWU6IHN0cmluZyB8IFNpemUpIHtcbiAgICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgICAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXplID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuX3NpemUgPSAnc21hbGwnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgYXZhdGFyLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBhdmF0YXJUeXBlID0gdGhpcy5hdmF0YXIudHlwZTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hBdmF0YXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBnZXQgdHlwZSgpOiBBdmF0YXJUeXBlIHtcbiAgICAgICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICAgICAgICByZXR1cm4gQXZhdGFyVHlwZS5JTUFHRTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmljb24pIHtcbiAgICAgICAgICAgIHJldHVybiBBdmF0YXJUeXBlLklDT047XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pbml0aWFscykge1xuICAgICAgICAgICAgcmV0dXJuIEF2YXRhclR5cGUuSU5JVElBTFM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQXZhdGFyVHlwZS5ERUZBVUxUO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHRlbXBsYXRlID0gdGhpcy5hdmF0YXIudGVtcGxhdGU7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4QXZhdGFyQ29tcG9uZW50XG4gICAgICovXG4gICAgZ2V0IHRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBBdmF0YXJUeXBlLklNQUdFOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmltYWdlVGVtcGxhdGU7XG4gICAgICAgICAgICBjYXNlIEF2YXRhclR5cGUuSU5JVElBTFM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbHNUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNhc2UgQXZhdGFyVHlwZS5JQ09OOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmljb25UZW1wbGF0ZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFRlbXBsYXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5yb2xlRGVzY3JpcHRpb24gPSB0aGlzLmdldFJvbGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3RcbiAgICAgICAgICAgIC5hZGQoYGlneC1hdmF0YXItLSR7dGhpcy5fc2l6ZX1gLCBgaWd4LWF2YXRhci0tJHt0aGlzLnR5cGV9YCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Um9sZSgpOiBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBBdmF0YXJUeXBlLklNQUdFOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaW1hZ2UgYXZhdGFyJztcbiAgICAgICAgICAgIGNhc2UgQXZhdGFyVHlwZS5JQ09OOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWNvbiBhdmF0YXInO1xuICAgICAgICAgICAgY2FzZSBBdmF0YXJUeXBlLklOSVRJQUxTOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaW5pdGlhbHMgYXZhdGFyJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdjdXN0b20gYXZhdGFyJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHVybCBvZiB0aGUgYGltYWdlYC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaW1hZ2VTb3VyY2VVcmwgPSB0aGlzLmF2YXRhci5nZXRTcmNVcmwoKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hBdmF0YXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3JjVXJsKCkge1xuICAgICAgICByZXR1cm4gYHVybCgke3RoaXMuc3JjfSlgO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbSWd4QXZhdGFyQ29tcG9uZW50XSxcbiAgICBleHBvcnRzOiBbSWd4QXZhdGFyQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJZ3hJY29uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hBdmF0YXJNb2R1bGUgeyB9XG4iXX0=