UNPKG

@catull/igniteui-angular

Version:

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

268 lines 23.3 kB
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLElBQUksRUFDSixZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUUsT0FBTyxFQUE0Qiw2QkFBNkIsRUFBeUIsTUFBTSwwQkFBMEIsQ0FBQztBQUUxSDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsOEJBQWEsQ0FBQTtJQUNiLDhCQUFhLENBQUE7SUFDYixnQ0FBZSxDQUFBO0FBQ25CLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QjtBQU9EO0lBMElJLDBDQUFrRSxLQUE0QixFQUFTLEdBQXNCLEVBQ3JILFVBQXNCO1FBRG9DLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDckgsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQTFJN0IscUJBQXFCO1FBQ2Qsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDOUI7Ozs7OztXQU1HO1FBQ0ksT0FBRSxHQUFHLEVBQUUsQ0FBQztRQWlCZjs7Ozs7Ozs7Ozs7OztXQWFHO1FBR0ksT0FBRSxHQUFHLEdBQUcsQ0FBQztRQUVoQjs7Ozs7Ozs7Ozs7OztXQWFHO1FBR0ksU0FBSSxHQUFHLFNBQVMsQ0FBQztRQVN4Qjs7Ozs7Ozs7Ozs7OztXQWFHO1FBRUksaUJBQVks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OlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgSG9zdCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT3V0cHV0LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hFeHBhbnNpb25QYW5lbEljb25EaXJlY3RpdmUgfSBmcm9tICcuL2V4cGFuc2lvbi1wYW5lbC5kaXJlY3RpdmVzJztcbmltcG9ydCB7IElFeHBhbnNpb25QYW5lbEV2ZW50QXJncywgSUdYX0VYUEFOU0lPTl9QQU5FTF9DT01QT05FTlQsIElneEV4cGFuc2lvblBhbmVsQmFzZSB9IGZyb20gJy4vZXhwYW5zaW9uLXBhbmVsLmNvbW1vbic7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZW51bSBJQ09OX1BPU0lUSU9OIHtcbiAgICBMRUZUID0gJ2xlZnQnLFxuICAgIE5PTkUgPSAnbm9uZScsXG4gICAgUklHSFQgPSAncmlnaHQnXG59XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICdleHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCB7XG4gICAgIC8vIHByb3BlcnRpZXMgc2VjdGlvblxuICAgIHByaXZhdGUgX2ljb25UZW1wbGF0ZSA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYGlkYCBvZiB0aGUgZXhwYW5zaW9uIHBhbmVsIGhlYWRlci5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHBhbmVsSGVhZGVySWQgPSAgdGhpcy5wYW5lbC5oZWFkZXIuaWQ7XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGlkID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hFeHBhbnNpb25QYW5lbEljb25EaXJlY3RpdmUpXG4gICAgcHVibGljIHNldCBpY29uVGVtcGxhdGUodmFsOiBhbnkpIHtcbiAgICAgICAgdGhpcy5faWNvblRlbXBsYXRlID0gPGJvb2xlYW4+dmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGljb25UZW1wbGF0ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5faWNvblRlbXBsYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB0aGUgYGFyaWEtbGV2ZWxgIGF0dHJpYnV0ZSBvZiB0aGUgaGVhZGVyXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBjdXJyZW50QXJpYUxldmVsID0gdGhpcy5wYW5lbC5oZWFkZXIubHY7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICB0aGlzLnBhbmVsLmhlYWRlci5sdiA9ICc1JztcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBbbHZdPVwibXlDdXN0b21MZXZlbFwiPjwvaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGV2ZWwnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGx2ID0gJzMnO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBgcm9sZWAgYXR0cmlidXRlIG9mIHRoZSBoZWFkZXJcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1cnJlbnRSb2xlID0gdGhpcy5wYW5lbC5oZWFkZXIucm9sZTtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIHRoaXMucGFuZWwuaGVhZGVyLnJvbGUgPSAnNSc7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgW3JvbGVdPVwiJ2N1c3RvbSdcIj48L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByb2xlID0gJ2hlYWRpbmcnO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29udHJvbHMgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhbmVsLmlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIGV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgZXhwYW5kL2NvbGxhcHNlIGljb25cbiAgICAgKiBBY2NlcHRzIGBsZWZ0YCwgYHJpZ2h0YCBvciBgbm9uZWBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1cnJlbnRJY29uUG9zaXRpb24gPSB0aGlzLnBhbmVsLmhlYWRlci5pY29uUG9zaXRpb247XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICB0aGlzLnBhbmVsLmhlYWRlci5pY29uUG9zaXRpb24gPSAnbGVmdCc7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgW2ljb25Qb3NpdGlvbl09XCIncmlnaHQnXCI+PC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpY29uUG9zaXRpb246IElDT05fUE9TSVRJT04gPSBJQ09OX1BPU0lUSU9OLkxFRlQ7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW5ldmVyIGEgdXNlciBpbnRlcmFjdHMgd2l0aCB0aGUgaGVhZGVyIGhvc3RcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGhhbmRsZUludGVyYWN0aW9uKGV2ZW50OiBJRXhwYW5zaW9uUGFuZWxFdmVudEFyZ3MpIHtcbiAgICAgKiAgLi4uXG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIChvbkludGVyYWN0aW9uKT1cImhhbmRsZUludGVyYWN0aW9uKCRldmVudClcIj5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkludGVyYWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxJRXhwYW5zaW9uUGFuZWxFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyJylcbiAgICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlcic7XG5cbiAgICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlci0tZXhwYW5kZWQnKVxuICAgICBwdWJsaWMgZ2V0IGlzRXhwYW5kZWQgKCkge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLnBhbmVsLmNvbGxhcHNlZDtcbiAgICAgICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB0aGUgd2hldGhlciB0aGUgaGVhZGVyIGlzIGRpc2FibGVkXG4gICAgICogV2hlbiBkaXNhYmxlZCwgdGhlIGhlYWRlciB3aWxsIG5vdCBoYW5kbGUgdXNlciBldmVudHMgYW5kIHdpbGwgc3RvcCB0aGVpciBwcm9wYWdhdGlvblxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5wYW5lbC5oZWFkZXIuZGlzYWJsZWQ7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICB0aGlzLnBhbmVsLmhlYWRlci5kaXNhYmxlZCA9IHRydWU7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgW2Rpc2FibGVkXT1cInRydWVcIj5cbiAgICAgKiAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWwtLWRpc2FibGVkJylcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKEBIb3N0KCkgQEluamVjdChJR1hfRVhQQU5TSU9OX1BBTkVMX0NPTVBPTkVOVCkgcHVibGljIHBhbmVsOiBJZ3hFeHBhbnNpb25QYW5lbEJhc2UsIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgICAgICAgdGhpcy5pZCA9IGAke3RoaXMucGFuZWwuaWR9LWhlYWRlcmA7XG4gICAgIH1cblxuICAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uRW50ZXInLCBbJyRldmVudCddKVxuICAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLlNwYWNlJywgWyckZXZlbnQnXSlcbiAgICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5TcGFjZWJhcicsIFsnJGV2ZW50J10pXG4gICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICAgcHVibGljIG9uQWN0aW9uKGV2dD86IEV2ZW50KSB7XG4gICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgfVxuICAgICAgICAgdGhpcy5vbkludGVyYWN0aW9uLmVtaXQoeyBldmVudDogZXZ0LCBwYW5lbDogdGhpcy5wYW5lbCB9KTtcbiAgICAgICAgIHRoaXMucGFuZWwudG9nZ2xlKGV2dCk7XG4gICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BbHQuQXJyb3dEb3duJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb3BlblBhbmVsKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMucGFuZWwuZXhwYW5kKGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMub25JbnRlcmFjdGlvbi5lbWl0KHsgZXZlbnQ6IGV2ZW50LCBwYW5lbDogdGhpcy5wYW5lbCB9KTtcbiAgICAgICAgfVxuICAgICB9XG5cbiAgICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQWx0LkFycm93VXAnLCBbJyRldmVudCddKVxuICAgICBwdWJsaWMgY2xvc2VQYW5lbChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICB0aGlzLnBhbmVsLmNvbGxhcHNlKGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMub25JbnRlcmFjdGlvbi5lbWl0KHsgZXZlbnQ6IGV2ZW50LCBwYW5lbDogdGhpcy5wYW5lbCB9KTtcbiAgICAgICAgfVxuICAgICB9XG5cbiAgICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgICBwdWJsaWMgZ2V0IGljb25Qb3NpdGlvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pY29uUG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgKElDT05fUE9TSVRJT04uTEVGVCk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXItaWNvbi0tc3RhcnRgO1xuICAgICAgICAgICAgY2FzZSAoSUNPTl9QT1NJVElPTi5SSUdIVCk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXItaWNvbi0tZW5kYDtcbiAgICAgICAgICAgIGNhc2UgKElDT05fUE9TSVRJT04uTk9ORSk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXItaWNvbi0tbm9uZWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICB9XG59XG4iXX0=