UNPKG

@catull/igniteui-angular

Version:

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

296 lines 24.1 kB
import { __decorate, __extends, __metadata, __param } from "tslib"; import { Directive, ElementRef, EventEmitter, HostBinding, Input, Output, NgModule, Renderer2, HostListener, Optional, Inject } from '@angular/core'; import { DisplayDensityBase, DisplayDensityToken, DisplayDensity } from '../../core/density'; var IgxButtonDirective = /** @class */ (function (_super) { __extends(IgxButtonDirective, _super); function IgxButtonDirective(element, _renderer, _displayDensityOptions) { var _this = _super.call(this, _displayDensityOptions) || this; _this.element = element; _this._renderer = _renderer; _this._displayDensityOptions = _displayDensityOptions; /** *@hidden */ _this._defaultType = 'flat'; /** *@hidden */ _this._cssClassPrefix = 'igx-button'; /** * Called when the button is clicked */ _this.buttonClick = new EventEmitter(); /** * Sets/gets the `role` attribute. * ```typescript * this.button.role = 'navbutton'; * ``` * ```typescript * let buttonRole = this.button.role; * ``` * @memberof IgxButtonDirective */ _this.role = 'button'; /** * Gets or sets whether the button is selected. * Mainly used in the IgxButtonGroup component and it will have no effect if set separately. * ```html * <button igxButton="flat" [selected]="button.selected"></button> * ``` * @memberof IgxButtonDirective */ _this.selected = false; return _this; } Object.defineProperty(IgxButtonDirective.prototype, "nativeElement", { /** * Returns the underlying DOM element */ get: function () { return this.element.nativeElement; }, enumerable: true, configurable: true }); Object.defineProperty(IgxButtonDirective.prototype, "type", { /** * Sets the type of the button. * ```html * <button igxButton= "icon"></button> * ``` * @memberof IgxButtonDirective */ set: function (value) { var newValue = value ? value : this._defaultType; if (this._type !== newValue) { this._renderer.removeClass(this.nativeElement, this._cssClassPrefix + "--" + this._type); this._type = newValue; this._renderer.addClass(this.nativeElement, this._cssClassPrefix + "--" + this._type); } }, enumerable: true, configurable: true }); Object.defineProperty(IgxButtonDirective.prototype, "color", { /** * Sets the button text color. * ```html * <button igxButton="gradient" igxButtonColor="blue"></button> * ``` * @memberof IgxButtonDirective */ set: function (value) { this._color = value || this.nativeElement.style.color; this._renderer.setStyle(this.nativeElement, 'color', this._color); }, enumerable: true, configurable: true }); Object.defineProperty(IgxButtonDirective.prototype, "background", { /** * Sets the background color of the button. * ```html * <button igxButton="raised" igxButtonBackground="red"></button> * ``` * @memberof IgxButtonDirective */ set: function (value) { this._backgroundColor = value || this._backgroundColor; this._renderer.setStyle(this.nativeElement, 'background', this._backgroundColor); }, enumerable: true, configurable: true }); Object.defineProperty(IgxButtonDirective.prototype, "label", { /** * Sets the `aria-label` attribute. * ```html * <button igxButton= "flat" igxLabel="Label"></button> * ``` * @memberof IgxButtonDirective */ set: function (value) { this._label = value || this._label; this._renderer.setAttribute(this.nativeElement, "aria-label", this._label); }, enumerable: true, configurable: true }); Object.defineProperty(IgxButtonDirective.prototype, "disabled", { /** * Enables/disables the button. * ```html * <button igxButton= "fab" [disabled]="true"></button> * ``` * @memberof IgxButtonDirective */ set: function (val) { val = !!val; this._disabled = val; if (val) { this._renderer.addClass(this.nativeElement, this._cssClassPrefix + "--disabled"); } else { this._renderer.removeClass(this.nativeElement, this._cssClassPrefix + "--disabled"); } }, enumerable: true, configurable: true }); Object.defineProperty(IgxButtonDirective.prototype, "cssClassCosy", { /** * @hidden */ get: function () { return (this._type === 'flat' || this._type === 'raised' || this._type === 'outlined') && this.displayDensity === DisplayDensity.cosy; }, enumerable: true, configurable: true }); Object.defineProperty(IgxButtonDirective.prototype, "cssClassCompact", { /** * @hidden */ get: function () { return (this._type === 'flat' || this._type === 'raised' || this._type === 'outlined') && this.displayDensity === DisplayDensity.compact; }, enumerable: true, configurable: true }); Object.defineProperty(IgxButtonDirective.prototype, "cssClassCosyFab", { /** * @hidden */ get: function () { return this._type === 'fab' && this.displayDensity === DisplayDensity.cosy; }, enumerable: true, configurable: true }); Object.defineProperty(IgxButtonDirective.prototype, "cssClassCompactFab", { /** * @hidden */ get: function () { return this._type === 'fab' && this.displayDensity === DisplayDensity.compact; }, enumerable: true, configurable: true }); Object.defineProperty(IgxButtonDirective.prototype, "disabledAttribute", { /** * @hidden */ get: function () { return this._disabled ? this._disabled : null; }, enumerable: true, configurable: true }); /** *@hidden */ IgxButtonDirective.prototype.onClick = function (ev) { this.buttonClick.emit(ev); }; IgxButtonDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: Renderer2 }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DisplayDensityToken,] }] } ]; }; __decorate([ Output(), __metadata("design:type", Object) ], IgxButtonDirective.prototype, "buttonClick", void 0); __decorate([ HostBinding('attr.role'), __metadata("design:type", Object) ], IgxButtonDirective.prototype, "role", void 0); __decorate([ Input('igxButton'), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], IgxButtonDirective.prototype, "type", null); __decorate([ Input('igxButtonColor'), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], IgxButtonDirective.prototype, "color", null); __decorate([ Input('igxButtonBackground'), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], IgxButtonDirective.prototype, "background", null); __decorate([ Input('igxLabel'), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], IgxButtonDirective.prototype, "label", null); __decorate([ Input(), __metadata("design:type", Object), __metadata("design:paramtypes", [Object]) ], IgxButtonDirective.prototype, "disabled", null); __decorate([ HostBinding('class.igx-button--cosy'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxButtonDirective.prototype, "cssClassCosy", null); __decorate([ HostBinding('class.igx-button--compact'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxButtonDirective.prototype, "cssClassCompact", null); __decorate([ HostBinding('class.igx-button--fab-cosy'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxButtonDirective.prototype, "cssClassCosyFab", null); __decorate([ HostBinding('class.igx-button--fab-compact'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxButtonDirective.prototype, "cssClassCompactFab", null); __decorate([ HostBinding('attr.disabled'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], IgxButtonDirective.prototype, "disabledAttribute", null); __decorate([ Input(), __metadata("design:type", Object) ], IgxButtonDirective.prototype, "selected", void 0); __decorate([ HostListener('click', ['$event']), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0) ], IgxButtonDirective.prototype, "onClick", null); IgxButtonDirective = __decorate([ Directive({ selector: '[igxButton]' }), __param(2, Optional()), __param(2, Inject(DisplayDensityToken)), __metadata("design:paramtypes", [ElementRef, Renderer2, Object]) ], IgxButtonDirective); return IgxButtonDirective; }(DisplayDensityBase)); export { IgxButtonDirective }; /** * @hidden */ var IgxButtonModule = /** @class */ (function () { function IgxButtonModule() { } IgxButtonModule = __decorate([ NgModule({ declarations: [IgxButtonDirective], exports: [IgxButtonDirective] }) ], IgxButtonModule); return IgxButtonModule; }()); export { IgxButtonModule }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUEwQixjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUtySDtJQUF3QyxzQ0FBa0I7SUFxQ3RELDRCQUFtQixPQUFtQixFQUFVLFNBQW9CLEVBQ2Isc0JBQThDO1FBRHJHLFlBRUksa0JBQU0sc0JBQXNCLENBQUMsU0FDaEM7UUFIa0IsYUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFVLGVBQVMsR0FBVCxTQUFTLENBQVc7UUFDYiw0QkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBL0JyRzs7V0FFRztRQUNLLGtCQUFZLEdBQUcsTUFBTSxDQUFDO1FBRTlCOztXQUVHO1FBQ0sscUJBQWUsR0FBRyxZQUFZLENBQUM7UUFrQ3ZDOztXQUVHO1FBRUksaUJBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTdDOzs7Ozs7Ozs7V0FTRztRQUVJLFVBQUksR0FBRyxRQUFRLENBQUM7UUFrSHZCOzs7Ozs7O1dBT0c7UUFDYSxjQUFRLEdBQUcsS0FBSyxDQUFDOztJQXBKakMsQ0FBQztJQUtELHNCQUFXLDZDQUFhO1FBSHhCOztXQUVHO2FBQ0g7WUFDSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ3RDLENBQUM7OztPQUFBO0lBNkJELHNCQUFJLG9DQUFJO1FBUlI7Ozs7OztXQU1HO2FB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Q0FBQywyQkFBMkIsQ0FBQzs7OzZEQUl4QztJQU1EO1FBREMsV0FBVyxDQUFDLDRCQUE0QixDQUFDOzs7NkRBR3pDO0lBTUQ7UUFEQyxXQUFXLENBQUMsK0JBQStCLENBQUM7OztnRUFHNUM7SUFNRDtRQURDLFdBQVcsQ0FBQyxlQUFlLENBQUM7OzsrREFHNUI7SUFVUTtRQUFSLEtBQUssRUFBRTs7d0RBQXlCO0lBTWpDO1FBREMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzs7O3FEQUdqQztJQXBNUSxrQkFBa0I7UUFIOUIsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGFBQWE7U0FDMUIsQ0FBQztRQXVDTyxXQUFBLFFBQVEsRUFBRSxDQUFBLEVBQUUsV0FBQSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTt5Q0FEaEIsVUFBVSxFQUFxQixTQUFTO09BckMzRCxrQkFBa0IsQ0FxTTlCO0lBQUQseUJBQUM7Q0FBQSxBQXJNRCxDQUF3QyxrQkFBa0IsR0FxTXpEO1NBck1ZLGtCQUFrQjtBQXVNL0I7O0dBRUc7QUFLSDtJQUFBO0lBQStCLENBQUM7SUFBbkIsZUFBZTtRQUozQixRQUFRLENBQUM7WUFDTixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztTQUNoQyxDQUFDO09BQ1csZUFBZSxDQUFJO0lBQUQsc0JBQUM7Q0FBQSxBQUFoQyxJQUFnQztTQUFuQixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIFJlbmRlcmVyMixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgT3B0aW9uYWwsXG4gICAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlzcGxheURlbnNpdHlCYXNlLCBEaXNwbGF5RGVuc2l0eVRva2VuLCBJRGlzcGxheURlbnNpdHlPcHRpb25zLCBEaXNwbGF5RGVuc2l0eSB9IGZyb20gJy4uLy4uL2NvcmUvZGVuc2l0eSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneEJ1dHRvbl0nXG59KVxuZXhwb3J0IGNsYXNzIElneEJ1dHRvbkRpcmVjdGl2ZSBleHRlbmRzIERpc3BsYXlEZW5zaXR5QmFzZSB7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF90eXBlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9kZWZhdWx0VHlwZSA9ICdmbGF0JztcblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2Nzc0NsYXNzUHJlZml4ID0gJ2lneC1idXR0b24nO1xuXG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29sb3I6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2xhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9iYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRGlzcGxheURlbnNpdHlUb2tlbikgcHJvdGVjdGVkIF9kaXNwbGF5RGVuc2l0eU9wdGlvbnM6IElEaXNwbGF5RGVuc2l0eU9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoX2Rpc3BsYXlEZW5zaXR5T3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdW5kZXJseWluZyBET00gZWxlbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgcm9sZWAgYXR0cmlidXRlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmJ1dHRvbi5yb2xlID0gJ25hdmJ1dHRvbic7XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBidXR0b25Sb2xlID0gIHRoaXMuYnV0dG9uLnJvbGU7XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBwdWJsaWMgcm9sZSA9ICdidXR0b24nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdHlwZSBvZiB0aGUgYnV0dG9uLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uICBpZ3hCdXR0b249IFwiaWNvblwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hCdXR0b25EaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEJ1dHRvbicpXG4gICAgc2V0IHR5cGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlID8gdmFsdWUgOiB0aGlzLl9kZWZhdWx0VHlwZTtcbiAgICAgICAgaWYgKHRoaXMuX3R5cGUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsIGAke3RoaXMuX2Nzc0NsYXNzUHJlZml4fS0tJHt0aGlzLl90eXBlfWApO1xuICAgICAgICAgICAgdGhpcy5fdHlwZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tLSR7dGhpcy5fdHlwZX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJ1dHRvbiB0ZXh0IGNvbG9yLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj1cImdyYWRpZW50XCIgaWd4QnV0dG9uQ29sb3I9XCJibHVlXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QnV0dG9uQ29sb3InKSBzZXQgY29sb3IodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9jb2xvciA9IHZhbHVlIHx8IHRoaXMubmF0aXZlRWxlbWVudC5zdHlsZS5jb2xvcjtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5uYXRpdmVFbGVtZW50LCAnY29sb3InLCB0aGlzLl9jb2xvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj1cInJhaXNlZFwiIGlneEJ1dHRvbkJhY2tncm91bmQ9XCJyZWRcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QnV0dG9uRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hCdXR0b25CYWNrZ3JvdW5kJykgc2V0IGJhY2tncm91bmQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZSB8fCB0aGlzLl9iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2JhY2tncm91bmQnLCB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPSBcImZsYXRcIiBpZ3hMYWJlbD1cIkxhYmVsXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4TGFiZWwnKSBzZXQgbGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYWJlbCA9IHZhbHVlIHx8IHRoaXMuX2xhYmVsO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCBgYXJpYS1sYWJlbGAsIHRoaXMuX2xhYmVsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBidXR0b24uXG4gICAgICogIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj0gXCJmYWJcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hCdXR0b25EaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsKSB7XG4gICAgICAgIHZhbCA9ICEhdmFsO1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tLWRpc2FibGVkYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsIGAke3RoaXMuX2Nzc0NsYXNzUHJlZml4fS0tZGlzYWJsZWRgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1idXR0b24tLWNvc3knKVxuICAgIHB1YmxpYyBnZXQgY3NzQ2xhc3NDb3N5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuX3R5cGUgPT09ICdmbGF0JyB8fCB0aGlzLl90eXBlID09PSAncmFpc2VkJyB8fCB0aGlzLl90eXBlID09PSAnb3V0bGluZWQnKSAmJlxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5RGVuc2l0eSA9PT0gRGlzcGxheURlbnNpdHkuY29zeTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYnV0dG9uLS1jb21wYWN0JylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzQ29tcGFjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl90eXBlID09PSAnZmxhdCcgfHwgdGhpcy5fdHlwZSA9PT0gJ3JhaXNlZCcgfHwgdGhpcy5fdHlwZSA9PT0gJ291dGxpbmVkJykgJiZcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheURlbnNpdHkgPT09IERpc3BsYXlEZW5zaXR5LmNvbXBhY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWJ1dHRvbi0tZmFiLWNvc3knKVxuICAgIHB1YmxpYyBnZXQgY3NzQ2xhc3NDb3N5RmFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZSA9PT0gJ2ZhYicgJiYgdGhpcy5kaXNwbGF5RGVuc2l0eSA9PT0gRGlzcGxheURlbnNpdHkuY29zeTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYnV0dG9uLS1mYWItY29tcGFjdCcpXG4gICAgcHVibGljIGdldCBjc3NDbGFzc0NvbXBhY3RGYWIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlID09PSAnZmFiJyAmJiB0aGlzLmRpc3BsYXlEZW5zaXR5ID09PSBEaXNwbGF5RGVuc2l0eS5jb21wYWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWRBdHRyaWJ1dGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCA/IHRoaXMuX2Rpc2FibGVkIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG9yIHNldHMgd2hldGhlciB0aGUgYnV0dG9uIGlzIHNlbGVjdGVkLlxuICAgICAqIE1haW5seSB1c2VkIGluIHRoZSBJZ3hCdXR0b25Hcm91cCBjb21wb25lbnQgYW5kIGl0IHdpbGwgaGF2ZSBubyBlZmZlY3QgaWYgc2V0IHNlcGFyYXRlbHkuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPVwiZmxhdFwiIFtzZWxlY3RlZF09XCJidXR0b24uc2VsZWN0ZWRcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QnV0dG9uRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQ2xpY2soZXYpIHtcbiAgICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KGV2KTtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0lneEJ1dHRvbkRpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0lneEJ1dHRvbkRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4QnV0dG9uTW9kdWxlIHsgfVxuIl19