@taiga-ui/kit
Version:
Taiga UI Angular main components kit
146 lines • 18.8 kB
JavaScript
import { __decorate, __extends, __param } from "tslib";
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, HostBinding, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
import { NgControl } from '@angular/forms';
import { AbstractTuiNullableControl, TUI_DEFAULT_IDENTITY_MATCHER, TUI_FOCUSABLE_ITEM_ACCESSOR, tuiDefaultProp, } from '@taiga-ui/cdk';
import { TuiAppearance, TuiHorizontalDirection, TuiModeDirective, TuiSizeL, TuiSizeS, } from '@taiga-ui/core';
import { TuiRadioComponent } from '@taiga-ui/kit/components/radio';
var TuiRadioBlockComponent = /** @class */ (function (_super) {
__extends(TuiRadioBlockComponent, _super);
function TuiRadioBlockComponent(control, changeDetectorRef, modeDirective) {
var _this = _super.call(this, control, changeDetectorRef) || this;
_this.modeDirective = modeDirective;
_this.identityMatcher = TUI_DEFAULT_IDENTITY_MATCHER;
_this.contentAlign = 'right';
_this.size = 'l';
_this.hideRadio = false;
_this.pseudoDisabled = false;
return _this;
}
TuiRadioBlockComponent_1 = TuiRadioBlockComponent;
Object.defineProperty(TuiRadioBlockComponent.prototype, "nativeFocusableElement", {
get: function () {
return this.radio ? this.radio.nativeFocusableElement : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiRadioBlockComponent.prototype, "focused", {
get: function () {
return !!this.radio && this.radio.focused;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiRadioBlockComponent.prototype, "computedDisabled", {
get: function () {
return this.disabled || this.pseudoDisabled;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiRadioBlockComponent.prototype, "checked", {
get: function () {
return this.value === this.item && this.hideRadio;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiRadioBlockComponent.prototype, "checkboxSize", {
get: function () {
return this.size === 'l' ? 'l' : 'm';
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiRadioBlockComponent.prototype, "appearance", {
get: function () {
if (!this.modeDirective || !this.modeDirective.mode) {
return this.checked
? "whiteblock-active" /* WhiteblockActive */
: "whiteblock" /* Whiteblock */;
}
return this.checked ? "primary" /* Primary */ : "secondary" /* Secondary */;
},
enumerable: true,
configurable: true
});
TuiRadioBlockComponent.prototype.onFocused = function (focused) {
this.updateFocused(focused);
};
TuiRadioBlockComponent.prototype.onHovered = function (hovered) {
this.updateHovered(hovered);
};
TuiRadioBlockComponent.prototype.onPressed = function (pressed) {
this.updatePressed(pressed);
};
TuiRadioBlockComponent.prototype.onFocusVisible = function (focusVisible) {
this.updateFocusVisible(focusVisible);
};
TuiRadioBlockComponent.prototype.onModelChange = function (value) {
this.updateValue(value);
};
var TuiRadioBlockComponent_1;
TuiRadioBlockComponent.ctorParameters = function () { return [
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
{ type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
{ type: TuiModeDirective, decorators: [{ type: Optional }, { type: Inject, args: [TuiModeDirective,] }] }
]; };
__decorate([
Input()
], TuiRadioBlockComponent.prototype, "item", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiRadioBlockComponent.prototype, "identityMatcher", void 0);
__decorate([
Input(),
HostBinding('attr.data-tui-host-align'),
tuiDefaultProp()
], TuiRadioBlockComponent.prototype, "contentAlign", void 0);
__decorate([
Input(),
HostBinding('attr.data-tui-host-size'),
tuiDefaultProp()
], TuiRadioBlockComponent.prototype, "size", void 0);
__decorate([
Input(),
HostBinding('class._hidden_radio'),
tuiDefaultProp()
], TuiRadioBlockComponent.prototype, "hideRadio", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiRadioBlockComponent.prototype, "pseudoDisabled", void 0);
__decorate([
ViewChild(TuiRadioComponent)
], TuiRadioBlockComponent.prototype, "radio", void 0);
__decorate([
HostBinding('class._disabled')
], TuiRadioBlockComponent.prototype, "computedDisabled", null);
__decorate([
HostBinding('class._active')
], TuiRadioBlockComponent.prototype, "checked", null);
TuiRadioBlockComponent = TuiRadioBlockComponent_1 = __decorate([
Component({
selector: 'tui-radio-block',
template: "<label\n class=\"wrapper\"\n (tuiHoveredChange)=\"onHovered($event)\"\n (tuiPressedChange)=\"onPressed($event)\"\n>\n <tui-wrapper\n [appearance]=\"appearance\"\n [disabled]=\"computedDisabled\"\n [focused]=\"computedFocusVisible\"\n [hovered]=\"computedHovered\"\n [pressed]=\"computedPressed\"\n [invalid]=\"computedInvalid\"\n >\n <div class=\"content-wrapper\">\n <div class=\"content\">\n <tui-radio\n class=\"view\"\n [focusable]=\"focusable\"\n [identityMatcher]=\"identityMatcher\"\n [item]=\"item\"\n [name]=\"computedName\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [pseudoDisabled]=\"computedDisabled\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoFocused]=\"false\"\n [pseudoHovered]=\"computedHovered\"\n [pseudoPressed]=\"computedPressed\"\n [size]=\"checkboxSize\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (focusedChange)=\"onFocused($event)\"\n (focusVisibleChange)=\"onFocusVisible($event)\"\n ></tui-radio>\n <div class=\"label\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </tui-wrapper>\n</label>\n",
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [
{
provide: TUI_FOCUSABLE_ITEM_ACCESSOR,
useExisting: forwardRef(function () { return TuiRadioBlockComponent_1; }),
},
],
styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);display:inline-block;vertical-align:top;border-radius:var(--tui-radius-m)}:host[data-tui-host-size='l'],:host[data-tui-host-size='m']{font:var(--tui-font-text-m)}:host._readonly{pointer-events:none}.wrapper{position:relative;border-radius:inherit;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host._disabled .wrapper{cursor:default}.content-wrapper{display:flex;flex-direction:column}:host[data-tui-host-size='s'] .content-wrapper{min-height:var(--tui-height-s)}:host[data-tui-host-size='m'] .content-wrapper{min-height:var(--tui-height-m)}:host[data-tui-host-size='l'] .content-wrapper{min-height:var(--tui-height-l)}.content{display:flex;align-items:center;min-height:inherit}:host[data-tui-host-align=right] .content{flex-direction:row-reverse}:host[data-tui-host-size='s'] .content{padding:0 16px 0 8px}:host[data-tui-host-size='s'][data-tui-host-align=right] .content{padding:0 8px 0 16px}:host[data-tui-host-size='s']._hidden_radio .content{padding:0 16px}:host[data-tui-host-size='m'] .content{padding:0 16px 0 12px}:host[data-tui-host-size='m'][data-tui-host-align=right] .content{padding:0 12px 0 16px}:host[data-tui-host-size='m']._hidden_radio .content{padding:0 24px}:host[data-tui-host-size='l'] .content{padding:0 16px}:host[data-tui-host-size='l']._hidden_radio .content{padding:0 36px}.view{margin-top:12px;margin-right:12px;align-self:flex-start}:host[data-tui-host-align=right] .view{margin-left:12px;margin-right:0}:host[data-tui-host-size='s'] .view{margin-top:8px;margin-right:8px}:host[data-tui-host-size='s'][data-tui-host-align=right] .view{margin-left:8px}:host[data-tui-host-size='m'] .view{margin-top:14px}:host[data-tui-host-size='l'] .view{margin-top:16px}:host[data-tui-host-size='l'][data-tui-host-align=right] .view{margin-left:16px;margin-right:0}:host._hidden_radio .view{position:absolute;height:1px;width:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(0,0,0,0);-webkit-clip-path:inset(0);clip-path:inset(0)}.label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-grow:1}:host._hidden_radio .label{text-align:center}"]
}),
__param(0, Optional()),
__param(0, Self()),
__param(0, Inject(NgControl)),
__param(1, Inject(ChangeDetectorRef)),
__param(2, Optional()),
__param(2, Inject(TuiModeDirective))
], TuiRadioBlockComponent);
return TuiRadioBlockComponent;
}(AbstractTuiNullableControl));
export { TuiRadioBlockComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYmxvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3JhZGlvLWJsb2NrLyIsInNvdXJjZXMiOlsicmFkaW8tYmxvY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLDRCQUE0QixFQUM1QiwyQkFBMkIsRUFDM0IsY0FBYyxHQUlqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsYUFBYSxFQUNiLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLFFBQVEsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBY2pFO0lBQ1ksMENBQTZCO0lBK0JyQyxnQ0FJSSxPQUF5QixFQUNFLGlCQUFvQyxFQUc5QyxhQUFzQztRQVIzRCxZQVVJLGtCQUFNLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxTQUNwQztRQUhvQixtQkFBYSxHQUFiLGFBQWEsQ0FBeUI7UUFoQzNELHFCQUFlLEdBQTBCLDRCQUE0QixDQUFDO1FBS3RFLGtCQUFZLEdBQTJCLE9BQU8sQ0FBQztRQUsvQyxVQUFJLEdBQXdCLEdBQUcsQ0FBQztRQUtoQyxlQUFTLEdBQUcsS0FBSyxDQUFDO1FBSWxCLG9CQUFjLEdBQUcsS0FBSyxDQUFDOztJQWdCdkIsQ0FBQzsrQkEzQ1Esc0JBQXNCO0lBNkMvQixzQkFBSSwwREFBc0I7YUFBMUI7WUFDSSxPQUFPLElB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M0IsK2lEQUEwQztZQUUxQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtZQUMvQyxTQUFTLEVBQUU7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLDJCQUEyQjtvQkFDcEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFNLE9BQUEsd0JBQXNCLEVBQXRCLENBQXNCLENBQUM7aUJBQ3hEO2FBQ0o7O1NBQ0osQ0FBQztRQWtDTyxXQUFBLFFBQVEsRUFBRSxDQUFBO1FBQ1YsV0FBQSxJQUFJLEVBQUUsQ0FBQTtRQUNOLFdBQUEsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRWpCLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDekIsV0FBQSxRQUFRLEVBQUUsQ0FBQTtRQUNWLFdBQUEsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7T0F2Q3BCLHNCQUFzQixDQWdHbEM7SUFBRCw2QkFBQztDQUFBLEFBaEdELENBQ1ksMEJBQTBCLEdBK0ZyQztTQWhHWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBUVUlfREVGQVVMVF9JREVOVElUWV9NQVRDSEVSLFxuICAgIFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgVHVpSWRlbnRpdHlNYXRjaGVyLFxuICAgIFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBUdWlBcHBlYXJhbmNlLFxuICAgIFR1aUhvcml6b250YWxEaXJlY3Rpb24sXG4gICAgVHVpTW9kZURpcmVjdGl2ZSxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlSYWRpb0NvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3JhZGlvJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktcmFkaW8tYmxvY2snLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1ibG9jay50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yYWRpby1ibG9jay5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aVJhZGlvQmxvY2tDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aVJhZGlvQmxvY2tDb21wb25lbnQ8VD5cbiAgICBleHRlbmRzIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sPFQ+XG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3Ige1xuICAgIEBJbnB1dCgpXG4gICAgaXRlbT86IFQ7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaWRlbnRpdHlNYXRjaGVyOiBUdWlJZGVudGl0eU1hdGNoZXI8VD4gPSBUVUlfREVGQVVMVF9JREVOVElUWV9NQVRDSEVSO1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10dWktaG9zdC1hbGlnbicpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBjb250ZW50QWxpZ246IFR1aUhvcml6b250YWxEaXJlY3Rpb24gPSAncmlnaHQnO1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10dWktaG9zdC1zaXplJylcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNpemU6IFR1aVNpemVTIHwgVHVpU2l6ZUwgPSAnbCc7XG5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX2hpZGRlbl9yYWRpbycpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBoaWRlUmFkaW8gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBwc2V1ZG9EaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQFZpZXdDaGlsZChUdWlSYWRpb0NvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhZGlvPzogVHVpUmFkaW9Db21wb25lbnQ8VD47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFR1aU1vZGVEaXJlY3RpdmUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kZURpcmVjdGl2ZTogVHVpTW9kZURpcmVjdGl2ZSB8IG51bGwsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBUdWlOYXRpdmVGb2N1c2FibGVFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhZGlvID8gdGhpcy5yYWRpby5uYXRpdmVGb2N1c2FibGVFbGVtZW50IDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5yYWRpbyAmJiB0aGlzLnJhZGlvLmZvY3VzZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5fZGlzYWJsZWQnKVxuICAgIGdldCBjb21wdXRlZERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLnBzZXVkb0Rpc2FibGVkO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX2FjdGl2ZScpXG4gICAgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSB0aGlzLml0ZW0gJiYgdGhpcy5oaWRlUmFkaW87XG4gICAgfVxuXG4gICAgZ2V0IGNoZWNrYm94U2l6ZSgpOiBUdWlTaXplTCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpemUgPT09ICdsJyA/ICdsJyA6ICdtJztcbiAgICB9XG5cbiAgICBnZXQgYXBwZWFyYW5jZSgpOiBUdWlBcHBlYXJhbmNlIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVEaXJlY3RpdmUgfHwgIXRoaXMubW9kZURpcmVjdGl2ZS5tb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jaGVja2VkXG4gICAgICAgICAgICAgICAgPyBUdWlBcHBlYXJhbmNlLldoaXRlYmxvY2tBY3RpdmVcbiAgICAgICAgICAgICAgICA6IFR1aUFwcGVhcmFuY2UuV2hpdGVibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrZWQgPyBUdWlBcHBlYXJhbmNlLlByaW1hcnkgOiBUdWlBcHBlYXJhbmNlLlNlY29uZGFyeTtcbiAgICB9XG5cbiAgICBvbkZvY3VzZWQoZm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoZm9jdXNlZCk7XG4gICAgfVxuXG4gICAgb25Ib3ZlcmVkKGhvdmVyZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy51cGRhdGVIb3ZlcmVkKGhvdmVyZWQpO1xuICAgIH1cblxuICAgIG9uUHJlc3NlZChwcmVzc2VkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUHJlc3NlZChwcmVzc2VkKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzVmlzaWJsZShmb2N1c1Zpc2libGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c1Zpc2libGUoZm9jdXNWaXNpYmxlKTtcbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBUKSB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xuICAgIH1cbn1cbiJdfQ==