UNPKG

@taiga-ui/kit

Version:
157 lines • 20.1 kB
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==