@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
268 lines • 23.3 kB
JavaScript
import { __decorate, __metadata, __param } from "tslib";
import { Component, ChangeDetectorRef, ElementRef, HostBinding, HostListener, Input, Host, EventEmitter, Output, ContentChild, Inject } from '@angular/core';
import { IgxExpansionPanelIconDirective } from './expansion-panel.directives';
import { IGX_EXPANSION_PANEL_COMPONENT } from './expansion-panel.common';
/**
* @hidden
*/
export var ICON_POSITION;
(function (ICON_POSITION) {
ICON_POSITION["LEFT"] = "left";
ICON_POSITION["NONE"] = "none";
ICON_POSITION["RIGHT"] = "right";
})(ICON_POSITION || (ICON_POSITION = {}));
var IgxExpansionPanelHeaderComponent = /** @class */ (function () {
function IgxExpansionPanelHeaderComponent(panel, cdr, elementRef) {
this.panel = panel;
this.cdr = cdr;
this.elementRef = elementRef;
// properties section
this._iconTemplate = false;
/**
* Sets/gets the `id` of the expansion panel header.
* ```typescript
* let panelHeaderId = this.panel.header.id;
* ```
* @memberof IgxExpansionPanelComponent
*/
this.id = '';
/**
* Gets/sets the `aria-level` attribute of the header
* Get
* ```typescript
* const currentAriaLevel = this.panel.header.lv;
* ```
* Set
* ```typescript
* this.panel.header.lv = '5';
* ```
* ```html
* <igx-expansion-panel-header [lv]="myCustomLevel"></igx-expansion-panel-header>
* ```
*/
this.lv = '3';
/**
* Gets/sets the `role` attribute of the header
* Get
* ```typescript
* const currentRole = this.panel.header.role;
* ```
* Set
* ```typescript
* this.panel.header.role = '5';
* ```
* ```html
* <igx-expansion-panel-header [role]="'custom'"></igx-expansion-panel-header>
* ```
*/
this.role = 'heading';
/**
* Gets/sets the position of the expansion-panel-header expand/collapse icon
* Accepts `left`, `right` or `none`
* ```typescript
* const currentIconPosition = this.panel.header.iconPosition;
* ```
* Set
* ```typescript
* this.panel.header.iconPosition = 'left';
* ```
* ```html
* <igx-expansion-panel-header [iconPosition]="'right'"></igx-expansion-panel-header>
* ```
*/
this.iconPosition = ICON_POSITION.LEFT;
/**
* Emitted whenever a user interacts with the header host
* ```typescript
* handleInteraction(event: IExpansionPanelEventArgs) {
* ...
* }
* ```
* ```html
* <igx-expansion-panel-header (onInteraction)="handleInteraction($event)">
* ...
* </igx-expansion-panel-header>
* ```
*/
this.onInteraction = new EventEmitter();
/**
* @hidden
*/
this.cssClass = 'igx-expansion-panel__header';
/**
* Gets/sets the whether the header is disabled
* When disabled, the header will not handle user events and will stop their propagation
*
* ```typescript
* const isDisabled = this.panel.header.disabled;
* ```
* Set
* ```typescript
* this.panel.header.disabled = true;
* ```
* ```html
* <igx-expansion-panel-header [disabled]="true">
* ...
* </igx-expansion-panel-header>
* ```
*/
this.disabled = false;
this.id = this.panel.id + "-header";
}
Object.defineProperty(IgxExpansionPanelHeaderComponent.prototype, "iconTemplate", {
/**
* @hidden
*/
get: function () {
return this._iconTemplate;
},
/**
* @hidden
*/
set: function (val) {
this._iconTemplate = val;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxExpansionPanelHeaderComponent.prototype, "controls", {
/**
* @hidden
*/
get: function () {
return this.panel.id;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxExpansionPanelHeaderComponent.prototype, "isExpanded", {
/**
* @hidden
*/
get: function () {
return !this.panel.collapsed;
},
enumerable: true,
configurable: true
});
/**
* @hidden
*/
IgxExpansionPanelHeaderComponent.prototype.onAction = function (evt) {
if (this.disabled) {
evt.stopPropagation();
return;
}
this.onInteraction.emit({ event: evt, panel: this.panel });
this.panel.toggle(evt);
evt.preventDefault();
};
/** @hidden @internal */
IgxExpansionPanelHeaderComponent.prototype.openPanel = function (event) {
if (event.altKey) {
this.panel.expand(event);
this.onInteraction.emit({ event: event, panel: this.panel });
}
};
/** @hidden @internal */
IgxExpansionPanelHeaderComponent.prototype.closePanel = function (event) {
if (event.altKey) {
this.panel.collapse(event);
this.onInteraction.emit({ event: event, panel: this.panel });
}
};
Object.defineProperty(IgxExpansionPanelHeaderComponent.prototype, "iconPositionClass", {
/**
* @hidden
*/
get: function () {
switch (this.iconPosition) {
case (ICON_POSITION.LEFT):
return "igx-expansion-panel__header-icon--start";
case (ICON_POSITION.RIGHT):
return "igx-expansion-panel__header-icon--end";
case (ICON_POSITION.NONE):
return "igx-expansion-panel__header-icon--none";
default:
return '';
}
},
enumerable: true,
configurable: true
});
IgxExpansionPanelHeaderComponent.ctorParameters = function () { return [
{ type: undefined, decorators: [{ type: Host }, { type: Inject, args: [IGX_EXPANSION_PANEL_COMPONENT,] }] },
{ type: ChangeDetectorRef },
{ type: ElementRef }
]; };
__decorate([
ContentChild(IgxExpansionPanelIconDirective),
__metadata("design:type", Object),
__metadata("design:paramtypes", [Object])
], IgxExpansionPanelHeaderComponent.prototype, "iconTemplate", null);
__decorate([
HostBinding('attr.aria-level'),
Input(),
__metadata("design:type", Object)
], IgxExpansionPanelHeaderComponent.prototype, "lv", void 0);
__decorate([
HostBinding('attr.role'),
Input(),
__metadata("design:type", Object)
], IgxExpansionPanelHeaderComponent.prototype, "role", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], IgxExpansionPanelHeaderComponent.prototype, "iconPosition", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxExpansionPanelHeaderComponent.prototype, "onInteraction", void 0);
__decorate([
HostBinding('class.igx-expansion-panel__header'),
__metadata("design:type", Object)
], IgxExpansionPanelHeaderComponent.prototype, "cssClass", void 0);
__decorate([
HostBinding('class.igx-expansion-panel__header--expanded'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], IgxExpansionPanelHeaderComponent.prototype, "isExpanded", null);
__decorate([
Input(),
HostBinding('class.igx-expansion-panel--disabled'),
__metadata("design:type", Object)
], IgxExpansionPanelHeaderComponent.prototype, "disabled", void 0);
__decorate([
HostListener('keydown.Enter', ['$event']),
HostListener('keydown.Space', ['$event']),
HostListener('keydown.Spacebar', ['$event']),
HostListener('click', ['$event']),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Event]),
__metadata("design:returntype", void 0)
], IgxExpansionPanelHeaderComponent.prototype, "onAction", null);
__decorate([
HostListener('keydown.Alt.ArrowDown', ['$event']),
__metadata("design:type", Function),
__metadata("design:paramtypes", [KeyboardEvent]),
__metadata("design:returntype", void 0)
], IgxExpansionPanelHeaderComponent.prototype, "openPanel", null);
__decorate([
HostListener('keydown.Alt.ArrowUp', ['$event']),
__metadata("design:type", Function),
__metadata("design:paramtypes", [KeyboardEvent]),
__metadata("design:returntype", void 0)
], IgxExpansionPanelHeaderComponent.prototype, "closePanel", null);
IgxExpansionPanelHeaderComponent = __decorate([
Component({
selector: 'igx-expansion-panel-header',
template: "<div class=\"igx-expansion-panel__header-inner\" tabindex=\"0\" role=\"button\" [attr.id]=\"id\"\n[attr.aria-disabled]=\"disabled\" [attr.aria-expanded]=\"isExpanded\" [attr.aria-controls]=\"controls\">\n <div class=\"igx-expansion-panel__title-wrapper\">\n <ng-content select=\"igx-expansion-panel-title\"></ng-content>\n <ng-content select=\"igx-expansion-panel-description\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div [class]=\"iconPositionClass\">\n <ng-content *ngIf=\"iconTemplate\" select=\"igx-expansion-panel-icon\"></ng-content>\n <igx-icon *ngIf=\"!iconTemplate\" fontSet=\"material\">\n {{panel.collapsed? 'expand_more':'expand_less'}}\n </igx-icon>\n </div>\n</div>\n"
}),
__param(0, Host()), __param(0, Inject(IGX_EXPANSION_PANEL_COMPONENT)),
__metadata("design:paramtypes", [Object, ChangeDetectorRef,
ElementRef])
], IgxExpansionPanelHeaderComponent);
return IgxExpansionPanelHeaderComponent;
}());
export { IgxExpansionPanelHeaderComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLElBQUksRUFDSixZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUUsT0FBTyxFQUE0Qiw2QkFBNkIsRUFBeUIsTUFBTSwwQkFBMEIsQ0FBQztBQUUxSDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsOEJBQWEsQ0FBQTtJQUNiLDhCQUFhLENBQUE7SUFDYixnQ0FBZSxDQUFBO0FBQ25CLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QjtBQU9EO0lBMElJLDBDQUFrRSxLQUE0QixFQUFTLEdBQXNCLEVBQ3JILFVBQXNCO1FBRG9DLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDckgsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQTFJN0IscUJBQXFCO1FBQ2Qsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDOUI7Ozs7OztXQU1HO1FBQ0ksT0FBRSxHQUFHLEVBQUUsQ0FBQztRQWlCZjs7Ozs7Ozs7Ozs7OztXQWFHO1FBR0ksT0FBRSxHQUFHLEdBQUcsQ0FBQztRQUVoQjs7Ozs7Ozs7Ozs7OztXQWFHO1FBR0ksU0FBSSxHQUFHLFNBQVMsQ0FBQztRQVN4Qjs7Ozs7Ozs7Ozs7OztXQWFHO1FBRUksaUJBQVksR0FBa0IsYUFBYSxDQUFDLElBQUksQ0FBQztRQUV4RDs7Ozs7Ozs7Ozs7O1dBWUc7UUFFSSxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBRXBFOztXQUVHO1FBRUssYUFBUSxHQUFHLDZCQUE2QixDQUFDO1FBVWpEOzs7Ozs7Ozs7Ozs7Ozs7O1dBZ0JHO1FBR0ksYUFBUSxHQUFHLEtBQUssQ0FBQztRQUluQixJQUFJLENBQUMsRUFBRSxHQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxZQUFTLENBQUM7SUFDeEMsQ0FBQztJQTdIRixzQkFBVywwREFBWTtRQUl2Qjs7V0FFRzthQUNIO1lBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzlCLENBQUM7UUFiRDs7V0FFRzthQUVILFVBQXdCLEdBQVE7WUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBWSxHQUFHLENBQUM7UUFDdEMsQ0FBQzs7O09BQUE7SUFnREQsc0JBQVcsc0RBQVE7UUFIbkI7O1dBRUc7YUFDSDtZQUNJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsQ0FBQzs7O09BQUE7SUE2Q0Esc0JBQVcsd0RBQVU7UUFKckI7O1VBRUU7YUFFRjtZQUNPLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNoQyxDQUFDOzs7T0FBQTtJQTRCTDs7TUFFRTtJQUtLLG1EQUFRLEdBQWYsVUFBZ0IsR0FBVztRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3RCLE9BQU87U0FDVDtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRix3QkFBd0I7SUFFakIsb0RBQVMsR0FBaEIsVUFBaUIsS0FBb0I7UUFDakMsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNoRTtJQUNKLENBQUM7SUFFRCx3QkFBd0I7SUFFakIscURBQVUsR0FBakIsVUFBa0IsS0FBb0I7UUFDbkMsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNoRTtJQUNKLENBQUM7SUFLRCxzQkFBVywrREFBaUI7UUFINUI7O1VBRUU7YUFDRjtZQUNHLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdkIsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLE9BQU8seUNBQXlDLENBQUM7Z0JBQ3JELEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO29CQUN0QixPQUFPLHVDQUF1QyxDQUFDO2dCQUNuRCxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztvQkFDckIsT0FBTyx3Q0FBd0MsQ0FBQztnQkFDcEQ7b0JBQ0ksT0FBTyxFQUFFLENBQUM7YUFDakI7UUFDSixDQUFDOzs7T0FBQTs7Z0RBdERXLElBQUksWUFBSSxNQUFNLFNBQUMsNkJBQTZCO2dCQUFtRCxpQkFBaUI7Z0JBQ3pHLFVBQVU7O0lBM0g5QjtRQURDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQzs7O3dFQUc1QztJQXlCRDtRQUZDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztRQUM5QixLQUFLLEVBQUU7O2dFQUNRO0lBa0JoQjtRQUZDLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDeEIsS0FBSyxFQUFFOztrRUFDZ0I7SUF3QnhCO1FBREMsS0FBSyxFQUFFOzswRUFDZ0Q7SUFnQnhEO1FBREMsTUFBTSxFQUFFOzsyRUFDMkQ7SUFNbkU7UUFEQyxXQUFXLENBQUMsbUNBQW1DLENBQUM7O3NFQUNEO0lBTWhEO1FBREMsV0FBVyxDQUFDLDZDQUE2QyxDQUFDOzs7c0VBR3REO0lBcUJOO1FBRkMsS0FBSyxFQUFFO1FBQ1AsV0FBVyxDQUFDLHFDQUFxQyxDQUFDOztzRUFDM0I7SUFjdkI7UUFKQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7eUNBQ1osS0FBSzs7b0VBUTFCO0lBSUY7UUFEQyxZQUFZLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7eUNBQzFCLGFBQWE7O3FFQUtuQztJQUlEO1FBREMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7O3lDQUN2QixhQUFhOztzRUFLckM7SUFoTE8sZ0NBQWdDO1FBSjVDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSw0QkFBNEI7WUFDdEMsZ3dCQUFvRDtTQUN2RCxDQUFDO1FBMkllLFdBQUEsSUFBSSxFQUFFLENBQUEsRUFBRSxXQUFBLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO2lEQUFrRCxpQkFBaUI7WUFDekcsVUFBVTtPQTNJckIsZ0NBQWdDLENBaU01QztJQUFELHVDQUFDO0NBQUEsQUFqTUQsSUFpTUM7U0FqTVksZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgSG9zdCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT3V0cHV0LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hFeHBhbnNpb25QYW5lbEljb25EaXJlY3RpdmUgfSBmcm9tICcuL2V4cGFuc2lvbi1wYW5lbC5kaXJlY3RpdmVzJztcbmltcG9ydCB7IElFeHBhbnNpb25QYW5lbEV2ZW50QXJncywgSUdYX0VYUEFOU0lPTl9QQU5FTF9DT01QT05FTlQsIElneEV4cGFuc2lvblBhbmVsQmFzZSB9IGZyb20gJy4vZXhwYW5zaW9uLXBhbmVsLmNvbW1vbic7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZW51bSBJQ09OX1BPU0lUSU9OIHtcbiAgICBMRUZUID0gJ2xlZnQnLFxuICAgIE5PTkUgPSAnbm9uZScsXG4gICAgUklHSFQgPSAncmlnaHQnXG59XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICdleHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCB7XG4gICAgIC8vIHByb3BlcnRpZXMgc2VjdGlvblxuICAgIHByaXZhdGUgX2ljb25UZW1wbGF0ZSA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYGlkYCBvZiB0aGUgZXhwYW5zaW9uIHBhbmVsIGhlYWRlci5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHBhbmVsSGVhZGVySWQgPSAgdGhpcy5wYW5lbC5oZWFkZXIuaWQ7XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGlkID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hFeHBhbnNpb25QYW5lbEljb25EaXJlY3RpdmUpXG4gICAgcHVibGljIHNldCBpY29uVGVtcGxhdGUodmFsOiBhbnkpIHtcbiAgICAgICAgdGhpcy5faWNvblRlbXBsYXRlID0gPGJvb2xlYW4+dmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGljb25UZW1wbGF0ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5faWNvblRlbXBsYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB0aGUgYGFyaWEtbGV2ZWxgIGF0dHJpYnV0ZSBvZiB0aGUgaGVhZGVyXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBjdXJyZW50QXJpYUxldmVsID0gdGhpcy5wYW5lbC5oZWFkZXIubHY7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICB0aGlzLnBhbmVsLmhlYWRlci5sdiA9ICc1JztcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBbbHZdPVwibXlDdXN0b21MZXZlbFwiPjwvaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGV2ZWwnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGx2ID0gJzMnO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBgcm9sZWAgYXR0cmlidXRlIG9mIHRoZSBoZWFkZXJcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1cnJlbnRSb2xlID0gdGhpcy5wYW5lbC5oZWFkZXIucm9sZTtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIHRoaXMucGFuZWwuaGVhZGVyLnJvbGUgPSAnNSc7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgW3JvbGVdPVwiJ2N1c3RvbSdcIj48L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByb2xlID0gJ2hlYWRpbmcnO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29udHJvbHMgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhbmVsLmlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIGV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgZXhwYW5kL2NvbGxhcHNlIGljb25cbiAgICAgKiBBY2NlcHRzIGBsZWZ0YCwgYHJpZ2h0YCBvciBgbm9uZWBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1cnJlbnRJY29uUG9zaXRpb24gPSB0aGlzLnBhbmVsLmhlYWRlci5pY29uUG9zaXRpb247XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICB0aGlzLnBhbmVsLmhlYWRlci5pY29uUG9zaXRpb24gPSAnbGVmdCc7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgW2ljb25Qb3NpdGlvbl09XCIncmlnaHQnXCI+PC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpY29uUG9zaXRpb246IElDT05fUE9TSVRJT04gPSBJQ09OX1BPU0lUSU9OLkxFRlQ7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW5ldmVyIGEgdXNlciBpbnRlcmFjdHMgd2l0aCB0aGUgaGVhZGVyIGhvc3RcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGhhbmRsZUludGVyYWN0aW9uKGV2ZW50OiBJRXhwYW5zaW9uUGFuZWxFdmVudEFyZ3MpIHtcbiAgICAgKiAgLi4uXG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIChvbkludGVyYWN0aW9uKT1cImhhbmRsZUludGVyYWN0aW9uKCRldmVudClcIj5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkludGVyYWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxJRXhwYW5zaW9uUGFuZWxFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyJylcbiAgICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlcic7XG5cbiAgICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlci0tZXhwYW5kZWQnKVxuICAgICBwdWJsaWMgZ2V0IGlzRXhwYW5kZWQgKCkge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLnBhbmVsLmNvbGxhcHNlZDtcbiAgICAgICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB0aGUgd2hldGhlciB0aGUgaGVhZGVyIGlzIGRpc2FibGVkXG4gICAgICogV2hlbiBkaXNhYmxlZCwgdGhlIGhlYWRlciB3aWxsIG5vdCBoYW5kbGUgdXNlciBldmVudHMgYW5kIHdpbGwgc3RvcCB0aGVpciBwcm9wYWdhdGlvblxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5wYW5lbC5oZWFkZXIuZGlzYWJsZWQ7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICB0aGlzLnBhbmVsLmhlYWRlci5kaXNhYmxlZCA9IHRydWU7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgW2Rpc2FibGVkXT1cInRydWVcIj5cbiAgICAgKiAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWwtLWRpc2FibGVkJylcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKEBIb3N0KCkgQEluamVjdChJR1hfRVhQQU5TSU9OX1BBTkVMX0NPTVBPTkVOVCkgcHVibGljIHBhbmVsOiBJZ3hFeHBhbnNpb25QYW5lbEJhc2UsIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgICAgICAgdGhpcy5pZCA9IGAke3RoaXMucGFuZWwuaWR9LWhlYWRlcmA7XG4gICAgIH1cblxuICAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uRW50ZXInLCBbJyRldmVudCddKVxuICAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLlNwYWNlJywgWyckZXZlbnQnXSlcbiAgICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5TcGFjZWJhcicsIFsnJGV2ZW50J10pXG4gICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICAgcHVibGljIG9uQWN0aW9uKGV2dD86IEV2ZW50KSB7XG4gICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgfVxuICAgICAgICAgdGhpcy5vbkludGVyYWN0aW9uLmVtaXQoeyBldmVudDogZXZ0LCBwYW5lbDogdGhpcy5wYW5lbCB9KTtcbiAgICAgICAgIHRoaXMucGFuZWwudG9nZ2xlKGV2dCk7XG4gICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BbHQuQXJyb3dEb3duJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb3BlblBhbmVsKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMucGFuZWwuZXhwYW5kKGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMub25JbnRlcmFjdGlvbi5lbWl0KHsgZXZlbnQ6IGV2ZW50LCBwYW5lbDogdGhpcy5wYW5lbCB9KTtcbiAgICAgICAgfVxuICAgICB9XG5cbiAgICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQWx0LkFycm93VXAnLCBbJyRldmVudCddKVxuICAgICBwdWJsaWMgY2xvc2VQYW5lbChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICB0aGlzLnBhbmVsLmNvbGxhcHNlKGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMub25JbnRlcmFjdGlvbi5lbWl0KHsgZXZlbnQ6IGV2ZW50LCBwYW5lbDogdGhpcy5wYW5lbCB9KTtcbiAgICAgICAgfVxuICAgICB9XG5cbiAgICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgICBwdWJsaWMgZ2V0IGljb25Qb3NpdGlvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pY29uUG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgKElDT05fUE9TSVRJT04uTEVGVCk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXItaWNvbi0tc3RhcnRgO1xuICAgICAgICAgICAgY2FzZSAoSUNPTl9QT1NJVElPTi5SSUdIVCk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXItaWNvbi0tZW5kYDtcbiAgICAgICAgICAgIGNhc2UgKElDT05fUE9TSVRJT04uTk9ORSk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXItaWNvbi0tbm9uZWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICB9XG59XG4iXX0=