@taiga-ui/kit
Version:
Taiga UI Angular main components kit
157 lines • 20.1 kB
JavaScript
import { __decorate, __extends, __param } from "tslib";
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, forwardRef, HostBinding, Inject, Input, Output, ViewChild, } from '@angular/core';
import { AbstractTuiInteractive, isNativeFocused, TUI_FOCUSABLE_ITEM_ACCESSOR, tuiDefaultProp, } from '@taiga-ui/cdk';
import { MODE_PROVIDER, TUI_MODE } from '@taiga-ui/core';
import { Observable } from 'rxjs';
import { TuiAccordionItemContentDirective } from './accordion-item-content.directive';
var TuiAccordionItemComponent = /** @class */ (function (_super) {
__extends(TuiAccordionItemComponent, _super);
function TuiAccordionItemComponent(changeDetectorRef, mode$) {
var _this = _super.call(this) || this;
_this.changeDetectorRef = changeDetectorRef;
_this.mode$ = mode$;
_this.noPadding = false;
_this.showArrow = true;
_this.borders = "all" /* All */;
_this.size = 'm';
_this.disabled = false;
_this.disableHover = false;
_this.open = false;
_this.async = false;
_this.openChange = new EventEmitter();
return _this;
}
TuiAccordionItemComponent_1 = TuiAccordionItemComponent;
Object.defineProperty(TuiAccordionItemComponent.prototype, "nativeFocusableElement", {
get: function () {
return this.disabled || !this.focusableElement
? null
: this.focusableElement.nativeElement;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiAccordionItemComponent.prototype, "focused", {
get: function () {
return isNativeFocused(this.nativeFocusableElement);
},
enumerable: true,
configurable: true
});
TuiAccordionItemComponent.prototype.onHovered = function (hovered) {
if (!this.disableHover) {
this.updateHovered(hovered);
}
};
TuiAccordionItemComponent.prototype.onFocused = function (focused) {
this.updateFocused(focused);
};
TuiAccordionItemComponent.prototype.onFocusVisible = function (focusVisible) {
this.updateFocusVisible(focusVisible);
};
TuiAccordionItemComponent.prototype.onRowToggle = function () {
if (this.disabled) {
return;
}
this.updateOpen(!this.open);
};
TuiAccordionItemComponent.prototype.onItemKeyDownEsc = function (event) {
if (!this.focused || !this.open) {
return;
}
event.stopPropagation();
this.updateOpen(false);
};
TuiAccordionItemComponent.prototype.onItemKeyDownSpace = function (event) {
if (!this.focused) {
return;
}
event.preventDefault();
this.onRowToggle();
};
TuiAccordionItemComponent.prototype.close = function () {
this.updateOpen(false);
this.changeDetectorRef.markForCheck();
};
TuiAccordionItemComponent.prototype.updateOpen = function (open) {
if (this.open === open) {
return;
}
this.open = open;
this.openChange.emit(open);
};
var TuiAccordionItemComponent_1;
TuiAccordionItemComponent.ctorParameters = function () { return [
{ type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
{ type: Observable, decorators: [{ type: Inject, args: [TUI_MODE,] }] }
]; };
__decorate([
Input(),
HostBinding('class._no-padding'),
tuiDefaultProp()
], TuiAccordionItemComponent.prototype, "noPadding", void 0);
__decorate([
Input(),
HostBinding('class._has-arrow'),
tuiDefaultProp()
], TuiAccordionItemComponent.prototype, "showArrow", void 0);
__decorate([
Input(),
HostBinding('attr.data-tui-host-borders'),
tuiDefaultProp()
], TuiAccordionItemComponent.prototype, "borders", void 0);
__decorate([
Input(),
HostBinding('attr.data-tui-host-size'),
tuiDefaultProp()
], TuiAccordionItemComponent.prototype, "size", void 0);
__decorate([
Input(),
HostBinding('class._disabled'),
tuiDefaultProp()
], TuiAccordionItemComponent.prototype, "disabled", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiAccordionItemComponent.prototype, "disableHover", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiAccordionItemComponent.prototype, "open", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiAccordionItemComponent.prototype, "async", void 0);
__decorate([
Output()
], TuiAccordionItemComponent.prototype, "openChange", void 0);
__decorate([
ContentChild(TuiAccordionItemContentDirective)
], TuiAccordionItemComponent.prototype, "content", void 0);
__decorate([
ViewChild('focusableElement')
], TuiAccordionItemComponent.prototype, "focusableElement", void 0);
TuiAccordionItemComponent = TuiAccordionItemComponent_1 = __decorate([
Component({
selector: 'tui-accordion-item',
template: "<div\n #focusableElement\n automation-id=\"tui-accordion__item-wrapper\"\n class=\"wrapper\"\n [tuiFocusable]=\"computedFocusable\"\n (tuiFocusVisibleChange)=\"onFocusVisible($event)\"\n (tuiFocusedChange)=\"onFocused($event)\"\n (keydown.space)=\"onItemKeyDownSpace($event)\"\n (keydown.enter)=\"onItemKeyDownSpace($event)\"\n (keydown.esc)=\"onItemKeyDownEsc($event)\"\n>\n <div\n automation-id=\"tui-accordion__item-header\"\n class=\"header\"\n [class.header_open]=\"open\"\n (tuiHoveredChange)=\"onHovered($event)\"\n (click)=\"onRowToggle()\"\n >\n <div class=\"title\" automation-id=\"tui-accordion__item-title\">\n <ng-content></ng-content>\n </div>\n <tui-svg\n *ngIf=\"showArrow\"\n automation-id=\"tui-accordion__item-arrow\"\n class=\"icon\"\n src=\"tuiIconChevronDownLarge\"\n [class.icon_open]=\"open\"\n ></tui-svg>\n </div>\n <tui-expand [async]=\"async\" [expanded]=\"open\">\n <ng-template tuiExpandContent>\n <div\n polymorpheus-outlet\n automation-id=\"tui-accordion__item-content\"\n class=\"content\"\n [content]=\"content\"\n ></div>\n </ng-template>\n </tui-expand>\n</div>\n",
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [
{
provide: TUI_FOCUSABLE_ITEM_ACCESSOR,
useExisting: forwardRef(function () { return TuiAccordionItemComponent_1; }),
},
MODE_PROVIDER,
],
host: {
'($.data-mode.attr)': 'mode$',
},
styles: [":host{position:relative;display:block;overflow:hidden;border-radius:var(--tui-radius-l)}:host[data-tui-host-borders=top-bottom]{border-radius:0!important}.wrapper{position:relative;border-radius:inherit}.wrapper:focus{outline:0}.wrapper:after{position:absolute;top:0;left:0;width:100%;height:100%;content:'';box-sizing:border-box;border-radius:inherit;border:1px solid var(--tui-base-04);pointer-events:none}:host:not([data-tui-host-borders]) .wrapper:after{border-width:0}:host[data-tui-host-borders=all] .wrapper:after{border-width:1px}:host[data-tui-host-borders=top-bottom] .wrapper:after{border-left-width:0;border-right-width:0}:host[data-tui-host-borders=top] .wrapper:after{border-left-width:0;border-right-width:0;border-bottom-width:0}:host[data-tui-host-borders=bottom] .wrapper:after{border-left-width:0;border-right-width:0;border-top-width:0}:host[data-mode=onDark] .wrapper:after{border-color:var(--tui-base-03)}:host[data-mode=onLight] .wrapper:after{border-color:var(--tui-text-01)}:host._focus-visible .wrapper:after{border:2px solid var(--tui-focus)}:host:not([data-mode]) .wrapper{background:var(--tui-base-01)}.header{font:var(--tui-font-text-l);transition-property:background;transition-duration:.3s;transition-timing-function:ease-in-out;display:flex;align-items:center;box-sizing:border-box;border-bottom:1px solid var(--tui-base-04);min-height:var(--tui-height-l);padding:12px 20px;color:var(--tui-text-01);cursor:pointer}:host[data-mode=onDark] .header{color:var(--tui-text-01-night);border-color:var(--tui-base-03)}:host[data-mode=onLight] .header{border-color:var(--tui-text-01)}:host:not([data-tui-host-borders]) .header{border-bottom-width:0;box-shadow:none}:host._has-arrow .header{padding-right:12px}:host._hovered:not([data-mode]) .header{background:var(--tui-base-02)}:host._hovered[data-mode=onDark] .header,:host[data-mode=onDark] .header_open{background:var(--tui-clear-inverse)}:host._hovered[data-mode=onLight] .header,:host[data-mode=onLight] .header_open{background:var(--tui-clear)}:host[data-tui-host-size='s'] .header{font:var(--tui-font-text-m);min-height:var(--tui-height-m);padding:10px 12px 10px 16px}:host._no-padding .header{padding-left:0;padding-right:0}:host._disabled .header{cursor:default}.title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:0;flex-grow:1}:host._has-arrow .title{margin-right:8px}.icon{transition-property:transform,color;transition-duration:.3s;transition-timing-function:ease-in-out;width:24px;height:24px;margin-left:auto;color:var(--tui-base-06)}.icon_open{transform:rotate(180deg)}:host[data-mode] .icon{opacity:var(--tui-disabled-opacity)}:host._hovered[data-mode] .icon{opacity:.8}:host[data-mode=onDark] .icon{color:var(--tui-text-01-night)}:host[data-mode=onLight] .icon{color:var(--tui-text-01)}:host._hovered:not([data-mode]) .icon{color:var(--tui-base-07)}.content{font:var(--tui-font-text-m);padding:20px;word-wrap:break-word}:host[data-tui-host-size='s'] .content{font:var(--tui-font-text-s);padding:16px}"]
}),
__param(0, Inject(ChangeDetectorRef)),
__param(1, Inject(TUI_MODE))
], TuiAccordionItemComponent);
return TuiAccordionItemComponent;
}(AbstractTuiInteractive));
export { TuiAccordionItemComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2FjY29yZGlvbi8iLCJzb3VyY2VzIjpbImFjY29yZGlvbi1pdGVtL2FjY29yZGlvbi1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLDJCQUEyQixFQUMzQixjQUFjLEdBR2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUUsUUFBUSxFQUEwQixNQUFNLGdCQUFnQixDQUFDO0FBRWhGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFrQnBGO0lBQ1ksNkNBQXNCO0lBZ0Q5QixtQ0FDZ0QsaUJBQW9DLEVBQ3JELEtBQXVDO1FBRnRFLFlBSUksaUJBQU8sU0FDVjtRQUorQyx1QkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3JELFdBQUssR0FBTCxLQUFLLENBQWtDO1FBN0N0RSxlQUFTLEdBQUcsS0FBSyxDQUFDO1FBS2xCLGVBQVMsR0FBRyxJQUFJLENBQUM7UUFLakIsYUFBTyxtQkFBcUM7UUFLNUMsVUFBSSxHQUFhLEdBQUcsQ0FBQztRQUtyQixjQUFRLEdBQUcsS0FBSyxDQUFDO1FBSWpCLGtCQUFZLEdBQUcsS0FBSyxDQUFDO1FBSXJCLFVBQUksR0FBRyxLQUFLLENBQUM7UUFJYixXQUFLLEdBQUcsS0FBSyxDQUFDO1FBR0ws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QUNQLGNBQWMsRUFBRTttRUFDSTtJQUlyQjtRQUZDLEtBQUssRUFBRTtRQUNQLGNBQWMsRUFBRTsyREFDSjtJQUliO1FBRkMsS0FBSyxFQUFFO1FBQ1AsY0FBYyxFQUFFOzREQUNIO0lBR2Q7UUFEQyxNQUFNLEVBQUU7aUVBQ3lDO0lBR2xEO1FBREMsWUFBWSxDQUFDLGdDQUFnQyxDQUFDOzhEQUNLO0lBR3BEO1FBREMsU0FBUyxDQUFDLGtCQUFrQixDQUFDO3VFQUM0QztJQS9DakUseUJBQXlCO1FBaEJyQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLGsyQ0FBNkM7WUFFN0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07WUFDL0MsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSwyQkFBMkI7b0JBQ3BDLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLDJCQUF5QixFQUF6QixDQUF5QixDQUFDO2lCQUMzRDtnQkFDRCxhQUFhO2FBQ2hCO1lBQ0QsSUFBSSxFQUFFO2dCQUNGLG9CQUFvQixFQUFFLE9BQU87YUFDaEM7O1NBQ0osQ0FBQztRQW1ETyxXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3pCLFdBQUEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO09BbkRaLHlCQUF5QixDQXVIckM7SUFBRCxnQ0FBQztDQUFBLEFBdkhELENBQ1ksc0JBQXNCLEdBc0hqQztTQXZIWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpSW50ZXJhY3RpdmUsXG4gICAgaXNOYXRpdmVGb2N1c2VkLFxuICAgIFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgVHVpTmF0aXZlRm9jdXNhYmxlRWxlbWVudCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge01PREVfUFJPVklERVIsIFRVSV9NT0RFLCBUdWlCcmlnaHRuZXNzLCBUdWlTaXplU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlCb3JkZXJzfSBmcm9tICdAdGFpZ2EtdWkva2l0L2VudW1zJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1R1aUFjY29yZGlvbkl0ZW1Db250ZW50RGlyZWN0aXZlfSBmcm9tICcuL2FjY29yZGlvbi1pdGVtLWNvbnRlbnQuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktYWNjb3JkaW9uLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hY2NvcmRpb24taXRlbS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hY2NvcmRpb24taXRlbS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aUFjY29yZGlvbkl0ZW1Db21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgICBNT0RFX1BST1ZJREVSLFxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnKCQuZGF0YS1tb2RlLmF0dHIpJzogJ21vZGUkJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlBY2NvcmRpb25JdGVtQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUludGVyYWN0aXZlXG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3Ige1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5fbm8tcGFkZGluZycpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBub1BhZGRpbmcgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5faGFzLWFycm93JylcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNob3dBcnJvdyA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR1aS1ob3N0LWJvcmRlcnMnKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgYm9yZGVyczogVHVpQm9yZGVycyB8IG51bGwgPSBUdWlCb3JkZXJzLkFsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdHVpLWhvc3Qtc2l6ZScpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzaXplOiBUdWlTaXplUyA9ICdtJztcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5fZGlzYWJsZWQnKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBkaXNhYmxlSG92ZXIgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgYXN5bmMgPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAQ29udGVudENoaWxkKFR1aUFjY29yZGlvbkl0ZW1Db250ZW50RGlyZWN0aXZlKVxuICAgIHJlYWRvbmx5IGNvbnRlbnQ/OiBUdWlBY2NvcmRpb25JdGVtQ29udGVudERpcmVjdGl2ZTtcblxuICAgIEBWaWV3Q2hpbGQoJ2ZvY3VzYWJsZUVsZW1lbnQnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNhYmxlRWxlbWVudD86IEVsZW1lbnRSZWY8VHVpTmF0aXZlRm9jdXNhYmxlRWxlbWVudD47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoVFVJX01PREUpIHJlYWRvbmx5IG1vZGUkOiBPYnNlcnZhYmxlPFR1aUJyaWdodG5lc3MgfCBudWxsPixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBUdWlOYXRpdmVGb2N1c2FibGVFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8ICF0aGlzLmZvY3VzYWJsZUVsZW1lbnRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLmZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzTmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uSG92ZXJlZChob3ZlcmVkOiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlSG92ZXIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSG92ZXJlZChob3ZlcmVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRm9jdXNlZChmb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzVmlzaWJsZShmb2N1c1Zpc2libGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c1Zpc2libGUoZm9jdXNWaXNpYmxlKTtcbiAgICB9XG5cbiAgICBvblJvd1RvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlT3BlbighdGhpcy5vcGVuKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1LZXlEb3duRXNjKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5mb2N1c2VkIHx8ICF0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnVwZGF0ZU9wZW4oZmFsc2UpO1xuICAgIH1cblxuICAgIG9uSXRlbUtleURvd25TcGFjZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5vblJvd1RvZ2dsZSgpO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU9wZW4oZmFsc2UpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlT3BlbihvcGVuOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLm9wZW4gPT09IG9wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3BlbiA9IG9wZW47XG4gICAgICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KG9wZW4pO1xuICAgIH1cbn1cbiJdfQ==