@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
200 lines • 17.8 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { CommonModule } from '@angular/common';
import { Component, HostBinding, Input, NgModule } from '@angular/core';
import { IgxIconModule } from '../icon/index';
let NEXT_ID = 0;
export var Type;
(function (Type) {
Type["DEFAULT"] = "default";
Type["INFO"] = "info";
Type["SUCCESS"] = "success";
Type["WARNING"] = "warning";
Type["ERROR"] = "error";
})(Type || (Type = {}));
/**
* **Ignite UI for Angular Badge** -
* [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/badge.html)
*
* The Ignite UI Badge is used to decorate avatars, navigation menus, or other components in the
* application when visual notification is needed. They are usually designed as icons with a predefined
* style to communicate information, success, warnings, or errors.
*
* Example:
* ```html
* <igx-avatar icon="person" roundShape="true" size="small">
* <igx-badge icon="check" type="success" class="badge-style">
* </igx-badge>
* </igx-avatar>
* ```
* The `badge-style` class is used to position the badge:
* ```css
* .badge-style {
* position: absolute;
* bottom: -6px;
* right:-50px;
* }
* ```
*/
let IgxBadgeComponent = class IgxBadgeComponent {
constructor() {
/**
* An @Input property that sets the value of the `id` attribute.
* ```html
*<igx-badge id="igx-badge-2" icon="check" type="success" class="badge-style"></igx-badge>
* ```
*/
this.id = `igx-badge-${NEXT_ID++}`;
/**
* An @Input property controlling the type of the badge.
* Allowed values are `default`, `info`, `success`, `warning`, `error`.
* Providing an invalid value won't display a badge.
* ```html
*<igx-badge type="success" icon="check" class="badge-style"></igx-badge>
* ```
*/
this.type = 'default';
/**
* An @Input property that sets the value to be displayed inside the badge.
* If an `icon` property is already set the `icon` will be displayed.
* If neither a `value` nor an `icon` is set the contentent of the badge will be empty.
* ```html
*<igx-badge value="11" type="success" class="badge-style"></igx-badge>
* ```
*/
this.value = '';
/**
* This allows you to set value to role attribute.
*```html
*@ViewChild("MyBadge", { read: IgxBadgeComponent })
*public badge: IgxBadgeComponent;
* //...
*badge.label = "badge-status";
* ```
*/
this.role = 'status';
/**
* This allows you to disable igx-badge class. The default it's applied.
*```html
*@ViewChild("MyBadge", { read: IgxBadgeComponent })
*public badge: IgxBadgeComponent;
* //...
*badge.cssClass = false;
* ```
*/
this.cssClass = 'igx-badge';
/**
* This allows you to set value to aria-label attribute.
*```html
*@ViewChild("MyBadge", { read: IgxBadgeComponent })
*public badge: IgxBadgeComponent;
* //...
*badge.label = "icon-badge";
* ```
*/
this.label = 'badge';
}
/**
* @hidden
* Defines a human-readable, accessor, author-localized description for the `type` and the `icon` or `value` of the element.
*/
get roleDescription() {
let message;
// tslint:disable-next-line:prefer-conditional-expression
if (this.icon) {
message = this.type + ' type badge with icon type ' + this.icon;
}
else if (this.value) {
message = this.type + ' badge type with value ' + this.value;
}
else {
message = this.type + ' badge type without value';
}
return message;
}
/**
* @hidden
* Method which makes the name of the class more descriptive.
* This helps the styling of the badges.
*/
setClasses() {
let classes = {};
switch (Type[this.type.toUpperCase()]) {
case Type.DEFAULT:
classes = {
[`${this.cssClass}__circle--default`]: true
};
break;
case Type.INFO:
classes = {
[`${this.cssClass}__circle--info`]: true
};
break;
case Type.SUCCESS:
classes = {
[`${this.cssClass}__circle--success`]: true
};
break;
case Type.WARNING:
classes = {
[`${this.cssClass}__circle--warning`]: true
};
break;
case Type.ERROR:
classes = {
[`${this.cssClass}__circle--error`]: true
};
break;
}
return classes;
}
};
__decorate([
HostBinding('attr.id'),
Input(),
__metadata("design:type", Object)
], IgxBadgeComponent.prototype, "id", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], IgxBadgeComponent.prototype, "type", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], IgxBadgeComponent.prototype, "value", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], IgxBadgeComponent.prototype, "icon", void 0);
__decorate([
HostBinding('attr.role'),
__metadata("design:type", Object)
], IgxBadgeComponent.prototype, "role", void 0);
__decorate([
HostBinding('class.igx-badge'),
__metadata("design:type", Object)
], IgxBadgeComponent.prototype, "cssClass", void 0);
__decorate([
HostBinding('attr.aria-label'),
__metadata("design:type", Object)
], IgxBadgeComponent.prototype, "label", void 0);
IgxBadgeComponent = __decorate([
Component({
selector: 'igx-badge',
template: "<div class=\"igx-badge__circle\" [ngClass]=\"setClasses()\" [attr.aria-roledescription]=\"roleDescription\">\n <span *ngIf=\"!icon\" class=\"igx-badge__circle-value\">{{value}}</span>\n <igx-icon *ngIf=\"icon\" fontSet=\"material\">{{icon}}</igx-icon>\n</div>\n"
})
], IgxBadgeComponent);
export { IgxBadgeComponent };
/**
* @hidden
*/
let IgxBadgeModule = class IgxBadgeModule {
};
IgxBadgeModule = __decorate([
NgModule({
declarations: [IgxBadgeComponent],
exports: [IgxBadgeComponent],
imports: [CommonModule, IgxIconModule]
})
], IgxBadgeModule);
export { IgxBadgeModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9iYWRnZS9iYWRnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBRWhCLE1BQU0sQ0FBTixJQUFZLElBTVg7QUFORCxXQUFZLElBQUk7SUFDWiwyQkFBbUIsQ0FBQTtJQUNuQixxQkFBYSxDQUFBO0lBQ2IsMkJBQW1CLENBQUE7SUFDbkIsMkJBQW1CLENBQUE7SUFDbkIsdUJBQWUsQ0FBQTtBQUNuQixDQUFDLEVBTlcsSUFBSSxLQUFKLElBQUksUUFNZjtBQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUtILElBQWEsaUJBQWlCLEdBQTlCLE1BQWEsaUJBQWlCO0lBQTlCO1FBRUk7Ozs7O1VBS0U7UUFHSyxPQUFFLEdBQUcsYUFBYSxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBRXJDOzs7Ozs7O1VBT0U7UUFFSyxTQUFJLEdBQWtCLFNBQVMsQ0FBQztRQUV2Qzs7Ozs7OztVQU9FO1FBRUssVUFBSyxHQUFHLEVBQUUsQ0FBQztRQWNsQjs7Ozs7Ozs7V0FRRztRQUVJLFNBQUksR0FBRyxRQUFRLENBQUM7UUFFdkI7Ozs7Ozs7O1dBUUc7UUFFSSxhQUFRLEdBQUcsV0FBVyxDQUFDO1FBRTlCOzs7Ozs7OztXQVFHO1FBRUksVUFBSyxHQUFHLE9BQU8sQ0FBQztJQTREM0IsQ0FBQztJQTFERzs7O09BR0c7SUFDSCxJQUFJLGVBQWU7UUFDZixJQUFJLE9BQU8sQ0FBQztRQUVaLHlEQUF5RDtRQUN6RCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWCxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyw2QkFBNkIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ25FO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ25CLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLHlCQUF5QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDaEU7YUFBTTtZQUNILE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLDJCQUEyQixDQUFDO1NBQ3JEO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxVQUFVO1FBQ2IsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWpCLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRTtZQUNuQyxLQUFLLElBQUksQ0FBQyxPQUFPO2dCQUNiLE9BQU8sR0FBRztvQkFDTixDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsbUJBQW1CLENBQUMsRUFBRSxJQUFJO2lCQUM5QyxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLElBQUksQ0FBQyxJQUFJO2dCQUNWLE9BQU8sR0FBRztvQkFDTixDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsZ0JBQWdCLENBQUMsRUFBRSxJQUFJO2lCQUMzQyxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLElBQUksQ0FBQyxPQUFPO2dCQUNiLE9BQU8sR0FBRztvQkFDTixDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsbUJBQW1CLENBQUMsRUFBRSxJQUFJO2lCQUM5QyxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLElBQUksQ0FBQyxPQUFPO2dCQUNiLE9BQU8sR0FBRztvQkFDTixDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsbUJBQW1CLENBQUMsRUFBRSxJQUFJO2lCQUM5QyxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLElBQUksQ0FBQyxLQUFLO2dCQUNYLE9BQU8sR0FBRztvQkFDTixDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsaUJBQWlCLENBQUMsRUFBRSxJQUFJO2lCQUM1QyxDQUFDO2dCQUNGLE1BQU07U0FDYjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7Q0FFSixDQUFBO0FBbElHO0lBRkMsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUN0QixLQUFLLEVBQUU7OzZDQUM2QjtBQVdyQztJQURDLEtBQUssRUFBRTs7K0NBQytCO0FBV3ZDO0lBREMsS0FBSyxFQUFFOztnREFDVTtBQVlsQjtJQURDLEtBQUssRUFBRTs7K0NBQ1k7QUFZcEI7SUFEQyxXQUFXLENBQUMsV0FBVyxDQUFDOzsrQ0FDRjtBQVl2QjtJQURDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQzs7bURBQ0Q7QUFZOUI7SUFEQyxXQUFXLENBQUMsaUJBQWlCLENBQUM7O2dEQUNSO0FBaEZkLGlCQUFpQjtJQUo3QixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsV0FBVztRQUNyQix1UkFBbUM7S0FDdEMsQ0FBQztHQUNXLGlCQUFpQixDQTRJN0I7U0E1SVksaUJBQWlCO0FBOEk5Qjs7R0FFRztBQU1ILElBQWEsY0FBYyxHQUEzQixNQUFhLGNBQWM7Q0FDMUIsQ0FBQTtBQURZLGNBQWM7SUFMMUIsUUFBUSxDQUFDO1FBQ04sWUFBWSxFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDakMsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDNUIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztLQUN6QyxDQUFDO0dBQ1csY0FBYyxDQUMxQjtTQURZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hJY29uTW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pbmRleCc7XG5cbmxldCBORVhUX0lEID0gMDtcblxuZXhwb3J0IGVudW0gVHlwZSB7XG4gICAgREVGQVVMVCA9ICdkZWZhdWx0JyxcbiAgICBJTkZPID0gJ2luZm8nLFxuICAgIFNVQ0NFU1MgPSAnc3VjY2VzcycsXG4gICAgV0FSTklORyA9ICd3YXJuaW5nJyxcbiAgICBFUlJPUiA9ICdlcnJvcidcbn1cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgQmFkZ2UqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvYmFkZ2UuaHRtbClcbiAqXG4gKiBUaGUgSWduaXRlIFVJIEJhZGdlIGlzIHVzZWQgdG8gZGVjb3JhdGUgYXZhdGFycywgbmF2aWdhdGlvbiBtZW51cywgb3Igb3RoZXIgY29tcG9uZW50cyBpbiB0aGVcbiAqIGFwcGxpY2F0aW9uIHdoZW4gdmlzdWFsIG5vdGlmaWNhdGlvbiBpcyBuZWVkZWQuIFRoZXkgYXJlIHVzdWFsbHkgZGVzaWduZWQgYXMgaWNvbnMgd2l0aCBhIHByZWRlZmluZWRcbiAqIHN0eWxlIHRvIGNvbW11bmljYXRlIGluZm9ybWF0aW9uLCBzdWNjZXNzLCB3YXJuaW5ncywgb3IgZXJyb3JzLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGBodG1sXG4gKiA8aWd4LWF2YXRhciBpY29uPVwicGVyc29uXCIgcm91bmRTaGFwZT1cInRydWVcIiBzaXplPVwic21hbGxcIj5cbiAqICAgPGlneC1iYWRnZSBpY29uPVwiY2hlY2tcIiB0eXBlPVwic3VjY2Vzc1wiIGNsYXNzPVwiYmFkZ2Utc3R5bGVcIj5cbiAqICAgPC9pZ3gtYmFkZ2U+XG4gKiA8L2lneC1hdmF0YXI+XG4gKiBgYGBcbiAqIFRoZSBgYmFkZ2Utc3R5bGVgIGNsYXNzIGlzIHVzZWQgdG8gcG9zaXRpb24gdGhlIGJhZGdlOlxuICogYGBgY3NzXG4gKiAuYmFkZ2Utc3R5bGUge1xuICogICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gKiAgIGJvdHRvbTogLTZweDtcbiAqICAgcmlnaHQ6LTUwcHg7XG4gKiB9XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtYmFkZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnYmFkZ2UuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIElneEJhZGdlQ29tcG9uZW50IHtcblxuICAgIC8qKlxuICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgdmFsdWUgb2YgdGhlIGBpZGAgYXR0cmlidXRlLlxuICAgICogYGBgaHRtbFxuICAgICo8aWd4LWJhZGdlIGlkPVwiaWd4LWJhZGdlLTJcIiBpY29uPVwiY2hlY2tcIiB0eXBlPVwic3VjY2Vzc1wiIGNsYXNzPVwiYmFkZ2Utc3R5bGVcIj48L2lneC1iYWRnZT5cbiAgICAqIGBgYFxuICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtYmFkZ2UtJHtORVhUX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICogQW4gQElucHV0IHByb3BlcnR5IGNvbnRyb2xsaW5nIHRoZSB0eXBlIG9mIHRoZSBiYWRnZS5cbiAgICAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgZGVmYXVsdGAsIGBpbmZvYCwgYHN1Y2Nlc3NgLCBgd2FybmluZ2AsIGBlcnJvcmAuXG4gICAgKiBQcm92aWRpbmcgYW4gaW52YWxpZCB2YWx1ZSB3b24ndCBkaXNwbGF5IGEgYmFkZ2UuXG4gICAgKiBgYGBodG1sXG4gICAgKjxpZ3gtYmFkZ2UgdHlwZT1cInN1Y2Nlc3NcIiBpY29uPVwiY2hlY2tcIiBjbGFzcz1cImJhZGdlLXN0eWxlXCI+PC9pZ3gtYmFkZ2U+XG4gICAgKiBgYGBcbiAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR5cGU6IHN0cmluZyB8IFR5cGUgPSAnZGVmYXVsdCc7XG5cbiAgICAvKipcbiAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIHZhbHVlIHRvIGJlIGRpc3BsYXllZCBpbnNpZGUgdGhlIGJhZGdlLlxuICAgICogSWYgYW4gYGljb25gIHByb3BlcnR5IGlzIGFscmVhZHkgc2V0IHRoZSBgaWNvbmAgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAgKiBJZiBuZWl0aGVyIGEgYHZhbHVlYCBub3IgYW4gYGljb25gIGlzIHNldCB0aGUgY29udGVudGVudCBvZiB0aGUgYmFkZ2Ugd2lsbCBiZSBlbXB0eS5cbiAgICAqIGBgYGh0bWxcbiAgICAqPGlneC1iYWRnZSB2YWx1ZT1cIjExXCIgdHlwZT1cInN1Y2Nlc3NcIiBjbGFzcz1cImJhZGdlLXN0eWxlXCI+PC9pZ3gtYmFkZ2U+XG4gICAgKiBgYGBcbiAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgYW4gaWNvbiBmb3IgdGhlIGJhZGdlIGZyb20gdGhlIG1hdGVyaWFsIGljb25zIHNldC5cbiAgICAgKiBIYXMgcHJpb3JpdHkgb3ZlciB0aGUgYHZhbHVlYCBwcm9wZXJ0eS5cbiAgICAgKiBJZiBuZWl0aGVyIGEgYHZhbHVlYCBub3IgYW4gYGljb25gIGlzIHNldCB0aGUgY29udGVudCBvZiB0aGUgYmFkZ2Ugd2lsbCBiZSBlbXB0eS5cbiAgICAgKiBQcm92aWRpbmcgYW4gaW52YWxpZCB2YWx1ZSB3b24ndCBkaXNwbGF5IGFueXRoaW5nLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKjxpZ3gtYmFkZ2UgaWNvbj1cImNoZWNrXCIgdHlwZT1cInN1Y2Nlc3NcIiBjbGFzcz1cImJhZGdlLXN0eWxlXCIgdmFsdWU9XCIxMVwiPjwvaWd4LWJhZGdlPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGljb246IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoaXMgYWxsb3dzIHlvdSB0byBzZXQgdmFsdWUgdG8gcm9sZSBhdHRyaWJ1dGUuXG4gICAgICpgYGBodG1sXG4gICAgICpAVmlld0NoaWxkKFwiTXlCYWRnZVwiLCB7IHJlYWQ6IElneEJhZGdlQ29tcG9uZW50IH0pXG4gICAgICpwdWJsaWMgYmFkZ2U6IElneEJhZGdlQ29tcG9uZW50O1xuICAgICAqIC8vLi4uXG4gICAgICpiYWRnZS5sYWJlbCA9IFwiYmFkZ2Utc3RhdHVzXCI7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICAgIHB1YmxpYyByb2xlID0gJ3N0YXR1cyc7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGFsbG93cyB5b3UgdG8gZGlzYWJsZSBpZ3gtYmFkZ2UgY2xhc3MuIFRoZSBkZWZhdWx0IGl0J3MgYXBwbGllZC5cbiAgICAgKmBgYGh0bWxcbiAgICAgKkBWaWV3Q2hpbGQoXCJNeUJhZGdlXCIsIHsgcmVhZDogSWd4QmFkZ2VDb21wb25lbnQgfSlcbiAgICAgKnB1YmxpYyBiYWRnZTogSWd4QmFkZ2VDb21wb25lbnQ7XG4gICAgICogLy8uLi5cbiAgICAgKmJhZGdlLmNzc0NsYXNzID0gZmFsc2U7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYmFkZ2UnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtYmFkZ2UnO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBhbGxvd3MgeW91IHRvIHNldCB2YWx1ZSB0byBhcmlhLWxhYmVsIGF0dHJpYnV0ZS5cbiAgICAgKmBgYGh0bWxcbiAgICAgKkBWaWV3Q2hpbGQoXCJNeUJhZGdlXCIsIHsgcmVhZDogSWd4QmFkZ2VDb21wb25lbnQgfSlcbiAgICAgKnB1YmxpYyBiYWRnZTogSWd4QmFkZ2VDb21wb25lbnQ7XG4gICAgICogLy8uLi5cbiAgICAgKmJhZGdlLmxhYmVsID0gXCJpY29uLWJhZGdlXCI7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKVxuICAgIHB1YmxpYyBsYWJlbCA9ICdiYWRnZSc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRGVmaW5lcyBhIGh1bWFuLXJlYWRhYmxlLCBhY2Nlc3NvciwgYXV0aG9yLWxvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIGB0eXBlYCBhbmQgdGhlIGBpY29uYCBvciBgdmFsdWVgIG9mIHRoZSBlbGVtZW50LlxuICAgICAqL1xuICAgIGdldCByb2xlRGVzY3JpcHRpb24oKSB7XG4gICAgICAgIGxldCBtZXNzYWdlO1xuXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItY29uZGl0aW9uYWwtZXhwcmVzc2lvblxuICAgICAgICBpZiAodGhpcy5pY29uKSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gdGhpcy50eXBlICsgJyB0eXBlIGJhZGdlIHdpdGggaWNvbiB0eXBlICcgKyB0aGlzLmljb247XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgbWVzc2FnZSA9IHRoaXMudHlwZSArICcgYmFkZ2UgdHlwZSB3aXRoIHZhbHVlICcgKyB0aGlzLnZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWVzc2FnZSA9IHRoaXMudHlwZSArICcgYmFkZ2UgdHlwZSB3aXRob3V0IHZhbHVlJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2Qgd2hpY2ggbWFrZXMgdGhlIG5hbWUgb2YgdGhlIGNsYXNzIG1vcmUgZGVzY3JpcHRpdmUuXG4gICAgICogVGhpcyBoZWxwcyB0aGUgc3R5bGluZyBvZiB0aGUgYmFkZ2VzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDbGFzc2VzKCkge1xuICAgICAgICBsZXQgY2xhc3NlcyA9IHt9O1xuXG4gICAgICAgIHN3aXRjaCAoVHlwZVt0aGlzLnR5cGUudG9VcHBlckNhc2UoKV0pIHtcbiAgICAgICAgICAgIGNhc2UgVHlwZS5ERUZBVUxUOlxuICAgICAgICAgICAgICAgIGNsYXNzZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIFtgJHt0aGlzLmNzc0NsYXNzfV9fY2lyY2xlLS1kZWZhdWx0YF06IHRydWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUeXBlLklORk86XG4gICAgICAgICAgICAgICAgY2xhc3NlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgW2Ake3RoaXMuY3NzQ2xhc3N9X19jaXJjbGUtLWluZm9gXTogdHJ1ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFR5cGUuU1VDQ0VTUzpcbiAgICAgICAgICAgICAgICBjbGFzc2VzID0ge1xuICAgICAgICAgICAgICAgICAgICBbYCR7dGhpcy5jc3NDbGFzc31fX2NpcmNsZS0tc3VjY2Vzc2BdOiB0cnVlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVHlwZS5XQVJOSU5HOlxuICAgICAgICAgICAgICAgIGNsYXNzZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIFtgJHt0aGlzLmNzc0NsYXNzfV9fY2lyY2xlLS13YXJuaW5nYF06IHRydWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUeXBlLkVSUk9SOlxuICAgICAgICAgICAgICAgIGNsYXNzZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIFtgJHt0aGlzLmNzc0NsYXNzfV9fY2lyY2xlLS1lcnJvcmBdOiB0cnVlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjbGFzc2VzO1xuICAgIH1cblxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtJZ3hCYWRnZUNvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0lneEJhZGdlQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJZ3hJY29uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hCYWRnZU1vZHVsZSB7XG59XG4iXX0=