@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
296 lines • 24.1 kB
JavaScript
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUEwQixjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUtySDtJQUF3QyxzQ0FBa0I7SUFxQ3RELDRCQUFtQixPQUFtQixFQUFVLFNBQW9CLEVBQ2Isc0JBQThDO1FBRHJHLFlBRUksa0JBQU0sc0JBQXNCLENBQUMsU0FDaEM7UUFIa0IsYUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFVLGVBQVMsR0FBVCxTQUFTLENBQVc7UUFDYiw0QkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBL0JyRzs7V0FFRztRQUNLLGtCQUFZLEdBQUcsTUFBTSxDQUFDO1FBRTlCOztXQUVHO1FBQ0sscUJBQWUsR0FBRyxZQUFZLENBQUM7UUFrQ3ZDOztXQUVHO1FBRUksaUJBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTdDOzs7Ozs7Ozs7V0FTRztRQUVJLFVBQUksR0FBRyxRQUFRLENBQUM7UUFrSHZCOzs7Ozs7O1dBT0c7UUFDYSxjQUFRLEdBQUcsS0FBSyxDQUFDOztJQXBKakMsQ0FBQztJQUtELHNCQUFXLDZDQUFhO1FBSHhCOztXQUVHO2FBQ0g7WUFDSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ3RDLENBQUM7OztPQUFBO0lBNkJELHNCQUFJLG9DQUFJO1FBUlI7Ozs7OztXQU1HO2FBRUgsVUFBUyxLQUFhO1lBQ2xCLElBQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUssSUFBSSxDQUFDLGVBQWUsVUFBSyxJQUFJLENBQUMsS0FBTyxDQUFDLENBQUM7Z0JBQ3pGLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO2dCQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFLLElBQUksQ0FBQyxlQUFlLFVBQUssSUFBSSxDQUFDLEtBQU8sQ0FBQyxDQUFDO2FBQ3pGO1FBQ0wsQ0FBQzs7O09BQUE7SUFTd0Isc0JBQUkscUNBQUs7UUFQbEM7Ozs7OztXQU1HO2FBQ3NCLFVBQVUsS0FBYTtZQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLENBQUM7OztPQUFBO0lBUzZCLHNCQUFJLDBDQUFVO1FBUDVDOzs7Ozs7V0FNRzthQUMyQixVQUFlLEtBQWE7WUFDdEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckYsQ0FBQzs7O09BQUE7SUFTa0Isc0JBQUkscUNBQUs7UUFQNUI7Ozs7OztXQU1HO2FBQ2dCLFVBQVUsS0FBYTtZQUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRSxDQUFDOzs7T0FBQTtJQVNRLHNCQUFJLHdDQUFRO1FBUHJCOzs7Ozs7V0FNRzthQUNNLFVBQWEsR0FBRztZQUNyQixHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1lBQ3JCLElBQUksR0FBRyxFQUFFO2dCQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUssSUFBSSxDQUFDLGVBQWUsZUFBWSxDQUFDLENBQUM7YUFDcEY7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBSyxJQUFJLENBQUMsZUFBZSxlQUFZLENBQUMsQ0FBQzthQUN2RjtRQUNMLENBQUM7OztPQUFBO0lBTUQsc0JBQVcsNENBQVk7UUFKdkI7O1dBRUc7YUFFSDtZQUNJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQztnQkFDbEYsSUFBSSxDQUFDLGNBQWMsS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDO1FBQ3BELENBQUM7OztPQUFBO0lBTUQsc0JBQVcsK0NBQWU7UUFKMUI7O1dBRUc7YUFFSDtZQUNJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQztnQkFDbEYsSUFBSSxDQUFDLGNBQWMsS0FBSyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQ3ZELENBQUM7OztPQUFBO0lBTUQsc0JBQVcsK0NBQWU7UUFKMUI7O1dBRUc7YUFFSDtZQUNJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDO1FBQy9FLENBQUM7OztPQUFBO0lBTUQsc0JBQVcsa0RBQWtCO1FBSjdCOztXQUVHO2FBRUg7WUFDSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUNsRixDQUFDOzs7T0FBQTtJQU1ELHNCQUFXLGlEQUFpQjtRQUo1Qjs7V0FFRzthQUVIO1lBQ0ksT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEQsQ0FBQzs7O09BQUE7SUFZRDs7T0FFRztJQUVJLG9DQUFPLEdBQWQsVUFBZSxFQUFFO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7Z0JBL0oyQixVQUFVO2dCQUFxQixTQUFTO2dEQUMvRCxRQUFRLFlBQUksTUFBTSxTQUFDLG1CQUFtQjs7SUFlM0M7UUFEQyxNQUFNLEVBQUU7OzJEQUNvQztJQWE3QztRQURDLFdBQVcsQ0FBQyxXQUFXLENBQUM7O29EQUNGO0lBVXZCO1FBREMsS0FBSyxDQUFDLFdBQVcsQ0FBQzs7O2tEQVFsQjtJQVN3QjtRQUF4QixLQUFLLENBQUMsZ0JBQWdCLENBQUM7OzttREFHdkI7SUFTNkI7UUFBN0IsS0FBSyxDQUFDLHFCQUFxQixDQUFDOzs7d0RBRzVCO0lBU2tCO1FBQWxCLEtBQUssQ0FBQyxVQUFVLENBQUM7OzttREFHakI7SUFTUTtRQUFSLEtBQUssRUFBRTs7O3NEQVFQO0lBTUQ7UUFEQyxXQUFXLENBQUMsd0JBQXdCLENBQUM7OzswREFJckM7SUFNRDtRQURDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQzs7OzZEQUl4QztJQU1EO1FBREMsV0FBVyxDQUFDLDRCQUE0QixDQUFDOzs7NkRBR3pDO0lBTUQ7UUFEQyxXQUFXLENBQUMsK0JBQStCLENBQUM7OztnRUFHNUM7SUFNRDtRQURDLFdBQVcsQ0FBQyxlQUFlLENBQUM7OzsrREFHNUI7SUFVUTtRQUFSLEtBQUssRUFBRTs7d0RBQXlCO0lBTWpDO1FBREMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzs7O3FEQUdqQztJQXBNUSxrQkFBa0I7UUFIOUIsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGFBQWE7U0FDMUIsQ0FBQztRQXVDTyxXQUFBLFFBQVEsRUFBRSxDQUFBLEVBQUUsV0FBQSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTt5Q0FEaEIsVUFBVSxFQUFxQixTQUFTO09BckMzRCxrQkFBa0IsQ0FxTTlCO0lBQUQseUJBQUM7Q0FBQSxBQXJNRCxDQUF3QyxrQkFBa0IsR0FxTXpEO1NBck1ZLGtCQUFrQjtBQXVNL0I7O0dBRUc7QUFLSDtJQUFBO0lBQStCLENBQUM7SUFBbkIsZUFBZTtRQUozQixRQUFRLENBQUM7WUFDTixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztTQUNoQyxDQUFDO09BQ1csZUFBZSxDQUFJO0lBQUQsc0JBQUM7Q0FBQSxBQUFoQyxJQUFnQztTQUFuQixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIFJlbmRlcmVyMixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgT3B0aW9uYWwsXG4gICAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlzcGxheURlbnNpdHlCYXNlLCBEaXNwbGF5RGVuc2l0eVRva2VuLCBJRGlzcGxheURlbnNpdHlPcHRpb25zLCBEaXNwbGF5RGVuc2l0eSB9IGZyb20gJy4uLy4uL2NvcmUvZGVuc2l0eSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneEJ1dHRvbl0nXG59KVxuZXhwb3J0IGNsYXNzIElneEJ1dHRvbkRpcmVjdGl2ZSBleHRlbmRzIERpc3BsYXlEZW5zaXR5QmFzZSB7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF90eXBlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9kZWZhdWx0VHlwZSA9ICdmbGF0JztcblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2Nzc0NsYXNzUHJlZml4ID0gJ2lneC1idXR0b24nO1xuXG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29sb3I6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2xhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9iYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRGlzcGxheURlbnNpdHlUb2tlbikgcHJvdGVjdGVkIF9kaXNwbGF5RGVuc2l0eU9wdGlvbnM6IElEaXNwbGF5RGVuc2l0eU9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoX2Rpc3BsYXlEZW5zaXR5T3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdW5kZXJseWluZyBET00gZWxlbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgcm9sZWAgYXR0cmlidXRlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmJ1dHRvbi5yb2xlID0gJ25hdmJ1dHRvbic7XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBidXR0b25Sb2xlID0gIHRoaXMuYnV0dG9uLnJvbGU7XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBwdWJsaWMgcm9sZSA9ICdidXR0b24nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdHlwZSBvZiB0aGUgYnV0dG9uLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uICBpZ3hCdXR0b249IFwiaWNvblwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hCdXR0b25EaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEJ1dHRvbicpXG4gICAgc2V0IHR5cGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlID8gdmFsdWUgOiB0aGlzLl9kZWZhdWx0VHlwZTtcbiAgICAgICAgaWYgKHRoaXMuX3R5cGUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsIGAke3RoaXMuX2Nzc0NsYXNzUHJlZml4fS0tJHt0aGlzLl90eXBlfWApO1xuICAgICAgICAgICAgdGhpcy5fdHlwZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tLSR7dGhpcy5fdHlwZX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJ1dHRvbiB0ZXh0IGNvbG9yLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj1cImdyYWRpZW50XCIgaWd4QnV0dG9uQ29sb3I9XCJibHVlXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QnV0dG9uQ29sb3InKSBzZXQgY29sb3IodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9jb2xvciA9IHZhbHVlIHx8IHRoaXMubmF0aXZlRWxlbWVudC5zdHlsZS5jb2xvcjtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5uYXRpdmVFbGVtZW50LCAnY29sb3InLCB0aGlzLl9jb2xvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj1cInJhaXNlZFwiIGlneEJ1dHRvbkJhY2tncm91bmQ9XCJyZWRcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QnV0dG9uRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hCdXR0b25CYWNrZ3JvdW5kJykgc2V0IGJhY2tncm91bmQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZSB8fCB0aGlzLl9iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2JhY2tncm91bmQnLCB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPSBcImZsYXRcIiBpZ3hMYWJlbD1cIkxhYmVsXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4TGFiZWwnKSBzZXQgbGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYWJlbCA9IHZhbHVlIHx8IHRoaXMuX2xhYmVsO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCBgYXJpYS1sYWJlbGAsIHRoaXMuX2xhYmVsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBidXR0b24uXG4gICAgICogIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj0gXCJmYWJcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hCdXR0b25EaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsKSB7XG4gICAgICAgIHZhbCA9ICEhdmFsO1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tLWRpc2FibGVkYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsIGAke3RoaXMuX2Nzc0NsYXNzUHJlZml4fS0tZGlzYWJsZWRgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1idXR0b24tLWNvc3knKVxuICAgIHB1YmxpYyBnZXQgY3NzQ2xhc3NDb3N5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuX3R5cGUgPT09ICdmbGF0JyB8fCB0aGlzLl90eXBlID09PSAncmFpc2VkJyB8fCB0aGlzLl90eXBlID09PSAnb3V0bGluZWQnKSAmJlxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5RGVuc2l0eSA9PT0gRGlzcGxheURlbnNpdHkuY29zeTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYnV0dG9uLS1jb21wYWN0JylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzQ29tcGFjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl90eXBlID09PSAnZmxhdCcgfHwgdGhpcy5fdHlwZSA9PT0gJ3JhaXNlZCcgfHwgdGhpcy5fdHlwZSA9PT0gJ291dGxpbmVkJykgJiZcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheURlbnNpdHkgPT09IERpc3BsYXlEZW5zaXR5LmNvbXBhY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWJ1dHRvbi0tZmFiLWNvc3knKVxuICAgIHB1YmxpYyBnZXQgY3NzQ2xhc3NDb3N5RmFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZSA9PT0gJ2ZhYicgJiYgdGhpcy5kaXNwbGF5RGVuc2l0eSA9PT0gRGlzcGxheURlbnNpdHkuY29zeTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYnV0dG9uLS1mYWItY29tcGFjdCcpXG4gICAgcHVibGljIGdldCBjc3NDbGFzc0NvbXBhY3RGYWIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlID09PSAnZmFiJyAmJiB0aGlzLmRpc3BsYXlEZW5zaXR5ID09PSBEaXNwbGF5RGVuc2l0eS5jb21wYWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWRBdHRyaWJ1dGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCA/IHRoaXMuX2Rpc2FibGVkIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG9yIHNldHMgd2hldGhlciB0aGUgYnV0dG9uIGlzIHNlbGVjdGVkLlxuICAgICAqIE1haW5seSB1c2VkIGluIHRoZSBJZ3hCdXR0b25Hcm91cCBjb21wb25lbnQgYW5kIGl0IHdpbGwgaGF2ZSBubyBlZmZlY3QgaWYgc2V0IHNlcGFyYXRlbHkuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPVwiZmxhdFwiIFtzZWxlY3RlZF09XCJidXR0b24uc2VsZWN0ZWRcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QnV0dG9uRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQ2xpY2soZXYpIHtcbiAgICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KGV2KTtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0lneEJ1dHRvbkRpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0lneEJ1dHRvbkRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4QnV0dG9uTW9kdWxlIHsgfVxuIl19