@taiga-ui/kit
Version:
Taiga UI Angular main components kit
156 lines • 19.3 kB
JavaScript
import { __decorate, __extends, __param } from "tslib";
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, forwardRef, HostBinding, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
import { NgControl } from '@angular/forms';
import { AbstractTuiControl, isNativeFocused, TUI_FOCUSABLE_ITEM_ACCESSOR, tuiDefaultProp, } from '@taiga-ui/cdk';
import { TuiAppearance, TuiBrightness, TuiModeDirective, TuiSizeL, TuiSizeXS, } from '@taiga-ui/core';
var TuiToggleComponent = /** @class */ (function (_super) {
__extends(TuiToggleComponent, _super);
function TuiToggleComponent(control, changeDetectorRef, modeDirective) {
var _this = _super.call(this, control, changeDetectorRef) || this;
_this.modeDirective = modeDirective;
_this.singleColor = false;
_this.showIcons = false;
_this.showLoader = false;
_this.size = 'm';
return _this;
}
TuiToggleComponent_1 = TuiToggleComponent;
Object.defineProperty(TuiToggleComponent.prototype, "nativeFocusableElement", {
get: function () {
return this.focusableElement ? this.focusableElement.nativeElement : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiToggleComponent.prototype, "focused", {
get: function () {
return isNativeFocused(this.nativeFocusableElement);
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiToggleComponent.prototype, "appearance", {
get: function () {
return this.singleColor || this.checked
? "primary" /* Primary */
: "secondary" /* Secondary */;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiToggleComponent.prototype, "sizeM", {
get: function () {
return this.size === 'm';
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiToggleComponent.prototype, "checked", {
get: function () {
return this.value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiToggleComponent.prototype, "iconOn", {
get: function () {
return this.sizeM ? 'tuiIconToggleOn' : 'tuiIconToggleOnLarge';
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiToggleComponent.prototype, "iconOff", {
get: function () {
return this.sizeM ? 'tuiIconToggleOff' : 'tuiIconToggleOffLarge';
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiToggleComponent.prototype, "loaderSize", {
get: function () {
return this.sizeM ? 'xs' : 's';
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiToggleComponent.prototype, "hostMode", {
get: function () {
return this.modeDirective ? this.modeDirective.mode : null;
},
enumerable: true,
configurable: true
});
TuiToggleComponent.prototype.onChecked = function (checked) {
this.updateValue(checked);
};
TuiToggleComponent.prototype.onFocused = function (focused) {
this.updateFocused(focused);
};
TuiToggleComponent.prototype.onHovered = function (hovered) {
this.updateHovered(hovered);
};
TuiToggleComponent.prototype.onPressed = function (pressed) {
this.updatePressed(pressed);
};
TuiToggleComponent.prototype.onFocusVisible = function (focusVisible) {
this.updateFocusVisible(focusVisible);
};
TuiToggleComponent.prototype.getFallbackValue = function () {
return false;
};
var TuiToggleComponent_1;
TuiToggleComponent.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(),
tuiDefaultProp()
], TuiToggleComponent.prototype, "singleColor", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiToggleComponent.prototype, "showIcons", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiToggleComponent.prototype, "showLoader", void 0);
__decorate([
Input(),
HostBinding('attr.data-tui-host-size'),
tuiDefaultProp()
], TuiToggleComponent.prototype, "size", void 0);
__decorate([
ViewChild('focusableElement')
], TuiToggleComponent.prototype, "focusableElement", void 0);
__decorate([
HostBinding('class._checked')
], TuiToggleComponent.prototype, "checked", null);
__decorate([
HostBinding('attr.data-mode')
], TuiToggleComponent.prototype, "hostMode", null);
TuiToggleComponent = TuiToggleComponent_1 = __decorate([
Component({
selector: 'tui-toggle',
template: "<tui-wrapper\n [appearance]=\"appearance\"\n [disabled]=\"disabled\"\n [focused]=\"computedFocusVisible\"\n [hovered]=\"computedHovered\"\n [pressed]=\"computedPressed\"\n [invalid]=\"computedInvalid\"\n>\n <div class=\"toggle\">\n <tui-loader\n *ngIf=\"showLoader\"\n class=\"loader\"\n [size]=\"loaderSize\"\n [inheritColor]=\"true\"\n [showLoader]=\"checked\"\n ></tui-loader>\n <tui-svg\n *ngIf=\"showIcons && !showLoader\"\n class=\"icon\"\n automation-id=\"tui-toggle__check-icon\"\n [src]=\"iconOn\"\n ></tui-svg>\n <div class=\"circle\"></div>\n <tui-loader\n *ngIf=\"showLoader\"\n class=\"loader\"\n [size]=\"loaderSize\"\n [inheritColor]=\"true\"\n [showLoader]=\"!checked\"\n ></tui-loader>\n <tui-svg\n *ngIf=\"showIcons && !showLoader\"\n class=\"icon icon_off\"\n automation-id=\"tui-toggle__cancel-icon\"\n [src]=\"iconOff\"\n ></tui-svg>\n </div>\n</tui-wrapper>\n<input\n #focusableElement\n type=\"checkbox\"\n class=\"checkbox\"\n role=\"switch\"\n automation-id=\"tui-toggle__checkbox\"\n [attr.aria-checked]=\"value\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [tuiChecked]=\"checked\"\n [tuiFocusable]=\"focusable\"\n (tuiCheckedChange)=\"onChecked($event)\"\n (tuiFocusedChange)=\"onFocused($event)\"\n (tuiHoveredChange)=\"onHovered($event)\"\n (tuiPressedChange)=\"onPressed($event)\"\n (tuiFocusVisibleChange)=\"onFocusVisible($event)\"\n/>\n",
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [
{
provide: TUI_FOCUSABLE_ITEM_ACCESSOR,
useExisting: forwardRef(function () { return TuiToggleComponent_1; }),
},
],
styles: [":host{position:relative;display:inline-block;vertical-align:middle;overflow:hidden;border-radius:100px}:host[data-tui-host-size='m']{width:32px;height:16px}:host[data-tui-host-size='l']{width:48px;height:24px}.checkbox{padding:0;border:0;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;height:100%;width:100%;opacity:0;cursor:pointer}.checkbox:-webkit-autofill,.checkbox:-webkit-autofill:focus,.checkbox:-webkit-autofill:hover{border-radius:inherit;-webkit-text-fill-color:inherit!important;color:inherit!important;background-color:transparent!important;-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}:host._disabled .checkbox{pointer-events:none;cursor:default}.toggle{transition-property:transform;transition-duration:.3s;transition-timing-function:ease-in-out;display:flex;align-items:center;justify-content:center}:host[data-tui-host-size='m'] .toggle{width:48px;height:16px;transform:translateX(-16px)}:host[data-tui-host-size='l'] .toggle{width:72px;height:24px;transform:translateX(-24px)}:host._checked .toggle{transform:translateX(0)}.circle{margin:2px 0;flex-shrink:0;border-radius:100%;background-color:var(--tui-base-01)}:host._disabled .circle_light{opacity:.24}:host[data-tui-host-size='m'] .circle{width:12px;height:12px}:host[data-tui-host-size='l'] .circle{width:16px;height:16px}:host._disabled .circle{background-color:var(--tui-base-01)}:host:not(._checked) .loader{color:var(--tui-base-06)}:host:not(._checked)._disabled .loader{color:var(--tui-base-05)}:host:not(._checked)[data-mode=onDark] .loader{color:var(--tui-text-03-night)}:host:not(._checked)[data-mode=onDark]._disabled .loader{color:var(--tui-clear-inverse-active)}:host:not(._checked)[data-mode=onLight] .loader{color:var(--tui-text-03)}:host:not(._checked)[data-mode=onLight]._disabled .loader{color:var(--tui-clear-active)}:host[data-tui-host-size='m'] .loader{width:12px;margin:0 2px;transform:scale(.75)}:host[data-tui-host-size='l'] .loader{width:16px;margin:0 6px}.icon{opacity:.8}.icon_off{color:var(--tui-base-06)}:host._disabled .icon_off{color:var(--tui-base-05)}:host[data-mode=onDark] .icon_off{color:var(--tui-text-03-night)}:host[data-mode=onDark]._disabled .icon_off{color:var(--tui-clear-inverse-active)}:host[data-mode=onLight] .icon_off{color:var(--tui-text-03)}:host[data-mode=onLight]._disabled .icon_off{color:var(--tui-clear-active)}:host[data-tui-host-size='m'] .icon{width:16px;height:16px;transform:scale(.75)}:host[data-tui-host-size='l'] .icon{margin:0 2px;width:24px;height:24px}:host._hovered .icon{opacity:1}"]
}),
__param(0, Optional()),
__param(0, Self()),
__param(0, Inject(NgControl)),
__param(1, Inject(ChangeDetectorRef)),
__param(2, Optional()),
__param(2, Inject(TuiModeDirective))
], TuiToggleComponent);
return TuiToggleComponent;
}(AbstractTuiControl));
export { TuiToggleComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvY29tcG9uZW50cy90b2dnbGUvIiwic291cmNlcyI6WyJ0b2dnbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsMkJBQTJCLEVBQzNCLGNBQWMsR0FHakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGFBQWEsRUFDYixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixTQUFTLEdBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQWN4QjtJQUNZLHNDQUEyQjtJQXNCbkMsNEJBSUksT0FBeUIsRUFDRSxpQkFBb0MsRUFHOUMsYUFBc0M7UUFSM0QsWUFVSSxrQkFBTSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsU0FDcEM7UUFIb0IsbUJBQWEsR0FBYixhQUFhLENBQXlCO1FBMUIzRCxpQkFBVyxHQUFHLEtBQUssQ0FBQztRQUlwQixlQUFTLEdBQUcsS0FBSyxDQUFDO1FBSWxCLGdCQUFVLEdBQUcsS0FBSyxDQUFDO1FBS25CLFVBQUksR0FBYSxHQUFHLENBQUM7O0lBZ0JyQixDQUFDOzJCQWxDUSxrQkFBa0I7SUFvQzNCLHNCQUFJLHNEQUFzQjthQUExQjtZQUNJLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDOUUs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QUFxQztZQUVyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtZQUMvQyxTQUFTLEVBQUU7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLDJCQUEyQjtvQkFDcEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFNLE9BQUEsb0JBQWtCLEVBQWxCLENBQWtCLENBQUM7aUJBQ3BEO2FBQ0o7O1NBQ0osQ0FBQztRQXlCTyxXQUFBLFFBQVEsRUFBRSxDQUFBO1FBQ1YsV0FBQSxJQUFJLEVBQUUsQ0FBQTtRQUNOLFdBQUEsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRWpCLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDekIsV0FBQSxRQUFRLEVBQUUsQ0FBQTtRQUNWLFdBQUEsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7T0E5QnBCLGtCQUFrQixDQW1HOUI7SUFBRCx5QkFBQztDQUFBLEFBbkdELENBQ1ksa0JBQWtCLEdBa0c3QjtTQW5HWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpQ29udHJvbCxcbiAgICBpc05hdGl2ZUZvY3VzZWQsXG4gICAgVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICBUdWlOYXRpdmVGb2N1c2FibGVFbGVtZW50LFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgVHVpQXBwZWFyYW5jZSxcbiAgICBUdWlCcmlnaHRuZXNzLFxuICAgIFR1aU1vZGVEaXJlY3RpdmUsXG4gICAgVHVpU2l6ZUwsXG4gICAgVHVpU2l6ZVhTLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLXRvZ2dsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvZ2dsZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90b2dnbGUuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUVUlfRk9DVVNBQkxFX0lURU1fQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUdWlUb2dnbGVDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aVRvZ2dsZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlDb250cm9sPGJvb2xlYW4+XG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3Ige1xuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzaW5nbGVDb2xvciA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNob3dJY29ucyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNob3dMb2FkZXIgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdHVpLWhvc3Qtc2l6ZScpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzaXplOiBUdWlTaXplTCA9ICdtJztcblxuICAgIEBWaWV3Q2hpbGQoJ2ZvY3VzYWJsZUVsZW1lbnQnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNhYmxlRWxlbWVudD86IEVsZW1lbnRSZWY8VHVpTmF0aXZlRm9jdXNhYmxlRWxlbWVudD47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFR1aU1vZGVEaXJlY3RpdmUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kZURpcmVjdGl2ZTogVHVpTW9kZURpcmVjdGl2ZSB8IG51bGwsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBUdWlOYXRpdmVGb2N1c2FibGVFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzYWJsZUVsZW1lbnQgPyB0aGlzLmZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05hdGl2ZUZvY3VzZWQodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXQgYXBwZWFyYW5jZSgpOiBUdWlBcHBlYXJhbmNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2luZ2xlQ29sb3IgfHwgdGhpcy5jaGVja2VkXG4gICAgICAgICAgICA/IFR1aUFwcGVhcmFuY2UuUHJpbWFyeVxuICAgICAgICAgICAgOiBUdWlBcHBlYXJhbmNlLlNlY29uZGFyeTtcbiAgICB9XG5cbiAgICBnZXQgc2l6ZU0oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpemUgPT09ICdtJztcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9jaGVja2VkJylcbiAgICBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGljb25PbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zaXplTSA/ICd0dWlJY29uVG9nZ2xlT24nIDogJ3R1aUljb25Ub2dnbGVPbkxhcmdlJztcbiAgICB9XG5cbiAgICBnZXQgaWNvbk9mZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zaXplTSA/ICd0dWlJY29uVG9nZ2xlT2ZmJyA6ICd0dWlJY29uVG9nZ2xlT2ZmTGFyZ2UnO1xuICAgIH1cblxuICAgIGdldCBsb2FkZXJTaXplKCk6IFR1aVNpemVYUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpemVNID8gJ3hzJyA6ICdzJztcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1tb2RlJylcbiAgICBnZXQgaG9zdE1vZGUoKTogVHVpQnJpZ2h0bmVzcyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlRGlyZWN0aXZlID8gdGhpcy5tb2RlRGlyZWN0aXZlLm1vZGUgOiBudWxsO1xuICAgIH1cblxuICAgIG9uQ2hlY2tlZChjaGVja2VkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoY2hlY2tlZCk7XG4gICAgfVxuXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuICAgIH1cblxuICAgIG9uSG92ZXJlZChob3ZlcmVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSG92ZXJlZChob3ZlcmVkKTtcbiAgICB9XG5cbiAgICBvblByZXNzZWQocHJlc3NlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnVwZGF0ZVByZXNzZWQocHJlc3NlZCk7XG4gICAgfVxuXG4gICAgb25Gb2N1c1Zpc2libGUoZm9jdXNWaXNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNWaXNpYmxlKGZvY3VzVmlzaWJsZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZhbGxiYWNrVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=