UNPKG

@catull/igniteui-angular

Version:

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

246 lines 21.4 kB
import { __decorate, __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'; let IgxButtonDirective = class IgxButtonDirective extends DisplayDensityBase { constructor(element, _renderer, _displayDensityOptions) { super(_displayDensityOptions); 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; } /** * Returns the underlying DOM element */ get nativeElement() { return this.element.nativeElement; } /** * Sets the type of the button. * ```html * <button igxButton= "icon"></button> * ``` * @memberof IgxButtonDirective */ set type(value) { const 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}`); } } /** * Sets the button text color. * ```html * <button igxButton="gradient" igxButtonColor="blue"></button> * ``` * @memberof IgxButtonDirective */ set color(value) { this._color = value || this.nativeElement.style.color; this._renderer.setStyle(this.nativeElement, 'color', this._color); } /** * Sets the background color of the button. * ```html * <button igxButton="raised" igxButtonBackground="red"></button> * ``` * @memberof IgxButtonDirective */ set background(value) { this._backgroundColor = value || this._backgroundColor; this._renderer.setStyle(this.nativeElement, 'background', this._backgroundColor); } /** * Sets the `aria-label` attribute. * ```html * <button igxButton= "flat" igxLabel="Label"></button> * ``` * @memberof IgxButtonDirective */ set label(value) { this._label = value || this._label; this._renderer.setAttribute(this.nativeElement, `aria-label`, this._label); } /** * Enables/disables the button. * ```html * <button igxButton= "fab" [disabled]="true"></button> * ``` * @memberof IgxButtonDirective */ set disabled(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`); } } /** * @hidden */ get cssClassCosy() { return (this._type === 'flat' || this._type === 'raised' || this._type === 'outlined') && this.displayDensity === DisplayDensity.cosy; } /** * @hidden */ get cssClassCompact() { return (this._type === 'flat' || this._type === 'raised' || this._type === 'outlined') && this.displayDensity === DisplayDensity.compact; } /** * @hidden */ get cssClassCosyFab() { return this._type === 'fab' && this.displayDensity === DisplayDensity.cosy; } /** * @hidden */ get cssClassCompactFab() { return this._type === 'fab' && this.displayDensity === DisplayDensity.compact; } /** * @hidden */ get disabledAttribute() { return this._disabled ? this._disabled : null; } /** *@hidden */ onClick(ev) { this.buttonClick.emit(ev); } }; IgxButtonDirective.ctorParameters = () => [ { 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); export { IgxButtonDirective }; /** * @hidden */ let IgxButtonModule = class IgxButtonModule { }; IgxButtonModule = __decorate([ NgModule({ declarations: [IgxButtonDirective], exports: [IgxButtonDirective] }) ], IgxButtonModule); export { IgxButtonModule }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUEwQixjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUtySCxJQUFhLGtCQUFrQixHQUEvQixNQUFhLGtCQUFtQixTQUFRLGtCQUFrQjtJQXFDdEQsWUFBbUIsT0FBbUIsRUFBVSxTQUFvQixFQUNiLHNCQUE4QztRQUNqRyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUZmLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ2IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQS9Cckc7O1dBRUc7UUFDSyxpQkFBWSxHQUFHLE1BQU0sQ0FBQztRQUU5Qjs7V0FFRztRQUNLLG9CQUFlLEdBQUcsWUFBWSxDQUFDO1FBa0N2Qzs7V0FFRztRQUVJLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU3Qzs7Ozs7Ozs7O1dBU0c7UUFFSSxTQUFJLEdBQUcsUUFBUSxDQUFDO1FBa0h2Qjs7Ozs7OztXQU9HO1FBQ2EsYUFBUSxHQUFHLEtBQUssQ0FBQztJQXBKakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDdEMsQ0FBQztJQXFCRDs7Ozs7O09BTUc7SUFFSCxJQUFJ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RDtJQURDLFdBQVcsQ0FBQyxlQUFlLENBQUM7OzsyREFHNUI7QUFVUTtJQUFSLEtBQUssRUFBRTs7b0RBQXlCO0FBTWpDO0lBREMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzs7O2lEQUdqQztBQXBNUSxrQkFBa0I7SUFIOUIsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGFBQWE7S0FDMUIsQ0FBQztJQXVDTyxXQUFBLFFBQVEsRUFBRSxDQUFBLEVBQUUsV0FBQSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtxQ0FEaEIsVUFBVSxFQUFxQixTQUFTO0dBckMzRCxrQkFBa0IsQ0FxTTlCO1NBck1ZLGtCQUFrQjtBQXVNL0I7O0dBRUc7QUFLSCxJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFlO0NBQUksQ0FBQTtBQUFuQixlQUFlO0lBSjNCLFFBQVEsQ0FBQztRQUNOLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUFDO1FBQ2xDLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO0tBQ2hDLENBQUM7R0FDVyxlQUFlLENBQUk7U0FBbkIsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBSZW5kZXJlcjIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIE9wdGlvbmFsLFxuICAgIEluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpc3BsYXlEZW5zaXR5QmFzZSwgRGlzcGxheURlbnNpdHlUb2tlbiwgSURpc3BsYXlEZW5zaXR5T3B0aW9ucywgRGlzcGxheURlbnNpdHkgfSBmcm9tICcuLi8uLi9jb3JlL2RlbnNpdHknO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hCdXR0b25dJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hCdXR0b25EaXJlY3RpdmUgZXh0ZW5kcyBEaXNwbGF5RGVuc2l0eUJhc2Uge1xuXG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdHlwZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZGVmYXVsdFR5cGUgPSAnZmxhdCc7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jc3NDbGFzc1ByZWZpeCA9ICdpZ3gtYnV0dG9uJztcblxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbG9yOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9sYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIHByb3RlY3RlZCBfZGlzcGxheURlbnNpdHlPcHRpb25zOiBJRGlzcGxheURlbnNpdHlPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKF9kaXNwbGF5RGVuc2l0eU9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHVuZGVybHlpbmcgRE9NIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxsZWQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYHJvbGVgIGF0dHJpYnV0ZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5idXR0b24ucm9sZSA9ICduYXZidXR0b24nO1xuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgYnV0dG9uUm9sZSA9ICB0aGlzLmJ1dHRvbi5yb2xlO1xuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hCdXR0b25EaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgcHVibGljIHJvbGUgPSAnYnV0dG9uJztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHR5cGUgb2YgdGhlIGJ1dHRvbi5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiAgaWd4QnV0dG9uPSBcImljb25cIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QnV0dG9uRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hCdXR0b24nKVxuICAgIHNldCB0eXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZSA/IHZhbHVlIDogdGhpcy5fZGVmYXVsdFR5cGU7XG4gICAgICAgIGlmICh0aGlzLl90eXBlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tLSR7dGhpcy5fdHlwZX1gKTtcbiAgICAgICAgICAgIHRoaXMuX3R5cGUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgYCR7dGhpcy5fY3NzQ2xhc3NQcmVmaXh9LS0ke3RoaXMuX3R5cGV9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBidXR0b24gdGV4dCBjb2xvci5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiBpZ3hCdXR0b249XCJncmFkaWVudFwiIGlneEJ1dHRvbkNvbG9yPVwiYmx1ZVwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hCdXR0b25EaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEJ1dHRvbkNvbG9yJykgc2V0IGNvbG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fY29sb3IgPSB2YWx1ZSB8fCB0aGlzLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY29sb3I7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2NvbG9yJywgdGhpcy5fY29sb3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiBpZ3hCdXR0b249XCJyYWlzZWRcIiBpZ3hCdXR0b25CYWNrZ3JvdW5kPVwicmVkXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QnV0dG9uQmFja2dyb3VuZCcpIHNldCBiYWNrZ3JvdW5kKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYmFja2dyb3VuZENvbG9yID0gdmFsdWUgfHwgdGhpcy5fYmFja2dyb3VuZENvbG9yO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLm5hdGl2ZUVsZW1lbnQsICdiYWNrZ3JvdW5kJywgdGhpcy5fYmFja2dyb3VuZENvbG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj0gXCJmbGF0XCIgaWd4TGFiZWw9XCJMYWJlbFwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hCdXR0b25EaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneExhYmVsJykgc2V0IGxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbGFiZWwgPSB2YWx1ZSB8fCB0aGlzLl9sYWJlbDtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgYGFyaWEtbGFiZWxgLCB0aGlzLl9sYWJlbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgYnV0dG9uLlxuICAgICAqICBgYGBodG1sXG4gICAgICogPGJ1dHRvbiBpZ3hCdXR0b249IFwiZmFiXCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QnV0dG9uRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbCkge1xuICAgICAgICB2YWwgPSAhIXZhbDtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgYCR7dGhpcy5fY3NzQ2xhc3NQcmVmaXh9LS1kaXNhYmxlZGApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tLWRpc2FibGVkYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYnV0dG9uLS1jb3N5JylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzQ29zeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl90eXBlID09PSAnZmxhdCcgfHwgdGhpcy5fdHlwZSA9PT0gJ3JhaXNlZCcgfHwgdGhpcy5fdHlwZSA9PT0gJ291dGxpbmVkJykgJiZcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheURlbnNpdHkgPT09IERpc3BsYXlEZW5zaXR5LmNvc3k7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWJ1dHRvbi0tY29tcGFjdCcpXG4gICAgcHVibGljIGdldCBjc3NDbGFzc0NvbXBhY3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodGhpcy5fdHlwZSA9PT0gJ2ZsYXQnIHx8IHRoaXMuX3R5cGUgPT09ICdyYWlzZWQnIHx8IHRoaXMuX3R5cGUgPT09ICdvdXRsaW5lZCcpICYmXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlEZW5zaXR5ID09PSBEaXNwbGF5RGVuc2l0eS5jb21wYWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1idXR0b24tLWZhYi1jb3N5JylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzQ29zeUZhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUgPT09ICdmYWInICYmIHRoaXMuZGlzcGxheURlbnNpdHkgPT09IERpc3BsYXlEZW5zaXR5LmNvc3k7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWJ1dHRvbi0tZmFiLWNvbXBhY3QnKVxuICAgIHB1YmxpYyBnZXQgY3NzQ2xhc3NDb21wYWN0RmFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZSA9PT0gJ2ZhYicgJiYgdGhpcy5kaXNwbGF5RGVuc2l0eSA9PT0gRGlzcGxheURlbnNpdHkuY29tcGFjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkQXR0cmlidXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgPyB0aGlzLl9kaXNhYmxlZCA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBvciBzZXRzIHdoZXRoZXIgdGhlIGJ1dHRvbiBpcyBzZWxlY3RlZC5cbiAgICAgKiBNYWlubHkgdXNlZCBpbiB0aGUgSWd4QnV0dG9uR3JvdXAgY29tcG9uZW50IGFuZCBpdCB3aWxsIGhhdmUgbm8gZWZmZWN0IGlmIHNldCBzZXBhcmF0ZWx5LlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj1cImZsYXRcIiBbc2VsZWN0ZWRdPVwiYnV0dG9uLnNlbGVjdGVkXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkNsaWNrKGV2KSB7XG4gICAgICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdChldik7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtJZ3hCdXR0b25EaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ3hCdXR0b25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneEJ1dHRvbk1vZHVsZSB7IH1cbiJdfQ==