@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
319 lines • 27 kB
JavaScript
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';
var 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>
* ```
*/
var IgxAvatarComponent = /** @class */ (function () {
function IgxAvatarComponent(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;
}
Object.defineProperty(IgxAvatarComponent.prototype, "size", {
/**
* Returns the `size` of the avatar.
*
* ```typescript
*let avatarSize = this.avatar.size;
* ```
*
* @memberof IgxAvatarComponent
*/
get: function () {
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: function (value) {
switch (value) {
case 'small':
case 'medium':
case 'large':
this._size = value;
break;
default:
this._size = 'small';
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxAvatarComponent.prototype, "type", {
/**
* Returns the type of the avatar.
*
* ```typescript
* let avatarType = this.avatar.type;
* ```
*
* @memberof IgxAvatarComponent
*/
get: function () {
if (this.src) {
return AvatarType.IMAGE;
}
if (this.icon) {
return AvatarType.ICON;
}
if (this.initials) {
return AvatarType.INITIALS;
}
return AvatarType.DEFAULT;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxAvatarComponent.prototype, "template", {
/**
* Returns the template of the avatar.
*
* ```typescript
* let template = this.avatar.template;
* ```
*
* @memberof IgxAvatarComponent
*/
get: function () {
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;
}
},
enumerable: true,
configurable: true
});
/**
* @hidden
*/
IgxAvatarComponent.prototype.ngOnInit = function () {
this.roleDescription = this.getRole();
};
/**
*@hidden
*/
IgxAvatarComponent.prototype.ngAfterViewInit = function () {
this.elementRef.nativeElement.classList
.add("igx-avatar--" + this._size, "igx-avatar--" + this.type);
};
/**
* @hidden
*/
IgxAvatarComponent.prototype.getRole = function () {
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
*/
IgxAvatarComponent.prototype.getSrcUrl = function () {
return "url(" + this.src + ")";
};
IgxAvatarComponent.ctorParameters = function () { return [
{ 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);
return IgxAvatarComponent;
}());
export { IgxAvatarComponent };
/**
* @hidden
*/
var IgxAvatarModule = /** @class */ (function () {
function IgxAvatarModule() {
}
IgxAvatarModule = __decorate([
NgModule({
declarations: [IgxAvatarComponent],
exports: [IgxAvatarComponent],
imports: [CommonModule, IgxIconModule]
})
], IgxAvatarModule);
return IgxAvatarModule;
}());
export { IgxAvatarModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvYXZhdGFyL2F2YXRhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsYUFBYSxFQUNiLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5QyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFFaEIsTUFBTSxDQUFOLElBQVksSUFJWDtBQUpELFdBQVksSUFBSTtJQUNaLHVCQUFlLENBQUE7SUFDZix5QkFBaUIsQ0FBQTtJQUNqQix1QkFBZSxDQUFBO0FBQ25CLENBQUMsRUFKVyxJQUFJLEtBQUosSUFBSSxRQUlmO0FBRUQsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNsQixpQ0FBbUIsQ0FBQTtJQUNuQixtQ0FBcUIsQ0FBQTtJQUNyQiw2QkFBZSxDQUFBO0lBQ2YsMkJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsVUFBVSxLQUFWLFVBQVUsUUFLckI7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFLSDtJQTBRSSw0QkFBbUIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXJPekM7Ozs7Ozs7V0FPRztRQUVJLGNBQVMsR0FBRyxRQUFRLENBQUM7UUFFNUI7Ozs7Ozs7O1dBUUc7UUFFSSxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRXBCOzs7Ozs7OztXQVFHO1FBRUksYUFBUSxHQUFHLFlBQVksQ0FBQztRQWdCL0I7O1dBRUc7UUFDSyxVQUFLLEdBQWtCLE9BQU8sQ0FBQztRQUV2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RUc7QUFNSDtJQUFBO0lBQStCLENBQUM7SUFBbkIsZUFBZTtRQUwzQixRQUFRLENBQUM7WUFDTixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztZQUM3QixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO1NBQ3pDLENBQUM7T0FDVyxlQUFlLENBQUk7SUFBRCxzQkFBQztDQUFBLEFBQWhDLElBQWdDO1NBQW5CLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hJY29uTW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pbmRleCc7XG5cbmxldCBORVhUX0lEID0gMDtcblxuZXhwb3J0IGVudW0gU2l6ZSB7XG4gICAgU01BTEwgPSAnc21hbGwnLFxuICAgIE1FRElVTSA9ICdtZWRpdW0nLFxuICAgIExBUkdFID0gJ2xhcmdlJ1xufVxuXG5leHBvcnQgZW51bSBBdmF0YXJUeXBlIHtcbiAgICBERUZBVUxUID0gJ2RlZmF1bHQnLFxuICAgIElOSVRJQUxTID0gJ2luaXRpYWxzJyxcbiAgICBJTUFHRSA9ICdpbWFnZScsXG4gICAgSUNPTiA9ICdpY29uJ1xufVxuXG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIEF2YXRhcioqIC1cbiAqIFtEb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5pbmZyYWdpc3RpY3MuY29tL3Byb2R1Y3RzL2lnbml0ZS11aS1hbmd1bGFyL2FuZ3VsYXIvY29tcG9uZW50cy9hdmF0YXIuaHRtbClcbiAqXG4gKiBUaGUgSWduaXRlIFVJIEF2YXRhciBwcm92aWRlcyBhbiBlYXN5IHdheSB0byBhZGQgYW4gYXZhdGFyIGljb24gdG8geW91ciBhcHBsaWNhdGlvbi4gIFRoaXMgaWNvbiBjYW4gYmUgYW5cbiAqIGltYWdlLCBzb21lb25lJ3MgaW5pdGlhbHMgb3IgYSBtYXRlcmlhbCBpY29uIGZyb20gdGhlIGdvb2dsZSBtYXRlcmlhbCBpY29uIHNldC5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGlneC1hdmF0YXIgaW5pdGlhbHM9XCJNU1wiIHJvdW5kU2hhcGU9XCJ0cnVlXCIgc2l6ZT1cImxhcmdlXCI+XG4gKiA8L2lneC1hdmF0YXI+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtYXZhdGFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2F2YXRhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgSWd4QXZhdGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYSByZWZlcmVuY2UgdG8gdGhlIGF2YXRhciBgaW1hZ2VgIGVsZW1lbnQgaW4gdGhlIERPTS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgbGV0IGltYWdlID0gIHRoaXMuYXZhdGFyLmltYWdlO1xuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hBdmF0YXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdpbWFnZScpXG4gICAgcHVibGljIGltYWdlOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnZGVmYXVsdFRlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIGRlZmF1bHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2ltYWdlVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgaW1hZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2luaXRpYWxzVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgaW5pdGlhbHNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2ljb25UZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBpY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBgYXJpYS1sYWJlbGAgb2YgdGhlIGF2YXRhci5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgYXJpYUxhYmVsID0gdGhpcy5hdmF0YXIuYXJpYUxhYmVsO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKVxuICAgIHB1YmxpYyBhcmlhTGFiZWwgPSAnYXZhdGFyJztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGByb2xlYCBhdHRyaWJ1dGUgb2YgdGhlIGF2YXRhci5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgYXZhdGFyUm9sZSA9IHRoaXMuYXZhdGFyLnJvbGU7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4QXZhdGFyQ29tcG9uZW50XG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICAgIHB1YmxpYyByb2xlID0gJ2ltZyc7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjbGFzcyBvZiB0aGUgYXZhdGFyLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBhdmF0YXJDTGFzcyA9ICB0aGlzLmF2YXRhci5jc3NDbGFzcztcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hBdmF0YXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1hdmF0YXInKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtYXZhdGFyJztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHR5cGUgb2YgdGhlIGF2YXRhci5cbiAgICAgKiBUaGUgYXZhdGFyIGNhbiBiZTogYFwiaW5pdGlhbHMgdHlwZSBhdmF0YXJcImAsIGBcImljb24gdHlwZSBhdmF0YXJcImAgb3IgYFwiaW1hZ2UgdHlwZSBhdmF0YXJcImAuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGF2YXRhckRlc2NyaXB0aW9uID0gdGhpcy5hdmF0YXIucm9sZURlc2NyaXB0aW9uO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEF2YXRhckNvbXBvbmVudFxuICAgICAqL1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcm9sZWRlc2NyaXB0aW9uJylcbiAgICBwdWJsaWMgcm9sZURlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2l6ZTogc3RyaW5nIHwgU2l6ZSA9ICdzbWFsbCc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgaWRgIG9mIHRoZSBhdmF0YXIuIElmIG5vdCBzZXQsIHRoZSBmaXJzdCBhdmF0YXIgY29tcG9uZW50IHdpbGwgaGF2ZSBgaWRgID0gYFwiaWd4LWF2YXRhci0wXCJgLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtYXZhdGFyIGlkPVwibXktZmlyc3QtYXZhdGFyXCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEF2YXRhckNvbXBvbmVudFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgaWd4LWF2YXRhci0ke05FWFRfSUQrK31gO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyBhIHJvdW5kIHNoYXBlIHRvIHRoZSBhdmF0YXIgaWYgYHJvdW5kU2hhcGVgIGlzIGBcInRydWVcImAuXG4gICAgICogQnkgZGVmYXVsdCB0aGUgc2hhcGUgb2YgdGhlIGF2YXRhciBpcyBhIHNxdWFyZS5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciByb3VuZFNoYXBlID0gXCJ0cnVlXCIgPjwvaWd4LWF2YXRhcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hBdmF0YXJDb21wb25lbnRcbiAgICAgKi9cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWF2YXRhci0tcm91bmRlZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm91bmRTaGFwZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYXZhdGFyJ3MgYGluaXRpYWxzYC9gaWNvbmAgY29sb3IuXG4gICAgICpcbiAgICAgKmBgYGh0bWxcbiAgICAgKjxpZ3gtYXZhdGFyIGNvbG9yPVwiYmx1ZVwiPjwvaWd4LWF2YXRhcj5cbiAgICAgKmBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEF2YXRhckNvbXBvbmVudFxuICAgICAqL1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5jb2xvcicpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sb3I6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGF2YXRhci5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciBiZ0NvbG9yPVwieWVsbG93XCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEF2YXRhckNvbXBvbmVudFxuICAgICAqL1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5iYWNrZ3JvdW5kJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBiZ0NvbG9yOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGBpbml0aWFsc2AgdG8gdGhlIGF2YXRhci5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciBpbml0aWFscz1cIk1OXCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEF2YXRhckNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluaXRpYWxzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGFuIGBpY29uYCB0byB0aGUgYXZhdGFyLiBBbGwgaWNvbnMgZnJvbSB0aGUgbWF0ZXJpYWwgaWNvbiBzZXQgYXJlIHN1cHBvcnRlZC5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciBpY29uPVwicGhvbmVcIj48L2lneC1hdmF0YXI+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4QXZhdGFyQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWNvbjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYGltYWdlYCBzb3VyY2Ugb2YgdGhlIGF2YXRhci5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciBzcmM9XCJpbWFnZXMvcGljdHVyZS5qcGdcIj48L2lneC1hdmF0YXI+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4QXZhdGFyQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3JjOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBgc2l6ZWAgb2YgdGhlIGF2YXRhci5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKmxldCBhdmF0YXJTaXplID0gIHRoaXMuYXZhdGFyLnNpemU7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4QXZhdGFyQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHNpemUoKTogc3RyaW5nIHwgU2l6ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGBzaXplYCAgb2YgdGhlIGF2YXRhci5cbiAgICAgKiBCeSBkZWZhdWx0IHRoZSBgc2l6ZWAgaXMgYFwic21hbGxcImAuIEl0IGNhbiBiZSBzZXQgdG8gYFwibWVkaXVtXCJgIG9yIGBcImxhcmdlXCJgLlxuICAgICAqXG4gICAgICogYGBgXG4gICAgICogPGlneC1hdmF0YXIgc2l6ZT1cImxhcmdlXCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEF2YXRhckNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgc2l6ZSh2YWx1ZTogc3RyaW5nIHwgU2l6ZSkge1xuICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgICAgICBjYXNlICdtZWRpdW0nOlxuICAgICAgICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgICAgICAgICAgIHRoaXMuX3NpemUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fc2l6ZSA9ICdzbWFsbCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGF2YXRhclR5cGUgPSB0aGlzLmF2YXRhci50eXBlO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEF2YXRhckNvbXBvbmVudFxuICAgICAqL1xuICAgIGdldCB0eXBlKCk6IEF2YXRhclR5cGUge1xuICAgICAgICBpZiAodGhpcy5zcmMpIHtcbiAgICAgICAgICAgIHJldHVybiBBdmF0YXJUeXBlLklNQUdFO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaWNvbikge1xuICAgICAgICAgICAgcmV0dXJuIEF2YXRhclR5cGUuSUNPTjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxzKSB7XG4gICAgICAgICAgICByZXR1cm4gQXZhdGFyVHlwZS5JTklUSUFMUztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBBdmF0YXJUeXBlLkRFRkFVTFQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgb2YgdGhlIGF2YXRhci5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgdGVtcGxhdGUgPSB0aGlzLmF2YXRhci50ZW1wbGF0ZTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hBdmF0YXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBnZXQgdGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEF2YXRhclR5cGUuSU1BR0U6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2VUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNhc2UgQXZhdGFyVHlwZS5JTklUSUFMUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsc1RlbXBsYXRlO1xuICAgICAgICAgICAgY2FzZSBBdmF0YXJUeXBlLklDT046XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaWNvblRlbXBsYXRlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0VGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnJvbGVEZXNjcmlwdGlvbiA9IHRoaXMuZ2V0Um9sZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdFxuICAgICAgICAgICAgLmFkZChgaWd4LWF2YXRhci0tJHt0aGlzLl9zaXplfWAsIGBpZ3gtYXZhdGFyLS0ke3RoaXMudHlwZX1gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRSb2xlKCk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEF2YXRhclR5cGUuSU1BR0U6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpbWFnZSBhdmF0YXInO1xuICAgICAgICAgICAgY2FzZSBBdmF0YXJUeXBlLklDT046XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpY29uIGF2YXRhcic7XG4gICAgICAgICAgICBjYXNlIEF2YXRhclR5cGUuSU5JVElBTFM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpbml0aWFscyBhdmF0YXInO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2N1c3RvbSBhdmF0YXInO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdXJsIG9mIHRoZSBgaW1hZ2VgLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBpbWFnZVNvdXJjZVVybCA9IHRoaXMuYXZhdGFyLmdldFNyY1VybCgpO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEF2YXRhckNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTcmNVcmwoKSB7XG4gICAgICAgIHJldHVybiBgdXJsKCR7dGhpcy5zcmN9KWA7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtJZ3hBdmF0YXJDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtJZ3hBdmF0YXJDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElneEljb25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIElneEF2YXRhck1vZHVsZSB7IH1cbiJdfQ==